From 774e36fb0f174566cf5623d93565e79e2164fa9d Mon Sep 17 00:00:00 2001
From: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
Date: Sun, 8 Oct 2023 11:36:38 -0400
Subject: [PATCH] Split the side-menu up into managable partials

---
 layouts/_default/list.html               | 14 +-----------
 layouts/_default/single.html             | 14 +-----------
 layouts/entry/single.html                | 15 +-----------
 layouts/news/list.html                   | 29 +-----------------------
 layouts/news/single.html                 | 15 +-----------
 layouts/partials/categories_menu.html    | 24 ++++++++++++++++++++
 layouts/partials/recent_posts_menu.html  | 10 ++++++++
 layouts/partials/side_menu_list.html     |  5 ++++
 layouts/partials/side_menu_single.html   |  5 ++++
 layouts/partials/side_menu_taxonomy.html | 13 +++++++++++
 layouts/projects/list.html               | 29 +-----------------------
 layouts/projects/single.html             | 15 +-----------
 layouts/resource/list.html               | 29 +-----------------------
 layouts/resource/single.html             | 15 +-----------
 layouts/taxonomy/list.html               | 13 +----------
 layouts/taxonomy/tag.html                | 14 +-----------
 16 files changed, 68 insertions(+), 191 deletions(-)
 create mode 100644 layouts/partials/categories_menu.html
 create mode 100644 layouts/partials/recent_posts_menu.html
 create mode 100644 layouts/partials/side_menu_list.html
 create mode 100644 layouts/partials/side_menu_single.html
 create mode 100644 layouts/partials/side_menu_taxonomy.html

diff --git a/layouts/_default/list.html b/layouts/_default/list.html
index 37f136365..09bd28cde 100644
--- a/layouts/_default/list.html
+++ b/layouts/_default/list.html
@@ -58,19 +58,7 @@
 </div>
 
 </div>
-<div class='col-md-4'>
-  <nav class='menu tags'>
-    <span class="menu-heading">Categories</span>
-    <a class='menu-item selected' data-slug='all' href='#'>All posts</a>
-    {{range $name, $taxonomy := .Site.Taxonomies.tags}} {{ $cnt := .Count }}
-  	  {{ with $.Site.GetPage (printf "/tags/%s" $name) }}
-  		  <a href="{{ .RelPermalink }}" class='menu-item tag' data-slug='{{$name}}' title="All pages with tag <i>{{$name}}</i>">{{$name}} ({{$cnt}})</a>
-  	  {{end}}
-  	{{end}}
-  </nav>
-  <br>
-  {{ partial "microblog.html" . }}
-</div>
+{{ partial "side_menu_list.html" . }}
 </div>
 
 {{ partial "bottom_list.html" . }}
diff --git a/layouts/_default/single.html b/layouts/_default/single.html
index a9af3d6ad..5006d2921 100644
--- a/layouts/_default/single.html
+++ b/layouts/_default/single.html
@@ -50,18 +50,6 @@
       </section>
     </article>
   </div>
-  <div class='col-md-4'>
-    <nav class='menu tags'>
-      <span class="menu-heading">Recent Posts</span>
-      {{ $hereLink := .Permalink }}
-      {{ range .Site.Pages }}
-         {{ range .Pages }}
-            <a href='{{ .RelPermalink }}' class='menu-item tag{{ if (eq .Permalink $hereLink) }} selected{{ end }}' data-slug='{{ .Title}}' title="{{ .Title}}">{{ .Title}}</a>
-         {{ end }}
-      {{ end }}
-    </nav>
-    <br>
-    {{ partial "microblog.html" . }}
-  </div>
+  {{ partial "side_menu_single.html" . }}
 </div>
 {{ partial "bottom_single.html" . }}
diff --git a/layouts/entry/single.html b/layouts/entry/single.html
index 984e37a88..2cca77757 100644
--- a/layouts/entry/single.html
+++ b/layouts/entry/single.html
@@ -51,19 +51,6 @@
       </section>
     </article>
   </div>
