Skip to content
Snippets Groups Projects
Commit bf415829 authored by oleksandr p.'s avatar oleksandr p. Committed by Kostia Bohach
Browse files

#3417231 Coding standards and replace deprecated functions

parent 196b21f4
No related branches found
No related tags found
1 merge request!3#3417231 Coding standards and replace deprecated functions
......@@ -5,17 +5,18 @@
* Provides a live preview for the Entity Reference autocomplete widget.
*/
use Drupal\entity_reference\Plugin\Field\FieldWidget\AutocompleteWidget;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Field\WidgetInterface;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Component\Utility\NestedArray;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\WidgetInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;
/**
* Implements hook_field_widget_form_alter().
*/
function entityreference_live_preview_field_widget_form_alter(&$element, FormStateInterface $form_state, $context) {
if ($context['items']->getFieldDefinition()->getType() == 'entity_reference'
if ($context['items']->getFieldDefinition()->getType() === 'entity_reference'
&& $context['widget']->getThirdPartySetting('entityreference_live_preview', 'enabled')) {
$field_name = $context['items']->getFieldDefinition()->getName();
......@@ -32,20 +33,20 @@ function entityreference_live_preview_field_widget_form_alter(&$element, FormSta
/*$entity_type = $context['instance']['entity_type'];
$bundle = $context['instance']['bundle'];*/
$output = array(
$output = [
'#weight' => 10000,
'#prefix' => '<div id="'. $ajax_id .'">',
'#prefix' => '<div id="' . $ajax_id . '">',
'#suffix' => '</div>',
);
];
// TODO: currently only supports the target preview type
// @todo Currently only supports the target preview type.
$target_type = $context['items']->getFieldDefinition()->getFieldStorageDefinition()->getSettings()['target_type'];
$view_builder = \Drupal::service('entity_type.manager')->getViewBuilder($target_type);
if ($form_state->getValues()) {
$context['widget']->extractFormValues($context['items'], $form_state->getCompleteForm(), $form_state);
}
$items = $multiple ? $context['items'] : array($context['items'][$context['delta']]);
$items = $multiple ? $context['items'] : [$context['items'][$context['delta']]];
foreach ($items as $item) {
if ($item->entity) {
$view = $view_builder->view($item->entity, $context['widget']->getThirdPartySetting('entityreference_live_preview', 'mode'));
......@@ -54,78 +55,90 @@ function entityreference_live_preview_field_widget_form_alter(&$element, FormSta
}
$element['entityreference_live_preview'] = $output;
if ($multiple) {
$element['#ajax'] = array(
$element['#ajax'] = [
'callback' => 'entityreference_live_preview_multiple_ajax_render',
'wrapper' => $ajax_id,
);
];
$element['#theme_wrappers'][] = 'entityreference_live_preview_suffix_wrapper';
}
else {
$element['target_id']['#ajax'] = array(
$element['target_id']['#ajax'] = [
'callback' => 'entityreference_live_preview_single_ajax_render',
'wrapper' => $ajax_id,
);
];
}
}
}
/**
* Implements hook_theme().
*/
function entityreference_live_preview_theme() {
return array(
'entityreference_live_preview_suffix_wrapper' => array(
return [
'entityreference_live_preview_suffix_wrapper' => [
'template' => 'entityreference-live-preview-suffix-wrapper',
'render element' => 'element',
),
);
],
];
}
/**
* Implements template_preprocess_HOOK().
*/
function template_preprocess_entityreference_live_preview_suffix_wrapper(&$variables) {
$element = $variables['element'];
$variables['original'] = $element['#children'];
$variables['preview'] = render($element['entityreference_live_preview']);
}
/**
* Helper function for extract element.
*/
function _entityreference_live_preview_extract_element($form, FormStateInterface $form_state, $backtrack, Array $local_path) {
$trigger = $form_state->getTriggeringElement();
$parents = array_merge($backtrack ? array_slice($trigger['#array_parents'], 0, -$backtrack) : $trigger['#array_parents'], $local_path);
$element = NestedArray::getValue($form, $parents);
return $element;
return NestedArray::getValue($form, $parents);
}
/**
* Function for single ajax render.
*/
function entityreference_live_preview_single_ajax_render($form, FormStateInterface $form_state) {
return _entityreference_live_preview_extract_element($form, $form_state, 1, array('entityreference_live_preview'));
return _entityreference_live_preview_extract_element($form, $form_state, 1, ['entityreference_live_preview']);
}
/**
* Function for multiple ajax render.
*/
function entityreference_live_preview_multiple_ajax_render($form, $form_state) {
$element = _entityreference_live_preview_extract_element($form, $form_state, 0, array('entityreference_live_preview'));
$element = _entityreference_live_preview_extract_element($form, $form_state, 0, ['entityreference_live_preview']);
return $element;
}
/**
* Implements hook_entityreference_live_preview_supported_widgets().
*
* @todo
* Find a better way to name this function.
* @todo Find a better way to name this function.
*/
function entityreference_live_preview_entityreference_live_preview_supported_widgets() {
return array(
return [
'entityreference_autocomplete',
'options_select',
// See https://www.drupal.org/node/1295034
'entityreference_autocomplete_deluxe',
);
];
}
/**
* Implements hook_form_FORM_ID_alter() for field_ui_field_edit_form().
*/
function entityreference_live_preview_field_widget_third_party_settings_form(WidgetInterface $plugin, FieldDefinitionInterface $field_definition, $view_mode, $form, FormStateInterface $form_state) {
if ($field_definition->getType() == 'entity_reference') {
# TODO: Default settings:
# enabled => FALSE
# preview_type => target
# mode => default
if ($field_definition->getType() === 'entity_reference') {
// @todo Default settings:
// enabled => FALSE
// preview_type => target
// mode => default.
$preview_type = $form_state->getValue([
'fields',
$field_definition->getName(),
......@@ -136,7 +149,7 @@ function entityreference_live_preview_field_widget_third_party_settings_form(Wid
], $plugin->getThirdPartySetting('entityreference_live_preview', 'preview_type'));
// Load the display modes for the appropriate entity type.
if ($preview_type == 'field') {
if ($preview_type === 'field') {
// To preview the field, we use a display mode of the host entity.
$entity_type = $field_definition->getTargetEntityTypeId();
}
......@@ -146,30 +159,30 @@ function entityreference_live_preview_field_widget_third_party_settings_form(Wid
}
$options = \Drupal::service('entity_display.repository')->getViewModeOptions($entity_type);
$element['enabled'] = array(
$element['enabled'] = [
'#type' => 'checkbox',
'#title' => t('Live preview'),
'#description' => t('Enable a live preview of the referenced entities.'),
'#default_value' => $plugin->getThirdPartySetting('entityreference_live_preview', 'enabled'),
);
];
$ajax_id = 'entityreference-live-preview-mode-' . $field_definition->getName() . '-wrapper';
$states = [ 'visible' => [ ':input[name="fields[' . $field_definition->getName() . '][settings_edit_form][third_party_settings][entityreference_live_preview][enabled]"]' => array('checked' => TRUE) ] ];
$element['preview_type'] = array(
$states = ['visible' => [':input[name="fields[' . $field_definition->getName() . '][settings_edit_form][third_party_settings][entityreference_live_preview][enabled]"]' => ['checked' => TRUE]]];
$element['preview_type'] = [
'#type' => 'radios',
'#title' => t('Live preview type'),
'#options' => array(
'#options' => [
'target' => t('Display the referenced entities directly.'),
'field' => t('Display a preview of the entity reference field.'),
),
],
'#default_value' => $plugin->getThirdPartySetting('entityreference_live_preview', 'preview_type'),
'#states' => $states,
'#ajax' => array(
'#ajax' => [
'callback' => 'entityreference_live_preview_type_ajax_callback',
'wrapper' => $ajax_id,
),
);
$element['mode'] = array(
],
];
$element['mode'] = [
'#type' => 'select',
'#title' => t('Live preview display mode'),
'#description' => t('Select the display mode to be used for generating the live preview.'),
......@@ -178,19 +191,21 @@ function entityreference_live_preview_field_widget_third_party_settings_form(Wid
'#states' => $states,
'#prefix' => '<div id="' . $ajax_id . '">',
'#suffix' => '</div>',
);
if ($plugin->getThirdPartySetting('entityreference_live_preview', 'preview_type') == 'field') {
];
if ($plugin->getThirdPartySetting('entityreference_live_preview', 'preview_type') === 'field') {
$element['mode']['#description'] .= ' ' . t('For field previews, please select a display mode of the referencing entity.');
}
return $element;
}
}
/**
* Function for ajax callback.
*/
function entityreference_live_preview_type_ajax_callback($form, FormStateInterface $form_state) {
$trigger = $form_state->getTriggeringElement();
$parents = array_merge(array_slice($trigger['#array_parents'], 0, -2), array('mode'));
$element = NestedArray::getValue($form, $parents);
return $element;
$parents = array_merge(array_slice($trigger['#array_parents'], 0, -2), ['mode']);
return NestedArray::getValue($form, $parents);
}
/**
......@@ -201,30 +216,30 @@ function entityreference_live_preview_type_ajax_callback($form, FormStateInterfa
* does not need to exist yet; this function can be called while creating it.
*/
function _entityreference_live_preview_render_entity($widget, $target) {
$entity_info = entity_get_info($entity_type);
$entity = (object) array(
$entity_info = \Drupal::entityTypeManager()->getDefinition($entity_type);
$entity = (object) [
$entity_info['entity keys']['bundle'] => $bundle,
);
$field_info = field_info_field($field_name);
];
$field_info = FieldStorageConfig::loadByName($entity_type, $field_name);
$target_type = $field_info['settings']['target_type'];
$instance_info = field_info_instance($entity_type, $field_name, $bundle);
$instance_info = FieldConfig::loadByName($entity_type, $bundle, $field_name);
$display = $instance_info['widget']['settings']['entityreference_live_preview']['mode'];
switch ($instance_info['widget']['settings']['entityreference_live_preview']['preview_type']) {
case 'target':
$entities = \Drupal::service('entity_type.manager')->getStorage($target_type)->load(array($target_id));
$entities = \Drupal::service('entity_type.manager')->getStorage($target_type)->load([$target_id]);
foreach ($entities as $entity) {
if (!entity_access('view', $target_type, $entity)) {
if (!$entity->access('view', $target_type)) {
return '';
}
}
return entity_view($target_type, $entities, $display);
return \Drupal::entityTypeManager()->getViewBuilder($entities)->view($target_type, $display);
case 'field':
$item = array(
$item = [
'target_id' => $target_id,
'target_type' => $target_type,
);
];
return field_view_value($entity_type, $entity, $field_name, $item, $display);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment