Compare commits

...

25 Commits

Author SHA1 Message Date
Mark Dumay
4d0007a26b Merge pull request #298 from gethinode/reedirect
Add support for version redirects
2023-06-17 12:33:45 +02:00
Mark Dumay
ac7e564857 Merge branch 'main' into reedirect 2023-06-17 12:27:34 +02:00
mark
f804ab747c Bump package release 2023-06-17 12:26:49 +02:00
mark
cfd292ddff Add support for version redirects 2023-06-17 12:21:11 +02:00
Mark Dumay
d4b0c379e2 Merge pull request #297 from gethinode/versioning
Add support for version overview
2023-06-17 06:27:38 +02:00
Mark Dumay
60ebd5fd41 Merge branch 'main' into versioning 2023-06-17 06:17:52 +02:00
mark
19a4398c90 Add support for optional version overview 2023-06-17 06:14:13 +02:00
mark
841c2e397f Make urls language aware 2023-06-17 06:13:59 +02:00
mark
3f42d781ec Fix overflow for large version menu entries 2023-06-17 06:13:20 +02:00
mark
dd9fcc6cbd Add support for optional version overview 2023-06-17 06:12:32 +02:00
mark
70aed1ed63 Add site title to version switch in collapsed menu 2023-06-17 05:14:22 +02:00
Mark Dumay
1c635c814c Merge pull request #296 from gethinode/develop
Fix latest label
2023-06-16 16:01:18 +02:00
Mark Dumay
ff1c8ff056 Merge branch 'main' into develop 2023-06-16 15:54:58 +02:00
mark
44c70f4036 Bump release version 2023-06-16 15:54:09 +02:00
mark
28f13f8385 Fix latest label 2023-06-16 15:53:36 +02:00
Mark Dumay
849d481cd6 Merge pull request #295 from gethinode/develop
Add versioning support
2023-06-16 15:43:11 +02:00
Mark Dumay
a0987e33a9 Merge branch 'main' into develop 2023-06-16 15:31:25 +02:00
mark
f5dae5caa2 Add latest label 2023-06-16 15:29:13 +02:00
mark
d640ed1f8e Add version dropdown 2023-06-16 15:29:02 +02:00
mark
0c46c0080e Load versioned menu data 2023-06-16 15:28:44 +02:00
mark
7319a3f9e3 Identify version based on path 2023-06-16 15:28:30 +02:00
mark
2e6ba557c8 Add version support for menu data 2023-06-16 15:27:56 +02:00
mark
1d24b8ff0e Bump package release 2023-06-16 15:27:01 +02:00
github-actions[bot]
df307be37c Merge pull request #293 from gethinode/dependabot/npm_and_yarn/markdownlint-cli2-0.8.1
Bump markdownlint-cli2 from 0.7.1 to 0.8.1
2023-06-13 14:08:00 +00:00
dependabot[bot]
5d09963bb5 Bump markdownlint-cli2 from 0.7.1 to 0.8.1
Bumps [markdownlint-cli2](https://github.com/DavidAnson/markdownlint-cli2) from 0.7.1 to 0.8.1.
- [Changelog](https://github.com/DavidAnson/markdownlint-cli2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/DavidAnson/markdownlint-cli2/compare/v0.7.1...v0.8.1)

---
updated-dependencies:
- dependency-name: markdownlint-cli2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-13 14:03:56 +00:00
9 changed files with 161 additions and 43 deletions

View File

@@ -89,6 +89,10 @@
translation: "Link"
- id: code
translation: "Code"
- id: latest
translation: "latest"
- id: allVersions
translation: "All versions"
# 404 page
- id: pageNotFound

View File

@@ -79,6 +79,10 @@
translation: "Link"
- id: code
translation: "Code"
- id: latest
translation: "meest recente"
- id: allVersions
translation: "Alle versies"
# 404 page
- id: pageNotFound

View File

@@ -1,6 +1,7 @@
{{- $section := .Section }}
{{- with partial "utilities/GetMenu" . }}{{ $.Scratch.Set "sidebar" . }}{{ end -}}
{{ $.Scratch.Set "version" (site.Param (printf "%s.version" .Section)) }}
{{- $version := partial "utilities/GetVersion.html" (dict "page" . "base" true) -}}
{{- $.Scratch.Set "version" $version -}}
{{ with partial "utilities/GetMenu" (dict "page" . "version" $version) }}{{ $.Scratch.Set "sidebar" . }}{{ end }}
<!doctype html>
<html lang="{{ .Site.Language.Lang }}" class="no-js">

6
layouts/index.redirects Normal file
View File

@@ -0,0 +1,6 @@
{{- $list := site.Params.docs.releases -}}
{{- range $index, $item := $list -}}
{{- if $item.redirect -}}
{{ urls.JoinPath $item.url "/*" }} {{ urls.JoinPath $item.redirect ":splat" }} 200
{{- end -}}
{{- end -}}

View File

@@ -48,6 +48,51 @@
</li>
{{- end -}}
<!-- Inline partial to render the version switcher -->
{{- define "partials/navbar-versions.html" -}}
{{- $size := .size -}}
{{- $collapsed := .collapsed -}}
{{- $page := .page -}}
{{- $list := site.Params.docs.releases -}}
{{- $version := partial "utilities/GetVersion.html" (dict "page" $page) -}}
<li class="nav-item dropdown {{ if $collapsed }}d-{{ $size }}-none{{ else }}d-none d-{{ $size }}-block{{ end }}">
<a class="nav-link dropdown-toggle" href="#!" role="button" data-bs-toggle="dropdown" aria-expanded="false" id="navbar-version-switch">
{{ if $collapsed }}{{ site.Title }} {{ end }}{{ $version }}
</a>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbar-version-switch">
{{- range $index, $item := $list -}}
{{- $active := eq $item.label $version -}}
{{- $disabled := false -}}
{{- if site.IsServer }}
{{- $disabled = and $item.redirect (gt (len $item.redirect) 0) -}}
{{- end -}}
{{ if $item.url }}
<li>
{{- $url := (path.Join $item.url) | relLangURL -}}
<a class="pe-5 dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}{{ if $active }} active{{ end }}{{ if $disabled }} disabled{{ end }}" href="{{ $url }}">{{ $item.label }}
{{ if $item.latest }} ({{ T "latest" }}){{ end }}
{{ if $active }}
<span class="position-absolute end-0 me-3">{{- partial "assets/icon.html" (dict "icon" "fas check") }}</span>
{{ end }}
</a>
</li>
{{ else }}
{{ if gt $index 0}}<li><hr class="dropdown-divider"></li>{{ end }}
<li><span class="dropdown-header fs-6">{{ $item.label }}</span></li>
{{ end }}
{{- end -}}
{{- if site.Params.docs.overview -}}
{{ if gt (len $list) 0 }}<li><hr class="dropdown-divider"></li>{{ end }}
<li>
{{- $url := (path.Join site.Params.docs.overview) | relLangURL -}}
<a class="dropdown-item{{ if $collapsed }} switch-mode-collapsed{{ end }}" href="{{ $url }}">{{ T "allVersions" }}</a>
</li>
{{- end -}}
</ul>
</li>
{{- end -}}
{{- $supportedFlags := slice "true" "false" -}}
{{- $id := printf "navbar-collapse-%d" 0 -}}
@@ -112,6 +157,12 @@
{{- end -}}
{{- end -}}
{{- $enableVersions := false -}}
{{ $list := site.Params.docs.releases }}
{{ if $list }}
{{- $enableVersions = gt (len $list ) 1 -}}
{{ end }}
{{- $enableLanguage := or $page.IsTranslated site.IsMultiLingual -}}
{{- $logo := site.Params.navigation.logo -}}
@@ -185,7 +236,7 @@
{{- end -}}
<!-- Insert divider if applicable -->
{{- if or $enableLanguage $enableDarkMode -}}
{{- if or $enableLanguage $enableVersions -}}
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block">
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
</li>
@@ -216,8 +267,20 @@
</li>
{{- end -}}
<!-- Insert version switcher -->
{{- if $enableVersions -}}
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" true ) -}}
{{- partial "partials/navbar-versions.html" (dict "page" $page "size" $size "collapsed" false) -}}
{{- end -}}
<!-- Insert color mode switcher -->
{{- if $enableDarkMode -}}
<!-- Insert divider -->
<li class="nav-item py-2 py-md-1 col-12 col-md-auto d-none d-{{ $size }}-block">
<div class="vr d-none d-md-flex h-100 mx-md-2"></div>
</li>
<li><hr class="dropdown-divider-bg"></li>
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" true) -}}
{{- partial "partials/navbar-mode.html" (dict "size" $size "collapsed" false) -}}
{{- end -}}

View File

@@ -1,6 +1,12 @@
{{- $page := .page -}}
{{- $version := .version -}}
{{- $menu := "" -}}
{{- if .IsPage -}}
{{- $menu = index .Site.Data .Section -}}
{{- if $page.IsPage -}}
{{- $menu = index site.Data (printf "%s-%s" $page.Section $version) -}}
{{ if not $menu }}
{{ $menu = index site.Data $page.Section }}
{{ end }}
{{- end -}}
{{- return $menu -}}

View File

@@ -0,0 +1,34 @@
<!--
Retrieve the docs version label of the current page. The path of the page's file is matched with the url of the
defined docs releases in the site's parameters. When no match is found it returns the latest label instead.
-->
{{- $page := .page -}}
{{- $base := .base -}}
{{- $version := "" -}}
{{- $docsPath := strings.TrimPrefix "/" site.Params.docs.contentPath -}}
{{- if and $page.File (strings.HasPrefix $page.File.Dir $docsPath) -}}
{{- $currentPath := strings.TrimPrefix $docsPath $page.File.Dir -}}
{{- $currentVersion := index (split $currentPath "/") 0 -}}
{{- $versionPath := path.Join site.Params.docs.contentPath $currentVersion -}}
{{- $list := site.Params.docs.releases -}}
{{- range $index, $item := $list -}}
{{- $url := strings.TrimSuffix "/" $item.url -}}
{{- if eq $url $versionPath -}}
{{- if $base }}{{ $version = path.Base $item.url }}{{ else }}{{ $version = $item.label }}{{ end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- if not $version -}}
{{- $list := site.Params.docs.releases -}}
{{- range $item := $list -}}
{{- if $item.latest -}}
{{- if $base }}{{ $version = path.Base $item.url }}{{ else }}{{ $version = $item.label }}{{ end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- return $version -}}

72
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "@gethinode/hinode",
"version": "0.14.7",
"version": "0.15.0-beta",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@gethinode/hinode",
"version": "0.14.7",
"version": "0.15.0-beta",
"license": "MIT",
"devDependencies": {
"@fortawesome/fontawesome-free": "^6.4.0",
@@ -22,7 +22,7 @@
"eslint-plugin-promise": "^6.1.1",
"flexsearch": "^0.7.31",
"hugo-bin": "^0.108.0",
"markdownlint-cli2": "^0.7.0",
"markdownlint-cli2": "^0.8.1",
"postcss-cli": "^10.1.0",
"purgecss-whitelister": "^2.4.0",
"rimraf": "^5.0.0",
@@ -3878,30 +3878,30 @@
}
},
"node_modules/markdownlint": {
"version": "0.28.2",
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.28.2.tgz",
"integrity": "sha512-yYaQXoKKPV1zgrFsyAuZPEQoe+JrY9GDag9ObKpk09twx4OCU5lut+0/kZPrQ3W7w82SmgKhd7D8m34aG1unVw==",
"version": "0.29.0",
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.29.0.tgz",
"integrity": "sha512-ASAzqpODstu/Qsk0xW5BPgWnK/qjpBQ4e7IpsSvvFXcfYIjanLTdwFRJK1SIEEh0fGSMKXcJf/qhaZYHyME0wA==",
"dev": true,
"dependencies": {
"markdown-it": "13.0.1",
"markdownlint-micromark": "0.1.2"
"markdownlint-micromark": "0.1.5"
},
"engines": {
"node": ">=14.18.0"
"node": ">=16"
}
},
"node_modules/markdownlint-cli2": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.7.1.tgz",
"integrity": "sha512-N58lw50Ws0WOfCc07B9dPKMnPMbIj6ZCMlszZLVfxBwKN/M+WZqXLdOHyRL2BWCZ3APBxQN9qDEw7Vf1PRqFkg==",
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.8.1.tgz",
"integrity": "sha512-y0Siwt+RApKxSSb0CT9p7z1DcAO+ncjrB9IpC/jflJRIet4namCFmxLTbfBBQdPF6EntPk5yyXKe7vcoPGlnXw==",
"dev": true,
"dependencies": {
"globby": "13.1.4",
"markdownlint": "0.28.2",
"markdownlint": "0.29.0",
"markdownlint-cli2-formatter-default": "0.0.4",
"micromatch": "4.0.5",
"strip-json-comments": "5.0.0",
"yaml": "2.2.2"
"yaml": "2.3.1"
},
"bin": {
"markdownlint-cli2": "markdownlint-cli2.js",
@@ -3909,7 +3909,7 @@
"markdownlint-cli2-fix": "markdownlint-cli2-fix.js"
},
"engines": {
"node": ">=14.18.0"
"node": ">=16"
}
},
"node_modules/markdownlint-cli2-formatter-default": {
@@ -3934,12 +3934,12 @@
}
},
"node_modules/markdownlint-micromark": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.2.tgz",
"integrity": "sha512-jRxlQg8KpOfM2IbCL9RXM8ZiYWz2rv6DlZAnGv8ASJQpUh6byTBnEsbuMZ6T2/uIgntyf7SKg/mEaEBo1164fQ==",
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.5.tgz",
"integrity": "sha512-HvofNU4QCvfUCWnocQP1IAWaqop5wpWrB0mKB6SSh0fcpV0PdmQNS6tdUuFew1utpYlUvYYzz84oDkrD76GB9A==",
"dev": true,
"engines": {
"node": ">=14.18.0"
"node": ">=16"
}
},
"node_modules/mathml-tag-names": {
@@ -6950,9 +6950,9 @@
"dev": true
},
"node_modules/yaml": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz",
"integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==",
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz",
"integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==",
"dev": true,
"engines": {
"node": ">= 14"
@@ -9742,27 +9742,27 @@
}
},
"markdownlint": {
"version": "0.28.2",
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.28.2.tgz",
"integrity": "sha512-yYaQXoKKPV1zgrFsyAuZPEQoe+JrY9GDag9ObKpk09twx4OCU5lut+0/kZPrQ3W7w82SmgKhd7D8m34aG1unVw==",
"version": "0.29.0",
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.29.0.tgz",
"integrity": "sha512-ASAzqpODstu/Qsk0xW5BPgWnK/qjpBQ4e7IpsSvvFXcfYIjanLTdwFRJK1SIEEh0fGSMKXcJf/qhaZYHyME0wA==",
"dev": true,
"requires": {
"markdown-it": "13.0.1",
"markdownlint-micromark": "0.1.2"
"markdownlint-micromark": "0.1.5"
}
},
"markdownlint-cli2": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.7.1.tgz",
"integrity": "sha512-N58lw50Ws0WOfCc07B9dPKMnPMbIj6ZCMlszZLVfxBwKN/M+WZqXLdOHyRL2BWCZ3APBxQN9qDEw7Vf1PRqFkg==",
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.8.1.tgz",
"integrity": "sha512-y0Siwt+RApKxSSb0CT9p7z1DcAO+ncjrB9IpC/jflJRIet4namCFmxLTbfBBQdPF6EntPk5yyXKe7vcoPGlnXw==",
"dev": true,
"requires": {
"globby": "13.1.4",
"markdownlint": "0.28.2",
"markdownlint": "0.29.0",
"markdownlint-cli2-formatter-default": "0.0.4",
"micromatch": "4.0.5",
"strip-json-comments": "5.0.0",
"yaml": "2.2.2"
"yaml": "2.3.1"
},
"dependencies": {
"strip-json-comments": {
@@ -9781,9 +9781,9 @@
"requires": {}
},
"markdownlint-micromark": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.2.tgz",
"integrity": "sha512-jRxlQg8KpOfM2IbCL9RXM8ZiYWz2rv6DlZAnGv8ASJQpUh6byTBnEsbuMZ6T2/uIgntyf7SKg/mEaEBo1164fQ==",
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.5.tgz",
"integrity": "sha512-HvofNU4QCvfUCWnocQP1IAWaqop5wpWrB0mKB6SSh0fcpV0PdmQNS6tdUuFew1utpYlUvYYzz84oDkrD76GB9A==",
"dev": true
},
"mathml-tag-names": {
@@ -11854,9 +11854,9 @@
"dev": true
},
"yaml": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz",
"integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==",
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz",
"integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==",
"dev": true
},
"yargs": {

View File

@@ -1,6 +1,6 @@
{
"name": "@gethinode/hinode",
"version": "0.14.7",
"version": "0.15.0-beta",
"description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator",
"keywords": [
"hugo",
@@ -63,7 +63,7 @@
"eslint-plugin-promise": "^6.1.1",
"flexsearch": "^0.7.31",
"hugo-bin": "^0.108.0",
"markdownlint-cli2": "^0.7.0",
"markdownlint-cli2": "^0.8.1",
"postcss-cli": "^10.1.0",
"purgecss-whitelister": "^2.4.0",
"rimraf": "^5.0.0",