From 16c3c262598a9deb0be2b610b3711eef7ad0a910 Mon Sep 17 00:00:00 2001
From: Liam Morland <lkmorlan@uwaterloo.ca>
Date: Mon, 22 Nov 2021 11:14:12 -0500
Subject: [PATCH] ISTWCMS-4866: Make expand/collapse use new node theming

---
 ...r_browser_block.uw_cbl_multi_type_list.yml |  2 +-
 ...er_browser_block.uw_lbb_catalog_search.yml |  2 +-
 ...r_browser_block.uw_lbb_expand_collapse.yml | 11 ++++++++
 src/Service/UWService.php                     |  1 +
 src/Service/UwNodeContent.php                 | 26 +++++++++++++++++++
 src/UwPermissions/UwPermissions.php           |  8 ++++++
 .../user.role.uw_role_content_author.yml      |  6 +++++
 .../user.role.uw_role_content_editor.yml      |  6 +++++
 .../user.role.uw_role_site_manager.yml        |  6 +++++
 uw_cfg_common.info.yml                        |  1 -
 uw_cfg_common.install                         |  7 +++++
 uw_cfg_common.links.menu.yml                  |  6 +++++
 12 files changed, 79 insertions(+), 3 deletions(-)
 create mode 100644 config/install/layout_builder_browser.layout_builder_browser_block.uw_lbb_expand_collapse.yml

diff --git a/config/install/layout_builder_browser.layout_builder_browser_block.uw_cbl_multi_type_list.yml b/config/install/layout_builder_browser.layout_builder_browser_block.uw_cbl_multi_type_list.yml
index 7c5efc0d..40950f15 100644
--- a/config/install/layout_builder_browser.layout_builder_browser_block.uw_cbl_multi_type_list.yml
+++ b/config/install/layout_builder_browser.layout_builder_browser_block.uw_cbl_multi_type_list.yml
@@ -5,7 +5,7 @@ id: uw_cbl_multi_type_list
 block_id: uw_cbl_multi_type_list
 category: uw_bc_listings
 label: 'Multi-type list'
-weight: -1
+weight: 0
 image_path: images/layout_builder_browser/multitypelist.svg
 image_path_base: 'theme:uw_fdsu_theme_resp'
 image_alt: ''
diff --git a/config/install/layout_builder_browser.layout_builder_browser_block.uw_lbb_catalog_search.yml b/config/install/layout_builder_browser.layout_builder_browser_block.uw_lbb_catalog_search.yml
index a90e4804..25aa3f6d 100644
--- a/config/install/layout_builder_browser.layout_builder_browser_block.uw_lbb_catalog_search.yml
+++ b/config/install/layout_builder_browser.layout_builder_browser_block.uw_lbb_catalog_search.yml
@@ -5,7 +5,7 @@ id: uw_lbb_catalog_search
 block_id: uw_cbl_catalog_search
 category: uw_bc_searches
 label: 'Catalog search'
-weight: -1
+weight: 0
 image_path: images/layout_builder_browser/catalogsearch.svg
 image_path_base: 'theme:uw_fdsu_theme_resp'
 image_alt: 'Catalog search'
