From fef42ad5c8d875c83fa132a305704879a8e2cb84 Mon Sep 17 00:00:00 2001 From: Benjamin Bach Date: Sun, 3 May 2020 22:45:20 +0200 Subject: [PATCH] Structure for multilingual contents + contents of old website --- README.rst | 15 +- ROADMAP | 2 + config.yaml | 111 +++--- content/_index.da.md | 5 + content/_index.en.md | 5 + content/about.da.md | 30 ++ content/about.en.md | 8 + content/about.md | 28 -- content/membership.da.md | 21 ++ ...ew-theme.md => creating-a-new-theme.en.md} | 7 +- content/post/goisforlovers.md | 335 ------------------ content/post/hugoisforlovers.md | 81 ----- content/post/migrate-from-jekyll.md | 154 -------- ...ariable-to-content-front-matter-in-hugo.md | 98 ----- ...-hugo-edge-version-on-fedora-and-ubuntu.md | 88 ----- content/rights.da.md | 118 ++++++ i18n/da-DK.toml | 3 + .../datacoop2020/layouts/_default/baseof.html | 8 + themes/datacoop2020/layouts/index.html | 30 +- 19 files changed, 288 insertions(+), 859 deletions(-) create mode 100644 content/_index.da.md create mode 100644 content/_index.en.md create mode 100644 content/about.da.md create mode 100644 content/about.en.md delete mode 100644 content/about.md create mode 100644 content/membership.da.md rename content/post/{creating-a-new-theme.md => creating-a-new-theme.en.md} (99%) delete mode 100644 content/post/goisforlovers.md delete mode 100644 content/post/hugoisforlovers.md delete mode 100644 content/post/migrate-from-jekyll.md delete mode 100644 content/post/script-to-add-a-page-level-variable-to-content-front-matter-in-hugo.md delete mode 100644 content/post/use-snap-to-install-the-hugo-edge-version-on-fedora-and-ubuntu.md create mode 100644 content/rights.da.md create mode 100644 i18n/da-DK.toml diff --git a/README.rst b/README.rst index 9e9308e..49a2406 100644 --- a/README.rst +++ b/README.rst @@ -23,16 +23,25 @@ Example recipe sudo dpkg -i hugo_extended.deb # Clone repo - git clone https://git.data.coop/data.coop/website.git + git clone https://git.data.coop/data.coop/website.git data.coop-website # Go to website - cd website + cd data.coop-website # Run development server hugo server - + ## Deploying the site Simply pushing to `master` in our main repo at https://git.data.coop/data.coop/website/ will trigger a build-and-deploy of the website. + +## Multilingual notes + +Our website is made multi-lingual using the following 3 structures: + +1. The folder ``i18n/`` contains translations of strings used in the theme. +1. Each content article and news text has a language version such ``content/.en.md`` +1. The ``config.yaml`` contains settings specific to each language, such as navigation. + diff --git a/ROADMAP b/ROADMAP index 4aad91f..0cbf572 100644 --- a/ROADMAP +++ b/ROADMAP @@ -4,3 +4,5 @@ Uge 2: HTML skabelon og Hugo skelet til undersider Uge 3: Beta-hjemmeside, "style guide" Uge 4: Indhold og lancering + + diff --git a/config.yaml b/config.yaml index 02bcabc..9a290da 100644 --- a/config.yaml +++ b/config.yaml @@ -1,9 +1,47 @@ baseURL: https://new.data.coop -DefaultContentLanguage: da -languageCode: da-dk + +copyright: CC-BY, see https://creativecommons.org/licenses/by/4.0/ + title: data.coop theme: datacoop2020 +DefaultContentLanguage: da + + +# See: https://gohugo.io/content-management/multilingual/ +languages: + da: + languagedirection: rtl + title: data.coop + weight: 1 + LanguageName: Dansk + en: + params: + navigation: + help: Aide + title: data.coop + weight: 2 + title: Mon blogue + weight: 2 + LanguageName: English + menu: + nav: + - name: "Bliv Medlem" + url: "/membership/" + weight: 1 + - name: "Om os" + url: "/about/" + weight: 2 + - name: "Tjenester" + url: "/services/" + weight: 3 + - name: "Vedtægter" + url: "/rights/" + weight: 4 + - name: "Nyheder" + url: "/news/" + weight: 5 + taxonomies: tag: tags @@ -11,68 +49,23 @@ permalinks: post: "/:filename/" params: - description: "Some description" - contentBackgroundColor: "#fff" - contentTextColor: "#212529" - contentLinkColor: "#007bff" - contentLinkHoverColor: "#0056b3" - navbarBackgroundColor: "#212529" - navbarLinkColor: "rgba(255, 255, 255, 0.75)" - navbarLinkHoverColor: "rgba(255, 255, 255, 1)" - wrapperMaxWidth: "800px" - customDateFormat: "Jan 2, 2006" - customCodeStyle: true - customBlockquoteStyle: true - showPostSummary: false - googleAnalytics: "UA-123456789-1" - cookieConsent: true - includeBootstrapJs: false - faviconSafariPinnedTabColor: "#5bbad5" - faviconMsApplicationTileColor: "#da532c" - faviconThemeColor: "#ffffff" + description: "Et datakollektiv, der passer på dine data." menu: nav: - - name: "Posts" - url: "/" + - name: "Bliv Medlem" + url: "/membership/" weight: 1 - - name: "Tags" - url: "/tags/" - weight: 2 - - name: "About" + - name: "Om os" url: "/about/" + weight: 2 + - name: "Tjenester" + url: "/services/" weight: 3 - - name: "RSS" - url: "/index.xml" + - name: "Vedtægter" + url: "/rights/" weight: 4 + - name: "Nyheder" + url: "/news/" + weight: 5 -markup: - defaultMarkdownHandler: "goldmark" - markup.goldmark: - markup.goldmark.extensions: - definitionList: true - footnote: true - linkify: true - strikethrough: true - table: true - taskList: true - typographer: true - markup.goldmark.parser: - attribute: true - autoHeadingID: true - markup.goldmark.renderer: - hardWraps: false - unsafe: true - xHTML: false - markup.highlight: - codeFences: true - hl_Lines: "" - lineNoStart: 1 - lineNos: false - lineNumbersInTable: true - noClasses: true - style: "monokai" - tabWidth: 4 - markup.tableOfContents: - endLevel: 6 - startLevel: 2 diff --git a/content/_index.da.md b/content/_index.da.md new file mode 100644 index 0000000..ca72c09 --- /dev/null +++ b/content/_index.da.md @@ -0,0 +1,5 @@ +--- +title: "Start" +--- + +# Hej diff --git a/content/_index.en.md b/content/_index.en.md new file mode 100644 index 0000000..c5961ae --- /dev/null +++ b/content/_index.en.md @@ -0,0 +1,5 @@ +--- +title: "Start" +--- + +# Start diff --git a/content/about.da.md b/content/about.da.md new file mode 100644 index 0000000..737cecc --- /dev/null +++ b/content/about.da.md @@ -0,0 +1,30 @@ +--- +title: "Om os" +--- + +**data.coop** er en forening og et kooperativ, som er nystartet. Visionen +er, at vi medlemmerne i kooperativet ejer vores egne data. + +Dette indebærer en del og har som konsekvens, at vi bliver nødt til at eje +vores egen infrastruktur og have indblik i og kontrol over den software, +som vi bruger til at kommunikere på nettet. Ret forsimplet betyder dette: + + * At vi ejer vores egen hardware + * At vi kun bruger open source software + +Vi går med begge ben på jorden, så for rent faktisk at kunne starte rigtigt +op, kan vi ikke stille urealistiske krav: At køre åben hardware eller +drive services såsom egne søgemaskiner er således ikke inden for rammerne. +Til gengæld regner vi med at drive en række af de fede open source projekter, +som allerede findes til e-mail, kalender, dokumentdeling og SOME. + +Vi ønsker pr. 2018 støttemedlemmer til at dække vores omkostninger. +Foreningen råder over 2 rack servere. Vi er ved at opbygge et medlemssystem +og afprøver nogle prototyper til den fremtidige hosting og infrastruktur. + +Du kan finde os på: + + * Freenode IRC, **#data.coop**. + * Keybase, **datacoop** + * Vores [Gitea server](https://git.data.coop/data.coop/) + diff --git a/content/about.en.md b/content/about.en.md new file mode 100644 index 0000000..fcdb41c --- /dev/null +++ b/content/about.en.md @@ -0,0 +1,8 @@ +--- +title: "About" +--- + +## This Theme + +Thanks for visiting this theme demo. If you're interested, checkout my other stuff over at + diff --git a/content/about.md b/content/about.md deleted file mode 100644 index 5ae8e2c..0000000 --- a/content/about.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "About" -date: "2014-04-09" ---- - -## This Theme - -Thanks for visiting this theme demo. If you're interested, checkout my other stuff over at - -## Hugo - -Hugo is the **world’s fastest framework for building websites**. It is written in Go. - -It makes use of a variety of open source projects including: - -* https://github.com/russross/blackfriday -* https://github.com/alecthomas/chroma -* https://github.com/muesli/smartcrop -* https://github.com/spf13/cobra -* https://github.com/spf13/viper - -Learn more and contribute on [GitHub](https://github.com/gohugoio). - ---- - - -_Favicon made by [Freepik](https://www.freepik.com/), from [Flaticon](https://www.flaticon.com/), licensed by [CC 3.0](http://creativecommons.org/licenses/by/3.0/)._ - diff --git a/content/membership.da.md b/content/membership.da.md new file mode 100644 index 0000000..228afea --- /dev/null +++ b/content/membership.da.md @@ -0,0 +1,21 @@ +--- +title: Bliv medlem +--- + +[data.coop](https://data.coop) er en demokratisk forening. Medlemmer bestemmer +over foreningens generelle drift og hvordan data skal forvaltes. Dette sker som +i en helt klassisk forening i henhold til vores vedtægter på den årlige +generalforsamling. + +Du bliver medlem ved at overføre penge til vores konto og sende en email til +vores kasserer, [benjaoming@data.coop](mailto:benjaoming@data.coop), med dit navn. + + * Reg. 8401 (Merkur) + * Kontonr. 1016866 + * Tekst på overførslen: Fornavn+efternavn + +Årligt kontingent: **300 kr** (dog gerne mere)\ +(nedsat kontingent er 50 kr. for studerende/arbejdsløse) + +Kontingent-perioden gælder for det år, man melder sig ind i. + diff --git a/content/post/creating-a-new-theme.md b/content/post/creating-a-new-theme.en.md similarity index 99% rename from content/post/creating-a-new-theme.md rename to content/post/creating-a-new-theme.en.md index d467834..91fd4a9 100644 --- a/content/post/creating-a-new-theme.md +++ b/content/post/creating-a-new-theme.en.md @@ -1,8 +1,7 @@ --- -title: "Creating a New Theme" -date: 2014-09-28 -publishdate: 2014-09-28 -lastmod: 2014-09-28 +title: "Vi bygger ny hjemmeside" +date: 2020-05-03 +publishdate: 2020-05-03 draft: false tags: ["hugo", "theme", "command-line"] --- diff --git a/content/post/goisforlovers.md b/content/post/goisforlovers.md deleted file mode 100644 index 530ddc6..0000000 --- a/content/post/goisforlovers.md +++ /dev/null @@ -1,335 +0,0 @@ ---- -title: "(Hu)go Template Primer" -date: "2014-04-02" -publishdate: "2014-04-02" -lastmod: "2014-04-02" -draft: false -tags: ["go", "templates", "hugo"] ---- - -Hugo uses the excellent [Go][] [html/template][gohtmltemplate] library for -its template engine. It is an extremely lightweight engine that provides a very -small amount of logic. In our experience that it is just the right amount of -logic to be able to create a good static website. If you have used other -template systems from different languages or frameworks you will find a lot of -similarities in Go templates. - -This document is a brief primer on using Go templates. The [Go docs][gohtmltemplate] -provide more details. - -## Introduction to Go Templates - -Go templates provide an extremely simple template language. It adheres to the -belief that only the most basic of logic belongs in the template or view layer. -One consequence of this simplicity is that Go templates parse very quickly. - -A unique characteristic of Go templates is they are content aware. Variables and -content will be sanitized depending on the context of where they are used. More -details can be found in the [Go docs][gohtmltemplate]. - -## Basic Syntax - -Golang templates are HTML files with the addition of variables and -functions. - -**Go variables and functions are accessible within {{ }}** - -Accessing a predefined variable "foo": - - {{ foo }} - -**Parameters are separated using spaces** - -Calling the add function with input of 1, 2: - - {{ add 1 2 }} - -**Methods and fields are accessed via dot notation** - -Accessing the Page Parameter "bar" - - {{ .Params.bar }} - -**Parentheses can be used to group items together** - - {{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }} - - -## Variables - -Each Go template has a struct (object) made available to it. In hugo each -template is passed either a page or a node struct depending on which type of -page you are rendering. More details are available on the -[variables](/layout/variables) page. - -A variable is accessed by referencing the variable name. - - {{ .Title }} - -Variables can also be defined and referenced. - - {{ $address := "123 Main St."}} - {{ $address }} - - -## Functions - -Go template ship with a few functions which provide basic functionality. The Go -template system also provides a mechanism for applications to extend the -available functions with their own. [Hugo template -functions](/layout/functions) provide some additional functionality we believe -are useful for building websites. Functions are called by using their name -followed by the required parameters separated by spaces. Template -functions cannot be added without recompiling hugo. - -**Example:** - - {{ add 1 2 }} - -## Includes - -When including another template you will pass to it the data it will be -able to access. To pass along the current context please remember to -include a trailing dot. The templates location will always be starting at -the /layout/ directory within Hugo. - -**Example:** - - {{ template "chrome/header.html" . }} - - -## Logic - -Go templates provide the most basic iteration and conditional logic. - -### Iteration - -Just like in Go, the Go templates make heavy use of range to iterate over -a map, array or slice. The following are different examples of how to use -range. - -**Example 1: Using Context** - - {{ range array }} - {{ . }} - {{ end }} - -**Example 2: Declaring value variable name** - - {{range $element := array}} - {{ $element }} - {{ end }} - -**Example 2: Declaring key and value variable name** - - {{range $index, $element := array}} - {{ $index }} - {{ $element }} - {{ end }} - -### Conditionals - -If, else, with, or, & and provide the framework for handling conditional -logic in Go Templates. Like range, each statement is closed with `end`. - - -Go Templates treat the following values as false: - -* false -* 0 -* any array, slice, map, or string of length zero - -**Example 1: If** - - {{ if isset .Params "title" }}

