Kanonische Links über _canonical realisiert
[website] / dist / templates / layout.html
index 94e1b5e..7175241 100644 (file)
     th:fragment="layout(uri,maincontent)"
     thymeproxy:variables="SET:sitemap.json"
     >
-  <head>
+  <head thymeproxy:variables="${json}">
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <title th:replace="${title}">juplo - BASISTEMPLATE</title>
     <link rel="stylesheet" href="../css/juplo.css" th:href="@{/css/juplo.css}">
-    <link rel="caononical" href="layout.html" th:replace="${scripts_head}?:~{}">
+    <link rel="canonical" href="layout.html" th:href="${_canonical.get(uri)}?:${uri}">
+    <script th:replace="${scripts_head}?:~{}"></script>
   </head>
   <body
       th:fragment="body(uri, maincontent, marginalcontent)"
-      thymeproxy:variables="${json}"
-      th:with="crumbs=${_crumbs.get(uri)}"
-      >
-    <nav class="column is-8-desktop is-offset-2-desktop">
-      <div class="navbar" role="navigation" aria-label="main navigation">
-        <div class="navbar-brand">
-          <a class="navbar-item" href="../index.html" th:href="@{/}" title="Home">
-            <img src="/img/logo.svg" alt="juplo">
-          </a>
-      
-          <a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false" data-target="navbar">
-            <span aria-hidden="true"></span>
-            <span aria-hidden="true"></span>
-            <span aria-hidden="true"></span>
-          </a>
-        </div>
-      
-        <div id="navbar" class="navbar-menu">
-          <div class="navbar-start">
-            <a class="navbar-item" href="../blog/" th:href="@{${entry.value}}">Blog</a>
-            <!--/*-->
-            <a class="navbar-item" href="../projects.html">Projects</a>
-            <a class="navbar-item" href="../about.html">About</a>
-            <!--*/-->
-          </div>
-          <div class="navbar-end">
-            <a class="navbar-item" href="../about.html">About</a>
-          </div>
-        </div>
-      </div>
-    </nav>
-    <section class="section">
-      <div class="container">
-        <div class="columns">
-          <div class="column is-8-desktop is-offset-2-desktop breadcrumb" aria-label="breadcrumbs">
-            <strong>You are here:</strong>
-            <ul>
-              <li><a href="../index.html" th:href="@{/index.html}">Home</a></li>
-              <li th:each="crumb: ${crumbs}"><a href="../projects.html" th:href="@{${crumb}}" th:text="${_titles.get(crumb)}">Projects</a></li>
-              <!--/*-->
-              <li class="is-active"><a class="b" th:text="${title}">Fix SWF</a></li>
-              <!--*/-->
-            </ul>
-          </div>
-        </div>
-      </div>
-    </section>
-    <section class="section">
-      <div class="container">
-        <div class="columns">
-          <div class="column is-8-desktop is-offset-2-desktop">
-            <div class="content">
-              <h1 class="title" th:include="${title}">Title</h1>
-              <div th:fragment="maincontent">
-                <p>
-                  <strong>Lorem ipsum</strong> dolor
-                  <a href="../potemkin/typo.html" th:href="@{/potemkin/typo.html}">sit amet</a>,
-                  consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
-                  labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
-                  <a href="../potemkin/html-experimente.html" th:href="@{/potemkin/html-experimente.html}">exercitation</a>
-                  ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
-                  irure dolor in reprehenderit in voluptate velit esse cillum dolore
-                  eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
-                  proident, sunt in culpa qui officia deserunt mollit anim id est
-                  laborum.
-                </p>
-                <h2 class="title">Duis aute irure dolor</h2>
-                <ul>
-                  <li>Operators and other mathematical stuff: -+/*</li>
-                  <li>
-                    Characters offten used in programming languages:
-                    {(&lt;&gt;)}@$?%*#;:&amp;/\!^&#034;&#039;`~
-                  </li>
-                  <li>Special german characters: ÄäÖöÜü</li>
-                  <li>Other special characters: @?¢§%°</li>
-                </ul>
-                <h2 class="title">Excepteur sint occaecat cupidatat</h2>
-                <p>
-                  Lorem ipsum dolor <em>sit amet</em>, consectetur adipisicing elit,
-                  sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-                  Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
-                  nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
-                  reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
-                  pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
-                  culpa qui officia deserunt mollit anim id est laborum.
-                </p>
-                <p>
-                  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
-                  eiusmod tempor incididunt ut labore et dolore magna aliqua.
-                  <strong>Ut enim ad minim veniam, quis nostrud <em>exercitation
-                  ullamco</em> laboris nisi ut aliquip ex ea commodo consequat</strong>.
-                  Duis aute irure dolor in reprehenderit in voluptate velit esse
-                  cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
-                  cupidatat non proident, sunt in culpa qui officia deserunt mollit
-                  anim id est laborum.
-                </p>
-                <ul>
-                  <li>
-                    <code><a href="https://github.com/jgthms/bulma">bulma</a></code>
-                  </li>
-                  <li>
-                    <code><a href="https://github.com/sass/node-sass">node-sass</a></code> to compile your own Sass file
-                  </li>
-                  <li>
-                    <code><a href="https://github.com/postcss/postcss-cli">postcss-cli</a></code> and <code><a href="https://github.com/postcss/autoprefixer">autoprefixer</a></code> to add support for older browsers
-                  </li>
-                  <li>
-                    <code><a href="https://babeljs.io/docs/usage/cli/">babel-cli</a></code>,
-                    <code><a href="https://github.com/babel/babel-preset-env">babel-preset-env</a></code>
-                    and
-                    <code><a href="https://github.com/jmcriffey/babel-preset-es2015-ie">babel-preset-es2015-ie</a></code>
-                    for compiling ES6 JavaScript files
-                  </li>
-                </ul>
-                <p>
-                  Apart from <code>package.json</code>, the following files are included:
-                </p>
-                <ul>
-                  <li>
-                    <code>.babelrc</code> configuration file for <a href="https://babeljs.io/">Babel</a>
-                  </li>
-                  <li>
-                    <code>.gitignore</code> common <a href="https://git-scm.com/">Git</a> ignored files
-                  </li>
-                  <li>
-                    <code>index.html</code> this HTML5 file
-                  </li>
-                  <li>
-                    <code>_sass/main.scss</code> a basic SCSS file that <strong>imports Bulma</strong> and explains how to <strong>customize</strong> your styles, and compiles to <code>css/main.css</code>
-                  </li>
-                  <li>
-                    <code>_javascript/main.js</code> an ES6 JavaScript that compiles to <code>lib/main.js</code>
-                  </li>
-                </ul>
-                <h3>Try it out!</h3>
-                <p>
-                  To see if your setup works, follow these steps:
-                </p>
-                <ol>
-                  <li>
-                    <p>
-                      <strong>Move</strong> to this directory:
-                      <br>
-                      <pre><code>cd bulma-start</code></pre>
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      <strong>Install</strong> all dependencies:
-                      <br>
-                      <pre><code>npm install</code></pre>
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      <strong>Start</strong> the CSS and JS watchers:
-                      <br>
-                      <pre><code>npm start</code></pre>
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      <strong>Edit</strong> <code>_sass/main.scss</code> by adding the following rule at the <strong>end</strong> of the file:
-                      <br>
-                      <pre><span style="color: #22863a;">html</span> {
-    <span style="color: #005cc5;"><span style="color: #005cc5;">background-color</span></span>: <span style="color: #24292e">$green</span>;
-  }</pre>
-                    </p>
-                  </li>
-                </ol>
-                <p>
-                  The page background should turn <strong class="has-text-success">green</strong>!
-                </p>
-                <h3>Get started</h3>
-                <p>
-                  You're <strong>ready</strong> to create your own designs with Bulma. Just edit or duplicate this page, or simply create a new one!
-                  <br>
-                  For example, this page is <strong>only</strong> built with the following <strong>Bulma elements</strong>:
-                </p>
-              </div>
-            </div>
-            <table class="table is-bordered is-fullwidth">
-              <thead>
-                <tr>
-                  <th>Type</th>
-                  <th>CSS class</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr>
-                  <th>Columns</th>
-                  <td>
-                    <code><a href="http://bulma.io/documentation/columns/basics">columns</a></code>
-                    <code><a href="http://bulma.io/documentation/columns/basics">column</a></code>
-                  </td>
-                </tr>
-                <tr>
-                  <th>Layout</th>
-                  <td>
-                    <code><a href="http://bulma.io/documentation/layout/section">section</a></code>
-                    <code><a href="http://bulma.io/documentation/layout/container">container</a></code>
-                    <code><a href="http://bulma.io/documentation/layout/footer">footer</a></code>
-                  </td>
-                </tr>
-                <tr>
-                  <th>Elements</th>
-                  <td>
-                    <code><a href="http://bulma.io/documentation/elements/button">button</a></code>
-                    <code><a href="http://bulma.io/documentation/elements/content">content</a></code>
-                    <code><a href="http://bulma.io/documentation/elements/title">title</a></code>
-                    <code><a href="http://bulma.io/documentation/elements/title">subtitle</a></code>
-                  </td>
-                </tr>
-                <tr>
-                  <th>Form</th>
-                  <td>
-                    <code><a href="http://bulma.io/documentation/form/general">field</a></code>
-                    <code><a href="http://bulma.io/documentation/form/general">control</a></code>
-                  </td>
-                </tr>
-                <tr>
-                  <th>Helpers</th>
-                  <td>
-                    <code><a href="http://bulma.io/documentation/modifiers/typography-helpers/">has-text-centered</a></code>
-                    <code><a href="http://bulma.io/documentation/modifiers/typography-helpers/">has-text-weight-semibold</a></code>
-                  </td>
-                </tr>
-              </tbody>
-            </table>
-            <div class="content">
-              <p>
-                If you want to <strong>learn more</strong>, follow these links:
-              </p>
-            </div>
-            <div class="field is-grouped">
-              <p class="control">
-                <a class="button is-medium is-primary" href="http://bulma.io">
-                  <strong class="has-text-weight-semibold">Bulma homepage</strong>
-                </a>
-              </p>
-              <p class="control">
-                <a class="button is-medium is-link" href="http://bulma.io/documentation/overview/start/">
-                  <strong class="has-text-weight-semibold">Documentation</strong>
-                </a>
-              </p>
-            </div>
-          </div>
-        </div>
-      </div>
-    </section>
-    <footer class="footer has-text-centered">
-      <div class="container">
-         <div class="columns">
-          <div class="column is-8-desktop is-offset-2-desktop">
-            <p>
-              <strong class="has-text-weight-semibold">
-                <a href="https://www.npmjs.com/package/bulma-start">bulma-start@0.0.4</a>
-              </strong>
-            </p>
-            <p>
-              <small>
-                Source code licensed <a href="http://opensource.org/licenses/mit-license.php">MIT</a>
-              </small>
-            </p>
-            <p style="margin-top: 1rem;">
-              <a href="http://bulma.io">
-                <img src="made-with-bulma.png" alt="Made with Bulma" width="128" height="24">
-              </a>
-            </p>
-          </div>
-        </div>
-      </div>
-    </footer>
-    <div id="page" class="cf">
-      <header id="header"><!-- TODO: Vereinfachung -> für uri == index.html a gegen strong ausstauschen -->
-        <hr class="h" />
-      </header>
-      <div id="breadcrumb">
-        <strong class="b title">You are here:</strong>
-        <ol class="b" th:include="~{::#crumbs}?:_">
-          <li class="b"><a class="b" href="../index.html" th:href="@{/index.html}">Home</a></li>
-          <li class="b" th:each="crumb: ${crumbs}">
-            <a class="b" href="../projects.html" th:href="@{${crumb}}" th:text="${_titles.get(crumb)}">Projects</a>
+      th:with="crumbs=${_crumbs.get(uri)}">
+    <div id="page" class="">
+      <main class="content section" th:include="${maincontent}" th:fragment="maincontent">
+        <h1 th:text="${_titles.get(uri)}">TEMPLATE: Layout</h1>
+        <p>
+          <strong>Lorem ipsum</strong> dolor
+          <a href="../potemkin/typo.html" th:href="@{/potemkin/typo.html}">sit amet</a>,
+          consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
+          labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
+          <a href="../potemkin/html-experimente.html" th:href="@{/potemkin/html-experimente.html}">exercitation</a>
+          ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
+          irure dolor in reprehenderit in voluptate velit esse cillum dolore
+          eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
+          proident, sunt in culpa qui officia deserunt mollit anim id est
+          laborum.
+        </p>
+        <h2 class="title">Duis aute irure dolor</h2>
+        <ul>
+          <li>Operators and other mathematical stuff: -+/*</li>
+          <li>
+            Characters offten used in programming languages:
+            {(&lt;&gt;)}@$?%*#;:&amp;/\!^&#034;&#039;`~
           </li>
+          <li>Special german characters: ÄäÖöÜü</li>
+          <li>Other special characters: @?¢§%°</li>
+        </ul>
+        <h2 class="title">Excepteur sint occaecat cupidatat</h2>
+        <p>
+          Lorem ipsum dolor <em>sit amet</em>, consectetur adipisicing elit,
+          sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+          Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
+          nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
+          reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
+          pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
+          culpa qui officia deserunt mollit anim id est laborum.
+        </p>
+        <p>
+          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+          eiusmod tempor incididunt ut labore et dolore magna aliqua.
+          <strong>Ut enim ad minim veniam, quis nostrud <em>exercitation
+          ullamco</em> laboris nisi ut aliquip ex ea commodo consequat</strong>.
+          Duis aute irure dolor in reprehenderit in voluptate velit esse
+          cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
+          cupidatat non proident, sunt in culpa qui officia deserunt mollit
+          anim id est laborum.
+        </p>
+      </main>
+      <nav class="section has-text-right">
+        <a href="../index.html" th:href="@{/}" title="Home">
+          <img src="/img/logo.svg" alt="juplo" class="logo">
+        </a>
+        <ul th:with="
+              len=${crumbs == null} ? 0 : ${crumbs.size()},
+              parent=${crumbs == null} ? '' : ${crumbs[0]},
+              submenu=${_childs.get(parent)},
+              pos=1"
+            id="navigation"
+            class="s mr-4 mt-4"
+            th:class="'mr-4 mt-4 s' + (${len == 1 or (len == 2 and _childs.get(uri) == null)} ? ' selected' : '')">
           <!--/*-->
-          <li class="b"><strong class="b" th:text="${title}">Fix SWF</strong></li>
+          <li class="s sub off"><a href="../blog/" class="s">Blog</a></li>
           <!--*/-->
