class openlayers_layers_ui in Openlayers 7.2
@file
Hierarchy
- class \ctools_export_ui
- class \openlayers_layers_ui
Expanded class hierarchy of openlayers_layers_ui
1 string reference to 'openlayers_layers_ui'
- openlayers_ui_openlayers_layers_ctools_export_ui in modules/
openlayers_ui/ plugins/ export_ui/ openlayers_layers.inc - CTools Export UI required function for plugin definition See function ctools_plugin_load_includes() in the module ctools.
File
- modules/
openlayers_ui/ plugins/ export_ui/ openlayers_layers_ui.class.php, line 6
View source
class openlayers_layers_ui extends ctools_export_ui {
function edit_form(&$form, &$form_state) {
parent::edit_form($form, $form_state);
$layer_types = openlayers_layer_types();
$options = array(
'' => t('Select the layer type'),
);
$layer = NULL;
if ($form_state['op'] == 'edit' && $form_state['form type'] == 'edit') {
$layer = openlayers_layer_load($form_state['item']->name);
}
if ($form_state['op'] == 'add' && $form_state['form type'] == 'clone') {
$layer = openlayers_layer_load($form_state['function args'][2]->name);
$layer->title = t('Clone of ') . $layer->title;
}
$form['info']['title'] = array(
'#id' => 'layertitle',
'#type' => 'textfield',
'#weight' => -1,
'#title' => t('Layer 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['info']['name']['#machine_name']['source'] = array(
'info',
'title',
);
$layers_options = array();
// Go trough all layer types and get each options form.
foreach ($layer_types as $layer_type) {
if (is_object($layer) && get_class($layer) == $layer_type['layer_type']['class']) {
// Layer is of current layer type.
$layer_type_object = $layer;
}
else {
// Otherwise load layer object for current layer type.
$layer_type_object = openlayers_layer_type_load($layer_type['name']);
}
$layer_options_form = array();
if (method_exists($layer_type_object, 'options_form')) {
// This is because the class openlayers_layer_type
// is not abstract.
// Maybe there's a better way to do ?
$parent = get_parent_class($layer_type_object);
$parent_object = new $parent();
$layer_options_form = $layer_type_object
->options_form() + $parent_object
->options_form($layer);
}
// TODO First case can never be true without crashing earlier
if ($layer_type_object == FALSE || empty($layer_options_form)) {
continue;
}
$layers_option = array(
'#type' => 'fieldset',
'#tree' => TRUE,
'#title' => t('Layer specific options for @layer_title', array(
'@layer_title' => $layer_type['title'],
)),
);
$layers_option += $layer_options_form;
$layers_option['#states'] = array(
'visible' => array(
':input[name="layer_type"]' => array(
'value' => $layer_type['name'],
),
),
);
$layers_option['layer_type'] = array(
'#type' => 'hidden',
'#value' => $layer_type['name'],
);
$layers_options[$layer_type['name']] = $layers_option;
$options[$layer_type['name']] = $layer_type['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,
);
$form += $layers_options;
$form['buttons']['submit']['#weight'] = 0;
$form['buttons']['delete']['#weight'] = 20;
$form['buttons']['saveandedit'] = array(
'#type' => 'submit',
'#value' => t('Save and edit'),
'#weight' => 10,
);
}
function edit_form_validate(&$form, &$form_state) {
ctools_get_plugins('openlayers', 'layer_types');
$layer = openlayers_layer_type_load($form_state['values']['layer_type']);
$form_state['values']['data'] = $form_state['values'][$form_state['values']['layer_type']];
if (empty($form_state['values']['layer_type'])) {
form_set_error('layer_type', 'Layer type cannot be empty.');
}
$parent = get_parent_class($layer);
$parent_object = new $parent();
$form_state['values']['data'] += $layer
->options_init();
$form_state['values']['data'] += $parent_object
->options_init();
$layer_types = openlayers_layer_types();
foreach ($layer_types as $layer_type) {
unset($form_state['values'][$layer_type['name']]);
}
unset($form_state['values']['layer_type']);
if (method_exists($layer, 'options_form_validate')) {
$layer
->options_form_validate($form, $form_state['values']);
}
parent::edit_form_validate($form, $form_state);
}
/**
* Prepare the tag values before they are added to the database.
*/
function edit_form_submit(&$form, &$form_state) {
$layer = openlayers_layer_type_load($form_state['values']['data']['layer_type']);
$layer
->options_form_submit($form, $form_state);
parent::edit_form_submit($form, $form_state);
}
/**
* Implements ctools_export_ui::edit_execute_form().
*
* This is hacky, but since CTools Export UI uses drupal_goto() we have to
* effectively change the plugin to modify the redirect path dynamically.
*/
function edit_execute_form(&$form_state) {
$output = parent::edit_execute_form($form_state);
if (!empty($form_state['executed'])) {
$clicked = $form_state['clicked_button']['#value'];
if (t('Save and edit') == $clicked) {
// We always want to redirect back to this page when adding an item,
// but we want to preserve the destination so we can be redirected back
// to where we came from after clicking "Save".
$options = array();
if (!empty($_GET['destination'])) {
$options['query']['destination'] = $_GET['destination'];
unset($_GET['destination']);
}
// Sets redirect path and options.
$op = $form_state['op'];
$name = $form_state['values']['name'];
$path = 'add' != $op ? current_path() : 'admin/structure/openlayers/layers/list/' . $name . '/edit';
$this->plugin['redirect'][$op] = array(
$path,
$options,
);
}
}
return $output;
}
/**
* Deletes exportable items from the database.
*/
function delete_form_submit(&$form_state) {
$item = $form_state['item'];
$layer = openlayers_layer_type_load($item->data['layer_type']);
if (method_exists($layer, 'delete')) {
$layer
->delete($item);
}
parent::delete_form_submit($form_state);
}
/**
* hook_menu() entry point.
*
* Child implementations that need to add or modify menu items should
* probably call parent::hook_menu($items) and then modify as needed.
*/
function hook_menu(&$items) {
parent::hook_menu($items);
$items['admin/structure/openlayers/layers']['type'] = MENU_LOCAL_TASK;
}
/**
* Build a row based on the item.
*
* By default all of the rows are placed into a table by the render
* method, so this is building up a row suitable for theme('table').
* This doesn't have to be true if you override both.
*/
function list_build_row($item, &$form_state, $operations) {
// Set up sorting
$name = $item->{$this->plugin['export']['key']};
$schema = ctools_export_get_schema($this->plugin['schema']);
$layers_types = openlayers_layer_types();
if (!isset($layers_types[$item->data['layer_type']])) {
return;
}
// Note: $item->{$schema['export']['export type string']} should have already been set up by export.inc so
// we can use it safely.
switch ($form_state['values']['order']) {
case 'disabled':
$this->sorts[$name] = empty($item->disabled) . $name;
break;
case 'title':
$this->sorts[$name] = $item->{$this->plugin['export']['admin_title']};
break;
case 'name':
$this->sorts[$name] = $name;
break;
case 'storage':
$this->sorts[$name] = $item->{$schema['export']['export type string']} . $name;
break;
}
$this->rows[$name]['data'] = array();
$this->rows[$name]['class'] = !empty($item->disabled) ? array(
'ctools-export-ui-disabled',
) : array(
'ctools-export-ui-enabled',
);
// If we have an admin title, make it the first row.
if (!empty($this->plugin['export']['admin_title'])) {
$this->rows[$name]['data'][] = array(
'data' => check_plain($item->{$this->plugin['export']['admin_title']}),
'class' => array(
'ctools-export-ui-title',
),
);
}
$this->rows[$name]['data'][] = array(
'data' => $item->title,
'class' => array(
'ctools-export-ui-title',
),
);
$this->rows[$name]['data'][] = array(
'data' => $layers_types[$item->data['layer_type']]['title'],
'class' => array(
'ctools-export-ui-layer-type',
),
);
$this->rows[$name]['data'][] = array(
'data' => $item->description,
'class' => array(
'ctools-export-ui-description',
),
);
$this->rows[$name]['data'][] = array(
'data' => check_plain($item->{$schema['export']['export type string']}),
'class' => array(
'ctools-export-ui-storage',
),
);
// This should be in the module openlayers_views, but I'm still looking
// for a solution to do it properly.
// Temporarily removed.
/*
if ($item->data['layer_type'] == 'openlayers_views_vector') {
$operations['edit']['href'] = 'admin/structure/views/view/' . $item->data['views']['view'] . '/edit/' . $item->data['views']['display'];
$operations['disable']['href'] = 'admin/structure/views/view/' . $item->data['views']['view'] . '/disable/' . $item->data['views']['display'];
$operations['clone']['href'] = 'admin/structure/views/view/' . $item->data['views']['view'] . '/clone/' . $item->data['views']['display'];
$operations['export']['href'] = 'admin/structure/views/view/' . $item->data['views']['view'] . '/export/' . $item->data['views']['display'];
}
*/
$ops = theme('links__ctools_dropbutton', array(
'links' => $operations,
'attributes' => array(
'class' => array(
'links',
'inline',
),
),
));
$this->rows[$name]['data'][] = array(
'data' => $ops,
'class' => array(
'ctools-export-ui-operations',
),
);
// Add an automatic mouseover of the description if one exists.
if (!empty($this->plugin['export']['admin_description'])) {
$this->rows[$name]['title'] = $item->{$this->plugin['export']['admin_description']};
}
}
/**
* Provide the table header.
*
* If you've added columns via list_build_row() but are still using a
* table, override this method to set up the table header.
*/
function list_table_header() {
$header = array();
if (!empty($this->plugin['export']['admin_title'])) {
$header[] = array(
'data' => t('Name'),
'class' => array(
'ctools-export-ui-name',
),
);
}
$header[] = array(
'data' => t('Title'),
'class' => array(
'ctools-export-ui-title',
),
);
$header[] = array(
'data' => t('Type'),
'class' => array(
'ctools-export-ui-layer-type',
),
);
$header[] = array(
'data' => t('Description'),
'class' => array(
'ctools-export-ui-description',
),
);
$header[] = array(
'data' => t('Storage'),
'class' => array(
'ctools-export-ui-storage',
),
);
$header[] = array(
'data' => t('Operations'),
'class' => array(
'ctools-export-ui-operations',
),
);
return $header;
}
/**
* Provide a list of sort options.
*
* Override this if you wish to provide more or change how these work.
* The actual handling of the sorting will happen in build_row().
*/
function list_sort_options() {
if (!empty($this->plugin['export']['admin_title'])) {
$options = array(
'disabled' => t('Enabled, title'),
$this->plugin['export']['admin_title'] => t('Title'),
);
}
else {
$options = array(
'disabled' => t('Enabled, title'),
);
}
$options += array(
'storage' => t('Storage'),
);
return $options;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ctools_export_ui:: |
property | |||
ctools_export_ui:: |
property | |||
ctools_export_ui:: |
property | |||
ctools_export_ui:: |
public | function | Menu callback to determine if an operation is accessible. | 1 |
ctools_export_ui:: |
public | function | ||
ctools_export_ui:: |
public | function | Builds the operation links for a specific exportable item. | |
ctools_export_ui:: |
public | function | Main entry point to clone an item. | |
ctools_export_ui:: |
public | function | Page callback to delete an exportable item. | |
ctools_export_ui:: |
public | function | Callback to disable a page. | |
ctools_export_ui:: |
public | function | Clear the object cache for the currently edited item. | |
ctools_export_ui:: |
public | function | Retrieve the item currently being edited from the object cache. | |
ctools_export_ui:: |
public | function | Figure out what the cache key is for this object. | |
ctools_export_ui:: |
public | function | Cache the item currently currently being edited. | |
ctools_export_ui:: |
public | function | ||
ctools_export_ui:: |
public | function | Execute the standard form for editing. | |
ctools_export_ui:: |
public | function | Execute the wizard for editing. | |
ctools_export_ui:: |
public | function | Perform a final validation check before allowing the form to be finished. | |
ctools_export_ui:: |
public | function | Import form. Provides simple helptext instructions and textarea for pasting a export definition. | |
ctools_export_ui:: |
public | function | Submit callback for import form. | |
ctools_export_ui:: |
public | function | Import form validate handler. | |
ctools_export_ui:: |
public | function | Main entry point to edit an item. | |
ctools_export_ui:: |
public | function | Called to save the final product from the edit form. | |
ctools_export_ui:: |
public | function | Wizard 'back' callback when using a wizard to edit an item. | |
ctools_export_ui:: |
public | function | Wizard 'cancel' callback when using a wizard to edit an item. | |
ctools_export_ui:: |
public | function | Wizard 'cancel' callback when using a wizard to edit an item. | 1 |
ctools_export_ui:: |
public | function | Wizard 'next' callback when using a wizard to edit an item. | 1 |
ctools_export_ui:: |
public | function | Callback to enable a page. | |
ctools_export_ui:: |
public | function | Page callback to display export information for an exportable item. | |
ctools_export_ui:: |
public | function | Get a page title for the current page from our plugin strings. | |
ctools_export_ui:: |
public | function | Get the form info for the wizard. | 1 |
ctools_export_ui:: |
public | function | Page callback to import information for an exportable item. | |
ctools_export_ui:: |
public | function | Fake constructor -- this is easier to deal with than the real constructor because we are retaining PHP4 compatibility, which would require all child classes to implement their own constructor. | 1 |
ctools_export_ui:: |
public | function | Add listing CSS to the page. | |
ctools_export_ui:: |
public | function | Determine if a row should be filtered out. | 2 |
ctools_export_ui:: |
public | function | Render a footer to go after thie list. | |
ctools_export_ui:: |
public | function | Create the filter/sort form at the top of a list of exports. | 2 |
ctools_export_ui:: |
public | function | Submit the filter/sort form. | |
ctools_export_ui:: |
public | function | Validate the filter/sort form. | |
ctools_export_ui:: |
public | function | Render a header to go before the list. | |
ctools_export_ui:: |
public | function | Master entry point for handling a list. | |
ctools_export_ui:: |
public | function | Render all of the rows together. | |
ctools_export_ui:: |
public | function | Provide a list of fields to test against for the default "search" widget. | 1 |
ctools_export_ui:: |
public | function | Called by ctools_export_ui_load to load the item. | |
ctools_export_ui:: |
public | function | Perform a drupal_goto() to the location provided by the plugin for the operation. | |
ctools_export_ui:: |
public | function | Set an item's state to enabled or disabled and output to user. | |
openlayers_layers_ui:: |
function |
Deletes exportable items from the database. Overrides ctools_export_ui:: |
||
openlayers_layers_ui:: |
function |
Implements ctools_export_ui::edit_execute_form(). Overrides ctools_export_ui:: |
||
openlayers_layers_ui:: |
function |
Provide the actual editing form. Overrides ctools_export_ui:: |
||
openlayers_layers_ui:: |
function |
Prepare the tag values before they are added to the database. Overrides ctools_export_ui:: |
||
openlayers_layers_ui:: |
function |
Validate callback for the edit form. Overrides ctools_export_ui:: |
||
openlayers_layers_ui:: |
function |
hook_menu() entry point. Overrides ctools_export_ui:: |
||
openlayers_layers_ui:: |
function |
Build a row based on the item. Overrides ctools_export_ui:: |
||
openlayers_layers_ui:: |
function |
Provide a list of sort options. Overrides ctools_export_ui:: |
||
openlayers_layers_ui:: |
function |
Provide the table header. Overrides ctools_export_ui:: |