github.com/PDOK/gokoala@v0.50.6/internal/engine/templates/layout.go.html (about)

     1  {{- /*gotype: github.com/PDOK/gokoala/internal/engine.TemplateData*/ -}}
     2  <!DOCTYPE html>
     3  <html lang="nl" class="h-100">
     4  <base href="{{ .Config.BaseURL }}/" />
     5  
     6  <head>
     7      <meta charset="UTF-8">
     8      <meta name="viewport" content="width=device-width, initial-scale=1">
     9  
    10      <title>{{ .Config.Title }} (OGC API)</title>
    11  
    12      <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet"
    13            integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
    14      <link href="css/gokoala.css" rel="stylesheet">
    15  
    16      <link rel="icon" type="image/png" sizes="32x32" href="img/favicon-32x32.png">
    17      <link rel="icon" type="image/png" sizes="16x16" href="img/favicon-16x16.png">
    18      <link rel="shortcut icon" href="img/favicon.ico">
    19      <script type="text/javascript">
    20          // match window title to page title
    21          window.addEventListener("load", (event) => {
    22              if (document.getElementById("title")) {
    23                  document.title = document.getElementById("title").innerHTML;
    24              }
    25          });
    26  
    27          function setLanguage(lang) {
    28              document.cookie = 'lang='+lang+';path=/;max-age={{ .Config.CookieMaxAge }};same-site=strict;secure';
    29              return true;
    30          }
    31      </script>
    32  </head>
    33  
    34  <body class="d-flex flex-column h-100">
    35      <!-- header -->
    36      <header>
    37          <!-- skip link -->
    38          <a class="visually-hidden visually-hidden-focusable" href="#main" aria-label="{{ i18n "ToMain" }}">{{ i18n "ToMain" }}</a>
    39  
    40          <nav class="navbar d-flex flex-column w-100" aria-label="top navigation">
    41              <!-- logo -->
    42              <div class="container">
    43                  <a class="navbar-brand py-3" href="{{ .Config.BaseURL }}" aria-label="{{ i18n "Logo" }}">
    44                      <img src="img/logo-header.svg" alt="{{ i18n "Logo" }}">
    45                  </a>
    46              </div>
    47  
    48              <!-- top navigation -->
    49              <div class="container">
    50                  {{ $lastcrumb := last .Breadcrumbs }}
    51  
    52                  <nav aria-label="breadcrumb">
    53                      <ol class="breadcrumb">
    54                          {{ if .Config.DatasetCatalogURL.URL }}
    55                              <li class="breadcrumb-item"><a href="{{ .Config.DatasetCatalogURL }}" target="_blank" aria-label="{{ i18n "To" }} Datasets">Datasets</a></li>
    56                          {{ end }}
    57                          {{ if .Breadcrumbs }}
    58                              <li class="breadcrumb-item"><a href="{{ .Config.BaseURL }}" aria-label="{{ i18n "To" }} {{ .Config.ServiceIdentifier }}">{{ .Config.ServiceIdentifier }}</a></li>
    59                          {{ else }}
    60                              <li class="breadcrumb-item active">{{ .Config.ServiceIdentifier }}</li>
    61                          {{ end }}
    62  
    63                          {{ range $breadcrumb := .Breadcrumbs }}
    64                              {{ if ne $breadcrumb.Name $lastcrumb.Name }}
    65                                  <li class="breadcrumb-item"><a href="{{ $breadcrumb.Path }}" aria-label="{{ i18n "To" }} {{ $breadcrumb.Name }}">{{ $breadcrumb.Name }}</a></li>
    66                              {{ else }}
    67                                  <li class="breadcrumb-item active">{{ $breadcrumb.Name }}</li>
    68                              {{ end }}
    69                          {{ end }}
    70                      </ol>
    71                  </nav>
    72  
    73                  <nav style="--bs-breadcrumb-divider: '|';" aria-label="switch language or format">
    74                      <ol class="breadcrumb">
    75                          {{ $languageSwitchCode := (i18n "LanguageSwitchCode") }}
    76                          {{ if gt (len .Config.AvailableLanguages) 1 }}
    77                              <!-- TODO: support switching between more than two languages -->
    78                              <li class="breadcrumb-item"><a href="{{ empty $.Breadcrumbs | ternary "" $lastcrumb.Path }}" onclick="setLanguage('{{ $languageSwitchCode }}');"
    79                                                             aria-label="{{ i18n "SwitchLanguage" }} {{ i18n "LanguageSwitchLabel" }}">{{ i18n "LanguageSwitchLabel" }}</a></li>
    80                          {{ end }}
    81                          {{ range $formatKey, $formatName := .AvailableFormats }}
    82                              <li class="breadcrumb-item"><a href="{{ empty $.Breadcrumbs | ternary "" $lastcrumb.Path }}{{ $.QueryString $formatKey }}" target="_blank"
    83                                                             aria-label="{{ i18n "SwitchFormat" }} {{ $formatName }}">{{ $formatName }}</a></li>
    84                          {{ end }}
    85                      </ol>
    86                  </nav>
    87              </div>
    88          </nav>
    89      </header>
    90  
    91      <!-- main content -->
    92      <main id="main">
    93          <div class="container py-3">
    94              <!-- Include content -->
    95              {{block "content" .}}{{end}}
    96          </div>
    97      </main>
    98  
    99      <!-- footer -->
   100      <footer class="footer mt-auto py-3">
   101          <div class="container">
   102              <div class="row">
   103                  <div class="col-1">
   104                      &nbsp; <!-- place additional footer links here -->
   105                  </div>
   106                  <div class="col-11 text-end">
   107                      <img src="img/logo-footer.png" alt="{{ i18n "FooterLogo" }}">
   108                  </div>
   109              </div>
   110          </div>
   111      </footer>
   112  
   113  </body>
   114  </html>