-        </ol>
-        <a class="hide" href="#nav" title="Show navigation menu">Jump to navigation</a>
-        <hr class="b" />
-      </div>
-      <main class="content cf">
-        <article id="content" class="main" th:include="${maincontent}">
-          <header><h1 th:include="${title}">juplo - BASISTEMPLATE</h1></header>
-        </article>
-        <div class="marginal">
-          <nav id="nav"
-              th:include="~{::#navigation}?:_"
-              th:with="section=${crumbs != null ? crumbs[0] : null}"
-              >
-            <hr class="n"/>
-            <a class="hide" href="#top" title="Show Content">Jump back to the top of the page</a>
-            <h1 class="nav">Navigation</h1>
-            <h2 class="nav menu">Section-Menu</h2>
-            <ul id="menu" class="cf">
-              <li class="m blog" th:each="entry : ${_sections}" th:class="'m ' + ${entry.key}">
-                <a href="../blog/" th:href="@{${entry.value}}" class="m" th:class="${entry.value == section} ? 'm selected' : 'm'" th:text="${_titles.get(entry.value)}">Blog</a>
-              </li>
-              <!--/*-->
-              <li class="m projects"><a href="../projects.html" class="m selected">Projects</a></li>
-              <li class="m about"><a href="../about.html" class="m">About</a></li>
-              <!--*/-->
-            </ul>
-            <h2 class="nav submenu">
-              <span class="s">Submenu for section</span>
-              <a class="s selected" href="../projects.html" th:href="@{${section}}" th:text="${_titles.get(section)}">Projects</a>
-            </h2>
-            <ul th:include="${submenu}?:_"
-                th:with="
-                  len=${crumbs.size()},
-                  submenu=${_childs.get(section)},
-                  parent=${crumbs[0]},
-                  pos=1"
-                id="submenu"
+          <li th:fragment="submenu(submenu, parent, pos)"
+              th:each="entry : ${submenu}"
+              th:with="
+                  child=${pos == len},
+                  selected=${!child and crumbs.get(pos) == entry},
+                  leaf=${pos >= (len - 1) and not selected},
+                  sibling=${pos + 1 == len and (_childs.get(uri) == null or uri == parent)},
+                  childs=${entry == parent ? null : _childs.get(entry)}
+                  "
+              class="s sub"
+              th:class="'s' + (${childs} ? ' sub' : '') + (${selected or sibling or child} ? '' : ' off')">
+            <a  href="../projects.html"
+                th:if="${entry != parent}"
+                th:href="@{${entry}}"
+                class="s selected"
+                th:class="(${selected} ? 's selected' : 's') + ' len_' + ${len} + ' pos_' + ${pos} + (${leaf}?' leaf':'')"
+                th:text="${_titles.get(entry)}">Projekte</a>
+            <ul th:if="${selected and childs != null}"
                 class="s"
