'
',
'#suffix' => '
',
'#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';
}