diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..610923b
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,21 @@
+# Ignore everything
+**
+
+# Allow system files and directories
+!docker-utils/
+!system/
+!.htaccess
+!composer*
+!index.php
+
+# Allow content files and directories
+!cache/
+!content/
+!data/
+!media/
+!settings/
+!themes/
+
+# Ignore unnecessary files inside allowed directories below
+# This should go after the allowed directories
+# e.g. docker-utils/test.php
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..36c1748
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,41 @@
+FROM php:8.0-apache
+
+# Install OS dependencies required
+RUN apt-get update && apt-get upgrade -y && apt-get install git unzip zlib1g-dev libpng-dev -y
+
+# Adapt apache config
+RUN a2enmod rewrite \
+ && echo "ServerName 127.0.0.1" >> /etc/apache2/apache2.conf
+
+# Install PHP ext-gd
+RUN docker-php-ext-install gd
+
+# Copy app content
+# Use the .dockerignore file to control what ends up inside the image!
+WORKDIR /var/www/html
+COPY . .
+
+# Install server dependencies
+RUN chmod +x /var/www/html/docker-utils/install-composer && \
+ /var/www/html/docker-utils/install-composer && \
+ ./composer.phar update && \
+ chmod +x /var/www/html/docker-utils/init-server
+
+# Expose useful volumes (see documentation)
+VOLUME /var/www/html/settings
+VOLUME /var/www/html/media
+VOLUME /var/www/html/cache
+VOLUME /var/www/html/plugins
+VOLUME /var/www/html/data
+
+# Create a default copy of content and theme in case of empty directories binding
+RUN mkdir -p /var/www/html/content.default/ && \
+ cp -R /var/www/html/content/* /var/www/html/content.default/ && \
+ mkdir -p /var/www/html/themes.default/ && \
+ cp -R /var/www/html/themes/* /var/www/html/themes.default/
+
+VOLUME /var/www/html/content
+VOLUME /var/www/html/themes
+
+# Inject default values if content and themes are mounted with empty directories, adjust rights and start the server
+CMD ["/var/www/html/docker-utils/init-server"]
\ No newline at end of file
diff --git a/docker-utils/init-server b/docker-utils/init-server
new file mode 100644
index 0000000..f3bacd9
--- /dev/null
+++ b/docker-utils/init-server
@@ -0,0 +1,5 @@
+#!/bin/sh
+find /var/www/html/content -type d -empty -exec cp -R /var/www/html/content.default/* /var/www/html/content \;
+find /var/www/html/themes -type d -empty -exec cp -R /var/www/html/themes.default/* /var/www/html/themes \;
+chown -R www-data:www-data /var/www/html/
+apache2-foreground
\ No newline at end of file
diff --git a/docker-utils/install-composer b/docker-utils/install-composer
new file mode 100644
index 0000000..585031d
--- /dev/null
+++ b/docker-utils/install-composer
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')"
+php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
+ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
+
+if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]
+then
+ >&2 echo 'ERROR: Invalid installer checksum'
+ rm composer-setup.php
+ exit 1
+fi
+
+php composer-setup.php --quiet
+RESULT=$?
+rm composer-setup.php
+exit $RESULT
\ No newline at end of file
diff --git a/system/typemill/Static/Urlinfo.php b/system/typemill/Static/Urlinfo.php
index c704dfa..39ca57a 100644
--- a/system/typemill/Static/Urlinfo.php
+++ b/system/typemill/Static/Urlinfo.php
@@ -9,8 +9,12 @@ class Urlinfo
# we need to get urlinfos to use in frontend and to inject into assets and container before middleware starts and request-object is available.
public static function getUrlInfo($basepath, $uri, $settings)
{
+ # remove basic auth credentials
$uri = $uri->withUserInfo('');
- $uri = $uri->withPort(null);
+
+ # remove standard ports to fix csp error
+ # alternatively add ports to csp header
+ $uri = self::removeStandardPorts($uri);
$currentpath = $uri->getPath();
$route = str_replace($basepath, '', $currentpath);
@@ -36,8 +40,8 @@ class Urlinfo
# if proxy has basepath, then
if (isset($_SERVER['HTTP_X_FORWARDED_PREFIX']))
{
- # Use X-Forwarded-Prefix if available
- $basepath = rtrim($_SERVER['HTTP_X_FORWARDED_PREFIX'], '/') . '/';
+ # Use X-Forwarded-Prefix if available
+ $basepath = rtrim($_SERVER['HTTP_X_FORWARDED_PREFIX'], '/') . '/';
}
}
}
@@ -62,6 +66,17 @@ class Urlinfo
];
}
+ private static function removeStandardPorts($uri)
+ {
+ $port = $uri->getPort();
+ if ($port == 80 || $port == 443)
+ {
+ $uri = $uri->withPort(null);
+ }
+
+ return $uri;
+ }
+
private static function updateUri($uri, $trustedProxies)
{
# optionally check trusted proxies
diff --git a/typemill_data/content/00-welcome/00-setup-your-website.md b/typemill_data/content/00-welcome/00-setup-your-website.md
new file mode 100644
index 0000000..13a3396
--- /dev/null
+++ b/typemill_data/content/00-welcome/00-setup-your-website.md
@@ -0,0 +1,16 @@
+# Setup Your Website
+
+Typemill provides detailed settings, and you have access to nearly all settings in the author panel. Learn the basics in this short video:
+
+{#7yvlwXJL9dc .youtube}
+
+You will find all configurations and settings under the main navigation point `system` with the following sub-navigation:
+
+* System
+* Themes
+* Plugins
+* Account
+* Users
+
+All settings are stored in the `\settings` folder of Typemill. It is not recommended to edit the settings manually, because it might crash the system if done wrong.
+
diff --git a/typemill_data/content/00-welcome/00-setup-your-website.yaml b/typemill_data/content/00-welcome/00-setup-your-website.yaml
new file mode 100644
index 0000000..8940a3d
--- /dev/null
+++ b/typemill_data/content/00-welcome/00-setup-your-website.yaml
@@ -0,0 +1,12 @@
+meta:
+ navtitle: 'setup your website'
+ title: 'Setup your website'
+ description: ' You will find all configurations and settings under the main navigation point settings with the following sub-navigation:'
+ owner: Sebastian
+ manualdate: '2023-11-22'
+ modified: '2023-10-23'
+ created: '2023-06-12'
+ time: 15-18-48
+ hide: false
+ noindex: false
+ author: Sebastian
diff --git a/typemill_data/content/00-welcome/01-write-content.md b/typemill_data/content/00-welcome/01-write-content.md
new file mode 100644
index 0000000..778a947
--- /dev/null
+++ b/typemill_data/content/00-welcome/01-write-content.md
@@ -0,0 +1,50 @@
+# Write Content
+
+Typemill provides easy and intuitive authoring tools and we work hard to create a good author experience.
+
+* With the **interactive navigation** you can create pages and structure your websites.
+* The **visual markdown editor** will help you to create content in a wysiwyg mode.
+* With the **raw markdown editor** you can write markdown syntax in textarea.
+* The **publish bar** gives you full control over the status of each page.
+
+Watch the following video tutorial to learn all the details.
+
+{#6I2-uV88GkE .youtube}
+
+## The Navigation
+
+You can create, structure and reorder all pages with the navigation on the left side. To structure your content, you can create new folders and files with the "add item" button. To reorder the pages, just drag an item and drop it wherever you want. Play around with it and you will notice, that it works pretty similar to the folder- and file-system of your laptop. And in fact, this is exactly what Typemill does in the background: It stores your content in files and folders on the server.
+
+However, there are some limitations when you try to reorder elements. For example, you cannot move a complete folder to another folder, because this would change all the urls of the pages inside that folder, which is a nightmare for readers and search engines.
+
+## The Editor
+
+You can create and format your content with the Markdown syntax, that is similar to the markup syntax of Wikipedia. If you are not familiar with Markdown, then please read the short [Markdown-tutorial](https://typemill.net/) in the documentation of Typemill. You can learn Markdown in less than 10 minutes and there is no easier and faster way to format your webpage. You will love it!
+
+Typemill provides two edit modes: The **raw mode** and the **visual mode**. You can switch between the modes in the publish-bar at the bottom of each page. The **raw mode** is the most robust way to create your content, because you write raw markdown into a simple textarea. The **visual mode** uses blocks and transforms each content block into a html-preview immediately. This means that you can directly see and check the formatted result.
+
+By default Typemill will use the **visual mode**.
+
+* You can change the default mode in the system settings.
+* You can also switch each format button on and off in the system settings.
+
+## The Publish Bar
+
+The publish bar of Typemill is pretty intuitiv and sticks at the bottom of the screen so that you have always full control of the status of each page. Simply play around with it and you will quickly understand how it works. In short:
+
+* The green button "online" indicates, that your page is published and visible for your readers.
+* You can depublish a page by clicking the green "online" button. The button will turn gray with the label "offline" and the page is not visible for your readers anymore.
+* With the green button "Publish" you can either publish a page that is offline or you can publish some unpublished changes on your page.
+* The publish-button is gray and disabled, if the page is online and if there are no unpublished changes.
+* All buttons will change in real time, so you can always exactly see what is going on.
+* To provide an easy status-overview of the whole website, Typemill marks all pages in the navigation on the left side as published (green), changed (orange) and unpublished (red).
+
+## Working with Drafts
+
+Ever tried to revise a published article in WordPress? Yes, it works, but if you click on "save", then all your changes are directly live. Typemill is much more flexible here and allows you to keep your original version live while you work on a **drafted version** in the background. This is how Typemill handles it:
+
+* In **visual mode**: Typemill stores your changes in a new draft automatically as soon as you save any content-block.
+* In **raw mode**: To store changes in a new draft, simply click on the "save draft"-button in the publish controller.
+* You can work on a draft as long as you want without changing the live version. Your changes go live if you click the button "publish".
+* In visual mode, you can also use the discard-button and go back to the published version.
+
diff --git a/typemill_data/content/00-welcome/01-write-content.yaml b/typemill_data/content/00-welcome/01-write-content.yaml
new file mode 100644
index 0000000..c146047
--- /dev/null
+++ b/typemill_data/content/00-welcome/01-write-content.yaml
@@ -0,0 +1,11 @@
+meta:
+ navtitle: 'write content'
+ title: 'Write Content'
+ description: 'Typemill provides easy and intuitive authoring tools and we work hard to create a good author experience. With the interactive navigation you can create pages'
+ owner: Sebastian
+ modified: '2023-05-11'
+ created: '2023-06-12'
+ time: 22-09-48
+ hide: false
+ noindex: false
+ author: Sebastian
diff --git a/typemill_data/content/00-welcome/02-manage-access.md b/typemill_data/content/00-welcome/02-manage-access.md
new file mode 100644
index 0000000..a7a8219
--- /dev/null
+++ b/typemill_data/content/00-welcome/02-manage-access.md
@@ -0,0 +1,32 @@
+# Manage Access
+
+Typemill has a build-in system to restrict access to pages or to the whole websites. You can activate both features in the system settings under the tab "restrictions". If you activate one of the features, then Typemill will use session cookies on all frontend pages. Learn all the details in the following video tutorial:
+
+{#UW_m-4g1kAA .youtube}
+
+## Restrict Access for the Website
+
+This feature is handy, if you want to lock down the whole website and only grant access for authenticated users. All non-authenticated users will be redirected to the login-page. There are two main use cases for this feature:
+
+* **Launch the website later**: You want to create your website first and launch it to the public later, for example if you have finished the website design or if you have polished your content.
+* **Share website internally**: You want to share your typemill website only with certain users, for example with the company stuff, or only with the members of your business-unit.
+
+You can activate the feature with a simple checkbox under "website restrictions".
+
+## Restrict Access for Pages
+
+If you need a more fine-tuned access and if you want to restrict access only for certain pages, then you can activate the feature "Page Restrictions". If you activate this checkbox, then you will find two new input fields in the meta-tab of each page:
+
+* **Minimum role for access**: Here you can select a miminum role that the user needs to view the page content. Be aware that the roles have a hierarchy, so if you choose the role "author", then the "editor" will also have access.
+* **Usernames**: Here you can add one or more usernames (separated with comma) that have access to this page.
+
+If you don't choose anything, then the page has no restrictions and everybody can see the content.
+
+You have some more features in the settings area:
+
+* **Cut content**: Per default only the title of a restricted page is visible to the public, the content is hidden. You can change this and cut the content wherever you want with a horizontal line.
+* **Teaser**: You can add a standard text with markdown that will be displayed instead of the content or after the content is cut.
+* **Teaser-Box**: You can optionally wrap the teaser in a box.
+
+You can also combine these features with the registration plugin and this way create a membership website with member-only content.
+
diff --git a/typemill_data/content/00-welcome/02-manage-access.yaml b/typemill_data/content/00-welcome/02-manage-access.yaml
new file mode 100644
index 0000000..dd11ee6
--- /dev/null
+++ b/typemill_data/content/00-welcome/02-manage-access.yaml
@@ -0,0 +1,16 @@
+meta:
+ navtitle: 'manage access'
+ title: 'Manage access'
+ description: ' Restrict Access for the Website'
+ heroimage: null
+ heroimagealt: null
+ owner: Sebastian
+ author: Sebastian
+ allowedrole: null
+ alloweduser: null
+ manualdate: null
+ modified: '2023-05-06'
+ created: '2023-06-12'
+ time: 22-36-36
+ hide: false
+ noindex: false
diff --git a/typemill_data/content/00-welcome/03-get-help.md b/typemill_data/content/00-welcome/03-get-help.md
new file mode 100644
index 0000000..85cc588
--- /dev/null
+++ b/typemill_data/content/00-welcome/03-get-help.md
@@ -0,0 +1,10 @@
+# Get Help
+
+If you need any help, then please read the [documentation on typemill.net](https://typemill.net/typemill) first. You can also check these [video-tutorials](https://www.youtube.com/channel/UCyghKiX2kK9QIqTf1WT1Xxw) about the basics to create a typemill website.
+
+If you found a bug or if you have a question, then please open a new issue on [GitHub](https://github.com/typemill/typemill/issues).
+
+Do you need professional help, an individual theme or a special plugin? You can hire us at [Trendschau Digital](https://trendschau.net/typemill-development).
+
+{.center loading="lazy"}
+
diff --git a/typemill_data/content/00-welcome/03-get-help.yaml b/typemill_data/content/00-welcome/03-get-help.yaml
new file mode 100644
index 0000000..b6ee53a
--- /dev/null
+++ b/typemill_data/content/00-welcome/03-get-help.yaml
@@ -0,0 +1,16 @@
+meta:
+ navtitle: 'get help'
+ title: 'get help'
+ description: 'If you found a bug or if you have a question, then please open a new issue on GitHub. Do you need professional help, an individual theme or a special plugin?'
+ heroimage: null
+ heroimagealt: null
+ owner: trendschau
+ author: Sebastian
+ allowedrole: null
+ alloweduser: null
+ manualdate: null
+ modified: '2023-05-13'
+ created: '2023-06-12'
+ time: 22-36-34
+ hide: false
+ noindex: false
diff --git a/typemill_data/content/00-welcome/04-markdown-test.md b/typemill_data/content/00-welcome/04-markdown-test.md
new file mode 100644
index 0000000..359ca52
--- /dev/null
+++ b/typemill_data/content/00-welcome/04-markdown-test.md
@@ -0,0 +1,444 @@
+# Markdown Reference and Test Page
+
+Markdown is a simple and universal syntax for text formatting. More and more writers switch to markdown, because they can format their text during the writing process without using any format-buttons. Once they are familiar with the markdown syntax, they can write formatted text much easier and faster than with any standard HTML-editor.
+
+Developers love markdown, because it is much cleaner and saver than HTML. And they can easily convert markdown to a lot of other document formats like HTML and others.
+
+If you develop a theme for TYPEMILL, please take care that all elements on this page are designed properly.
+
+## Table of Contents
+
+To create a table of contents, simply write `[TOC]` in a separate line. It will be replaced with a table of contents like this automatically.
+
+[TOC]
+
+## Headlines
+
+```
+Headlines are simply done with hash chars like this:
+# First Level Headline
+## Second Level Headline
+### Third Level Headline
+#### Fourth Level Headline
+##### Fifth Level Headline
+###### Sixth Level Headline
+```
+
+
+
+
+
+
+### Third Level Headline
+
+A third headline is more decent and lower prioritized than a second level headline.
+
+#### Fourth Level Headline
+
+A fourth level headline is more decent and lower prioritized than a third level headline.
+
+##### Fifth Level Headline
+
+A fifth level headline is more decent and lower prioritized than a fourth level headline.
+
+###### Sixth Level Headline
+
+A sixth level headline is more decent and lower prioritized than a fifths level headline.
+
+##Paragraph
+
+````
+A paragraph is a simple text-block separated with a new line above and below.
+````
+
+
+
+
+
+
+
+A paragraph is a simple text-block separated with a new line above and below.
+
+## Soft Linebreak
+
+````
+For a soft linebreak (eg. for dialoges in literature), add two spaces at the end of a line and use a simple return.
+She said: "Hello"
+He said: "again"
+````
+
+
+
+
+
+
+
+For a soft linebreak (eg. for dialoges in literature), add two spaces at the end of a line and use a simple return.
+
+She said: "Hello"
+He said: "again"
+
+##Emphasis
+
+````
+For italic text use one *asterix* or one _underscore_.
+For bold text use two **asterix** or two __underscores__.
+````
+
+
+
+
+
+
+
+For italic text use one *asterix* or one _underscore_.
+
+For bold text use two **asterix** or two __underscores__.
+
+##Lists
+
+````
+For an unordered list use a dash
+- like
+- this
+Or use one asterix
+* like
+* this
+For an ordered list use whatever number you want and add a dot:
+1. like
+1. this
+````
+
+
+
+
+
+
+
+For an unordered list use a dash
+
+* like
+* this
+
+Or use one asterix
+
+* like
+* this
+
+For an ordered list use whatever number you want and add a dot:
+
+1. like
+2. this
+
+## Horizontal Rule
+
+```
+Easily created for example with three dashes like this:
+---
+```
+
+
+
+
+
+
+
+Easily created for example with three dashes like this:
+
+---
+
+````
+This is an ordinary [Link](http://typemill.net).
+Links can also be [relative](/info).
+You can link to anchors like this [anchor](#images)
+You can also add a [title](http://typemill.net "typemill").
+You can even add [ids or classes](http://typemill.net){#myid .myclass}.
+Or you can use a shortcut like http://typemill.net.
+You can even use a download-link like []()
+````
+
+
+
+
+
+
+
+This is an ordinary [Link](http://typemill.net).
+
+Links can also be [relative](/info).
+
+You can link to anchors like this [anchor](#images)
+
+You can also add a [title](http://typemill.net "typemill").
+
+You can even add [ids or classes](http://typemill.net){#myid .myclass}.
+
+Or you can use a shortcut like http://typemill.net.
+
+[highlight (ZIP, 2.71 MB)](media/files/highlight.zip){.tm-download file-zip}
+
+##Images
+
+````
+The same rules as with links, but with a !
+
+*With caption*
+{#myid .imgClass}
+*With caption that spans over several lines*
+{#myid .otherclass width=150px}
+````
+
+
+
+
+
+
+
+The same rules as with links, but with a !
+
+
+
+{.center loading="lazy" width="820" height="464"}
+*With a caption that spans over two lines.*
+
+{#myid .otherclass width=150px}
+
+## Linked Images
+
+````
+You can link an image with a nested syntax like this:
+[](https://typemill.net)
+````
+
+
+
+
+
+
+
+You can link an image with a nested syntax like this:
+
+[{.imgClass}](https://typemill.net)
+
+## Image Position
+
+````
+You can controll the image position with the classes .left, .right and .middle like this:
+{.left}
+*With caption that spans over several lines*
+{.right}
+*With caption that spans over several lines*
+{.center}
+*With caption that spans over several lines*
+````
+
+
+
+
+
+
+
+
+
+The first image should float on the left side of this paragraph. This might not work with all themes. If you are a theme developer, please ensure that you support the image classes "left", "right" and "center". You can add these classes manually in the raw mode or you can assign them in the visual mode when you edit a picture (double click on it to open the dialog). Images in a separate line are rendered with the html5 elements `figure` and `figcapture`.
+
+{.right}
+*With caption that spans over several lines*
+
+The second image should float on the right side of this paragraph. This might not work with all themes. If you are a theme developer, please ensure that you support the image classes "left", "right" and "center". You can add these classes manually in the raw mode or you can assign them in the visual mode when you edit a picture (double click on it to open the dialog). Images in a separate line are rendered with the html5 elements `figure` and `figcapture`.
+
+{.center}
+*With caption that spans over several lines*
+
+The thirds image should be placed above this paragraph and centered to the middle of the content area. This might not work with all themes. If you are a theme developer, please ensure that you support the image classes "left", "right" and "center". You can add these classes manually in the raw mode or you can assign them in the visual mode when you edit a picture (double click on it to open the dialog). Images in a separate line are rendered with the html5 elements `figure` and `figcapture`.
+
+## Blockquote
+
+```
+There are always some women and men with wise words
+
+> But I usually don't read them, to be honest.
+```
+
+
+
+
+
+
+There always some women and men with wise words
+
+> But I usually don't read them, to be honest.
+
+##Footnotes
+
+````
+You can write footnotes[^1] with markdown.
+Scroll down to the end of the page[^2] and look for the footnotes.
+Add the footnote text at the bottom of the page like this:
+[^1]: Thank you for scrolling.
+[^2]: This is the end of the page.
+````
+
+
+
+
+
+
+
+You can write footnotes[^1] with markdown.
+
+Scroll down to the end of the page[^2] and look for the footnotes.
+
+Footnotes won't work with the visual editor right now, so please use the raw mode for them.
+
+## Abbreviations
+
+````
+*[HTML]: Hyper Text Markup Language
+*[W3C]: World Wide Web Consortium
+````
+
+
+
+
+
+
+
+You won't see the abbreviation directly, but if you write HTML or W3C somewhere, then you can see the tooltip with the explanation.
+
+*[HTML]: Hyper Text Markup Language
+
+*[W3C]: World Wide Web Consortium
+
+## Definition List
+
+````
+Apple
+: Pomaceous fruit of plants of the genus Malus in the family Rosaceae.
+
+Orange
+: The fruit of an evergreen tree of the genus Citrus.
+````
+
+
+
+
+
+
+Apple
+: Pomaceous fruit of plants of the genus Malus in
+the family Rosaceae.
+
+Orange
+: The fruit of an everggreen tree of the genus Citrus.
+
+## Notices
+
+You can create different notices if you add a '!', '!!', '!!!', '!!!!' before a line. This will wrap the content into a div-class with the classes `notice1`, `notice2`, `notice3` and `notice4`. You can also span notices over several lines. This logic follows some other CMS like Grav, Lektor or Yellow and it is not compatible with other markdown processors or editors.
+
+! Notice 1
+!
+! Please note that you can use **markdown** inside of the notice so you can *format* your text here.
+
+!! **Notice 2**
+!!
+!! Please note that you can use **markdown** inside of the notice so you can *format* your text here.
+
+!!! **Notice 3**
+!!!
+!!! Please note that you can use **markdown** inside of the notice so you can *format* your text here.
+
+## Tables
+
+````
+|name |usage |
+|-----------|-----------|
+| My Name | For Me |
+| Your Name | For You |
+````
+
+
+
+
+
+
+
+| Name | Usage |
+|---|---|
+| My Name | For Me |
+| Your Name | For You |
+
+## Code
+
+````
+Let us create some `` like this
+````
+
+
+
+
+
+
+
+Let us create some `` and now let us check, if a codeblock works:
+
+````
+Use four apostroph like this:
+\````
+
+\````
+````
+
+
+
+
+
+
+
+## Math
+
+Please activate the math-plugin to use mathematical expressions with LaTeX syntax. You can choose between MathJax or the newer KaTeX library. MathJax is included from a CDN, KaTeX is included in the plugin. So if you don't want to fetch code from a CDN, use KaTeX instead. The markdown syntax in TYPEMILL is the same for both libraries.
+
+````
+Write inline math with \(...\) or $...$ syntax.
+inline $x = \int_{0^1}^1(-b \pm \sqrt{b^2-4ac})/(2a)$ math
+inline \(x = \int_{0^1}^1(-b \pm \sqrt{b^2-4ac})/(2a)\) math
+````
+
+
+
+
+
+
+
+inline $x = \int_{0^1}^1(-b \pm \sqrt{b^2-4ac})/(2a)$ math
+
+inline \(x = \int_{0^1}^1(-b \pm \sqrt{b^2-4ac})/(2a)\) math
+
+````
+Write display math with $$...$$ or \[...\] syntax.
+$$
+x = \int_{0^1}^1(-b \pm \sqrt{b^2-4ac})/(2a)
+$$
+\[
+x = \int_{0^1}^1(-b \pm \sqrt{b^2-4ac})/(2a)
+\]
+````
+
+
+
+
+
+
+
+$$
+x = \int_{0^1}^1(-b \pm \sqrt{b^2-4ac})/(2a)
+$$
+
+[^1]: Thank you for scrolling.
+
+[^2]: This is the end of the page.
+
diff --git a/typemill_data/content/00-welcome/04-markdown-test.yaml b/typemill_data/content/00-welcome/04-markdown-test.yaml
new file mode 100644
index 0000000..d8f6279
--- /dev/null
+++ b/typemill_data/content/00-welcome/04-markdown-test.yaml
@@ -0,0 +1,18 @@
+meta:
+ navtitle: 'markdown test'
+ title: 'Markdown is a simple and universal syntax for text formatting.'
+ description: 'Developers love markdown, because it is much cleaner and saver than HTML. And they can easily convert markdown to a lot of other document formats like HTML and'
+ heroimage: null
+ heroimagealt: null
+ owner: Sebastian
+ author: Sebastian
+ allowedrole: null
+ alloweduser: null
+ manualdate: null
+ modified: '2023-05-11'
+ created: '2023-06-12'
+ time: 22-36-41
+ reference: null
+ referencetype: null
+ hide: false
+ noindex: false
diff --git a/typemill_data/content/00-welcome/index.md b/typemill_data/content/00-welcome/index.md
new file mode 100644
index 0000000..eca2d6f
--- /dev/null
+++ b/typemill_data/content/00-welcome/index.md
@@ -0,0 +1,4 @@
+# Welcome
+
+Great that you give Typemill a try!! Typemill is a simple Flat File Content Management System (CMS). We (the community) work hard to provide the best author experience with easy and intuitive authoring tools. But Typemill is still in early development and it is likely that not everything will work perfectly out of the box. If you miss something or if you have ideas for improvements, then post a new issue on [GitHub](https://github.com/typemill/typemill/issues).mb
+
diff --git a/typemill_data/content/00-welcome/index.yaml b/typemill_data/content/00-welcome/index.yaml
new file mode 100644
index 0000000..f5e53a6
--- /dev/null
+++ b/typemill_data/content/00-welcome/index.yaml
@@ -0,0 +1,30 @@
+meta:
+ navtitle: welcome
+ title: 'Great that you give Typemill a try!!'
+ description: bla
+ heroimage: null
+ heroimagealt: null
+ owner: Sebastian
+ author: Sebastian
+ allowedrole: null
+ alloweduser: null
+ manualdate: null
+ modified: '2023-05-11'
+ created: '2023-06-12'
+ time: 22-36-42
+ reference: null
+ referencetype: null
+ hide: false
+ noindex: false
+ contains: pages
+ glossary: null
+seo:
+ seoimage: null
+ seoimagealt: null
+ Checkbox: null
+ mycfiel: null
+demo:
+ demoimage: null
+ demoimagealt: null
+ democheckbox: null
+ democustomfield: { }
diff --git a/typemill_data/content/01-cyanine-theme/00-landingpage.md b/typemill_data/content/01-cyanine-theme/00-landingpage.md
new file mode 100644
index 0000000..dcee802
--- /dev/null
+++ b/typemill_data/content/01-cyanine-theme/00-landingpage.md
@@ -0,0 +1,13 @@
+# The Landingpage
+
+Cyanine provides an optional landingpage with six segments:
+
+* **Intro** with the content of the home page and an additional link/button.
+* **Info** with individual markdown content.
+* **Teaser** with two elements. Each element has a headline, a text and a link/button.
+* **Contrast** with a headline, text-input and a link/button. The colors are inverted.
+* **Navigation** with the whole content of the website. You can change the depth of the navigation.
+* **News** with a link to a news-folder. It will display the three latest news in a card-design. Add a hero-image to each news-entry to show a teaser image.
+
+You can activate or deactivate the whole landingpage, order all elements and enable/disable each element individually.
+
diff --git a/typemill_data/content/01-cyanine-theme/00-landingpage.yaml b/typemill_data/content/01-cyanine-theme/00-landingpage.yaml
new file mode 100644
index 0000000..58d59ff
--- /dev/null
+++ b/typemill_data/content/01-cyanine-theme/00-landingpage.yaml
@@ -0,0 +1,18 @@
+meta:
+ navtitle: landingpage
+ title: 'Cyanine provides an optional landingpage with six segments:'
+ description: "\nIntro with the content of the home page and an additional link/button.\nInfo with individual markdown content.\nTeaser with two elements. Each element has a"
+ heroimage: null
+ heroimagealt: null
+ owner: Sebastian
+ author: Sebastian
+ allowedrole: null
+ alloweduser: null
+ manualdate: null
+ modified: '2023-03-26'
+ created: '2023-06-12'
+ time: 22-36-46
+ reference: null
+ referencetype: null
+ hide: false
+ noindex: true
diff --git a/typemill_data/content/01-cyanine-theme/01-colors-and-fonts.md b/typemill_data/content/01-cyanine-theme/01-colors-and-fonts.md
new file mode 100644
index 0000000..223a3bb
--- /dev/null
+++ b/typemill_data/content/01-cyanine-theme/01-colors-and-fonts.md
@@ -0,0 +1,36 @@
+# Colors and Fonts
+
+First of all cyanine supports individual logos. If you want to use our logo, then please upload it in the system settings. Cyanine will automatically replace the title text with your logo. You can also upload your own favicon in the system settings.
+
+Cyanine allows you to change many colors. Please make sure that your color-combinations are readable and accessible. The following colors are editable:
+
+* **Primary Theme Color**: used for the body background and borders.
+* **Secondary Theme Color**: used for content background, font-colors on hover and more.
+* **Primary Font Color**: used for main text.
+* **Secondary Font Color**: used as contrast color for hovers in navigation and buttons.
+* **Link Color**: used for text-links. Keep accessibility in mind.
+* **Thin Border Color**: used for thin borders in navigations and tables.
+
+You can also change the font-family for
+
+* headlines
+* text
+* buttons and navigations
+
+Cyanine uses wide spread system fonts with fallbacks:
+
+* serif
+* sans-serif
+* courier
+* helvetica
+* avenir
+* athelas
+* georgia
+* times
+* bodoni
+* calisto
+* garamond
+* baskerville
+
+If the color- and font-settings are not enough for your purpose, then you can always overwrite the theme-css with your own styles in the theme settings.
+
diff --git a/typemill_data/content/01-cyanine-theme/01-colors-and-fonts.yaml b/typemill_data/content/01-cyanine-theme/01-colors-and-fonts.yaml
new file mode 100644
index 0000000..0c79a42
--- /dev/null
+++ b/typemill_data/content/01-cyanine-theme/01-colors-and-fonts.yaml
@@ -0,0 +1,9 @@
+meta:
+ navtitle: 'colors and fonts'
+ owner: Sebastian
+ created: '2023-06-12'
+ time: 22-36-53
+ modified: '2023-03-26'
+ title: 'First of all cyanine supports individual logos. If you want to use our logo, then please upload it in the system settings. Cyanine will automatically replace the title text with your logo. You can also upload your own favicon in the system settings.'
+ description: 'Cyanine allows you to change many colors. Please make sure that your color-combinations are readable and accessible. The following colors are editable: '
+ author: Sebastian
diff --git a/typemill_data/content/01-cyanine-theme/02-footer.md b/typemill_data/content/01-cyanine-theme/02-footer.md
new file mode 100644
index 0000000..f480191
--- /dev/null
+++ b/typemill_data/content/01-cyanine-theme/02-footer.md
@@ -0,0 +1,4 @@
+# 3-Column Footer
+
+Cyanine provides a three column footer at the bottom of each page. You can use markdown for each column. Make sure that you use the correct headline-level (we suggest a headline level 3 or level 4 to keep the logical headline hierarchy in the document). You can, of course, also add link-lists or other elements. Check the website of [Typemill](https://typemill.net) for an example.
+
diff --git a/typemill_data/content/01-cyanine-theme/02-footer.yaml b/typemill_data/content/01-cyanine-theme/02-footer.yaml
new file mode 100644
index 0000000..650a993
--- /dev/null
+++ b/typemill_data/content/01-cyanine-theme/02-footer.yaml
@@ -0,0 +1,9 @@
+meta:
+ navtitle: footer
+ owner: Sebastian
+ created: '2023-06-12'
+ time: 21-41-25
+ modified: '2021-05-18'
+ description: 'Cyanine provides a three column footer at the bottom of each page. You can use markdown for each column. Make sure that you use the correct headline-level (we'
+ title: '3-Column Footer'
+ author: Sebastian
diff --git a/typemill_data/content/01-cyanine-theme/03-content-elements.md b/typemill_data/content/01-cyanine-theme/03-content-elements.md
new file mode 100644
index 0000000..e65259a
--- /dev/null
+++ b/typemill_data/content/01-cyanine-theme/03-content-elements.md
@@ -0,0 +1,10 @@
+# Content Elements
+
+Cyanine provides a lot of other settings for your content area. For example:
+
+* Add an edit-button for github, gitlab or other plattforms.
+* Show the author.
+* Show the publish date.
+* Show the chapter numbers in the navigation.
+
+The Cyanine theme supports all content elements like tables, images, notices or downloads. It also supports anchor-links next to headlines, so you can deep link to certain content sections of your page. You can activate the anchors in the system settings of Typemill.
\ No newline at end of file
diff --git a/typemill_data/content/01-cyanine-theme/03-content-elements.yaml b/typemill_data/content/01-cyanine-theme/03-content-elements.yaml
new file mode 100644
index 0000000..55940f3
--- /dev/null
+++ b/typemill_data/content/01-cyanine-theme/03-content-elements.yaml
@@ -0,0 +1,9 @@
+meta:
+ navtitle: 'content elements'
+ owner: Sebastian
+ created: '2023-06-12'
+ time: 22-36-50
+ modified: '2021-11-24'
+ title: 'Cyanine provides a lot of other settings for your content area. For example:'
+ description: "\nAdd an edit-button for github, gitlab or other plattforms.\nShow the author.\nShow the publish date.\nShow the chapter numbers in the navigation.\n"
+ author: Sebastian
diff --git a/typemill_data/content/01-cyanine-theme/index.md b/typemill_data/content/01-cyanine-theme/index.md
new file mode 100644
index 0000000..d7e9dec
--- /dev/null
+++ b/typemill_data/content/01-cyanine-theme/index.md
@@ -0,0 +1,6 @@
+# The Cyanine Theme
+
+Cyanine is the modern, lightweight and flexible standard theme for Typemill. You can activate a landingpage, setup different content sections for the landingpage and order them like you want. You can also change the colors, fonts and other details. To configure the theme, login to the system (/tm/login), go to the theme settings (/tm/themes) and choose the theme "Cyanine".
+
+If Cyanine does not fit to your needs, then you can also choose another theme in the [theme store](https://themes.typemill.net) of Typemill.
+
diff --git a/typemill_data/content/01-cyanine-theme/index.yaml b/typemill_data/content/01-cyanine-theme/index.yaml
new file mode 100644
index 0000000..96b02a0
--- /dev/null
+++ b/typemill_data/content/01-cyanine-theme/index.yaml
@@ -0,0 +1,20 @@
+meta:
+ navtitle: 'cyanine theme'
+ title: 'The Cyanine Theme'
+ description: 'Cyanine is the modern, lightweight and flexible standard theme for Typemill. You can activate a landingpage, setup different content sections for the'
+ heroimage: null
+ heroimagealt: null
+ owner: Sebastian
+ author: Sebastian
+ allowedrole: null
+ alloweduser: null
+ manualdate: null
+ modified: '2021-05-18'
+ created: '2023-06-12'
+ time: 22-09-50
+ reference: null
+ referencetype: null
+ hide: false
+ noindex: false
+ contains: pages
+ glossary: null
diff --git a/typemill_data/content/index.md b/typemill_data/content/index.md
new file mode 100644
index 0000000..90ad5cd
--- /dev/null
+++ b/typemill_data/content/index.md
@@ -0,0 +1,6 @@
+# Typemill
+
+The open-source flat-file cms for text-driven websites. Create handbooks, documentations, manuals, web-novels, traditional websites, and more.
+
+{#6i2-uv88gke .youtube}
+
diff --git a/typemill_data/content/index.yaml b/typemill_data/content/index.yaml
new file mode 100644
index 0000000..b38e356
--- /dev/null
+++ b/typemill_data/content/index.yaml
@@ -0,0 +1,26 @@
+meta:
+ navtitle: home
+ title: Typemill
+ description: 'The open-source flat-file cms for text-driven websites. Create handbooks, documentations, manuals, web-novels, traditional websites, and more.'
+ heroimage: media/live/screenshot-2023-08-03-at-15-23-44-setup-3.png
+ owner: trendschau
+ author: 'Sebastian Schürmanns'
+ allowedrole: ''
+ modified: '2021-09-28'
+ created: '2021-09-28'
+ time: 13-41-23
+ hide: false
+ noindex: false
+seo:
+ seoimage: null
+ seoimagealt: 'My alt text'
+ Checkbox:
+ - first
+ - fourth
+ - second
+ mycfiel: null
+demo:
+ demoimage: null
+ demoimagealt: null
+ democheckbox: { }
+ democustomfield: null
diff --git a/typemill_data/data/navigation/navi-draft.txt b/typemill_data/data/navigation/navi-draft.txt
new file mode 100644
index 0000000..d4fd639
--- /dev/null
+++ b/typemill_data/data/navigation/navi-draft.txt
@@ -0,0 +1 @@
+a:2:{i:0;O:8:"stdClass":22:{s:12:"originalName";s:10:"00-welcome";s:11:"elementType";s:6:"folder";s:8:"contains";s:5:"pages";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:7:"welcome";s:4:"slug";s:7:"welcome";s:4:"path";s:11:"/00-welcome";s:15:"pathWithoutType";s:17:"/00-welcome/index";s:9:"urlRelWoF";s:8:"/welcome";s:6:"urlRel";s:8:"/welcome";s:6:"urlAbs";s:29:"http://localhost:8080/welcome";s:3:"key";i:0;s:7:"keyPath";i:0;s:12:"keyPathArray";a:1:{i:0;s:1:"0";}s:7:"chapter";i:1;s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:13:"folderContent";a:5:{i:0;O:8:"stdClass":20:{s:12:"originalName";s:24:"00-setup-your-website.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:18:"setup your website";s:4:"slug";s:18:"setup-your-website";s:4:"path";s:36:"/00-welcome/00-setup-your-website.md";s:15:"pathWithoutType";s:33:"/00-welcome/00-setup-your-website";s:3:"key";i:0;s:7:"keyPath";s:3:"0.0";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"0";}s:7:"chapter";s:3:"1.1";s:9:"urlRelWoF";s:27:"/welcome/setup-your-website";s:6:"urlRel";s:27:"/welcome/setup-your-website";s:6:"urlAbs";s:48:"http://localhost:8080/welcome/setup-your-website";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:1;O:8:"stdClass":20:{s:12:"originalName";s:19:"01-write-content.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:13:"write content";s:4:"slug";s:13:"write-content";s:4:"path";s:31:"/00-welcome/01-write-content.md";s:15:"pathWithoutType";s:28:"/00-welcome/01-write-content";s:3:"key";i:1;s:7:"keyPath";s:3:"0.1";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"1";}s:7:"chapter";s:3:"1.2";s:9:"urlRelWoF";s:22:"/welcome/write-content";s:6:"urlRel";s:22:"/welcome/write-content";s:6:"urlAbs";s:43:"http://localhost:8080/welcome/write-content";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:2;O:8:"stdClass":20:{s:12:"originalName";s:19:"02-manage-access.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"02";s:4:"name";s:13:"manage access";s:4:"slug";s:13:"manage-access";s:4:"path";s:31:"/00-welcome/02-manage-access.md";s:15:"pathWithoutType";s:28:"/00-welcome/02-manage-access";s:3:"key";i:2;s:7:"keyPath";s:3:"0.2";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"2";}s:7:"chapter";s:3:"1.3";s:9:"urlRelWoF";s:22:"/welcome/manage-access";s:6:"urlRel";s:22:"/welcome/manage-access";s:6:"urlAbs";s:43:"http://localhost:8080/welcome/manage-access";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:3;O:8:"stdClass":20:{s:12:"originalName";s:14:"03-get-help.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"03";s:4:"name";s:8:"get help";s:4:"slug";s:8:"get-help";s:4:"path";s:26:"/00-welcome/03-get-help.md";s:15:"pathWithoutType";s:23:"/00-welcome/03-get-help";s:3:"key";i:3;s:7:"keyPath";s:3:"0.3";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"3";}s:7:"chapter";s:3:"1.4";s:9:"urlRelWoF";s:17:"/welcome/get-help";s:6:"urlRel";s:17:"/welcome/get-help";s:6:"urlAbs";s:38:"http://localhost:8080/welcome/get-help";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:4;O:8:"stdClass":20:{s:12:"originalName";s:19:"04-markdown-test.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"04";s:4:"name";s:13:"markdown test";s:4:"slug";s:13:"markdown-test";s:4:"path";s:31:"/00-welcome/04-markdown-test.md";s:15:"pathWithoutType";s:28:"/00-welcome/04-markdown-test";s:3:"key";i:4;s:7:"keyPath";s:3:"0.4";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"4";}s:7:"chapter";s:3:"1.5";s:9:"urlRelWoF";s:22:"/welcome/markdown-test";s:6:"urlRel";s:22:"/welcome/markdown-test";s:6:"urlAbs";s:43:"http://localhost:8080/welcome/markdown-test";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}}s:7:"noindex";b:0;}i:1;O:8:"stdClass":22:{s:12:"originalName";s:16:"01-cyanine-theme";s:11:"elementType";s:6:"folder";s:8:"contains";s:5:"pages";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:13:"cyanine theme";s:4:"slug";s:13:"cyanine-theme";s:4:"path";s:17:"/01-cyanine-theme";s:15:"pathWithoutType";s:23:"/01-cyanine-theme/index";s:9:"urlRelWoF";s:14:"/cyanine-theme";s:6:"urlRel";s:14:"/cyanine-theme";s:6:"urlAbs";s:35:"http://localhost:8080/cyanine-theme";s:3:"key";i:1;s:7:"keyPath";i:1;s:12:"keyPathArray";a:1:{i:0;s:1:"1";}s:7:"chapter";i:2;s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:13:"folderContent";a:4:{i:0;O:8:"stdClass":20:{s:12:"originalName";s:17:"00-landingpage.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:11:"landingpage";s:4:"slug";s:11:"landingpage";s:4:"path";s:35:"/01-cyanine-theme/00-landingpage.md";s:15:"pathWithoutType";s:32:"/01-cyanine-theme/00-landingpage";s:3:"key";i:0;s:7:"keyPath";s:3:"1.0";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"0";}s:7:"chapter";s:3:"2.1";s:9:"urlRelWoF";s:26:"/cyanine-theme/landingpage";s:6:"urlRel";s:26:"/cyanine-theme/landingpage";s:6:"urlAbs";s:47:"http://localhost:8080/cyanine-theme/landingpage";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:1;}i:1;O:8:"stdClass":20:{s:12:"originalName";s:22:"01-colors-and-fonts.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:16:"colors and fonts";s:4:"slug";s:16:"colors-and-fonts";s:4:"path";s:40:"/01-cyanine-theme/01-colors-and-fonts.md";s:15:"pathWithoutType";s:37:"/01-cyanine-theme/01-colors-and-fonts";s:3:"key";i:1;s:7:"keyPath";s:3:"1.1";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"1";}s:7:"chapter";s:3:"2.2";s:9:"urlRelWoF";s:31:"/cyanine-theme/colors-and-fonts";s:6:"urlRel";s:31:"/cyanine-theme/colors-and-fonts";s:6:"urlAbs";s:52:"http://localhost:8080/cyanine-theme/colors-and-fonts";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:2;O:8:"stdClass":20:{s:12:"originalName";s:12:"02-footer.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"02";s:4:"name";s:6:"footer";s:4:"slug";s:6:"footer";s:4:"path";s:30:"/01-cyanine-theme/02-footer.md";s:15:"pathWithoutType";s:27:"/01-cyanine-theme/02-footer";s:3:"key";i:2;s:7:"keyPath";s:3:"1.2";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"2";}s:7:"chapter";s:3:"2.3";s:9:"urlRelWoF";s:21:"/cyanine-theme/footer";s:6:"urlRel";s:21:"/cyanine-theme/footer";s:6:"urlAbs";s:42:"http://localhost:8080/cyanine-theme/footer";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:3;O:8:"stdClass":20:{s:12:"originalName";s:22:"03-content-elements.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"03";s:4:"name";s:16:"content elements";s:4:"slug";s:16:"content-elements";s:4:"path";s:40:"/01-cyanine-theme/03-content-elements.md";s:15:"pathWithoutType";s:37:"/01-cyanine-theme/03-content-elements";s:3:"key";i:3;s:7:"keyPath";s:3:"1.3";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"3";}s:7:"chapter";s:3:"2.4";s:9:"urlRelWoF";s:31:"/cyanine-theme/content-elements";s:6:"urlRel";s:31:"/cyanine-theme/content-elements";s:6:"urlAbs";s:52:"http://localhost:8080/cyanine-theme/content-elements";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}}s:7:"noindex";b:0;}}
\ No newline at end of file
diff --git a/typemill_data/data/navigation/navi-extended.txt b/typemill_data/data/navigation/navi-extended.txt
new file mode 100644
index 0000000..69087af
--- /dev/null
+++ b/typemill_data/data/navigation/navi-extended.txt
@@ -0,0 +1,66 @@
+/welcome:
+ navtitle: welcome
+ hide: false
+ noindex: false
+ path: /00-welcome
+ keyPath: 0
+/welcome/setup-your-website:
+ navtitle: 'setup your website'
+ hide: false
+ noindex: false
+ path: /00-welcome/00-setup-your-website.md
+ keyPath: '0.0'
+/welcome/write-content:
+ navtitle: 'write content'
+ hide: false
+ noindex: false
+ path: /00-welcome/01-write-content.md
+ keyPath: '0.1'
+/welcome/manage-access:
+ navtitle: 'manage access'
+ hide: false
+ noindex: false
+ path: /00-welcome/02-manage-access.md
+ keyPath: '0.2'
+/welcome/get-help:
+ navtitle: 'get help'
+ hide: false
+ noindex: false
+ path: /00-welcome/03-get-help.md
+ keyPath: '0.3'
+/welcome/markdown-test:
+ navtitle: 'markdown test'
+ hide: false
+ noindex: false
+ path: /00-welcome/04-markdown-test.md
+ keyPath: '0.4'
+/cyanine-theme:
+ navtitle: 'cyanine theme'
+ hide: false
+ noindex: false
+ path: /01-cyanine-theme
+ keyPath: 1
+/cyanine-theme/landingpage:
+ navtitle: landingpage
+ hide: false
+ noindex: true
+ path: /01-cyanine-theme/00-landingpage.md
+ keyPath: '1.0'
+/cyanine-theme/colors-and-fonts:
+ navtitle: 'colors and fonts'
+ hide: false
+ noindex: false
+ path: /01-cyanine-theme/01-colors-and-fonts.md
+ keyPath: '1.1'
+/cyanine-theme/footer:
+ navtitle: footer
+ hide: false
+ noindex: false
+ path: /01-cyanine-theme/02-footer.md
+ keyPath: '1.2'
+/cyanine-theme/content-elements:
+ navtitle: 'content elements'
+ hide: false
+ noindex: false
+ path: /01-cyanine-theme/03-content-elements.md
+ keyPath: '1.3'
diff --git a/typemill_data/data/navigation/navi-live.txt b/typemill_data/data/navigation/navi-live.txt
new file mode 100644
index 0000000..d4fd639
--- /dev/null
+++ b/typemill_data/data/navigation/navi-live.txt
@@ -0,0 +1 @@
+a:2:{i:0;O:8:"stdClass":22:{s:12:"originalName";s:10:"00-welcome";s:11:"elementType";s:6:"folder";s:8:"contains";s:5:"pages";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:7:"welcome";s:4:"slug";s:7:"welcome";s:4:"path";s:11:"/00-welcome";s:15:"pathWithoutType";s:17:"/00-welcome/index";s:9:"urlRelWoF";s:8:"/welcome";s:6:"urlRel";s:8:"/welcome";s:6:"urlAbs";s:29:"http://localhost:8080/welcome";s:3:"key";i:0;s:7:"keyPath";i:0;s:12:"keyPathArray";a:1:{i:0;s:1:"0";}s:7:"chapter";i:1;s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:13:"folderContent";a:5:{i:0;O:8:"stdClass":20:{s:12:"originalName";s:24:"00-setup-your-website.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:18:"setup your website";s:4:"slug";s:18:"setup-your-website";s:4:"path";s:36:"/00-welcome/00-setup-your-website.md";s:15:"pathWithoutType";s:33:"/00-welcome/00-setup-your-website";s:3:"key";i:0;s:7:"keyPath";s:3:"0.0";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"0";}s:7:"chapter";s:3:"1.1";s:9:"urlRelWoF";s:27:"/welcome/setup-your-website";s:6:"urlRel";s:27:"/welcome/setup-your-website";s:6:"urlAbs";s:48:"http://localhost:8080/welcome/setup-your-website";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:1;O:8:"stdClass":20:{s:12:"originalName";s:19:"01-write-content.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:13:"write content";s:4:"slug";s:13:"write-content";s:4:"path";s:31:"/00-welcome/01-write-content.md";s:15:"pathWithoutType";s:28:"/00-welcome/01-write-content";s:3:"key";i:1;s:7:"keyPath";s:3:"0.1";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"1";}s:7:"chapter";s:3:"1.2";s:9:"urlRelWoF";s:22:"/welcome/write-content";s:6:"urlRel";s:22:"/welcome/write-content";s:6:"urlAbs";s:43:"http://localhost:8080/welcome/write-content";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:2;O:8:"stdClass":20:{s:12:"originalName";s:19:"02-manage-access.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"02";s:4:"name";s:13:"manage access";s:4:"slug";s:13:"manage-access";s:4:"path";s:31:"/00-welcome/02-manage-access.md";s:15:"pathWithoutType";s:28:"/00-welcome/02-manage-access";s:3:"key";i:2;s:7:"keyPath";s:3:"0.2";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"2";}s:7:"chapter";s:3:"1.3";s:9:"urlRelWoF";s:22:"/welcome/manage-access";s:6:"urlRel";s:22:"/welcome/manage-access";s:6:"urlAbs";s:43:"http://localhost:8080/welcome/manage-access";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:3;O:8:"stdClass":20:{s:12:"originalName";s:14:"03-get-help.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"03";s:4:"name";s:8:"get help";s:4:"slug";s:8:"get-help";s:4:"path";s:26:"/00-welcome/03-get-help.md";s:15:"pathWithoutType";s:23:"/00-welcome/03-get-help";s:3:"key";i:3;s:7:"keyPath";s:3:"0.3";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"3";}s:7:"chapter";s:3:"1.4";s:9:"urlRelWoF";s:17:"/welcome/get-help";s:6:"urlRel";s:17:"/welcome/get-help";s:6:"urlAbs";s:38:"http://localhost:8080/welcome/get-help";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:4;O:8:"stdClass":20:{s:12:"originalName";s:19:"04-markdown-test.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"04";s:4:"name";s:13:"markdown test";s:4:"slug";s:13:"markdown-test";s:4:"path";s:31:"/00-welcome/04-markdown-test.md";s:15:"pathWithoutType";s:28:"/00-welcome/04-markdown-test";s:3:"key";i:4;s:7:"keyPath";s:3:"0.4";s:12:"keyPathArray";a:2:{i:0;s:1:"0";i:1;s:1:"4";}s:7:"chapter";s:3:"1.5";s:9:"urlRelWoF";s:22:"/welcome/markdown-test";s:6:"urlRel";s:22:"/welcome/markdown-test";s:6:"urlAbs";s:43:"http://localhost:8080/welcome/markdown-test";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}}s:7:"noindex";b:0;}i:1;O:8:"stdClass":22:{s:12:"originalName";s:16:"01-cyanine-theme";s:11:"elementType";s:6:"folder";s:8:"contains";s:5:"pages";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:13:"cyanine theme";s:4:"slug";s:13:"cyanine-theme";s:4:"path";s:17:"/01-cyanine-theme";s:15:"pathWithoutType";s:23:"/01-cyanine-theme/index";s:9:"urlRelWoF";s:14:"/cyanine-theme";s:6:"urlRel";s:14:"/cyanine-theme";s:6:"urlAbs";s:35:"http://localhost:8080/cyanine-theme";s:3:"key";i:1;s:7:"keyPath";i:1;s:12:"keyPathArray";a:1:{i:0;s:1:"1";}s:7:"chapter";i:2;s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:13:"folderContent";a:4:{i:0;O:8:"stdClass":20:{s:12:"originalName";s:17:"00-landingpage.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"00";s:4:"name";s:11:"landingpage";s:4:"slug";s:11:"landingpage";s:4:"path";s:35:"/01-cyanine-theme/00-landingpage.md";s:15:"pathWithoutType";s:32:"/01-cyanine-theme/00-landingpage";s:3:"key";i:0;s:7:"keyPath";s:3:"1.0";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"0";}s:7:"chapter";s:3:"2.1";s:9:"urlRelWoF";s:26:"/cyanine-theme/landingpage";s:6:"urlRel";s:26:"/cyanine-theme/landingpage";s:6:"urlAbs";s:47:"http://localhost:8080/cyanine-theme/landingpage";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:1;}i:1;O:8:"stdClass":20:{s:12:"originalName";s:22:"01-colors-and-fonts.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"01";s:4:"name";s:16:"colors and fonts";s:4:"slug";s:16:"colors-and-fonts";s:4:"path";s:40:"/01-cyanine-theme/01-colors-and-fonts.md";s:15:"pathWithoutType";s:37:"/01-cyanine-theme/01-colors-and-fonts";s:3:"key";i:1;s:7:"keyPath";s:3:"1.1";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"1";}s:7:"chapter";s:3:"2.2";s:9:"urlRelWoF";s:31:"/cyanine-theme/colors-and-fonts";s:6:"urlRel";s:31:"/cyanine-theme/colors-and-fonts";s:6:"urlAbs";s:52:"http://localhost:8080/cyanine-theme/colors-and-fonts";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:2;O:8:"stdClass":20:{s:12:"originalName";s:12:"02-footer.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"02";s:4:"name";s:6:"footer";s:4:"slug";s:6:"footer";s:4:"path";s:30:"/01-cyanine-theme/02-footer.md";s:15:"pathWithoutType";s:27:"/01-cyanine-theme/02-footer";s:3:"key";i:2;s:7:"keyPath";s:3:"1.2";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"2";}s:7:"chapter";s:3:"2.3";s:9:"urlRelWoF";s:21:"/cyanine-theme/footer";s:6:"urlRel";s:21:"/cyanine-theme/footer";s:6:"urlAbs";s:42:"http://localhost:8080/cyanine-theme/footer";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}i:3;O:8:"stdClass":20:{s:12:"originalName";s:22:"03-content-elements.md";s:11:"elementType";s:4:"file";s:6:"status";s:9:"published";s:8:"fileType";s:2:"md";s:5:"order";s:2:"03";s:4:"name";s:16:"content elements";s:4:"slug";s:16:"content-elements";s:4:"path";s:40:"/01-cyanine-theme/03-content-elements.md";s:15:"pathWithoutType";s:37:"/01-cyanine-theme/03-content-elements";s:3:"key";i:3;s:7:"keyPath";s:3:"1.3";s:12:"keyPathArray";a:2:{i:0;s:1:"1";i:1;s:1:"3";}s:7:"chapter";s:3:"2.4";s:9:"urlRelWoF";s:31:"/cyanine-theme/content-elements";s:6:"urlRel";s:31:"/cyanine-theme/content-elements";s:6:"urlAbs";s:52:"http://localhost:8080/cyanine-theme/content-elements";s:6:"active";b:0;s:12:"activeParent";b:0;s:4:"hide";b:0;s:7:"noindex";b:0;}}s:7:"noindex";b:0;}}
\ No newline at end of file
diff --git a/typemill_data/settings/settings.yaml b/typemill_data/settings/settings.yaml
new file mode 100644
index 0000000..4e73dd5
--- /dev/null
+++ b/typemill_data/settings/settings.yaml
@@ -0,0 +1,27 @@
+0:
+ language: en
+ author: docker
+ mailfrom: trendschau@gmail.com
+ mailfromname: docker
+title: Docker
+author: Docker
+copyright: null
+language: en
+langattr: en
+editor: visual
+formats:
+ - markdown
+ - headline
+ - ulist
+ - olist
+ - table
+ - quote
+ - notice
+ - image
+ - video
+ - file
+ - toc
+ - hr
+ - definition
+ - code
+ - shortcode
diff --git a/typemill_data/settings/users/docker.yaml b/typemill_data/settings/users/docker.yaml
new file mode 100644
index 0000000..75f177c
--- /dev/null
+++ b/typemill_data/settings/users/docker.yaml
@@ -0,0 +1,5 @@
+username: docker
+email: trendschau@gmail.com
+userrole: administrator
+password: $2y$10$cZWc00dCWlg9VWg0sw8zr.ewih78gx0Hu6/ZiYnfsWYcw3SaTXuxi
+lastlogin: 1705435318
diff --git a/typemill_data/themes/cyanine/404.twig b/typemill_data/themes/cyanine/404.twig
new file mode 100644
index 0000000..eaa2431
--- /dev/null
+++ b/typemill_data/themes/cyanine/404.twig
@@ -0,0 +1,24 @@
+{% extends 'layout.twig' %}
+
+{% block title %}ERROR 404: Page not found{% endblock %}
+
+{% block content %}
+
+
+
+
+
+
Not Found
+
+
+
+
Sorry, but we did not find the page that you are looking for.
+
+ {% for element in pagelist.folderContent|slice(currentposts, pagesize) %}
+
+ {% set post = getPageMeta(settings, element) %}
+ {% set date = element.order[0:4] ~ '-' ~ element.order[4:2] ~ '-' ~ element.order[6:2] %}
+
+
+
+ {% if settings.themes.cyanine.blogimage and post.meta.heroimage != '' %}
+
+
+
+ {% endif %}
+
+
+
\ No newline at end of file
diff --git a/typemill_data/themes/cyanine/home/landingpageIntro.twig b/typemill_data/themes/cyanine/home/landingpageIntro.twig
new file mode 100644
index 0000000..b7bbaec
--- /dev/null
+++ b/typemill_data/themes/cyanine/home/landingpageIntro.twig
@@ -0,0 +1,44 @@
+{% if settings.themes.cyanine.introFullsize %}
+
+
+
+
+
+
+{% else %}
+
+
+
+
+
+
+{% endif %}
+
+
+ {% if logo %}
+
+ {% elseif settings.themes.cyanine.introTitle %}
+
+
+
\ No newline at end of file
diff --git a/typemill_data/themes/cyanine/home/landingpageNews.twig b/typemill_data/themes/cyanine/home/landingpageNews.twig
new file mode 100644
index 0000000..e838b91
--- /dev/null
+++ b/typemill_data/themes/cyanine/home/landingpageNews.twig
@@ -0,0 +1,66 @@
+
+
+
+
+
{{ settings.themes.cyanine.newsHeadline }}
+
+ {% set pagelist = getPageList(navigation, settings.themes.cyanine.newsFolder, base_url) %}
+
+ {% if pagelist.contains == 'pages' %}
+
+
+
+ {% for element in pagelist.folderContent|slice(0, 3) %}
+
+ {% set page = getPageMeta(settings, element) %}
+
+
+
+ {% for element in pagelist.folderContent|slice(0, 3) %}
+
+ {% set post = getPageMeta(settings, element) %}
+ {% set date = element.order[0:4] ~ '-' ~ element.order[4:2] ~ '-' ~ element.order[6:2] %}
+
+
+
+
\ No newline at end of file
diff --git a/typemill_data/themes/cyanine/index.twig b/typemill_data/themes/cyanine/index.twig
new file mode 100644
index 0000000..39c2a29
--- /dev/null
+++ b/typemill_data/themes/cyanine/index.twig
@@ -0,0 +1,21 @@
+{% extends '/layout.twig' %}
+
+{% block title %}{{ metatabs.meta.title }} | {{ settings.title }}{% endblock %}
+
+{% block content %}
+
+ {% if home and settings.themes.cyanine.landingpage %}
+
+ {% include 'home.twig' %}
+
+ {% elseif home and settings.themes.cyanine.blog %}
+
+ {% include 'blog.twig' %}
+
+ {% else %}
+
+ {% include 'page.twig' %}
+
+ {% endif %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/typemill_data/themes/cyanine/js/script.js b/typemill_data/themes/cyanine/js/script.js
new file mode 100644
index 0000000..dec3afb
--- /dev/null
+++ b/typemill_data/themes/cyanine/js/script.js
@@ -0,0 +1,7 @@
+/* Y O U R J A V A S C R I P T
+
+** Add your JavaScript here
+** You can activate and use VUE.js and AXIOS: https://typemill.net/theme-developers/helper-functions#activate-vuejs-and-axios
+** Typemillutilities.js is included in index.twig for managing youtube-videos.
+
+*/
\ No newline at end of file
diff --git a/typemill_data/themes/cyanine/languages/admin/en.yaml b/typemill_data/themes/cyanine/languages/admin/en.yaml
new file mode 100644
index 0000000..616e859
--- /dev/null
+++ b/typemill_data/themes/cyanine/languages/admin/en.yaml
@@ -0,0 +1,78 @@
+# English
+# Please add translations for your theme like this
+ACTIVATE_A_LANDINGPAGE: Activate a landingpage
+ACTIVATE_FOOTER_COLUMNS: Activate footer columns
+ADD_A_PATH_TO_A_FOLDER_FROM_WHICH_YOU_WANT_TO_LIST_ENTRIES: Add a path to a folder from which you want to list entries
+ADD_THE_BASE_URL_TO_THE_CONTENT_REPOSITORY__E_G__GITHUB__: Add the base url to the content repository (e.g. github).
+ALL_FONTS_ARE_SYSTEM_FONTS_WITH_(FALLBACKS)_IF_THE_FONT_IS_NOT_INSTALLED: All fonts are system fonts with (fallbacks) if the font is not installed
+ARTICLE_AUTHOR: Article Author
+ARTICLE_DATE: Article Date
+ARTICLE_EDIT_LINK: Article edit link
+AUTHOR_INTRO_TEXT: Author intro text
+BASIC_FONT_FAMILY: Basic font-family
+BOTTOM: Bottom
+BUTTON_LABEL: Button Label
+BUTTON_LINK: Button Link
+COLORS: Colors
+COUNT_CHAPTERS_IN_NAVIGATION?: Count chapters in navigation?
+CYANINE_IS_A_MODERN_AND_FLEXIBLE_MULTI_PURPOSE_THEME_AND_THE_STANDARD_THEME_FOR_TYPEMILL_: Cyanine is a modern and flexible multi-purpose theme and the standard theme for typemill.
+DATE_FORMAT: Date format
+DATE_INTRO_TEXT: Date intro text
+FONT_FAMILIES: Font Families
+FONT_FAMILY_FOR_HEADLINES: Font-family for headlines
+FONT_FAMILY_FOR_NAVIGATIONS: Font-family for navigations
+FOOTER_COLUMN_1_(USE_MARKDOWN): footer column 1 (use markdown)
+FOOTER_COLUMN_2_(USE_MARKDOWN): footer column 2 (use markdown)
+FOOTER_COLUMN_3_(USE_MARKDOWN): footer column 3 (use markdown)
+FOOTER_COLUMNS: Footer columns
+HEADLINE_FOR_NEWS_SEGMENT: Headline for news-segment
+HOW_MANY_NAVIGATION_LEVELS?: How many navigation levels?
+LABEL_FOR_READ_MORE_LINK: Label for read more link
+LABEL_FOR_STARTBUTTON: Label for startbutton
+LANDINGPAGE_CONTRAST_SEGMENT: Landingpage Contrast Segment
+LANDINGPAGE_INFO_SEGMENT: Landingpage Info Segment
+LANDINGPAGE_INTRO_SEGMENT: Landingpage Intro Segment
+LANDINGPAGE_NAVIGATION_SEGMENT: Landingpage Navigation Segment
+LANDINGPAGE_NEWS_SEGMENT: Landingpage News Segment
+LANDINGPAGE_TEASER_SEGMENT: Landingpage Teaser Segment
+LINK_FOR_STARTBUTTON: Link for startbutton
+LINK_TO_REPOSITORY: Link to repository
+LIST_ENTRIES_FROM_FOLDER: List entries from folder
+NAVIGATIONS_AND_CHAPTERS: Navigations and Chapters
+POSITION_OF_ARTICLE_AUTHOR_LINE_(TOP/BOTTOM): Position of article author-line (top/bottom)
+POSITION_OF_ARTICLE_DATE_(TOP/BOTTOM): Position of article date (top/bottom)
+POSITION_OF_CONTRAST_SEGMENT: Position of Contrast Segment
+POSITION_OF_INFO_SEGMENT: Position of Info Segment
+POSITION_OF_INTRO_SEGMENT: Position of Intro Segment
+POSITION_OF_NAVI_SEGMENT: Position of Navi Segment
+POSITION_OF_NEWS_SEGMENT: Position of News Segment
+POSITION_OF_TEASER_SEGMENT: Position of Teaser Segment
+POSITION_OF_THE_EDIT_LINK_(TOP/BOTTOM): Position of the edit link (top/bottom)
+PRIMARY_BRAND_COLOR: Primary brand color
+PRIMARY_FONT_COLOR: Primary font color
+SECONDARY_BRAND_COLOR: Secondary brand color
+SECONDARY_FONT_COLOR: Secondary font color
+SHOW_CHAPTER_NUMBERS: Show Chapter Numbers
+TEASER_1_LABEL: Teaser 1 Label
+TEASER_1_LINK: Teaser 1 Link
+TEASER_1_TEXT: Teaser 1 Text
+TEASER_1_TITLE: Teaser 1 Title
+TEASER_2_LABEL: Teaser 1 Label
+TEASER_2_LINK: Teaser 2 Link
+TEASER_2_TEXT: Teaser 2 Text
+TEASER_2_TITLE: Teaser 2 Title
+TEXT/LABEL_FOR_EDIT_LINK: Text/label for edit link
+TEXT_LINKS: text-links
+TEXT: Text
+THIN_BORDER_COLOR: Thin border color
+TITLE_FOR_NAVIGATION: Title for navigation
+TITLE: Title
+TOP: Top
+USE_0_TO_DISABLE_THE_SECTION: Use 0 to disable the section
+USED_AS_CONTRARY_COLOR_FOR_HOVERS_IN_NAVIGATION_AND_BUTTONS: Used as contrary color for hovers in navigation and buttons
+USED_FOR_CONTENT_BACKGROUND__FONT_COLORS_ON_HOVER_AND_MORE: Used for content background, font-colors on hover and more
+USED_FOR_LINKS__CHECK_CONTRAST_FOR_A11Y_: Used for links, check contrast for a11y.
+USED_FOR_TEXT: Used for text
+USED_FOR_THE_BODY_BACKGROUND_AND_BORDERS: Used for the body background and borders
+USED_FOR_THIN_BORDERS_IN_NAVIGATIONS_AND_TABLES: Used for thin borders in navigations and tables
+USE_MARKDOWN: Use Markdown
\ No newline at end of file
diff --git a/typemill_data/themes/cyanine/languages/admin/fr.yaml b/typemill_data/themes/cyanine/languages/admin/fr.yaml
new file mode 100644
index 0000000..213e0e9
--- /dev/null
+++ b/typemill_data/themes/cyanine/languages/admin/fr.yaml
@@ -0,0 +1,84 @@
+# Français
+# Ajoutez les traductions dans votre thème comme ici
+ACTIVATE_A_LANDINGPAGE: Activer une landing page
+ACTIVATE_FOOTER_COLUMNS: Activer les colonnes du pied de page
+ADD_A_PATH_TO_A_FOLDER_FROM_WHICH_YOU_WANT_TO_LIST_ENTRIES: Ajouter un chemin d'accès à un dossier à partir duquel vous souhaitez lister les entrées
+ADD_THE_BASE_URL_TO_THE_CONTENT_REPOSITORY__E_G__GITHUB__: Ajouter l'url de base vers un dépôt de contenu (par exemple Github).
+ALL_FONTS_ARE_SYSTEM_FONTS_WITH_(FALLBACKS)_IF_THE_FONT_IS_NOT_INSTALLED: Toutes les polices sont des polices système (avec solution de recours si la police n'est pas installée)
+ARTICLE_AUTHOR: Auteur de l'article
+ARTICLE_DATE: Date de création
+ARTICLE_EDIT_LINK: Lien d'édition de l'article
+AUTHOR_INTRO_TEXT: Texte d'introduction de l'auteur
+BASIC_FONT_FAMILY: Police de base
+BOTTOM: Bas
+BUTTON_LABEL: Étiquette de bouton
+BUTTON_LINK: Bouton lien
+COLLAPSE_NAVIGATION: Réduire les menus
+COLLAPSE_AND_EXPAND_NAVIGATION?: Replier et développer les menus ?
+COLORS: Couleurs
+COLUMN_1: Colonne 1
+COLUMN_2: Colonne 2
+COLUMN_3: Colonne 3
+COUNT_CHAPTERS_IN_NAVIGATION?: Numéroter les chapitres dans le menu de navigation ?
+CYANINE_IS_A_MODERN_AND_FLEXIBLE_MULTI_PURPOSE_THEME_AND_THE_STANDARD_THEME_FOR_TYPEMILL_: Cyanine est un thème multi-usages moderne et adaptable. C'est le thème standard de Typemill.
+DATE_FORMAT: Format de la date de création/modifcation
+DATE_INTRO_TEXT: Étiquette de la date
+FONT_FAMILIES: Polices
+FONT_FAMILY_FOR_HEADLINES: Police pour les titres
+FONT_FAMILY_FOR_NAVIGATIONS: Police pour les menus
+FOOTER_COLUMN_1_(USE_MARKDOWN): Pied de page colonne 1 (utilisez le markdown)
+FOOTER_COLUMN_2_(USE_MARKDOWN): Pied de page colonne 2 (utilisez le markdown)
+FOOTER_COLUMN_3_(USE_MARKDOWN): Pied de page colonne 3 (utilisez le markdown)
+FOOTER_COLUMNS: Colonnes de pied de page
+HEADLINE_FOR_NEWS_SEGMENT: Titres pour les segments Actualités
+HOW_MANY_NAVIGATION_LEVELS?: Combien de niveaux de menu ?
+LABEL_FOR_READ_MORE_LINK: Étiquette pour les liens Plus
+LABEL_FOR_STARTBUTTON: Étiquette pour le bouton de démarrage
+LANDINGPAGE_CONTRAST_SEGMENT: Segment Contraste de la landing page
+LANDINGPAGE_INFO_SEGMENT: Segment Info de la landing page
+LANDINGPAGE_INTRO_SEGMENT: Segment Intro de la landing page
+LANDINGPAGE_NAVIGATION_SEGMENT: Segment Menu de la landing page
+LANDINGPAGE_NEWS_SEGMENT: Segment Actualités de la landing page
+LANDINGPAGE_TEASER_SEGMENT: Segment Teaser de la landing page
+LINK_FOR_STARTBUTTON: Lien pour le bouton de démarrage
+LINK_TO_REPOSITORY: Lien vers le dépôt Git
+LIST_ENTRIES_FROM_FOLDER: Lister les entrées à partir du dossier
+NAVIGATIONS_AND_CHAPTERS: Menus et chapitres
+POSITION_OF_ARTICLE_AUTHOR_LINE_(TOP/BOTTOM): Position de la ligne Auteur (haut/bas)
+POSITION_OF_ARTICLE_DATE_(TOP/BOTTOM): Position de la date de création/modification de l'article (haut/bas)
+POSITION_OF_CONTRAST_SEGMENT: Position du segment Contraste
+POSITION_OF_INFO_SEGMENT: Position du segment Info
+POSITION_OF_INTRO_SEGMENT: Position du segment Intro
+POSITION_OF_NAVI_SEGMENT: Position du segment Menu
+POSITION_OF_NEWS_SEGMENT: Position du segment Actualités
+POSITION_OF_TEASER_SEGMENT: Position du segment Teaser
+POSITION_OF_THE_EDIT_LINK_(TOP/BOTTOM): Position du lien d'édition (haut/bas)
+PRIMARY_BRAND_COLOR: Couleur principale
+PRIMARY_FONT_COLOR: Couleur principale de police
+SECONDARY_BRAND_COLOR: Couleur secondaire
+SECONDARY_FONT_COLOR: Couleu secondaire de police
+SHOW_CHAPTER_NUMBERS: Afficher les numéros de chapitre
+SHOW_CHAPTER_NUMBERS_IN_NAVIGATION?: Afficher les numéros de chapitre dans les menus ?
+TEASER_1_LABEL: Teaser 1 Label
+TEASER_1_LINK: Teaser 1 Lien
+TEASER_1_TEXT: Teaser 1 Texte
+TEASER_1_TITLE: Teaser 1 Titre
+TEASER_2_LABEL: Teaser 1 Label
+TEASER_2_LINK: Teaser 2 Lien
+TEASER_2_TEXT: Teaser 2 Texte
+TEASER_2_TITLE: Teaser 2 Titre
+TEXT/LABEL_FOR_EDIT_LINK: Texte/label pour le lien d'édition
+TEXT_LINKS: Liens textes
+TEXT: Texte
+THIN_BORDER_COLOR: Couleur des bordures fines
+TITLE_FOR_NAVIGATION: Titre pour le menu
+TITLE: Titre
+TOP: Haut
+USE_0_TO_DISABLE_THE_SECTION: Utilisez 0 pour désactiver la section
+USED_AS_CONTRARY_COLOR_FOR_HOVERS_IN_NAVIGATION_AND_BUTTONS: Utilisée comme couleur inverse au passage de la souris sur les menus et les boutons
+USED_FOR_CONTENT_BACKGROUND__FONT_COLORS_ON_HOVER_AND_MORE: Utilisée comme couleur d'arrière-plan, couleur de police au passage de la souris et autres
+USED_FOR_LINKS__CHECK_CONTRAST_FOR_A11Y_: Utilisée pour les liens, vérifiez le contraste pour a11y.
+USED_FOR_TEXT: Utilisée pour le texte
+USED_FOR_THE_BODY_BACKGROUND_AND_BORDERS: Utilisée pour l'arrière plan du body et pour les bordures
+USED_FOR_THIN_BORDERS_IN_NAVIGATIONS_AND_TABLES: Utilisée pour les bordures fines dans les menus et les tableaux
+USE_MARKDOWN: Utilisez le markdown
diff --git a/typemill_data/themes/cyanine/languages/admin/it.yaml b/typemill_data/themes/cyanine/languages/admin/it.yaml
new file mode 100644
index 0000000..cb6211b
--- /dev/null
+++ b/typemill_data/themes/cyanine/languages/admin/it.yaml
@@ -0,0 +1,78 @@
+# Italiano
+# Aggiungi traduzioni per il tuo tema in questo modo
+ACTIVATE_A_LANDINGPAGE: Attiva una pagina di destinazione
+ACTIVATE_FOOTER_COLUMNS: Attiva colonne piè di pagina
+ADD_A_PATH_TO_A_FOLDER_FROM_WHICH_YOU_WANT_TO_LIST_ENTRIES: Aggiungi un percorso a una cartella da cui desideri elencare le voci
+ADD_THE_BASE_URL_TO_THE_CONTENT_REPOSITORY__E_G__GITHUB__: Aggiungi l'URL di base al deposito dei contenuti (a esempio github).
+ALL_FONTS_ARE_SYSTEM_FONTS_WITH_(FALLBACKS)_IF_THE_FONT_IS_NOT_INSTALLED: Tutti i caratteri sono caratteri di sistema con (fallback) se il carattere non è installato
+ARTICLE_AUTHOR: Autore articolo
+ARTICLE_DATE: Data articolo
+ARTICLE_EDIT_LINK: Collegamento per la modifica dell'articolo
+AUTHOR_INTRO_TEXT: Testo introduttivo dell'autore
+BASIC_FONT_FAMILY: Famiglia di caratteri di base
+BOTTOM: Basso
+BUTTON_LABEL: Etichetta pulsante
+BUTTON_LINK: Collegamento pulsante
+COLORS: Colori
+COUNT_CHAPTERS_IN_NAVIGATION?: Contare i capitoli nella navigazione?
+CYANINE_IS_A_MODERN_AND_FLEXIBLE_MULTI_PURPOSE_THEME_AND_THE_STANDARD_THEME_FOR_TYPEMILL_: Cyanine è un tema multiuso moderno e flessibile e il tema standard per typemill.
+DATE_FORMAT: Formato della data
+DATE_INTRO_TEXT: Testo introduttivo della data
+FONT_FAMILIES: Famiglie di caratteri
+FONT_FAMILY_FOR_HEADLINES: Famiglia di caratteri per i titoli
+FONT_FAMILY_FOR_NAVIGATIONS: Famiglia di caratteri per la navigazione
+FOOTER_COLUMN_1_(USE_MARKDOWN): piè di pagina 1 (usa il markdown)
+FOOTER_COLUMN_2_(USE_MARKDOWN): piè di pagina 2 (usa il markdown)
+FOOTER_COLUMN_3_(USE_MARKDOWN): piè di pagina 3 (usa il markdown)
+FOOTER_COLUMNS: Colonne piè di pagina
+HEADLINE_FOR_NEWS_SEGMENT: Titolo per il segmento notizie
+HOW_MANY_NAVIGATION_LEVELS?: Quanti livelli di navigazione?
+LABEL_FOR_READ_MORE_LINK: Etichetta per il collegamento per ulteriori informazioni
+LABEL_FOR_STARTBUTTON: Etichetta per il pulsante di avvio
+LANDINGPAGE_CONTRAST_SEGMENT: Segmento contrasto della pagina di destinazione
+LANDINGPAGE_INFO_SEGMENT: Segmento informazioni della pagina di destinazione
+LANDINGPAGE_INTRO_SEGMENT: Segmento introduttivo della pagina di destinazione
+LANDINGPAGE_NAVIGATION_SEGMENT: Segmento navigazione della pagina di destinazione
+LANDINGPAGE_NEWS_SEGMENT: Segmento notizie della pagina di destinazione
+LANDINGPAGE_TEASER_SEGMENT: Segmento teaser della pagina di destinazione
+LINK_FOR_STARTBUTTON: Collegamento per il pulsante di avvio
+LINK_TO_REPOSITORY: Collegamento al deposito
+LIST_ENTRIES_FROM_FOLDER: Elenca le voci dalla cartella
+NAVIGATIONS_AND_CHAPTERS: Navigazione e capitoli
+POSITION_OF_ARTICLE_AUTHOR_LINE_(TOP/BOTTOM): Posizione della riga dell'autore dell'articolo (in alto/in basso)
+POSITION_OF_ARTICLE_DATE_(TOP/BOTTOM): Posizione della data dell'articolo (in alto/in basso)
+POSITION_OF_CONTRAST_SEGMENT: Posizione del segmento contrasto
+POSITION_OF_INFO_SEGMENT: Posizione del segmento informazioni
+POSITION_OF_INTRO_SEGMENT: Posizione del segmento introduttivo
+POSITION_OF_NAVI_SEGMENT: Posizione del segmento navigazione
+POSITION_OF_NEWS_SEGMENT: Posizione del segmento notizie
+POSITION_OF_TEASER_SEGMENT: Posizione del segmento teaser
+POSITION_OF_THE_EDIT_LINK_(TOP/BOTTOM): Posizione del collegamento di modifica (in alto/in basso)
+PRIMARY_BRAND_COLOR: Colore principale
+PRIMARY_FONT_COLOR: Colore carattere primario
+SECONDARY_BRAND_COLOR: Colore secondario
+SECONDARY_FONT_COLOR: Colore carattere secondario
+SHOW_CHAPTER_NUMBERS: Mostra i numeri dei capitoli
+TEASER_1_LABEL: Etichetta teaser 1
+TEASER_1_LINK: Collegamento teaser 1
+TEASER_1_TEXT: Testo teaser 1
+TEASER_1_TITLE: Titolo teaser 1
+TEASER_2_LABEL: Etichetta teaser 2
+TEASER_2_LINK: Collegamento teaser 2
+TEASER_2_TEXT: Testo teaser 2
+TEASER_2_TITLE: Titolo teaser 2
+TEXT/LABEL_FOR_EDIT_LINK: Testo/etichetta per collegamento di modifica
+TEXT_LINKS: collegamenti testuali
+TEXT: Testo
+THIN_BORDER_COLOR: Colore del bordo sottile
+TITLE_FOR_NAVIGATION: Titolo per la navigazione
+TITLE: Titolo
+TOP: Alto
+USE_0_TO_DISABLE_THE_SECTION: Usa 0 per disabilitare la sezione
+USED_AS_CONTRARY_COLOR_FOR_HOVERS_IN_NAVIGATION_AND_BUTTONS: Usato come colore contrario per il passaggio del mouse nella navigazione e nei pulsanti
+USED_FOR_CONTENT_BACKGROUND__FONT_COLORS_ON_HOVER_AND_MORE: Usato per lo sfondo del contenuto, i colori dei caratteri al passaggio del mouse e per altro
+USED_FOR_LINKS__CHECK_CONTRAST_FOR_A11Y_: Usato per i collegamenti, controlla il contrasto per a11y.
+USED_FOR_TEXT: Usato per il testo
+USED_FOR_THE_BODY_BACKGROUND_AND_BORDERS: Usato per lo sfondo e i bordi
+USED_FOR_THIN_BORDERS_IN_NAVIGATIONS_AND_TABLES: Usato per bordi sottili nelle navigazioni e nelle tabelle
+USE_MARKDOWN: Usa Markdown
\ No newline at end of file
diff --git a/typemill_data/themes/cyanine/languages/user/en.yaml b/typemill_data/themes/cyanine/languages/user/en.yaml
new file mode 100644
index 0000000..0709419
--- /dev/null
+++ b/typemill_data/themes/cyanine/languages/user/en.yaml
@@ -0,0 +1,7 @@
+# English
+# Please add translations for your theme like this
+ALL_RIGHTS_RESERVED: All Rights Reserved
+BUILT_WITH: Built with
+BY: by
+NEXT: next
+PREVIOUS: previous
\ No newline at end of file
diff --git a/typemill_data/themes/cyanine/languages/user/it.yaml b/typemill_data/themes/cyanine/languages/user/it.yaml
new file mode 100644
index 0000000..491c415
--- /dev/null
+++ b/typemill_data/themes/cyanine/languages/user/it.yaml
@@ -0,0 +1,7 @@
+# Italiano
+# Aggiungi traduzioni per il tuo tema in questo modo
+ALL_RIGHTS_RESERVED: Tutti i diritti riservati
+BUILT_WITH: Costruito con
+BY: di
+NEXT: successivo
+PREVIOUS: precedente
\ No newline at end of file
diff --git a/typemill_data/themes/cyanine/layout.twig b/typemill_data/themes/cyanine/layout.twig
new file mode 100644
index 0000000..c1dd227
--- /dev/null
+++ b/typemill_data/themes/cyanine/layout.twig
@@ -0,0 +1,254 @@
+
+
+
+
+ {% block title %}{% endblock %}
+
+
+
+
+
+
+
+ {{ assets.renderMeta() }}
+
+ {% block stylesheets %}
+
+
+
+
+
+
+ {{ assets.renderCSS() }}
+
+ {% endblock %}
+
+
+
+
+
+ {% if is_loggedin() %}
+
+ {% endif %}
+
+ {% block content %}{% endblock %}
+
+ {% include 'partials/footer.twig' %}
+
+ {% block javascripts %}
+
+
+
+
+ {% if settings.themes.cyanine.collapseNav %}
+
+ {% endif %}
+
+ {{ assets.renderJS() }}
+
+ {% endblock %}
+
+
+
\ No newline at end of file
diff --git a/typemill_data/themes/cyanine/page.twig b/typemill_data/themes/cyanine/page.twig
new file mode 100644
index 0000000..935fe65
--- /dev/null
+++ b/typemill_data/themes/cyanine/page.twig
@@ -0,0 +1,148 @@
+{% set published = metatabs.meta.manualdate ? metatabs.meta.manualdate : metatabs.meta.modified %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ title }}
+
+ {% if (settings.themes.cyanine.datePosition.top or settings.themes.cyanine.authorPosition.top or settings.themes.cyanine.gitPosition.top or settings.themes.cyanine.printPosition.top) %}
+
+
+
\ No newline at end of file
diff --git a/typemill_data/themes/cyanine/partials/breadcrumb.twig b/typemill_data/themes/cyanine/partials/breadcrumb.twig
new file mode 100644
index 0000000..43f7a3f
--- /dev/null
+++ b/typemill_data/themes/cyanine/partials/breadcrumb.twig
@@ -0,0 +1,23 @@
+
\ No newline at end of file
diff --git a/typemill_data/themes/cyanine/partials/footer.twig b/typemill_data/themes/cyanine/partials/footer.twig
new file mode 100644
index 0000000..2acdd50
--- /dev/null
+++ b/typemill_data/themes/cyanine/partials/footer.twig
@@ -0,0 +1,31 @@
+{% if settings.themes.cyanine.footercolumns is not empty %}
+
+
+
+{% endif %}
+
+
+ {% if settings.themes.cyanine.copyrightline %}
+ {{ markdown(settings.themes.cyanine.copyrightlinetext) }}
+ {% else %}
+ {% set nowYear = "now"|date("Y") %}
+ {% if settings.year is empty or settings.year == nowYear %}
+ {% set copyrightYears = nowYear %}
+ {% else %}
+ {% set copyrightYears = settings.year ~ ' - ' ~ nowYear %}
+ {% endif %}
+
\ No newline at end of file
diff --git a/typemill_data/themes/cyanine/partials/navigation.twig b/typemill_data/themes/cyanine/partials/navigation.twig
new file mode 100644
index 0000000..f223c1b
--- /dev/null
+++ b/typemill_data/themes/cyanine/partials/navigation.twig
@@ -0,0 +1,39 @@
+{% macro loop_over(navigation,chapnum) %}
+
+ {% import _self as macros %}
+
+ {% for element in navigation %}
+
+ {% set depth = element.keyPathArray|length %}
+
+ {% if element.activeParent %}
+
\ No newline at end of file
diff --git a/typemill_data/themes/cyanine/partials/posts.twig b/typemill_data/themes/cyanine/partials/posts.twig
new file mode 100644
index 0000000..2cfc800
--- /dev/null
+++ b/typemill_data/themes/cyanine/partials/posts.twig
@@ -0,0 +1,51 @@
+{% set pagesize = 10 %}
+{% set pages = ( item.folderContent|length / pagesize)|round(0, 'ceil') %}
+{% set currentpage = currentpage ? currentpage : 1 %}
+{% set currentposts = (currentpage - 1) * pagesize %}
+
+
+
+ {% for element in item.folderContent|slice(currentposts, pagesize) %}
+
+ {% set post = getPageMeta(settings, element) %}
+ {% set date = element.order[0:4] ~ '-' ~ element.order[4:2] ~ '-' ~ element.order[6:2] %}
+
+ {% if settings.themes.cyanine.blogimage and post.meta.heroimage != '' %}
+