-  <div class='col-md-4'>
-    <nav class='menu tags'>
-      <span class="menu-heading">Recent Resource Posts</span>
-      <a class='menu-item' data-slug='all' href='/resource'>All posts</a>
-      {{ $hereLink := .Permalink }}
-      {{ range (where .Site.Pages "Section" "resource") }}
-         {{ range .Pages }}
-            <a href='{{ .RelPermalink }}' class='menu-item tag{{ if (eq .Permalink $hereLink) }} selected{{ end }}' data-slug='{{ .Title}}' title="{{ .Title}}">{{ .Title}}</a>
-         {{ end }}
-      {{ end }}
-    </nav>
-    <br>
-    {{ partial "microblog.html" . }}
-  </div>
+  {{ partial "side_menu_single.html" . }}
 </div>
 {{ partial "bottom_single.html" . }}
diff --git a/layouts/news/list.html b/layouts/news/list.html
index 9f1d2a4e9..7c3766d19 100644
--- a/layouts/news/list.html
+++ b/layouts/news/list.html
@@ -58,34 +58,7 @@
 </div>
 
 </div>
-<div class='col-md-4'>
-  <nav class='menu tags'>
-    <span class="menu-heading">News Categories</span>
-    <a class='menu-item selected' data-slug='all' href='/news'>All posts</a>
-    {{ $hereSection := .Section }}
-    {{/* Get current taxonomy (example: tags, categories). */}}
-    <!-- {{ $taxonomy := .Data.Plural }} -->
-    {{ $taxonomy := "tags" }}
-    {{/* Get sections where one or more pages has one or more terms in the current taxonomy. */}}
-    {{ $sections := slice }}
-    {{ range $term, $weightedPages := index site.Taxonomies $taxonomy }}
-      {{ range $weightedPages }}
-        {{ $sections = $sections | append .CurrentSection | uniq | sort }}
-      {{ end }}
-    {{ end }}
-    {{/* List pages by term by section. */}}
-    {{ range $section := (where $sections ".Path" $hereSection) }}
-      {{ range $term, $weightedPages := index site.Taxonomies $taxonomy }}
-        {{ $termPage := site.GetPage path.Join $taxonomy $term }}
-        {{ with where $weightedPages "Section" $section.Path }}
-          <a href="{{ $termPage.RelPermalink }}" class='menu-item tag' data-slug='{{ $termPage.LinkTitle }}' title="All pages with tag <i>{{ $termPage.LinkTitle }}</i>">{{ $termPage.LinkTitle }}</a>
-        {{ end }}
-      {{ end }}
-    {{ end }}
-  </nav>
-  <br>
-  {{ partial "microblog.html" . }}
-</div>
+{{ partial "side_menu_list.html" . }}
 </div>
 
 {{ partial "bottom_list.html" . }}
diff --git a/layouts/news/single.html b/layouts/news/single.html
index d4ec973a8..70ecde8b2 100644
--- a/layouts/news/single.html
+++ b/layouts/news/single.html
@@ -49,19 +49,6 @@
       </section>
     </article>
   </div>
-  <div class='col-md-4'>
-    <nav class='menu tags'>
-      <span class="menu-heading">Recent News Posts</span>
-      <a class='menu-item' data-slug='all' href='/news'>All posts</a>
-      {{ $hereLink := .Permalink }}
-      {{ range (where .Site.Pages "Section" "news") }}
-         {{ range .Pages }}
-            <a href='{{ .RelPermalink }}' class='menu-item tag{{ if (eq .Permalink $hereLink) }} selected{{ end }}' data-slug='{{ .Title}}' title="{{ .Title}}">{{ .Title}}</a>
-         {{ end }}
-      {{ end }}
-    </nav>
-    <br>
-    {{ partial "microblog.html" . }}
-  </div>
+  {{ partial "side_menu_single.html" . }}
 </div>
 {{ partial "bottom_single.html" . }}
