From c6698be8685aef3d00bda628853d554d4434c754 Mon Sep 17 00:00:00 2001 From: Artem Dmitriiev Date: Tue, 19 Dec 2017 16:09:57 +0100 Subject: [PATCH] Use default views behaviour if no argument is set --- CHANGELOG.md | 4 ++ .../degov_paragraph_view_reference.module | 2 +- .../ViewsReferenceOverridenFieldFormatter.php | 52 ++++++++++--------- 3 files changed, 33 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f96c4530..07dc7518 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Fixed - Fixed configurations of degov_media_video confriguations +### Changed +- Views reference when argument field is empty doesn't try to set the argument, + so the default argument is calculated by the view itself. + ## [1.13.1] - 11-12-2017 ### Added - Updated dependencies from deGov modules to keep lightning up to date. diff --git a/degov_paragraph_view_reference/degov_paragraph_view_reference.module b/degov_paragraph_view_reference/degov_paragraph_view_reference.module index 1f7a08c3..2f331d20 100644 --- a/degov_paragraph_view_reference/degov_paragraph_view_reference.module +++ b/degov_paragraph_view_reference/degov_paragraph_view_reference.module @@ -263,7 +263,7 @@ function degov_paragraph_view_reference_field_widget_form_alter(&$element, \Drup $element['argument']['#weight'] = $arguments_weight; $element['argument']['#states'] = $argument_states; $element['argument']['#suffix'] = ''; - $view_modes = \Drupal::service('entity_display.repository') + $view_modes = ['' => t('As defined in the view')] + \Drupal::service('entity_display.repository') ->getViewModeOptions($entity_type); if (!in_array($extra_data['view_mode'], array_keys($view_modes))) { $extra_data['view_mode'] = 'default'; diff --git a/degov_paragraph_view_reference/src/Plugin/Field/FieldFormatter/ViewsReferenceOverridenFieldFormatter.php b/degov_paragraph_view_reference/src/Plugin/Field/FieldFormatter/ViewsReferenceOverridenFieldFormatter.php index 72391ae7..e3ea9904 100644 --- a/degov_paragraph_view_reference/src/Plugin/Field/FieldFormatter/ViewsReferenceOverridenFieldFormatter.php +++ b/degov_paragraph_view_reference/src/Plugin/Field/FieldFormatter/ViewsReferenceOverridenFieldFormatter.php @@ -55,37 +55,41 @@ public function viewElements(FieldItemListInterface $items, $langcode) { $view_arguments_config[] = $argument_config; } } - // load the arguments from the field storage. - $arguments = [$argument]; - if (preg_match('/\//', $argument)) { - $arguments = explode('/', $argument); - } - /** @var \Drupal\node\NodeInterface $node */ - $node = \Drupal::routeMatch()->getParameter('node'); - $token_service = \Drupal::token(); - if (is_array($arguments)) { - foreach ($arguments as $index => $argument) { - // Check if there are any tokens that need to be replaced. - if (!empty($token_service->scan($argument))) { - $arguments[$index] = $token_service->replace($argument, ['node' => $node]); - } - // If the argument is not set in the field set the exception value. - if ($argument == '' && !empty($view_arguments_config[$index])) { - if (!empty($view_arguments_config[$index]['exception']['value'])) { - $arguments[$index] = $view_arguments_config[$index]['exception']['value']; - } else { - $arguments[$index] = 0; + if (!empty($argument)) { + // load the arguments from the field storage. + $arguments = [$argument]; + if (preg_match('/\//', $argument)) { + $arguments = explode('/', $argument); + } + /** @var \Drupal\node\NodeInterface $node */ + $node = \Drupal::routeMatch()->getParameter('node'); + $token_service = \Drupal::token(); + if (is_array($arguments)) { + foreach ($arguments as $index => $argument) { + // Check if there are any tokens that need to be replaced. + if (!empty($token_service->scan($argument))) { + $arguments[$index] = $token_service->replace($argument, ['node' => $node]); } - // If there is a default value for the node, set it - we have the node object. - if ($view_arguments_config[$index]['default_argument_type'] == 'node' && $node instanceof NodeInterface) { - $arguments[$index] = $node->id(); + // If the argument is not set in the field set the exception value. + if ($argument == '' && !empty($view_arguments_config[$index])) { + if (!empty($view_arguments_config[$index]['exception']['value'])) { + $arguments[$index] = $view_arguments_config[$index]['exception']['value']; + } + else { + $arguments[$index] = 0; + } + // If there is a default value for the node, set it - we have the node object. + if ($view_arguments_config[$index]['default_argument_type'] == 'node' && $node instanceof NodeInterface) { + $arguments[$index] = $node->id(); + } } } } + $view->setArguments($arguments); } // Set the view display and arguments. $view->setDisplay($display_id); - $view->setArguments($arguments); + // Set number of available elements. if (!empty($extra_data['page_limit']) && is_numeric($extra_data['page_limit'])) { $limit = (int) $extra_data['page_limit'];