From 6f24f14df853fd53c5f54b8176aae73c8825d66b Mon Sep 17 00:00:00 2001
From: Daniel Bielke <53779-dbielke1986@users.noreply.drupalcode.org>
Date: Thu, 11 Apr 2024 11:07:49 +0000
Subject: [PATCH] Issue #3165141: Set the default filter to "Strip Tags"

---
 config/schema/diff.schema.yml                      |  3 +++
 src/Form/GeneralSettingsForm.php                   | 12 ++++++++++++
 src/Plugin/diff/Layout/SplitFieldsDiffLayout.php   |  3 ++-
 src/Plugin/diff/Layout/UnifiedFieldsDiffLayout.php |  3 ++-
 4 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/config/schema/diff.schema.yml b/config/schema/diff.schema.yml
index 550be83..db0ae8f 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 74c5d53..2affe7a 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 5aa189c..6b19082 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 c0ccb64..1f85cd1 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'] = [
-- 
GitLab