diff --git a/layouts/partials/categories_menu.html b/layouts/partials/categories_menu.html
new file mode 100644
index 000000000..4b2770d18
--- /dev/null
+++ b/layouts/partials/categories_menu.html
@@ -0,0 +1,24 @@
+<nav class='menu sub-nav'>
+  <span class="menu-heading">{{ .Section | humanize }} Categories</span>
+  <a class='menu-item selected' data-slug='all' href='/{{ .Section }}'>All posts</a>
+  {{ $hereSection := .Section }}
+  {{/* Get current taxonomy (example: tags, categories). */}}
+  <!-- {{ $taxonomy := .Data.Plural }} -->
+  {{ $taxonomy := "tags" }}
+  {{/* Get sections where one or more pages has one or more terms in the current taxonomy. */}}
+  {{ $sections := slice }}
+  {{ range $term, $weightedPages := index site.Taxonomies $taxonomy }}
+    {{ range $weightedPages }}
+      {{ $sections = $sections | append .CurrentSection | uniq | sort }}
+    {{ end }}
+  {{ end }}
+  {{/* List pages by term by section. */}}
+  {{ range $section := (where $sections ".Path" $hereSection) }}
+    {{ range $term, $weightedPages := index site.Taxonomies $taxonomy }}
+      {{ $termPage := site.GetPage path.Join $taxonomy $term }}
+      {{ with where $weightedPages "Section" $section.Path }}
+        <a href="{{ $termPage.RelPermalink }}" class='menu-item' data-slug='{{ $termPage.LinkTitle }}' title="All pages with tag <i>{{ $termPage.LinkTitle }}</i>">{{ $termPage.LinkTitle }}</a>
+      {{ end }}
+    {{ end }}
+  {{ end }}
+</nav>
diff --git a/layouts/partials/recent_posts_menu.html b/layouts/partials/recent_posts_menu.html
new file mode 100644
index 000000000..e542d3ac8
--- /dev/null
+++ b/layouts/partials/recent_posts_menu.html
@@ -0,0 +1,10 @@
+<nav class='menu sub-nav'>
+  <span class="menu-heading">Recent {{ .Section | humanize }} Posts</span>
+  <a class='menu-item' data-slug='all' href='/{{ .Section }}'>All posts</a>
+  {{ $hereLink := .Permalink }}
+  {{ range (where .Site.Pages "Section" .Section) }}
+     {{ range .Pages }}
+        <a href='{{ .RelPermalink }}' class='menu-item tag{{ if (eq .Permalink $hereLink) }} selected{{ end }}' data-slug='{{ .Title}}' title="{{ .Title}}">{{ .Title}}</a>
+     {{ end }}
+  {{ end }}
+</nav>
diff --git a/layouts/partials/side_menu_list.html b/layouts/partials/side_menu_list.html
new file mode 100644
index 000000000..9b877a844
--- /dev/null
+++ b/layouts/partials/side_menu_list.html
@@ -0,0 +1,5 @@
+<div class='col-md-4 side-menu'>
+  {{ partial "categories_menu.html" . }}
+  <br>
+  {{ partial "microblog.html" . }}
+</div>
diff --git a/layouts/partials/side_menu_single.html b/layouts/partials/side_menu_single.html
new file mode 100644
index 000000000..3f5dc2e27
--- /dev/null
+++ b/layouts/partials/side_menu_single.html
@@ -0,0 +1,5 @@
+<div class='col-md-4 side-menu'>
+  {{ partial "recent_posts_menu.html" . }}
+  <br>
+  {{ partial "microblog.html" . }}
+</div>
diff --git a/layouts/partials/side_menu_taxonomy.html b/layouts/partials/side_menu_taxonomy.html
new file mode 100644
index 000000000..eca6fb4ce
--- /dev/null
+++ b/layouts/partials/side_menu_taxonomy.html
@@ -0,0 +1,13 @@
+<div class='col-md-4 side-menu'>
+  <nav class='menu sub-nav'>
+    <span class="menu-heading">Categories</span>
+    {{ $hereLink := .Permalink }}
+    {{range $name, $taxonomy := .Site.Taxonomies.tags}} {{ $cnt := .Count }}
+     {{ with $.Site.GetPage (printf "/tags/%s" $name) }}
+       <a href="{{ .RelPermalink }}" class='menu-item tag{{ if (eq .Permalink $hereLink) }} selected{{ end }}' data-slug='{{$name}}' title="All pages with tag <i>{{$name}}</i>">{{$name}} ({{$cnt}})</a>
+     {{end}}
+   {{end}}
+  </nav>
+  <br>
+   {{ partial "microblog.html" . }}
+</div>
diff --git a/layouts/projects/list.html b/layouts/projects/list.html
index a078dfb84..ea653cc68 100644
--- a/layouts/projects/list.html
+++ b/layouts/projects/list.html
@@ -58,34 +58,7 @@
 </div>
 
 </div>
