From e1bdc75ab7fa7400c3d055f193262acb88e03190 Mon Sep 17 00:00:00 2001
From: Eric Bremner <ebremner@uwaterloo.ca>
Date: Tue, 25 Apr 2023 14:10:43 -0400
Subject: [PATCH] ISTWCMS-6247: fixing section spacing

---
 layouts/layout--uw-1-col.html.twig            | 13 +++++------
 layouts/layout--uw-2-col.html.twig            |  3 ---
 layouts/layout--uw-3-col.html.twig            |  3 ---
 layouts/layout--uw-4-col.html.twig            |  3 ---
 layouts/layout--uw-5-col.html.twig            |  3 ---
 layouts/layout--uw-inverted-l-left.html.twig  |  3 ---
 layouts/layout--uw-inverted-l-right.html.twig |  3 ---
 uw_cfg_common.module                          | 22 +++++++++++++++++++
 8 files changed, 27 insertions(+), 26 deletions(-)

diff --git a/layouts/layout--uw-1-col.html.twig b/layouts/layout--uw-1-col.html.twig
index 7293cf12..da581e5a 100644
--- a/layouts/layout--uw-1-col.html.twig
+++ b/layouts/layout--uw-1-col.html.twig
@@ -1,16 +1,13 @@
 {%
   set classes = [
-  'uw-section-spacing--default',
-  'uw-section-separator--none',
-  'uw-column-separator--none',
   'layout',
   'layout--uw-1-col',
   settings.column_class,
 ]
 %}
 
-<section{{ attributes.addClass(classes) }}>
-  <div {{ region_attributes.first.addClass('layout__region', 'layout__region--first') }}>
-      {{ content.first }}
-  </div>
-</section>
+{% include '@layouts/layout/layout--1-col/layout--1-col.twig' with {
+  'classes': classes,
+  'content': content
+} %}
+
diff --git a/layouts/layout--uw-2-col.html.twig b/layouts/layout--uw-2-col.html.twig
index 599e1e46..df321871 100644
--- a/layouts/layout--uw-2-col.html.twig
+++ b/layouts/layout--uw-2-col.html.twig
@@ -1,8 +1,5 @@
 {%
   set classes = [
-  'uw-section-spacing--default',
-  'uw-section-separator--none',
-  'uw-column-separator--none',
   'layout',
   'layout--uw-2-col',
   settings.column_class,
diff --git a/layouts/layout--uw-3-col.html.twig b/layouts/layout--uw-3-col.html.twig
index d6488cb2..280ecd8e 100644
--- a/layouts/layout--uw-3-col.html.twig
+++ b/layouts/layout--uw-3-col.html.twig
@@ -1,8 +1,5 @@
 {%
   set classes = [
-  'uw-section-spacing--default',
-  'uw-section-separator--none',
-  'uw-column-separator--none',
   'layout',
   'layout--uw-3-col',
   settings.column_class,
diff --git a/layouts/layout--uw-4-col.html.twig b/layouts/layout--uw-4-col.html.twig
index b3b9ab1d..d099378c 100644
--- a/layouts/layout--uw-4-col.html.twig
+++ b/layouts/layout--uw-4-col.html.twig
@@ -1,8 +1,5 @@
 {%
   set classes = [
-  'uw-section-spacing--default',
-  'uw-section-separator--none',
-  'uw-column-separator--none',
   'layout',
   'layout--uw-4-col',
   settings.column_class,
diff --git a/layouts/layout--uw-5-col.html.twig b/layouts/layout--uw-5-col.html.twig
index bcd94f69..15bee1a9 100644
--- a/layouts/layout--uw-5-col.html.twig
+++ b/layouts/layout--uw-5-col.html.twig
@@ -1,8 +1,5 @@
 {%
   set classes = [
-  'uw-section-spacing--default',
-  'uw-section-separator--none',
-  'uw-column-separator--none',
   'layout',
   'layout--uw-5-col',
   settings.column_class,
diff --git a/layouts/layout--uw-inverted-l-left.html.twig b/layouts/layout--uw-inverted-l-left.html.twig
index b1f74199..c833aea5 100644
--- a/layouts/layout--uw-inverted-l-left.html.twig
+++ b/layouts/layout--uw-inverted-l-left.html.twig
@@ -1,8 +1,5 @@
 {%
   set classes = [
-  'uw-section-spacing--default',
-  'uw-section-separator--none',
-  'uw-column-separator--none',
   'layout',
   'layout--uw-inverted-l-left',
   settings.column_class,
diff --git a/layouts/layout--uw-inverted-l-right.html.twig b/layouts/layout--uw-inverted-l-right.html.twig
index 323bfec9..0bfd50c5 100644
--- a/layouts/layout--uw-inverted-l-right.html.twig
+++ b/layouts/layout--uw-inverted-l-right.html.twig
@@ -1,8 +1,5 @@
 {%
   set classes = [
-  'uw-section-spacing--default',
-  'uw-section-separator--none',
-  'uw-column-separator--none',
   'layout',
   'layout--uw-inverted-l-right',
   settings.column_class,
diff --git a/uw_cfg_common.module b/uw_cfg_common.module
index a0cabd3a..ddd33b38 100644
--- a/uw_cfg_common.module
+++ b/uw_cfg_common.module
@@ -1841,6 +1841,28 @@ function uw_cfg_common_field_widget_single_element_link_default_form_alter(array
   $element['uri']['#element_validate'][] = '_uw_cfg_common_uw_link_validator';
 }
 
+/**
+ * Implements template_preprocess_layout.
+ */
+function uw_cfg_common_preprocess_layout(&$variables) {
+
+  // Classes to check for.
+  $classes['uw-section-spacing'] = 'uw-section-spacing--default';
+  $classes['uw-section-separator'] = 'uw-section-separator--none';
+  $classes['uw-column-separator'] = 'uw-column-separator--none';
+
+  // Step through each of the classes and see if we need to
+  // add it to the layout.
+  foreach ($classes as $needle => $class) {
+
+    // If there is no class for section spacing, add it
+    // to the layout classes.
+    if (empty(preg_grep('/' . $needle . '/i', $variables['attributes']['class']))) {
+      $variables['attributes']['class'][] = $class;
+    }
+  }
+}
+
 /**
  * Link uri field validation function.
  */
-- 
GitLab