function panelizer_form_entity_view_display_edit_form_alter in Panelizer 8.3
Same name and namespace in other branches
- 8.5 panelizer.module \panelizer_form_entity_view_display_edit_form_alter()
- 8.4 panelizer.module \panelizer_form_entity_view_display_edit_form_alter()
Implements hook_form_FORM_ID_alter().
File
- ./
panelizer.module, line 189 - Hook implementations for the Panelizer module.
Code
function panelizer_form_entity_view_display_edit_form_alter(&$form, FormStateInterface $form_state, $form_id) {
/** @var \Drupal\Core\Entity\EntityFormInterface $form_object */
$form_object = $form_state
->getFormObject();
/** @var \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display */
$display = $form_object
->getEntity();
/** @var \Drupal\panelizer\Plugin\PanelizerEntityManager $panelizer_manager */
$panelizer_manager = \Drupal::service('plugin.manager.panelizer_entity');
/** @var \Drupal\panelizer\PanelizerInterface $panelizer */
$panelizer = \Drupal::service('panelizer');
$entity_type_id = $display
->getTargetEntityTypeId();
$bundle = $display
->getTargetBundle();
$mode = $display
->getMode();
if ($panelizer_manager
->hasDefinition($entity_type_id)) {
$settings = $panelizer
->getPanelizerSettings($entity_type_id, $bundle, $mode, $display);
// Always put the field table below the Panelizer options.
$form['fields']['#weight'] = 10;
$form['panelizer'] = [
'#tree' => TRUE,
];
$form['panelizer']['enable'] = [
'#type' => 'checkbox',
'#title' => t('Panelize this view mode'),
'#default_value' => isset($settings['enable']) ? $settings['enable'] : FALSE,
];
$entity_type = \Drupal::entityTypeManager()
->getDefinition($entity_type_id);
$form['panelizer']['options'] = [
'#type' => 'details',
'#open' => TRUE,
'#title' => t('Panelizer options'),
'#states' => [
'visible' => [
'#edit-panelizer-enable' => [
'checked' => TRUE,
],
],
],
'#parents' => [
'panelizer',
],
];
$form['panelizer']['options']['custom'] = [
'#type' => 'checkbox',
'#title' => t('Allow each @entity to have its display customized', [
'@entity' => $entity_type
->getSingularLabel(),
]),
'#default_value' => isset($settings['custom']) ? $settings['custom'] : FALSE,
];
$form['panelizer']['options']['allow'] = [
'#type' => 'checkbox',
'#title' => t('Allow users to select which display to use'),
'#description' => t('When multiple default displays are available for a view mode it can be useful to allow content creators to choose which display to use for an individual @entity.', [
'@entity' => $entity_type
->getSingularLabel(),
]),
'#default_value' => isset($settings['allow']) ? $settings['allow'] : FALSE,
];
// If this display mode is panelized, then show the available displays in a
// table.
if (!empty($settings['enable'])) {
$form['#cache']['tags'][] = "panelizer_default:{$entity_type_id}:{$bundle}:{$mode}";
$form['panelizer']['displays'] = [
'#type' => 'table',
'#caption' => t('Default displays available for this view mode'),
'#header' => [
t('Name'),
t('Use as default'),
t('Operations'),
],
];
foreach ($display
->getThirdPartySetting('panelizer', 'displays', []) as $machine_name => $panels_display) {
// Reset operations when in the foreach loop.
$operations = [];
$display_name = $machine_name;
$machine_name = "{$entity_type_id}__{$bundle}__{$mode}__{$machine_name}";
$operations['edit'] = [
'title' => t('Edit'),
'url' => Url::fromRoute('panelizer.wizard.edit', [
'machine_name' => $machine_name,
]),
];
if ($settings['default'] != $display_name) {
$operations['set_default'] = [
'title' => t('Use as default'),
'url' => Url::fromRoute('panelizer.default.select', [
'machine_name' => $machine_name,
]),
];
$operations['delete'] = [
'title' => t('Delete'),
'url' => Url::fromRoute('panelizer.default.delete', [
'machine_name' => $machine_name,
]),
];
}
$form['panelizer']['displays'][$machine_name] = [
'label' => [
'#markup' => $panels_display['label'],
],
'default' => [
'#markup' => $settings['default'] == $display_name ? '✓' : '',
],
'operations' => [
'data' => [
'#type' => 'operations',
'#links' => $operations,
],
],
];
}
$form['fields']['#access'] = FALSE;
}
$form['#attached']['library'][] = 'panelizer/panelizer_default_form';
$form['actions']['submit']['#submit'][] = 'panelizer_form_entity_view_display_edit_submit';
}
}