-                th:class="'s' + (${len == 1 or (len == 2 and _childs.get(uri) == null)} ? ' selected' : '')"
-                >
-              <li th:fragment="submenu(submenu, parent, pos)"
-                  th:each="entry : ${submenu}"
-                  th:with="
-                      child=${pos == len},
-                      selected=${!child and crumbs.get(pos) == entry},
-                      sibling=${pos + 1 == len and (_childs.get(uri) == null or uri == parent)},
-                      childs=${entry == parent ? null : _childs.get(entry)}
-                      "
-                  class="s sub"
-                  th:class="'s' + (${childs} ? ' sub' : '') + (${selected or sibling or child} ? '' : ' off')"
-                  >
-                <a  href="../potemkin/fix-swf/overview.html"
-                    th:if="${entry != parent}"
-                    th:href="@{${entry}}"
-                    class="s selected"
-                    th:class="${selected} ? 's selected' : 's'"
-                    th:text="${_titles.get(entry)}"
-                    >fix-swf</a>
-                <ul th:if="${selected and childs != null}"
-                    class="s active"
-                    th:class="'s' + (${selected &amp;&amp; pos == crumbs.size()-1} ? ' active' : '') + (${entry == uri or (len &gt; 1 and entry == crumbs.get(len-2) and _childs.get(uri) == null)} ? ' selected' : '')"
-                    >
-                  <li th:replace="this :: submenu(submenu=${childs}, parent=${entry}, pos=${pos + 1})"
-                      class="s"
-                      >
-                    <strong class="s">Overview</strong>
-                  </li>
-                  <!--/*-->
-                  <li class="s"><a href="../potemkin/fix-swf/getting-started.html" class="s">Getting Started</a></li>
-                  <li class="s"><a href="#" class="s">FAQ</a></li>
-                  <li class="s"><a href="#" class="s">Documentation</a></li>
-                  <!--*/-->
+                th:class="'s' + (${entry == uri or (len &gt; 1 and entry == crumbs.get(len-2) and _childs.get(uri) == null)} ? ' selected' : '')">
+              <!--/*-->
+              <li class="s sub">
+                <a class="s selected" href="../potemkin/fix-swf/overview.html">fix swf</a>
+                <ul class="s">
+                  <li class="s"><strong class="s selected">Overview</strong></li>
+                  <li class="s"><a class="s leaf" href="../potemkin/fix-swf/getting-started.html">Getting Started</a></li>
+                  <li class="s"><a class="s leaf" href="#">FAQ</a></li>
+                  <li class="s"><a class="s leaf" href="#">Documentation</a></li>
                 </ul>
               </li>
-              <!--/*-->
               <li class="s sub off"><a href="#" class="s">hibernate4-maven-plugin</a></li>
               <li class="s off"><a href="#" class="s">jquery.openx</a></li>
               <li class="s sub off"><a href="../potemkin/html-experimente.html" th:href="@{/potemkin/html-experimente.html}" class="s">HTML-Experimente</a></li>
               <li class="s sub off"><a href="#" class="s">accelerator</a></li>
-              <li class="s off"><a href="../potemkin/typo.html" th:href="@{/potemkin/typo.html}" class="s">Typography</a></li>
               <!--*/-->