-<div class='col-md-4'>
-  <nav class='menu tags'>
-    <span class="menu-heading">Project Categories</span>
-    <a class='menu-item selected' data-slug='all' href='/projects'>All posts</a>
-    {{ $hereSection := .Section }}
-    {{/* Get current taxonomy (example: tags, categories). */}}
-    <!-- {{ $taxonomy := .Data.Plural }} -->
-    {{ $taxonomy := "tags" }}
-    {{/* Get sections where one or more pages has one or more terms in the current taxonomy. */}}
-    {{ $sections := slice }}
-    {{ range $term, $weightedPages := index site.Taxonomies $taxonomy }}
-      {{ range $weightedPages }}
-        {{ $sections = $sections | append .CurrentSection | uniq | sort }}
-      {{ end }}
-    {{ end }}
-    {{/* List pages by term by section. */}}
-    {{ range $section := (where $sections ".Path" $hereSection) }}
-      {{ range $term, $weightedPages := index site.Taxonomies $taxonomy }}
-        {{ $termPage := site.GetPage path.Join $taxonomy $term }}
-        {{ with where $weightedPages "Section" $section.Path }}
-          <a href="{{ $termPage.RelPermalink }}" class='menu-item tag' data-slug='{{ $termPage.LinkTitle }}' title="All pages with tag <i>{{ $termPage.LinkTitle }}</i>">{{ $termPage.LinkTitle }}</a>
-        {{ end }}
-      {{ end }}
-    {{ end }}
-  </nav>
-  <br>
-  {{ partial "microblog.html" . }}
-</div>
+{{ partial "side_menu_list.html" . }}
 </div>
 
 {{ partial "bottom_list.html" . }}
diff --git a/layouts/projects/single.html b/layouts/projects/single.html
index fadf51b61..57bc84a0b 100644
--- a/layouts/projects/single.html
+++ b/layouts/projects/single.html
@@ -49,19 +49,6 @@
       </section>
     </article>
   </div>
-  <div class='col-md-4'>
-    <nav class='menu tags'>
-      <span class="menu-heading">Recent Project Posts</span>
-      <a class='menu-item' data-slug='all' href='/projects'>All posts</a>
-      {{ $hereLink := .Permalink }}
-      {{ range (where .Site.Pages "Section" "projects") }}
-         {{ range .Pages }}
-            <a href='{{ .RelPermalink }}' class='menu-item tag{{ if (eq .Permalink $hereLink) }} selected{{ end }}' data-slug='{{ .Title}}' title="{{ .Title}}">{{ .Title}}</a>
-         {{ end }}
-      {{ end }}
-    </nav>
-    <br>
-    {{ partial "microblog.html" . }}
-  </div>
+  {{ partial "side_menu_single.html" . }}
 </div>
 {{ partial "bottom_single.html" . }}
diff --git a/layouts/resource/list.html b/layouts/resource/list.html
index b64b5d1ad..c8abc90df 100644
--- a/layouts/resource/list.html
+++ b/layouts/resource/list.html
@@ -58,34 +58,7 @@
 </div>
 
 </div>
-<div class='col-md-4'>
-  <nav class='menu tags'>
-    <span class="menu-heading">Resource Categories</span>
-    <a class='menu-item selected' data-slug='all' href='/resource'>All posts</a>
-    {{ $hereSection := .Section }}
-    {{/* Get current taxonomy (example: tags, categories). */}}
-    <!-- {{ $taxonomy := .Data.Plural }} -->
-    {{ $taxonomy := "tags" }}
-    {{/* Get sections where one or more pages has one or more terms in the current taxonomy. */}}
-    {{ $sections := slice }}
-    {{ range $term, $weightedPages := index site.Taxonomies $taxonomy }}
-      {{ range $weightedPages }}
-        {{ $sections = $sections | append .CurrentSection | uniq | sort }}
-      {{ end }}
-    {{ end }}
-    {{/* List pages by term by section. */}}
-    {{ range $section := (where $sections ".Path" $hereSection) }}
-      {{ range $term, $weightedPages := index site.Taxonomies $taxonomy }}
-        {{ $termPage := site.GetPage path.Join $taxonomy $term }}
-        {{ with where $weightedPages "Section" $section.Path }}
-          <a href="{{ $termPage.RelPermalink }}" class='menu-item tag' data-slug='{{ $termPage.LinkTitle }}' title="All pages with tag <i>{{ $termPage.LinkTitle }}</i>">{{ $termPage.LinkTitle }}</a>
-        {{ end }}
-      {{ end }}
-    {{ end }}
-  </nav>
-  <br>
-  {{ partial "microblog.html" . }}
-</div>
+{{ partial "side_menu_list.html" . }}
 </div>
 
 {{ partial "bottom_list.html" . }}
