use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Url;
use Drupal\views\Plugin\Derivative\ViewsLocalTask;
+use Drupal\views\ViewEntityInterface;
use Drupal\views\ViewExecutable;
use Drupal\views\Entity\View;
use Drupal\views\Render\ViewsRenderPipelineMarkup;
}
}
}
+
+/**
+ * Implements hook_view_presave().
+ *
+ * Provides a BC layer for modules providing old configurations.
+ */
+function views_view_presave(ViewEntityInterface $view) {
+ $displays = $view->get('display');
+ $changed = FALSE;
+ foreach ($displays as $display_name => &$display) {
+ if (isset($display['display_options']['fields'])) {
+ foreach ($display['display_options']['fields'] as $field_name => &$field) {
+ if (isset($field['plugin_id']) && $field['plugin_id'] === 'entity_link') {
+ // Add any missing settings for entity_link.
+ if (!isset($field['output_url_as_text'])) {
+ $field['output_url_as_text'] = FALSE;
+ $changed = TRUE;
+ }
+ if (!isset($field['absolute'])) {
+ $field['absolute'] = FALSE;
+ $changed = TRUE;
+ }
+ }
+ elseif (isset($field['plugin_id']) && $field['plugin_id'] === 'node_path') {
+ // Convert the use of node_path to entity_link.
+ $field['plugin_id'] = 'entity_link';
+ $field['field'] = 'view_node';
+ $field['output_url_as_text'] = TRUE;
+ $changed = TRUE;
+ }
+ }
+ }
+ }
+ if ($changed) {
+ $view->set('display', $displays);
+ }
+}