+              <li th:replace="this :: submenu(submenu=${childs}, parent=${entry}, pos=${pos + 1})" class="s off"><a href="../potemkin/typo.html" th:href="@{/potemkin/typo.html}" class="s">Typography</a></li>
             </ul>
-            <hr class="n"/>
-          </nav>
-          <aside class="m" th:insert="${marginalcontent}?:~{}">
-          <!--/* the following  is only visible during natural templating -->
-            <h1>Other nasty but marginal stuff</h1>
-            <p>
-              Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
-              eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
-              ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
-              aliquip ex ea commodo consequat. Duis aute irure dolor in
-              reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
-              pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
-              culpa qui officia deserunt mollit anim id est laborum.
-            </p>
-          </aside>
-          <aside class="m">
-            <h1>More nasty stuff</h1>
-            <p>
-              This one is really short!
-            </p>
+          </li>
+          <!--/*-->
+          <li class="s sub off"><a href="../about.html" class="s">About</a></li>
           <!--*/-->
-          </aside>
-        </div>
-      </main>
-      <footer id="footer">
-        <hr class="f" />
-        <ul id="footerlinks" th:include="~{::#links}?:_">
-          <li class="f" id="copyright">© <strong>mo</strong> 2013</li>
-          <li class="f"><a class="f" href="../impressum.html" th:href="@{/impressum.html}">Impressum</a></li>
-          <li class="f"><a class="f" href="../datenschutz.html" th:href="@{/datenschutz.html}">Datenschutz</a></li>
         </ul>
-      </footer>
+      </nav>
     </div>
+    <footer>
+      <div id="copyright" class="section">
+        <span>© <strong>mo</strong> 2021</span>
+      </div>
+      <div id="footerlinks" class="section has-text-right" th:include="~{::#links}?:_">
+        <a href="../impressum.html" th:href="@{/impressum.html}">Impressum</a>
+        <span class="spacer">|</span>
+        <a href="../datenschutz.html" th:href="@{/datenschutz.html}">Datenschutz</a>
+      </div>
+    </footer>
   </body>
 </html>