{{ index .Params "title" }}

{{ end }} - -**Example 2: If -> Else** - - {{ if isset .Params "alt" }} - {{ index .Params "alt" }} - {{else}} - {{ index .Params "caption" }} - {{ end }} - -**Example 3: And & Or** - - {{ if and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}} - -**Example 4: With** - -An alternative way of writing "if" and then referencing the same value -is to use "with" instead. With rebinds the context `.` within its scope, -and skips the block if the variable is absent. - -The first example above could be simplified as: - - {{ with .Params.title }}

{{ . }}

{{ end }} - -**Example 5: If -> Else If** - - {{ if isset .Params "alt" }} - {{ index .Params "alt" }} - {{ else if isset .Params "caption" }} - {{ index .Params "caption" }} - {{ end }} - -## Pipes - -One of the most powerful components of Go templates is the ability to -stack actions one after another. This is done by using pipes. Borrowed -from unix pipes, the concept is simple, each pipeline's output becomes the -input of the following pipe. - -Because of the very simple syntax of Go templates, the pipe is essential -to being able to chain together function calls. One limitation of the -pipes is that they only can work with a single value and that value -becomes the last parameter of the next pipeline. - -A few simple examples should help convey how to use the pipe. - -**Example 1 :** - - {{ if eq 1 1 }} Same {{ end }} - -is the same as - - {{ eq 1 1 | if }} Same {{ end }} - -It does look odd to place the if at the end, but it does provide a good -illustration of how to use the pipes. - -**Example 2 :** - - {{ index .Params "disqus_url" | html }} - -Access the page parameter called "disqus_url" and escape the HTML. - -**Example 3 :** - - {{ if or (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}} - Stuff Here - {{ end }} - -Could be rewritten as - - {{ isset .Params "caption" | or isset .Params "title" | or isset .Params "attr" | if }} - Stuff Here - {{ end }} - - -## Context (aka. the dot) - -The most easily overlooked concept to understand about Go templates is that {{ . }} -always refers to the current context. In the top level of your template this -will be the data set made available to it. Inside of a iteration it will have -the value of the current item. When inside of a loop the context has changed. . -will no longer refer to the data available to the entire page. If you need to -access this from within the loop you will likely want to set it to a variable -instead of depending on the context. - -**Example:** - - {{ $title := .Site.Title }} - {{ range .Params.tags }} -
  • {{ . }} - {{ $title }}
  • - {{ end }} - -Notice how once we have entered the loop the value of {{ . }} has changed. We -have defined a variable outside of the loop so we have access to it from within -the loop. - -# Hugo Parameters - -Hugo provides the option of passing values to the template language -through the site configuration (for sitewide values), or through the meta -data of each specific piece of content. You can define any values of any -type (supported by your front matter/config format) and use them however -you want to inside of your templates. - - -## Using Content (page) Parameters - -In each piece of content you can provide variables to be used by the -templates. This happens in the [front matter](/content/front-matter). - -An example of this is used in this documentation site. Most of the pages -benefit from having the table of contents provided. Sometimes the TOC just -doesn't make a lot of sense. We've defined a variable in our front matter -of some pages to turn off the TOC from being displayed. - -Here is the example front matter: - -``` ---- -title: "Permalinks" -date: "2013-11-18" -aliases: - - "/doc/permalinks/" -groups: ["extras"] -groups_weight: 30 -notoc: true ---- -``` - -Here is the corresponding code inside of the template: - - {{ if not .Params.notoc }} -
    - {{ .TableOfContents }} -
    - {{ end }} - - - -## Using Site (config) Parameters -In your top-level configuration file (eg, `config.yaml`) you can define site -parameters, which are values which will be available to you in chrome. - -For instance, you might declare: - -```yaml -params: - CopyrightHTML: "Copyright © 2013 John Doe. All Rights Reserved." - TwitterUser: "spf13" - SidebarRecentLimit: 5 -``` - -Within a footer layout, you might then declare a `