ui_patterns-8.x-1.4/modules/ui_patterns_ds/ui_patterns_ds.module
modules/ui_patterns_ds/ui_patterns_ds.module
<?php
/**
* @file
* Contains module file.
*/
use Drupal\Core\Form\FormStateInterface;
use Drupal\ui_patterns\Element\PatternContext;
use Drupal\ui_patterns\Form\PatternDisplayFormTrait;
/**
* Implements hook_theme().
*/
function ui_patterns_ds_theme() {
return [
'pattern_ds_field_template' => [
'variables' => ['pattern' => NULL],
],
];
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function ui_patterns_ds_form_entity_view_display_edit_form_alter(&$form, FormStateInterface $form_state, $form_id) {
array_unshift($form['actions']['submit']['#submit'], 'ui_patterns_ds_field_overview_submit');
}
/**
* Form submit callback to fix the field_group configuration.
*
* @param array $form
* The form.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* The form state.
*/
function ui_patterns_ds_field_overview_submit(array $form, FormStateInterface $form_state) {
/** @var \Drupal\Core\Entity\EntityFormInterface $entity_form */
/** @var \Drupal\Core\Entity\Display\EntityDisplayInterface $display */
$entity_form = $form_state->getFormObject();
$display = $entity_form->getEntity();
$components = array_filter($display->getComponents(), function ($component) {
return isset($component['third_party_settings']['ds']['ft']['settings']['pattern']);
});
foreach ($components as $name => $component) {
(new class() {
use PatternDisplayFormTrait;
})::processFormStateValues($component['third_party_settings']['ds']['ft']['settings']);
$display->setComponent($name, $component);
}
$display->save();
}
/**
* Preprocess hook.
*
* @param array $variables
* Theme variables.
*/
function template_preprocess_field__pattern_ds_field_template(array &$variables) {
\Drupal::service('ui_patterns_ds.field_template_processor')->process($variables);
}
/**
* Implements hook_ui_patterns_suggestions_alter().
*/
function ui_patterns_ds_ui_patterns_suggestions_alter(array &$suggestions, array $variables, PatternContext $context) {
if ($context->isOfType('ds_field_template')) {
$hook = $variables['theme_hook_original'];
$variant = $variables["variant"] ?? '';
$field_name = $context->getProperty('field_name');
$entity_type = $context->getProperty('entity_type');
$bundle = $context->getProperty('bundle');
$view_mode = $context->getProperty('view_mode');
$suggestions[] = $hook . '__ds_field_template';
$suggestions[] = $hook . '__ds_field_template__' . $field_name;
$suggestions[] = $hook . '__ds_field_template__' . $field_name . '__' . $entity_type;
$suggestions[] = $hook . '__ds_field_template__' . $field_name . '__' . $entity_type . '__' . $bundle;
$suggestions[] = $hook . '__ds_field_template__' . $field_name . '__' . $entity_type . '__' . $view_mode;
$suggestions[] = $hook . '__ds_field_template__' . $field_name . '__' . $entity_type . '__' . $bundle . '__' . $view_mode;
if (!empty($variant)) {
$suggestions[] = $hook . '__variant_' . $variant . '__ds_field_template';
$suggestions[] = $hook . '__variant_' . $variant . '__ds_field_template__' . $field_name;
$suggestions[] = $hook . '__variant_' . $variant . '__ds_field_template__' . $field_name . '__' . $entity_type;
$suggestions[] = $hook . '__variant_' . $variant . '__ds_field_template__' . $field_name . '__' . $entity_type . '__' . $bundle;
$suggestions[] = $hook . '__variant_' . $variant . '__ds_field_template__' . $field_name . '__' . $entity_type . '__' . $view_mode;
$suggestions[] = $hook . '__variant_' . $variant . '__ds_field_template__' . $field_name . '__' . $entity_type . '__' . $bundle . '__' . $view_mode;
}
}
}
