From eaeeb8f612a8ee71133932393be72d83ccd45472 Mon Sep 17 00:00:00 2001 From: Pol Dell'Aiera Date: Thu, 2 Aug 2012 23:10:09 +0200 Subject: [PATCH] #814220: Use CTools Export UI for Layers, Maps and Styles. --- .../includes/openlayers_ui.layers.inc | 243 ++++-------------- .../openlayers_ui/includes/openlayers_ui.maps.inc | 121 --------- .../includes/openlayers_ui.styles.inc | 60 ----- modules/openlayers_ui/openlayers_ui.module | 272 +------------------- openlayers.install | 2 +- openlayers.module | 3 + 6 files changed, 53 insertions(+), 648 deletions(-) diff --git a/modules/openlayers_ui/includes/openlayers_ui.layers.inc b/modules/openlayers_ui/includes/openlayers_ui.layers.inc index 7a55f2b..0fe049a 100644 --- a/modules/openlayers_ui/includes/openlayers_ui.layers.inc +++ b/modules/openlayers_ui/includes/openlayers_ui.layers.inc @@ -11,111 +11,9 @@ /** * Layer add/edit form. */ -function openlayers_ui_layers_types($form_state, $layer = NULL, $edit = FALSE) { - $form = array(); - $form['layer_types'] = openlayers_ui_get_layer_type_options('map'); - return $form; -} - - -/** - * Layer add/edit form. - */ function openlayers_ui_layers_form($form_state, $layer = NULL) { $form = array(); - $form['layer'] = openlayers_ui_get_layer_form($layer); - - $form['submit'] = array( - '#type' => 'submit', - '#value' => t('Save'), - ); - - return $form; -} - -/** - * Submit handler for layers. - */ -function openlayers_ui_layers_form_submit(&$form, &$form_state) { - // Save layer - $layer_class = $form_state['values']['data']['layer_type']; - $layer = openlayers_layer_type_load($layer_class); - - $layer->name = $form_state['values']['name']; - $layer->title = $form_state['values']['title']; - $layer->description = $form_state['values']['description']; - $layer->data = $form_state['values']['data']; - - if (isset($layer->data['resolutions'])) { - // resolutions are stored as strings because floats are not handled - // well by formapi - $layer->data['resolutions'] = - array_map("floatval", array_keys($layer->data['resolutions'])); - rsort($layer->data['resolutions']); - } - - $success = $layer->save(); - - // Redirect to edit page - if ($success) { - drupal_set_message(t('Layer saved.')); - $form_state['redirect'] = 'admin/structure/openlayers/layers/' . $layer->name . '/edit'; - } - else { - form_set_error('openlayers', t('Error trying to save layer.')); - } -} - -/** - * Layer-wide-settings form - */ -function openlayers_ui_layers_settings($form_state, $layer = NULL) { - $form = array(); - $layer_types = openlayers_layer_types(); - - foreach ($layer_types as $name => $type_def) { - $type = openlayers_layer_type_load($name); - if (method_exists($type, 'settings_form')) { - $form[$name] = array( - '#type' => 'fieldset', - '#tree' => TRUE, - '#title' => $type_def['title']); - $form[$name]['settings'] = $type->settings_form(); - } - } - $form['submit'] = array( - '#type' => 'submit', - '#value' => t('Save'), - ); - - return $form; -} - -/** - * Submit handler for openlayers_ui_layers_settings - */ -function openlayers_ui_layers_settings_submit(&$form, &$form_state) { - $layer_types = openlayers_layer_types(); - foreach ($form_state['values'] as $key => $value) { - if (in_array($key, array_keys($layer_types))) { - foreach ($value['settings'] as $k => $v) { - variable_set($k, $v); - } - } - } -} - -/** - * Get an actual layer form - */ -function openlayers_ui_get_layer_form($args, $layer = FALSE) { - $form = array(); - - // TODO: this shouldn't be necessary. this is ugly code. - $type = $args['build_info']['args'][0]; - - $form['basics'] = array( '#tree' => TRUE, '#type' => 'fieldset', @@ -125,129 +23,80 @@ function openlayers_ui_get_layer_form($args, $layer = FALSE) { ); $form['basics']['name'] = array( '#type' => 'textfield', - '#default_value' => isset($type->name) ? $type->name : '', + '#default_value' => isset($layer->name) ? $layer->name : '', '#title' => t('Layer Machine Name'), '#description' => t('This is the unique name of the layer. It must contain only alphanumeric characters and underscores.'), ); $form['basics']['title'] = array( '#type' => 'textfield', '#title' => t('Layer Title'), - '#default_value' => isset($type->title) ? $type->title : '', + '#default_value' => isset($layer->title) ? $layer->title : '', '#description' => t('The friendly name of your layer, which will appear in the administration interface as well on the map interface if it is exposed.'), ); $form['basics']['description'] = array( '#type' => 'textfield', '#title' => t('Layer Description'), - '#default_value' => isset($type->description) ? $type->description : '', + '#default_value' => isset($layer->description) ? $layer->description : '', '#description' => t('The description of your layer, which will appear in the administration interface.'), ); - // @TODO: clarify use of data, and of layer_type in overriding it - $form['data'] = array( - '#tree' => TRUE, - '#type' => 'fieldset', - '#title' => t('Layer Specifics'), - '#description' => t('The following settings are specific to the layer type.'), + $layers_options = array(); + $layers = openlayers_layer_types(); + $options = array('' => t('Select the layer type')); + + foreach ($layers as $id => $data) { + $obj = new $id($layer); + $layers_option = array( + '#type' => 'fieldset', + '#tree' => TRUE, + '#title' => t('Layer specific options for @layer_title', array('@layer_title' => $data['title'])), + ); + if (method_exists($obj, 'options_form')) { + $layers_option += $obj->options_form(); + $layers_option['#states'] = array( + 'visible' => array( + ':input[name="layer_type"]' => array('value' => $id), + ), + ); + $layers_options[$id] = $layers_option; + } + $options[$id] = $data['title']; + } + + $form['layer_type'] = array( + '#type' => 'select', + '#title' => t('Layer Type'), + '#default_value' => isset($layer->data['layer_type']) ? $layer->data['layer_type']: '', + '#description' => t('Select the type of layer.'), + '#options' => $options, ); - // Arrays merged in order so that options_form can override defaults - $form['data'] = $type->options_form() + $form['data']; + $form += $layers_options; return $form; } /** - * Get layer type options. + * Layer-wide-settings form */ -function openlayers_ui_get_layer_type_options($type) { +function openlayers_ui_layers_settings($form_state, $layer = NULL) { $form = array(); - $form['layer_type_help'] = array( - '#type' => 'item', - '#markup' => t('Select a layer type to create a new layer.') - ); + $layer_types = openlayers_layer_types(); - foreach (openlayers_layer_types() as $key => $plugin) { - // Hack to keep Views layers out - if (in_array($key, array('openlayers_views_vector', 'openlayers_layer_type_raw'))) { - continue; - } - - $class = ctools_plugin_get_class($plugin, 'layer_type'); - if ($class) { - // Build form. - $form[$key] = array( - '#type' => 'item', - '#title' => l($plugin['title'], "admin/structure/openlayers/layers/add/{$key}"), - '#description' => $plugin['description'], - ); + foreach ($layer_types as $name => $type_def) { + $type = openlayers_layer_type_load($name); + if (method_exists($type, 'settings_form')) { + $form[$name] = array( + '#type' => 'fieldset', + '#tree' => TRUE, + '#title' => $type_def['title']); + $form[$name]['settings'] = $type->settings_form(); } } - return $form; -} - -/** - * Import a layer from cut & paste - */ -function openlayers_ui_layers_import_form($form_state) { - $form['name'] = array( - '#type' => 'textfield', - '#title' => t('Layers name'), - '#description' => t('Enter the name to use for this layer if it is different from the source layer. Leave blank to use the name of the layer.'), - ); - - $form['layer'] = array( - '#type' => 'textarea', - '#title' => t('Paste layer code here'), - '#required' => TRUE, - ); - $form['submit'] = array( '#type' => 'submit', - '#value' => t('Import'), - '#submit' => array('openlayers_ui_layers_import_submit'), - '#validate' => array('openlayers_ui_layers_import_validate'), + '#value' => t('Save'), ); - return $form; -} -/** - * Validate handler to import a layer - */ -function openlayers_ui_layers_import_validate($form, &$form_state) { - - $items = ''; - ob_start(); - eval($form_state['values']['layer']); - ob_end_clean(); - - if (!is_array($items)) { - return form_error($form['layer'], t('Unable to interpret layer code.')); - } - - // View name must be alphanumeric or underscores, no other punctuation. - if (!empty($form_state['values']['name']) && - preg_match('/[^a-zA-Z0-9_]/', $form_state['values']['name'])) { - form_error($form['name'], - t('Layer name must be alphanumeric or underscores only.')); - } - - $layer = current($items); - $layer_type_object = openlayers_layer_type_load($layer->data['layer_type']); - - if ($form_state['values']['name']) { - $layer->name = $form_state['values']['name']; - } - - if ($exists = openlayers_layer_load($layer->name)) { - drupal_set_message(t('An existing layer of this name already exists'), 'error'); - $form_state['redirect'] = 'admin/structure/openlayers/layers'; - } - else { - drupal_set_title(t('Add Layer')); - $layer_object = new $layer->data['layer_type']($layer); - $output = drupal_get_form('openlayers_ui_layers_form', - $layer_object); - print theme('page', $output); - exit; - } + return $form; } diff --git a/modules/openlayers_ui/includes/openlayers_ui.maps.inc b/modules/openlayers_ui/includes/openlayers_ui.maps.inc index 731b446..de2e822 100644 --- a/modules/openlayers_ui/includes/openlayers_ui.maps.inc +++ b/modules/openlayers_ui/includes/openlayers_ui.maps.inc @@ -8,16 +8,6 @@ * @ingroup openlayers */ -function openlayers_ui_maps_clone($map) { - $form_state = array(); - drupal_set_title( - t('Clone map %map', - array('%map' => $map->name) - ), PASS_THROUGH - ); - return drupal_get_form('openlayers_ui_maps_form', $map); -} - /** * Menu Callback for Add Map */ @@ -570,83 +560,10 @@ function openlayers_ui_maps_form($form, &$form_state, $map = FALSE, $edit = FALS ); } - // Buttons - $form['buttons'] = array('#tree' => FALSE); - $form['buttons']['openlayers_save'] = array( - '#type' => 'submit', - '#value' => t('Save') - ); - $form['buttons']['openlayers_preview'] = array( - '#type' => 'submit', - '#value' => t('Preview') - ); - $form['buttons']['openlayers_cancel'] = array( - '#type' => 'submit', - '#value' => t('Cancel') - ); - return $form; } /** - * OpenLayers Map Form Validate - * - * Validates a map form submission. - * - * @param $map_form - * Array of values to validate - * @return - * Does not return anything. Uses form_set_error() to communicate errors. - */ -function openlayers_ui_maps_form_validate($form, &$form_state) { - $values = $form_state['values']; - $found_error = FALSE; - - // Check if ahah submitting - if ($form_state['clicked_button']['#id'] == 'edit-openlayers-projection-ahah' || - $form_state['clicked_button']['#id'] == 'edit-openlayers-cancel') { - return TRUE; - } - - // Check map name first - if (!preg_match('!^[a-z0-9_]+$!', $values['name'])) { - form_set_error('name', t('Map Name must contain only lowercase letters, numbers, and underscores.')); - $found_error = TRUE; - } - - // Check if adding and name already exists - $existing = openlayers_map_load($values['name'], TRUE); - if (!empty($existing) && (!$form_state['values']['map_edit']) && - ($existing->export_type & EXPORT_IN_DATABASE)) { - form_set_error('name', t('The Map Name already exists.')); - $found_error = TRUE; - } - - // Attempt to render map to find any errors - $map = openlayers_ui_maps_form_process($form_state['values']); - $map = openlayers_build_map($map); - // Check if any errors found - if (is_array($map['errors']) && count($map['errors']) > 0) { - foreach ($map['errors'] as $error) { - form_set_error('openlayers', - t('OpenLayers Map Rendering Error: !error', array('!error' => $error))); - $found_error = TRUE; - } - } - - // If found error, rebuild form - if ($found_error) { - // Add OpenLayers CSS & Javascript, because the form function will not be run on rebuild - openlayers_include(); - drupal_add_js(drupal_get_path('module', 'openlayers_ui') . - '/js/openlayers_ui.maps.js', 'module'); - drupal_add_css(drupal_get_path('module', 'openlayers_ui') . - '/openlayers_ui.css'); - $form_state['rebuild'] = TRUE; - } -} - -/** * Form submit for map add form, for the projection add ahah */ function openlayers_ui_maps_add_projection_submit($form, &$form_state) { @@ -655,44 +572,6 @@ function openlayers_ui_maps_add_projection_submit($form, &$form_state) { $form_state['rebuild'] = TRUE; } -/** - * Form submit for map add form - */ -function openlayers_ui_maps_form_submit($form, &$form_state) { - // Check for cancel - if ($form_state['clicked_button']['#id'] == 'edit-openlayers-cancel') { - $form_state['redirect'] = 'admin/structure/openlayers/maps/list'; - } - - // On preview, process, but don't save, rebuild. - if ($form_state['clicked_button']['#id'] == 'edit-openlayers-preview') { - $map_data = openlayers_ui_maps_form_process($form_state['values']); - $form_state['values']['preview_map'] = $map_data; - $form_state['rebuild'] = TRUE; - } - - // Only save if save button is pressed - if ($form_state['clicked_button']['#id'] == 'edit-openlayers-save') { - $map_data = openlayers_ui_maps_form_process($form_state['values']); - - // Save map - $map_object = new stdClass(); - $map_object->name = $form_state['values']['name']; - $map_object->title = $form_state['values']['title']; - $map_object->description = $form_state['values']['description']; - $map_object->data = $map_data; - $success = openlayers_map_save($map_object); - - // Redirect to edit page - if ($success) { - drupal_set_message(t('Map saved.')); - $form_state['redirect'] = "admin/structure/openlayers/maps/{$map_object->name}/edit"; - } - else { - form_set_error('openlayers', t('Error trying to save map')); - } - } -} /** * OpenLayers AHAH diff --git a/modules/openlayers_ui/includes/openlayers_ui.styles.inc b/modules/openlayers_ui/includes/openlayers_ui.styles.inc index 3045d74..e3409e2 100644 --- a/modules/openlayers_ui/includes/openlayers_ui.styles.inc +++ b/modules/openlayers_ui/includes/openlayers_ui.styles.inc @@ -275,65 +275,5 @@ function openlayers_ui_styles_form($form, &$form_state, $style = NULL, $edit = F } } - $form['submit'] = array( - '#type' => 'submit', - '#value' => t('Save'), - ); - $form['preview'] = array( - '#type' => 'submit', - '#value' => t('Preview'), - ); return $form; } - -/** - * Submit handler for layers. - */ -function openlayers_ui_styles_form_submit(&$form, &$form_state) { - $style_data = $form_state['values']['style_data']; - - // Cast and unset values so JS can handle them better, - // Unless values are in the form ${attribute} - foreach ($form_state['values']['data'] as $key => $value) { - if ($form_state['values']['data'][$key] === '') { - unset($form_state['values']['data'][$key]); - } - elseif (isset($style_data[$key]['type']) && - strpos($form_state['values']['data'][$key], '${') !== 0) { - if ($style_data[$key]['type'] == 'integer') { - $form_state['values']['data'][$key] = - (int) $form_state['values']['data'][$key]; - } - elseif ($style_data[$key]['type'] == 'float') { - $form_state['values']['data'][$key] = - (float) $form_state['values']['data'][$key]; - } - } - } - - // Create style object - $style = new stdClass(); - $style->name = $form_state['values']['name']; - $style->title = $form_state['values']['title']; - $style->description = $form_state['values']['description']; - $style->data = $form_state['values']['data']; - - // On preview, process, but don't save, rebuild. - if ($form_state['clicked_button']['#id'] == 'edit-preview') { - $form_state['values']['preview_style'] = $style; - $form_state['rebuild'] = TRUE; - return; - } - - // Save - $success = openlayers_style_save($style); - - // Redirect to edit page - if ($success) { - drupal_set_message(t('Style saved.')); - $form_state['redirect'] = 'admin/structure/openlayers/styles/' . $style->name . '/edit'; - } - else { - form_set_error('openlayers', t('Error trying to save style.')); - } -} diff --git a/modules/openlayers_ui/openlayers_ui.module b/modules/openlayers_ui/openlayers_ui.module index c2ffc1c..9b2be72 100644 --- a/modules/openlayers_ui/openlayers_ui.module +++ b/modules/openlayers_ui/openlayers_ui.module @@ -127,77 +127,6 @@ function openlayers_ui_menu() { 'weight' => -20, ); - // Layers. - $items['admin/structure/openlayers/layers'] = array( - 'title' => 'Layers', - 'page callback' => 'openlayers_ui_object_list', - 'page arguments' => array(3), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.layers.inc', - 'type' => MENU_LOCAL_TASK, - 'weight' => -10, - ); - $items['admin/structure/openlayers/layers/list'] = array( - 'title' => 'List', - 'type' => MENU_DEFAULT_LOCAL_TASK, - 'weight' => -20, - ); - // Layer type drilldown - $items['admin/structure/openlayers/layers/add'] = array( - 'title' => 'Add', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_layers_types'), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.layers.inc', - 'type' => MENU_LOCAL_TASK, - 'weight' => -10, - ); - // Actual add-layer form - $items['admin/structure/openlayers/layers/add/%openlayers_layer_type'] = array( - 'title' => 'Add', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_layers_form', 5), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.layers.inc', - 'type' => MENU_LOCAL_TASK, - 'weight' => -15, - ); - $items['admin/structure/openlayers/layers/clone/%openlayers_layer'] = array( - 'title' => 'Clone layer', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_layers_form', 5), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.layers.inc', - 'type' => MENU_NORMAL_ITEM, - 'tab_parent' => 'admin/structure/openlayers/layers', - ); - // Edit-layer form - $items['admin/structure/openlayers/layers/%openlayers_layer/edit'] = array( - 'title' => 'Edit layer', - 'description' => 'Edit OpenLayers layer.', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_layers_form', 4), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.layers.inc', - 'type' => MENU_LOCAL_TASK, - 'tab_parent' => 'admin/structure/openlayers/layers', - ); - $items['admin/structure/openlayers/layers/%openlayers_layer_export/delete'] = array( - 'title' => 'Delete layer', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_object_delete', 3, 4), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.layers.inc', - 'type' => MENU_NORMAL_ITEM - ); - $items['admin/structure/openlayers/layers/%openlayers_layer_export/export'] = array( - 'title' => 'Export layer', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_object_export', 3, 4), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.layers.inc', - 'type' => MENU_NORMAL_ITEM - ); // Layer-type-wide settings form $items['admin/structure/openlayers/layers/settings'] = array( 'title' => 'API Keys', @@ -209,147 +138,6 @@ function openlayers_ui_menu() { 'weight' => -10, ); - // Styles. - $items['admin/structure/openlayers/styles'] = array( - 'title' => 'Styles', - 'page callback' => 'openlayers_ui_object_list', - 'page arguments' => array(3), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.styles.inc', - 'type' => MENU_LOCAL_TASK, - 'weight' => -10, - ); - $items['admin/structure/openlayers/styles/list'] = array( - 'title' => 'List', - 'type' => MENU_DEFAULT_LOCAL_TASK, - 'weight' => -20, - ); - $items['admin/structure/openlayers/styles/add'] = array( - 'title' => 'Add', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_styles_form'), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.styles.inc', - 'type' => MENU_LOCAL_TASK, - 'weight' => -10, - ); - $items['admin/structure/openlayers/styles/add/%openlayers_style'] = array( - 'title' => 'Add', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_styles_form', 5), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.styles.inc', - 'type' => MENU_NORMAL_ITEM, - 'weight' => -10, - ); - $items['admin/structure/openlayers/styles/clone/%openlayers_style'] = array( - 'title' => 'Clone style', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_styles_form', 5), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.styles.inc', - 'type' => MENU_LOCAL_TASK, - ); - $items['admin/structure/openlayers/styles/%openlayers_style/edit'] = array( - 'title' => 'Edit style', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_styles_form', 4, TRUE), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.styles.inc', - 'type' => MENU_LOCAL_TASK - ); - $items['admin/structure/openlayers/styles/%openlayers_style/delete'] = array( - 'title' => 'Delete style', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_object_delete', 3, 4), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.styles.inc', - 'type' => MENU_LOCAL_TASK - ); - $items['admin/structure/openlayers/styles/%openlayers_style/export'] = array( - 'title' => 'Export style', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_object_export', 3, 4), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.styles.inc', - 'type' => MENU_LOCAL_TASK - ); - - // Maps. - $items['admin/structure/openlayers/maps'] = array( - 'title' => 'Maps', - 'description' => 'Create OpenLayers maps.', - 'page callback' => 'openlayers_ui_object_list', - 'page arguments' => array(3), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.maps.inc', - 'type' => MENU_LOCAL_TASK, - 'weight' => 10, - ); - $items['admin/structure/openlayers/maps/list'] = array( - 'title' => 'List', - 'type' => MENU_DEFAULT_LOCAL_TASK, - 'weight' => -20, - ); - $items['admin/structure/openlayers/maps/add'] = array( - 'title' => 'Add', - 'description' => 'Add OpenLayers maps.', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_maps_form'), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.maps.inc', - 'type' => MENU_LOCAL_TASK, - 'weight' => -10, - ); - $items['admin/structure/openlayers/maps/add/%openlayers_map'] = array( - 'title' => 'Clone Map', - 'description' => 'Add OpenLayers maps.', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_maps_form', 5), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.maps.inc', - 'type' => MENU_NORMAL_ITEM, - 'weight' => -10, - ); - $items['admin/structure/openlayers/maps/clone/%openlayers_map'] = array( - 'title' => 'Clone Map', - 'description' => 'Clone OpenLayers maps.', - 'page callback' => 'openlayers_ui_maps_clone', - 'page arguments' => array(5), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.maps.inc', - 'type' => MENU_LOCAL_TASK, - ); - $items['admin/structure/openlayers/maps/%openlayers_map/edit'] = array( - 'title' => 'Edit map', - 'description' => 'Edit OpenLayers maps.', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_maps_form', 4, TRUE), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.maps.inc', - 'type' => MENU_LOCAL_TASK, - 'tab_parent' => 'admin/structure/openlayers/maps', - ); - $items['admin/structure/openlayers/maps/%openlayers_map/delete'] = array( - 'title' => 'Delete map', - 'description' => 'Delete OpenLayers map.', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_object_delete', 3, 4), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.maps.inc', - 'type' => MENU_LOCAL_TASK, - 'tab_parent' => 'admin/structure/openlayers/maps', - ); - $items['admin/structure/openlayers/maps/%openlayers_map/export'] = array( - 'title' => 'Export map', - 'description' => 'Export OpenLayers map.', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('openlayers_ui_object_export', 3, 4), - 'access arguments' => array('administer openlayers'), - 'file' => 'includes/openlayers_ui.maps.inc', - 'type' => MENU_LOCAL_TASK, - 'tab_parent' => 'admin/structure/openlayers/maps', - ); $items['admin/structure/openlayers/callbacks/version_check/%'] = array( 'title' => 'OpenLayers Version Check', 'page callback' => 'openlayers_ui_version_check', @@ -404,22 +192,11 @@ function openlayers_ui_object_list($type) { $rows = array(); switch ($type) { - case 'styles': - $header = array(t('Preview'), t('Title'), t('Description'), t('Actions')); - $objects = openlayers_styles(TRUE); - break; - case 'layers': $header = array(t('Title'), t('Type'), t('Description'), t('Actions')); $layer_types = openlayers_layer_types(); $objects = openlayers_layers_load(TRUE); break; - - case 'maps': - $header = array(t('Title'), t('Layers'), t('Description'), t('Actions')); - $layers = openlayers_layers_load(); - $objects = openlayers_maps(TRUE); - break; } // Create table rows @@ -427,27 +204,11 @@ function openlayers_ui_object_list($type) { $row = array(); $links = array(); - // Any pre-title cells. - switch ($type) { - case 'styles': - // Add the icon as an image in the row if it exists. - if (isset($object->data['externalGraphic'])) { - $row[] = theme('image', array('path' => $object->data['externalGraphic'])); - } - else { - $row[] = openlayers_ui_style_preview($object); - } - break; - - default: - break; - } - // Check map type and create links accordingly. $links[] = l(t('Export'), "admin/structure/openlayers/{$type}/{$object->name}/export"); - + // Do not allow for cloning of Views based layers or specifically unclonable - if (!($type == 'layers' && isset($object->data['views'])) || + if (!($type == 'layers' && isset($object->data['views'])) || (isset($object->data['clonable']) && $object->data['clonable'] === FALSE)) { $links[] = l(t('Clone'), "admin/structure/openlayers/{$type}/clone/{$object->name}"); } @@ -475,17 +236,6 @@ function openlayers_ui_object_list($type) { case 'layers': $row[] = filter_xss_admin($layer_types[$object->data['layer_type']]['title']); break; - - case 'maps': - if (!empty($object->data['layers'])) { - $layer_names = array(); - foreach ($object->data['layers'] as $layer) { - $layer_names[] = empty($layers[$layer]->title) ? $layer : filter_xss_admin($layers[$layer]->title); - } - $row[] = '' . implode(', ', $layer_names) . ''; - } - break; - default: break; } @@ -531,17 +281,9 @@ function openlayers_ui_object_delete_submit($form, &$form_state) { $object = $form_state['values']['object']; switch ($type) { - case 'styles': - $result = openlayers_style_delete($object); - break; - case 'layers': $result = openlayers_layer_delete($object); break; - - case 'maps': - $result = openlayers_map_delete($object); - break; } // Check query results @@ -564,17 +306,9 @@ function openlayers_ui_object_export($form, $form_state, $type, $object) { // Determine type switch ($type) { - case 'styles': - $api = 'openlayers_styles'; - break; - case 'layers': $api = 'openlayers_layers'; break; - - case 'maps': - $api = 'openlayers_maps'; - break; } // Use CTools to create export code @@ -790,4 +524,4 @@ function openlayers_ui_style_preview($style, $crosshairs = FALSE) { // TODO: This should probably be in a theme function. return '
'; -} \ No newline at end of file +} diff --git a/openlayers.install b/openlayers.install index ece5fd4..fecff3d 100644 --- a/openlayers.install +++ b/openlayers.install @@ -296,4 +296,4 @@ function openlayers_update_7201() { // Set default map variable variable_set('openlayers_default_map', variable_get('openlayers_default_preset', 'default')); variable_del('openlayers_default_preset'); -} \ No newline at end of file +} diff --git a/openlayers.module b/openlayers.module index a94b880..3d94d7e 100644 --- a/openlayers.module +++ b/openlayers.module @@ -72,6 +72,9 @@ function openlayers_ctools_plugin_directory($module, $plugin) { if ($plugin == 'content_types' && !empty($plugin)) { return 'includes/' . $plugin; } + if ($module == 'ctools' && $plugin == 'export_ui') { + return 'plugins/' . $plugin; + } if ($module == 'openlayers' && !empty($plugin)) { return 'plugins/' . $plugin; } -- 1.7.3.4