diff --git a/config/install/layout_builder_browser.layout_builder_browser_block.uw_lbb_expand_collapse.yml b/config/install/layout_builder_browser.layout_builder_browser_block.uw_lbb_expand_collapse.yml
new file mode 100644
index 00000000..c896ca49
--- /dev/null
+++ b/config/install/layout_builder_browser.layout_builder_browser_block.uw_lbb_expand_collapse.yml
@@ -0,0 +1,11 @@
+langcode: en
+status: true
+dependencies: {  }
+id: uw_lbb_expand_collapse
+block_id: uw_cbl_expand_collapse
+category: uw_bc_content
+label: Expand/collapse
+weight: 0
+image_path: images/layout_builder_browser/expandcollapse.svg
+image_path_base: 'theme:uw_fdsu_theme_resp'
+image_alt: ''
diff --git a/src/Service/UWService.php b/src/Service/UWService.php
index f21a264b..1175ae9c 100644
--- a/src/Service/UWService.php
+++ b/src/Service/UWService.php
@@ -189,6 +189,7 @@ class UWService implements UWServiceInterface {
           'uw_ct_catalog_item',
           'uw_ct_contact',
           'uw_ct_event',
+          'uw_ct_expand_collapse_group',
           'uw_ct_news_item',
           'uw_ct_opportunity',
           'uw_ct_profile',
diff --git a/src/Service/UwNodeContent.php b/src/Service/UwNodeContent.php
index fc0f7e1d..596fcb32 100644
--- a/src/Service/UwNodeContent.php
+++ b/src/Service/UwNodeContent.php
@@ -61,6 +61,10 @@ class UwNodeContent {
         $content_data = $this->getEventContent($node_flags);
         break;
 
+      case 'uw_ct_expand_collapse_group':
+        $content_data = $this->getExpandCollapseGroupContent($node_flags);
+        break;
+
       case 'uw_ct_news_item':
         $content_data = $this->getNewsContent($node_flags);
         break;
@@ -351,6 +355,28 @@ class UwNodeContent {
     return $content_data;
   }
 
+  /**
+   * Get the node content for e/c group content type.
+   *
+   * @param array $node_flags
+   *   The flags for the node.
+   *
+   * @return array
+   *   Array of content to get from the node.
+   */
+  public function getExpandCollapseGroupContent(array $node_flags): array {
+
+    // Setup the content data array.
+    $content_data = $this->setupContentData($node_flags);
+
+    // Setup the actual content.
+    if ($node_flags['get_content']) {
+      $content_data['content'] = $this->addToContentData('content', '');
+    }
+
+    return $content_data;
+  }
+
   /**
    * Get the node content for news content type.
    *
diff --git a/src/UwPermissions/UwPermissions.php b/src/UwPermissions/UwPermissions.php
index 8630e24a..11cdaff4 100644
--- a/src/UwPermissions/UwPermissions.php
+++ b/src/UwPermissions/UwPermissions.php
@@ -159,6 +159,14 @@ class UwPermissions {
         ),
       ],
 
+      // Expand/Collapse.
+      'Expand/Collapse Group' => [
+        'Use content type' =>
+        UwPermissions::buildRolePermissionsListContentType(
+          'uw_ct_expand_collapse_group'
+        ),
+      ],
+
       // News permissions.
       'News' => [
         'Use content type' =>
diff --git a/src/UwRoles/user.role.uw_role_content_author.yml b/src/UwRoles/user.role.uw_role_content_author.yml
index 0d87fc01..c6b5c1a1 100644
--- a/src/UwRoles/user.role.uw_role_content_author.yml
+++ b/src/UwRoles/user.role.uw_role_content_author.yml
@@ -47,6 +47,7 @@ permissions:
   - 'clone uw_ct_catalog_item content'
   - 'clone uw_ct_contact content'
   - 'clone uw_ct_event content'
+  - 'clone uw_ct_expand_collapse_group content'
   - 'clone uw_ct_news_item content'
   - 'clone uw_ct_opportunity content'
   - 'clone uw_ct_profile content'
@@ -59,6 +60,7 @@ permissions:
   - 'configure editable uw_ct_catalog_item node layout overrides'
   - 'configure editable uw_ct_contact node layout overrides'
   - 'configure editable uw_ct_event node layout overrides'
+  - 'configure editable uw_ct_expand_collapse_group node layout overrides'
   - 'configure editable uw_ct_news_item node layout overrides'
   - 'configure editable uw_ct_opportunity node layout overrides'
   - 'configure editable uw_ct_profile node layout overrides'
@@ -101,6 +103,7 @@ permissions:
   - 'enter uw_ct_catalog_item revision log entry'
   - 'enter uw_ct_contact revision log entry'
   - 'enter uw_ct_event revision log entry'
+  - 'enter uw_ct_expand_collapse_group revision log entry'
   - 'enter uw_ct_news_item revision log entry'
   - 'enter uw_ct_opportunity revision log entry'
   - 'enter uw_ct_profile revision log entry'
@@ -120,6 +123,9 @@ permissions:
   - 'override uw_ct_event published option'
   - 'override uw_ct_event revision option'
   - 'override uw_ct_event sticky option'
+  - 'override uw_ct_expand_collapse_group published option'
+  - 'override uw_ct_expand_collapse_group revision option'
+  - 'override uw_ct_expand_collapse_group sticky option'
   - 'override uw_ct_news_item promote to front page option'
   - 'override uw_ct_news_item published option'
   - 'override uw_ct_news_item revision option'
diff --git a/src/UwRoles/user.role.uw_role_content_editor.yml b/src/UwRoles/user.role.uw_role_content_editor.yml
index b039ce20..b392924c 100644
--- a/src/UwRoles/user.role.uw_role_content_editor.yml
+++ b/src/UwRoles/user.role.uw_role_content_editor.yml
@@ -48,6 +48,7 @@ permissions:
   - 'clone uw_ct_catalog_item content'
   - 'clone uw_ct_contact content'
   - 'clone uw_ct_event content'
+  - 'clone uw_ct_expand_collapse_group content'
   - 'clone uw_ct_news_item content'
   - 'clone uw_ct_opportunity content'
   - 'clone uw_ct_profile content'
@@ -59,6 +60,7 @@ permissions:
   - 'configure editable uw_ct_catalog_item node layout overrides'
   - 'configure editable uw_ct_contact node layout overrides'
   - 'configure editable uw_ct_event node layout overrides'
+  - 'configure editable uw_ct_expand_collapse_group node layout overrides'
   - 'configure editable uw_ct_news_item node layout overrides'
   - 'configure editable uw_ct_opportunity node layout overrides'
   - 'configure editable uw_ct_profile node layout overrides'
@@ -87,6 +89,7 @@ permissions:
   - 'enter uw_ct_catalog_item revision log entry'
   - 'enter uw_ct_contact revision log entry'
   - 'enter uw_ct_event revision log entry'
+  - 'enter uw_ct_expand_collapse_group revision log entry'
   - 'enter uw_ct_news_item revision log entry'
   - 'enter uw_ct_opportunity revision log entry'
   - 'enter uw_ct_profile revision log entry'
@@ -106,6 +109,9 @@ permissions:
   - 'override uw_ct_event published option'
   - 'override uw_ct_event revision option'
   - 'override uw_ct_event sticky option'
+  - 'override uw_ct_expand_collapse_group published option'
+  - 'override uw_ct_expand_collapse_group revision option'
+  - 'override uw_ct_expand_collapse_group sticky option'
   - 'override uw_ct_news_item promote to front page option'
   - 'override uw_ct_news_item published option'
   - 'override uw_ct_news_item revision option'
diff --git a/src/UwRoles/user.role.uw_role_site_manager.yml b/src/UwRoles/user.role.uw_role_site_manager.yml
index 175ee68a..eaf74734 100644
--- a/src/UwRoles/user.role.uw_role_site_manager.yml
+++ b/src/UwRoles/user.role.uw_role_site_manager.yml
@@ -52,6 +52,7 @@ permissions:
   - 'clone uw_ct_catalog_item content'
   - 'clone uw_ct_contact content'
   - 'clone uw_ct_event content'
+  - 'clone uw_ct_expand_collapse_group content'
   - 'clone uw_ct_news_item content'
   - 'clone uw_ct_opportunity content'
   - 'clone uw_ct_profile content'
@@ -63,6 +64,7 @@ permissions:
   - 'configure editable uw_ct_catalog_item node layout overrides'
   - 'configure editable uw_ct_contact node layout overrides'
   - 'configure editable uw_ct_event node layout overrides'
+  - 'configure editable uw_ct_expand_collapse_group node layout overrides'
   - 'configure editable uw_ct_news_item node layout overrides'
   - 'configure editable uw_ct_opportunity node layout overrides'
   - 'configure editable uw_ct_profile node layout overrides'
@@ -106,6 +108,7 @@ permissions:
   - 'enter uw_ct_catalog_item revision log entry'
   - 'enter uw_ct_contact revision log entry'
   - 'enter uw_ct_event revision log entry'
+  - 'enter uw_ct_expand_collapse_group revision log entry'
   - 'enter uw_ct_news_item revision log entry'
   - 'enter uw_ct_opportunity revision log entry'
   - 'enter uw_ct_profile revision log entry'
@@ -125,6 +128,9 @@ permissions:
   - 'override uw_ct_event published option'
   - 'override uw_ct_event revision option'
   - 'override uw_ct_event sticky option'
+  - 'override uw_ct_expand_collapse_group published option'
+  - 'override uw_ct_expand_collapse_group revision option'
+  - 'override uw_ct_expand_collapse_group sticky option'
   - 'override uw_ct_news_item promote to front page option'
   - 'override uw_ct_news_item published option'
   - 'override uw_ct_news_item revision option'
diff --git a/uw_cfg_common.info.yml b/uw_cfg_common.info.yml
index cf8095e5..574beb15 100644
--- a/uw_cfg_common.info.yml
+++ b/uw_cfg_common.info.yml
@@ -25,7 +25,6 @@ dependencies:
   - 'drupal:language'
   - 'drupal:layout_builder'
   - 'drupal:layout_builder_browser'
-  - 'drupal:layout_builder_expand_collapse'
   - 'drupal:layout_builder_modal'
   - 'drupal:layout_builder_restrictions'
   - 'drupal:layout_builder_styles'
diff --git a/uw_cfg_common.install b/uw_cfg_common.install
index 75a23094..58ee4a9a 100644
--- a/uw_cfg_common.install
+++ b/uw_cfg_common.install
@@ -140,6 +140,13 @@ function uw_cfg_common_install() {
         'Site manager',
       ],
     ],
+    'Expand/Collapse Group' => [
+      'Use content type' => [
+        'Site manager',
+        'Content author',
+        'Content editor',
+      ],
+    ],
     'News' => [
       'Use content type' => [
         'Site manager',
diff --git a/uw_cfg_common.links.menu.yml b/uw_cfg_common.links.menu.yml
index b19fad4d..4d38d8b8 100644
--- a/uw_cfg_common.links.menu.yml
+++ b/uw_cfg_common.links.menu.yml
@@ -226,6 +226,12 @@ uw_content_management.content_types.event.list_event_types:
   url: internal:/admin/structure/taxonomy/manage/uw_tax_event_type/overview
   weight: 0
 
+uw_content_management.content_types.expand_collapse:
+  title: 'Expand/collapse group'
+  parent: uw_content_management.content_types
+  url: internal:/node/add/uw_ct_expand_collapse_group
+  weight: 0
+
 uw_content_management.content_types.news_item:
   title: 'News item'
   parent: uw_content_management.content_types
-- 
GitLab