View source
<?php
class services_client_ui extends ctools_export_ui {
function configure_page($js, $input, $item) {
drupal_set_title($this
->get_page_title('configure', $item));
$event = $this
->get_event_handler($item, TRUE);
return drupal_get_form('services_client_event_config', $event);
}
function add_plugin_page($js, $input, $item, $type) {
drupal_set_title($this
->get_page_title('add_plugin', $item));
$event = $this
->get_event_handler($item, TRUE);
if ($type == 'mapping') {
$uuid = $event
->addPlugin('mapping', 'ServicesClientMappingPlugin');
$event
->setObjectCache();
drupal_goto($event
->getUrl('plugin/mapping/' . $uuid . '/edit'));
}
return drupal_get_form('services_client_plugin_add', $event, $type);
}
function configure_plugin_page($js, $input, $item, $type, $uuid) {
$event = $this
->get_event_handler($item, TRUE);
$plugin = $event
->getPlugin($type, $uuid);
return drupal_get_form('services_client_plugin_edit', $event, $type, $uuid, $plugin);
}
function remove_plugin_page($js, $input, $item, $type, $uuid) {
$event = $this
->get_event_handler($item, TRUE);
if (!isset($_GET['token']) || !drupal_valid_token($_GET['token'], $uuid)) {
drupal_set_message(t('Invalid token'), 'error');
return MENU_ACCESS_DENIED;
}
else {
$event
->removePlugin($type, $uuid);
$event
->setObjectCache();
drupal_set_message(t('Plugin was removed.'));
}
drupal_goto($event
->getUrl('configure'));
}
function break_lock_page($js, $input, $item) {
drupal_set_title($this
->get_page_title('configure', $item));
$event = $this
->get_event_handler($item, TRUE);
return drupal_get_form('services_client_event_break_lock', $event);
}
function get_event_handler($item, $object_cache = FALSE) {
$event = $item
->getHandler();
if ($object_cache) {
return $event
->objectCached();
}
return $event;
}
function list_sort_options() {
if (!empty($this->plugin['export']['title'])) {
$options = array(
'disabled' => t('Enabled, title'),
$this->plugin['export']['title'] => t('Title'),
);
}
else {
$options = array(
'disabled' => t('Enabled, name'),
);
}
$options += array(
'name' => t('Name'),
'storage' => t('Storage'),
'connection' => t('Connection'),
);
return $options;
}
function list_build_row($item, &$form_state, $operations) {
$name = $item->{$this->plugin['export']['key']};
$schema = ctools_export_get_schema($this->plugin['schema']);
switch ($form_state['values']['order']) {
case 'disabled':
$this->sorts[$name] = empty($item->disabled) . $name;
break;
case 'title':
$this->sorts[$name] = $item->{$this->plugin['export']['title']};
break;
case 'name':
$this->sorts[$name] = $name;
break;
case 'connection':
$this->sorts[$name] = $item->connection;
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',
);
$connection = services_client_connection_load($item->connection);
$this->rows[$name]['data'][] = array(
'data' => check_plain($item->title),
'class' => array(
'ctools-export-ui-title',
),
);
$this->rows[$name]['data'][] = array(
'data' => check_plain($name),
'class' => array(
'ctools-export-ui-name',
),
);
$this->rows[$name]['data'][] = array(
'data' => l($connection->admin_title, 'admin/structure/services_client/connection/list/' . $item->connection . '/edit', array(
'query' => drupal_get_destination(),
)),
'class' => array(
'ctools-export-ui-connection',
),
);
$this->rows[$name]['data'][] = array(
'data' => check_plain($item->entity_type),
'class' => array(
'ctools-export-ui-entity-type',
),
);
$this->rows[$name]['data'][] = array(
'data' => check_plain($item->event),
'class' => array(
'ctools-export-ui-event',
),
);
$this->rows[$name]['data'][] = array(
'data' => check_plain($item->plugin),
'class' => array(
'ctools-export-ui-handler',
),
);
$this->rows[$name]['data'][] = array(
'data' => check_plain($item->{$schema['export']['export type string']}),
'class' => array(
'ctools-export-ui-storage',
),
);
$ops = theme('links', array(
'links' => $operations,
'attributes' => array(
'class' => array(
'links',
'inline',
),
),
));
$this->rows[$name]['data'][] = array(
'data' => $ops,
'class' => array(
'ctools-export-ui-operations',
),
);
if (!empty($this->plugin['export']['admin_description'])) {
$this->rows[$name]['title'] = $item->{$this->plugin['export']['admin_description']};
}
}
function list_table_header() {
$header = array();
$header[] = array(
'data' => t('Title'),
'class' => array(
'ctools-export-ui-title',
),
);
$header[] = array(
'data' => t('Name'),
'class' => array(
'ctools-export-ui-name',
),
);
$header[] = array(
'data' => t('Connection'),
'class' => array(
'ctools-export-ui-connection',
),
);
$header[] = array(
'data' => t('Entity Type'),
'class' => array(
'ctools-export-ui-entity-type',
),
);
$header[] = array(
'data' => t('Event'),
'class' => array(
'ctools-export-ui-event',
),
);
$header[] = array(
'data' => t('Handler'),
'class' => array(
'ctools-export-ui-handler',
),
);
$header[] = array(
'data' => t('Storage'),
'class' => array(
'ctools-export-ui-storage',
),
);
$header[] = array(
'data' => t('Operations'),
'class' => array(
'ctools-export-ui-operations',
),
);
return $header;
}
}