diff --git a/config/schema/diff.schema.yml b/config/schema/diff.schema.yml index 550be83c82aa92bf13de0d04919dda7964291e4c..db0ae8fe5387c9fc81d1a0d5d43e290700d11eb1 100644 --- a/config/schema/diff.schema.yml +++ b/config/schema/diff.schema.yml @@ -15,6 +15,9 @@ diff.settings: context_lines_trailing: type: integer label: 'Number of trailing context lines' + default_filter: + type: string + label: 'Default filter on fields based comparison' revision_pager_limit: type: integer label: 'Revisions per page to be displayed in diff pager' diff --git a/src/Form/GeneralSettingsForm.php b/src/Form/GeneralSettingsForm.php index 74c5d53ff3f5fcda7cf42ff9d08d301d43be57af..2affe7a0c9f9c8953cd0a7eaa86e20f9298e96d7 100644 --- a/src/Form/GeneralSettingsForm.php +++ b/src/Form/GeneralSettingsForm.php @@ -170,6 +170,17 @@ class GeneralSettingsForm extends ConfigFormBase { '#options' => $options, ]; + $form['field_based_settings']['default_filter'] = [ + '#type' => 'select', + '#title' => $this->t('Default Filter'), + '#description' => $this->t('Set the default filter on unified/split fields layouts.'), + '#options' => [ + 'raw' => $this->t('Raw'), + 'strip_tags' => $this->t('Strip Tags'), + ], + '#default_value' => $config->get('general_settings.default_filter'), + ]; + // Check if Visual inline layout is installed. if ($this->diffLayoutManager->hasDefinition('visual_inline')) { $form['visual_inline_settings'] = [ @@ -247,6 +258,7 @@ class GeneralSettingsForm extends ConfigFormBase { 'layout_plugins', 'visual_default_view_mode', 'visual_inline_theme', + 'default_filter', ]; foreach ($keys as $key) { $config->set('general_settings.' . $key, $form_state->getValue($key)); diff --git a/src/Plugin/diff/Layout/SplitFieldsDiffLayout.php b/src/Plugin/diff/Layout/SplitFieldsDiffLayout.php index 5aa189c8815af073746b4d5296276939c58015df..6b19082a943e4deecf2d774a8c09f4654443cc3b 100644 --- a/src/Plugin/diff/Layout/SplitFieldsDiffLayout.php +++ b/src/Plugin/diff/Layout/SplitFieldsDiffLayout.php @@ -112,7 +112,8 @@ class SplitFieldsDiffLayout extends DiffLayoutBase { // Build the revisions data. $build = $this->buildRevisionsData($left_revision, $right_revision); - $active_filter = $this->requestStack->getCurrentRequest()->query->get('filter') ?: 'raw'; + $configFilter = $this->configFactory->get('diff.settings')->get('general_settings.default_filter') ?: 'raw'; + $active_filter = $this->requestStack->getCurrentRequest()->query->get('filter') ?: $configFilter; $build['controls']['filter'] = [ '#type' => 'item', '#title' => $this->t('Filter'), diff --git a/src/Plugin/diff/Layout/UnifiedFieldsDiffLayout.php b/src/Plugin/diff/Layout/UnifiedFieldsDiffLayout.php index c0ccb6481bc32dbf0155fcc8b0fb3e2aa930543e..1f85cd11fd5d346b62f7d096d896b277a4ee43d8 100644 --- a/src/Plugin/diff/Layout/UnifiedFieldsDiffLayout.php +++ b/src/Plugin/diff/Layout/UnifiedFieldsDiffLayout.php @@ -113,7 +113,8 @@ class UnifiedFieldsDiffLayout extends DiffLayoutBase { // Build the revisions data. $build = $this->buildRevisionsData($left_revision, $right_revision); - $active_filter = $this->requestStack->getCurrentRequest()->query->get('filter') ?: 'raw'; + $configFilter = $this->configFactory->get('diff.settings')->get('general_settings.default_filter') ?: 'raw'; + $active_filter = $this->requestStack->getCurrentRequest()->query->get('filter') ?: $configFilter; $raw_active = $active_filter == 'raw'; $build['controls']['filter'] = [