diff --git a/layouts/partials/bodys/tree.html b/layouts/partials/bodys/tree.html new file mode 100644 index 0000000..f060cdd --- /dev/null +++ b/layouts/partials/bodys/tree.html @@ -0,0 +1,33 @@ +{{- .Store.Set "relearnIsNested" true }} +{{- partial "inline/article-walker" . .Path | safeHTML }} + +{{- define "partials/inline/article-walker" }} + {{- $html := "" }} + {{- $pages := partialCached "_relearn/pages.gotmpl" (dict "page" .) .Path }} + {{- range $pages }} + {{- if not (partialCached "_relearn/pageIsHidden.gotmpl" . .Path) }} + {{- $html = printf "%s%s" $html (partial "inline/article-walker" . .Path) }} + {{- $child := . }} + {{- range .Site.Params.relearn.dependencies }} + {{- $has := printf "has%s" .name }} + {{- $hasnested := printf "relearnHasNested%s" .name }} + {{- $.Store.Set $hasnested (or ($.Store.Get $hasnested) ($child.Store.Get $hasnested) ($child.Store.Get $has)) }} + {{- end }} + {{- end }} + {{- end }} + + {{- $article := "" }} + {{- if .Title }} + {{- $article = .Render "article" }} + {{- end }} + {{- if len $html }} + {{- $title := partial "title.gotmpl" (dict "page" . "linkTitle" true) }} + {{- $html = printf `%s +
+

%s

%s +
` $article (T "Subsections" $title | htmlEscape) $html }} + {{- else }} + {{- $html = $article }} + {{- end }} + {{- return $html }} +{{- end }} \ No newline at end of file diff --git a/layouts/partials/menu.html b/layouts/partials/menu.html new file mode 100644 index 0000000..77e390e --- /dev/null +++ b/layouts/partials/menu.html @@ -0,0 +1,377 @@ + {{- $showvisitedlinks := site.Params.showVisitedLinks }} + + +{{- define "partials/inline/menu" }} + {{- $currentNode := .currentnode }} + {{- $configs := .configs }} + {{- $showvisitedlinks := .showvisitedlinks }} + {{- range $configs }} + {{- $config := . }} + {{- if eq $config.type "page" }} + {{- partial "inline/page-tree" (dict "currentnode" $currentNode "config" $config "showvisitedlinks" $showvisitedlinks) }} + {{- else if eq $config.type "menu" }} + {{- partial "inline/menu-tree" (dict "currentnode" $currentNode "config" $config "showvisitedlinks" $showvisitedlinks "entries" ($config.entries | default (index site.Menus $config.identifier))) }} + {{- else if eq $config.type "custom" }} + {{- partial "inline/custom-list" (dict "currentnode" $currentNode "config" $config "elements" $config.elements) }} + {{- else if eq $config.type "divider" }} + {{- partial "inline/divider" (dict "currentnode" $currentNode "config" $config "elements" $config.elements) }} + {{- else }} + {{- warnf "WARNING: unknown menu type '%s' found in parameter 'sidebarmenus' for menu '%s'; use either 'page', 'menu', 'custom' or 'divider'" $config.type $config.identifier }} + {{- end }} + {{- end }} +{{- end }} + +{{- define "partials/inline/page-tree" }} + {{- $currentNode := .currentnode }} + {{- $config := .config }} + {{- $showvisitedlinks := .showvisitedlinks }} +
+ {{- $rootObject := site.Home }} + {{- if $config.pageRef }} + {{- $rootObject = partial "_relearn/refObject.gotmpl" (dict "page" $currentNode "objectRef" $config.pageRef) }} + {{- if not $rootObject }} + {{- $msg := printf "config option 'pageRef' %q for 'sidebarmenus' %q is not a page or a resource" $config.pageRef $config.identifier }} + {{- partial "_relearn/urlErrorReport.gotmpl" (dict "url" $config.pageRef "page" $currentNode "param" "link" "msg" $msg) }} + {{- end }} + {{- end }} + {{- $title := "" }} + {{- if and $rootObject (not ($config.disableTitle | default true)) }} + {{- $title = $rootObject.Params.menuTitle | default (T (print $config.identifier "-menuTitle")) }} + {{- end }} + {{- $entries := "" }} + {{- with $rootObject }} + {{- $entries = partialCached "_relearn/pages.gotmpl" (dict "page" .) .Path }} + {{- end }} + {{- with and $entries $title }} + + {{- end }} + {{- $classes := "space " }} + {{- if ($config.main | default true) }} + {{- $classes = "enlarge morespace " }} + {{- end }} + +
+{{- end }} +{{- define "partials/inline/page-walker" }} + {{- $currentNode := .currentnode }} + {{- $showvisitedlinks := .showvisitedlinks }} + {{- $alwaysopen := .alwaysopen }} + {{- $isSelf := .isSelf }} + {{- $isAncestor := .isAncestor }} + {{- $isHidden := .isHidden }} + {{- with .sect }} + {{- $isActive := $isSelf }} + {{- $entry := . }} + {{- $entries := partialCached "_relearn/pages.gotmpl" (dict "page" .) .Path }} + {{- $hasVisibleChildren := false }} + {{- range $entries }} + {{- $isSubSelf := eq . $currentNode }} + {{- $isSubAncestor := and (not $isSubSelf) (.IsAncestor $currentNode) }} + {{- $isSubHidden := or (.Params.hidden) (eq .Title "") }} + {{- if or $isSubAncestor $isSubSelf (not $isSubHidden) }} + {{- $hasVisibleChildren = true }} + {{- break }} + {{- end }} + {{- end }} + {{- $title := partial "title.gotmpl" (dict "page" . "linkTitle" true) }} + {{- $url := partial "permalink.gotmpl" (dict "to" .) }} + {{- $isCrosslink := false }} + {{- if .Params.menuPageRef }} + {{- $isCrosslink = true }} + {{- $url = .Params.menuPageRef }} + {{- $linkObject := partial "_relearn/refObject.gotmpl" (dict "page" . "objectRef" .Params.menuPageRef) }} + {{- if $linkObject }} + {{- $url = partial "_relearn/decoratedLink.gotmpl" (dict "url" .Params.menuPageRef "page" . "linkObject" $linkObject "param" "link") }} + {{- end }} + {{- else if .Params.menuUrl }} + {{- $isCrosslink = true }} + {{- $url = .Params.menuUrl | relLangURL }} + {{- end }} + {{- $pre := partial "menu-pre.html" . }} + {{- $post := partial "menu-post.html" . }} + {{- if and $hasVisibleChildren (not $isCrosslink) }} + {{- $isCollapsible := .Params.collapsibleMenu | default site.Params.collapsibleMenu }} + {{- $currentAlwaysopen := .Params.alwaysopen | default $alwaysopen }} + {{- if and (not $url) (not $isCollapsible) }} + {{- $currentAlwaysopen = true }} + {{- end }} + {{- $entryId := md5 .Path }} + {{- $isOpen := or $currentAlwaysopen $isSelf $isAncestor }} +
  • + {{- if $isCollapsible }}{{ end }} + {{- if $url }} + {{- $attributes := partial "_relearn/linkAttributes.gotmpl" (dict "url" $url "page" $currentNode "attributes" (dict "class" "padding default-animation")) -}} + + {{- else -}} + + {{- end }} + {{- $pre }}{{ $title }}{{ $post }} + {{- if $url }}{{ if $showvisitedlinks }}{{ end }}{{ else }}{{ end }}
  • + {{- else if $url }} + + {{- end }} + {{- end }} +{{- end }} + +{{- define "partials/inline/menu-tree" }} + {{- $currentNode := .currentnode }} + {{- $config := .config }} + {{- $showvisitedlinks := .showvisitedlinks }} +
    + {{- $topLevelMenu := "" }} + {{- $topLevelObject := "" }} + {{- $entries := .entries | default "" }} + {{- with and $entries (eq (len $entries) 1) (index $entries 0) }} + {{- if and (not .PageRef) (not .URL) }} + {{- /* because in Hugo menus can not have parameter but menu entries can, + we can flag a single top level menu entry as a container; this container + entry carrys just meta information and parameter, uses its children + to build the "real" menu, and has no own `url` or `pageRef` */}} + {{- $topLevelMenu = . }} + {{- $topLevelObject = partial "_relearn/menuObject.gotmpl" (dict "page" $currentNode "menu" $topLevelMenu) }} + {{- $entries = .Children }} + {{- end }} + {{- end }} + {{- $title := "" }} + {{- if not ($config.disableTitle | default false) }} + {{- if $topLevelMenu }} + {{- $title = partial "_relearn/menuTitle.gotmpl" (dict "page" $currentNode "menu" $topLevelMenu) }} + {{- else }} + {{- $title = T (print $config.identifier "-menuTitle") }} + {{- end }} + {{- end }} + {{- with and $entries $title }} + + {{- end }} + {{- $classes := "space " }} + {{- if ($config.main | default false) }} + {{- $classes = "enlarge morespace " }} + {{- end }} + +
    +{{- end }} +{{- define "partials/inline/menu-walker" }} + {{- $currentNode := .currentnode }} + {{- $showvisitedlinks := .showvisitedlinks }} + {{- $alwaysopen := .alwaysopen }} + {{- $isSelf := .isSelf }} + {{- $isAncestor := .isAncestor }} + {{- $isHidden := .isHidden }} + {{- $root := .root }} + {{- with .menu }} + {{- $isActive := $isSelf }} + {{- $entryMenu := . }} + {{- $entryObject := partial "_relearn/menuObject.gotmpl" (dict "page" $currentNode "menu" $entryMenu) }} + {{- $entries := .Children }} + {{- $hasVisibleChildren := false }} + {{- range $entries }} + {{- $entriesObject := partial "_relearn/menuObject.gotmpl" (dict "page" $currentNode "menu" .) }} + {{- $isSubSelf := eq $entriesObject $currentNode }} + {{- $isSubAncestor := and (not $isSubSelf) ($currentNode.HasMenuCurrent .Menu .) }} + {{- $isSubHidden := or (.Params.hidden) (eq (partial "_relearn/menuTitle.gotmpl" (dict "page" $currentNode "menu" .)) "") }} + {{- if or $isSubAncestor $isSubSelf (not $isSubHidden) }} + {{- $hasVisibleChildren = true }} + {{- break }} + {{- end }} + {{- end }} + {{- $title := partial "_relearn/menuTitle.gotmpl" (dict "page" $currentNode "menu" .) }} + {{- $url := partial "_relearn/menuPermalink.gotmpl" (dict "page" $currentNode "menu" .) }} + {{- $pre := .Pre }} + {{- $post := .Post }} + {{- with $entryObject }} + {{- $pre = or $pre (partial "menu-pre.html" .) }} + {{- $post = or $post (partial "menu-post.html" .) }} + {{- end }} + {{- if $hasVisibleChildren }} + {{- $isCollapsible := .Params.collapsibleMenu | default $root.Params.collapsibleMenu | default site.Params.collapsibleMenu }} + {{- $currentAlwaysopen := .Params.alwaysopen | default $root.Params.alwaysopen | default $alwaysopen }} + {{- if and (not $url) (not $isCollapsible) }} + {{- $currentAlwaysopen = true }} + {{- end }} + {{- $entryId := md5 (or $entryMenu.KeyName $entryMenu.Identifier $entryMenu.Name $entryMenu.Title) }} + {{- $isOpen := or $currentAlwaysopen $isSelf $isAncestor }} +
  • + {{- if $isCollapsible }}{{ end }} + {{- if $url }} + {{- $attributes := partial "_relearn/linkAttributes.gotmpl" (dict "url" $url "page" $currentNode "attributes" (dict "class" "padding default-animation")) -}} + + {{- else -}} + + {{- end }} + {{- $pre }}{{ $title }}{{ $post }} + {{- if $url }}{{ if $showvisitedlinks }}{{ end }}{{ else }}{{ end }}
  • + {{- else if $url }} +
  • + {{- if $url }} + {{- $attributes := partial "_relearn/linkAttributes.gotmpl" (dict "url" $url "page" $currentNode "attributes" (dict "class" "padding")) -}} + + {{- else -}} + + {{- end }} + {{- $pre }}{{ $title }}{{ $post }} + {{- if $url }}{{ if $showvisitedlinks }}{{ end }}{{ else }}{{ end }}
  • + {{- end }} + {{- end }} +{{- end }} + +{{- define "partials/inline/custom-list" }} + {{- $currentNode := .currentnode }} + {{- $config := .config }} +
    + {{- $classes := "" }} + {{- if ($config.main | default false) }} + {{- $classes = "space" }} + {{- end }} + +
    +{{- end }} + +{{- define "partials/inline/divider" }} +
    +
    +
    +{{- end }} \ No newline at end of file