123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- <?php
- /**
- * List all custom view modes.
- */
- function entity_view_mode_list() {
- $custom_view_modes = variable_get('entity_view_modes', array());
- $entity_info = entity_get_info();
- $build = array(
- '#prefix' => '<div id="view-modes-accordion">',
- '#suffix' => '</div>',
- '#attached' => array(
- 'library' => array(
- //array('system', 'ui.accordion'),
- ),
- 'js' => array(
- //drupal_get_path('module', 'entity_view_mode') . '/entity_view_mode.admin.js',
- ),
- ),
- );
- foreach (array_keys($entity_info) as $entity_type) {
- if (empty($entity_info[$entity_type]['view modes'])) {
- continue;
- }
- $build[$entity_type] = array(
- '#type' => 'fieldset',
- '#title' => $entity_info[$entity_type]['label'],
- '#collapsible' => TRUE,
- );
- // Sort view modes by machine name.
- ksort($entity_info[$entity_type]['view modes']);
- $rows = array();
- foreach ($entity_info[$entity_type]['view modes'] as $view_mode => $view_mode_info) {
- $rows[$view_mode]['label'] = check_plain($view_mode_info['label']);
- $operations = array();
- if (isset($custom_view_modes[$entity_type][$view_mode])) {
- $operations['edit'] = array(
- 'title' => t('Edit'),
- 'href' => "admin/config/system/entity-view-modes/edit/{$entity_type}/{$view_mode}",
- );
- $operations['delete'] = array(
- 'title' => t('Delete'),
- 'href' => "admin/config/system/entity-view-modes/delete/{$entity_type}/{$view_mode}",
- );
- }
- if (!empty($operations)) {
- $rows[$view_mode]['operations'] = array(
- 'data' => array(
- '#theme' => 'links',
- '#links' => $operations,
- '#attributes' => array('class' => array('links', 'inline')),
- ),
- );
- }
- else {
- $rows[$view_mode]['operations'] = t('None (view mode locked)');
- }
- }
- $rows['_add_new'][] = array(
- 'data' => l(t('Add new view mode'), "admin/config/system/entity-view-modes/add/{$entity_type}"),
- 'colspan' => 2,
- );
- $build[$entity_type]['view_modes'] = array(
- '#theme' => 'table',
- '#header' => array(t('View mode'), t('Operations')),
- '#rows' => $rows,
- );
- }
- return $build;
- }
- /**
- * Form builder; edit a custom view mode.
- */
- function entity_view_mode_edit_form($form, &$form_state, $entity_type, $machine_name = NULL) {
- $form['#entity_type'] = $entity_type;
- $form['#entity_info'] = $entity_info = entity_get_info($entity_type);
- $view_mode = entity_view_mode_load($entity_type, $machine_name);
- if (empty($entity_info['view modes']) || (isset($machine_name) && empty($view_mode))) {
- drupal_not_found();
- drupal_exit();
- }
- $form['entity_type'] = array(
- '#type' => 'item',
- '#title' => t('Entity type'),
- '#markup' => $entity_info['label'],
- );
- $form['label'] = array(
- '#type' => 'textfield',
- '#title' => t('Label'),
- '#default_value' => isset($view_mode['label']) ? $view_mode['label'] : '',
- '#required' => TRUE,
- );
- $form['machine_name'] = array(
- '#type' => 'machine_name',
- '#machine_name' => array(
- 'source' => array('label'),
- 'exists' => 'entity_view_mode_exists',
- ),
- '#default_value' => $machine_name,
- '#entity_type' => $entity_type,
- );
- if (isset($machine_name)) {
- $form['old_machine_name'] = array(
- '#type' => 'value',
- '#value' => $machine_name,
- );
- }
- $form['actions'] = array('#type' => 'actions');
- $form['actions']['save'] = array(
- '#type' => 'submit',
- '#value' => t('Save'),
- );
- return $form;
- }
- function entity_view_mode_exists($machine_name, $element, $form_state) {
- $entity_info = entity_get_info($element['#entity_type']);
- return !empty($entity_info['view modes'][$machine_name]);
- }
- function entity_view_mode_edit_form_submit($form, &$form_state) {
- // Save the view mode.
- form_state_values_clean($form_state);
- $view_mode = $form_state['values'];
- entity_view_mode_save($form['#entity_type'], $view_mode);
- drupal_set_message(t('Saved the %view-mode @entity-type view mode.', array(
- '@entity-type' => drupal_strtolower($form['#entity_info']['label']),
- '%view-mode' => $view_mode['label'],
- )));
- $form_state['redirect'] = 'admin/config/system/entity-view-modes';
- }
- function entity_view_mode_delete_form(array $form, $form_state, $entity_type, $machine_name) {
- $form['#entity_type'] = $entity_type;
- $form['#entity_info'] = $entity_info = entity_get_info($entity_type);
- $form['#view_mode'] = $view_mode = entity_view_mode_load($entity_type, $machine_name);
- if (empty($form['#view_mode'])) {
- drupal_not_found();
- drupal_exit();
- }
- $form['machine_name'] = array(
- '#type' => 'value',
- '#value' => $machine_name,
- );
- return confirm_form(
- $form,
- t('Are you sure you want to delete the %view-mode @entity-type view mode?', array(
- '@entity-type' => drupal_strtolower($entity_info['label']),
- '%view-mode' => $view_mode['label'],
- )),
- 'admin/config/system/entity-view-modes',
- t('Deleting a view mode will cause any output still requesting to use that view mode to use the default display settings.'),
- t('Delete'),
- t('Cancel')
- );
- }
- function entity_view_mode_delete_form_submit($form, &$form_state) {
- entity_view_mode_delete($form['#entity_type'], $form_state['values']['machine_name']);
- drupal_set_message(t('Deleted the %view-mode @entity-type view mode.', array(
- '@entity-type' => drupal_strtolower($form['#entity_info']['label']),
- '%view-mode' => $form['#view_mode']['label'],
- )));
- $form_state['redirect'] = 'admin/config/system/entity-view-modes';
- }
|