diff --git a/layouts/resource/single.html b/layouts/resource/single.html
index 63ab81c4f..3d92db957 100644
--- a/layouts/resource/single.html
+++ b/layouts/resource/single.html
@@ -50,19 +50,6 @@
       </section>
     </article>
   </div>
-  <div class='col-md-4'>
-    <nav class='menu tags'>
-      <span class="menu-heading">Recent Resource Posts</span>
-      <a class='menu-item' data-slug='all' href='/resource'>All posts</a>
-      {{ $hereLink := .Permalink }}
-      {{ range (where .Site.Pages "Section" "resource") }}
-         {{ range .Pages }}
-            <a href='{{ .RelPermalink }}' class='menu-item tag{{ if (eq .Permalink $hereLink) }} selected{{ end }}' data-slug='{{ .Title}}' title="{{ .Title}}">{{ .Title}}</a>
-         {{ end }}
-      {{ end }}
-    </nav>
-    <br>
-    {{ partial "microblog.html" . }}
-  </div>
+  {{ partial "side_menu_single.html" . }}
 </div>
 {{ partial "bottom_single.html" . }}
diff --git a/layouts/taxonomy/list.html b/layouts/taxonomy/list.html
index e0388f308..2f808e5ad 100644
--- a/layouts/taxonomy/list.html
+++ b/layouts/taxonomy/list.html
@@ -32,18 +32,7 @@
  </div>
 
  </div>
- <div class='col-md-4'>
-   <nav class='menu tags'>
-     <span class="menu-heading">Categories</span>
-     {{range $name, $taxonomy := .Site.Taxonomies.tags}} {{ $cnt := .Count }}
-   	  {{ with $.Site.GetPage (printf "/tags/%s" $name) }}
-   		  <a href="{{ .RelPermalink }}" class='menu-item tag' data-slug='{{$name}}' title="All pages with tag <i>{{$name}}</i>">{{$name}} ({{$cnt}})</a>
-   	  {{end}}
-   	{{end}}
-   </nav>
-   <br>
-   {{ partial "microblog.html" . }}
- </div>
+ {{ partial "side_menu_taxonomy.html" . }}
  </div>
 
  {{ partial "bottom_list.html" . }}
diff --git a/layouts/taxonomy/tag.html b/layouts/taxonomy/tag.html
index d27a37322..1d1dc40ba 100644
--- a/layouts/taxonomy/tag.html
+++ b/layouts/taxonomy/tag.html
@@ -58,19 +58,7 @@
  </div>
 
  </div>
- <div class='col-md-4 side-menu'>
-   <nav class='menu tags'>
-     <span class="menu-heading">Categories</span>
-     {{ $hereLink := .Permalink }}
-     {{range $name, $taxonomy := .Site.Taxonomies.tags}} {{ $cnt := .Count }}
-   	  {{ with $.Site.GetPage (printf "/tags/%s" $name) }}
-   		  <a href="{{ .RelPermalink }}" class='menu-item tag{{ if (eq .Permalink $hereLink) }} selected{{ end }}' data-slug='{{$name}}' title="All pages with tag <i>{{$name}}</i>">{{$name}} ({{$cnt}})</a>
-   	  {{end}}
-   	{{end}}
-   </nav>
-   <br>
-    {{ partial "microblog.html" . }}
- </div>
+ {{ partial "side_menu_taxonomy.html" . }}
  </div>
 
  {{ partial "bottom_list.html" . }}
-- 
GitLab