1
0
mirror of https://github.com/typemill/typemill.git synced 2025-07-16 12:06:21 +02:00

Version 2.1.1 Remove standard ports from uri and add docker image

This commit is contained in:
trendschau
2024-01-16 21:46:07 +01:00
parent 256366b6e7
commit ca79fc7129
63 changed files with 3398 additions and 3 deletions

21
.dockerignore Normal file
View File

@ -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

41
Dockerfile Normal file
View File

@ -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"]

5
docker-utils/init-server Normal file
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:
![youtube-video](media/live/youtube-7yvlwxjl9dc.jpeg "click to load 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.

View File

@ -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

View File

@ -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.
![youtube-video](media/live/youtube-6i2-uv88gke.jpeg "click to load video"){#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.

View File

@ -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

View File

@ -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:
![youtube-video](media/live/youtube-uw-m-4g1kaa.jpeg "click to load video"){#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.

View File

@ -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

View File

@ -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).
![alt](media/live/youtube-6i2-uv88gke.jpeg){.center loading="lazy"}

View File

@ -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

View File

@ -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 !
![alt-text](media/markdown.png)
*With caption*
![alt-text](media/markdown.png "my title"){#myid .imgClass}
*With caption that spans over several lines*
![alt-text](media/markdown.png "my title"){#myid .otherclass width=150px}
````
The same rules as with links, but with a !
![](media/tmp/kai-dahms-v0nbnxlwjzk-3unsp-1.webp)
![alt](media/live/kai-dahms-v0nbnxlwjzk-3unsp-1-3.webp "title"){.center loading="lazy" width="820" height="464"}
*With a caption that spans over two lines.*
![alt-text](media/files/markdown.png "my title"){#myid .otherclass width=150px}
## Linked Images
````
You can link an image with a nested syntax like this:
[![alt-text](media/markdown.png)](https://typemill.net)
````
You can link an image with a nested syntax like this:
[![alt-text](media/files/markdown.png){.imgClass}](https://typemill.net)
## Image Position
````
You can controll the image position with the classes .left, .right and .middle like this:
![alt-text](media/markdown.png){.left}
*With caption that spans over several lines*
![alt-text](media/markdown.png){.right}
*With caption that spans over several lines*
![alt-text](media/markdown.png){.center}
*With caption that spans over several lines*
````
![](media/tmp/kai-dahms-v0nbnxlwjzk-3unsp-1.webp)
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`.
![image float right](media/files/markdown.png){.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`.
![image center](media/files/markdown.png){.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 `<?php inlineCode(); ?>` like this
````
Let us create some `<?php inlineCode(); ?>` and now let us check, if a codeblock works:
````
Use four apostroph like this:
\````
<?php
$welcome = 'Hello World!';
echo $welcome;
?>
\````
````
## 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.

View File

@ -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

View File

@ -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

View File

@ -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: { }

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.
![youtube-video](media/live/youtube-6i2-uv88gke.jpeg "click to load video"){#6i2-uv88gke .youtube}

View File

@ -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

File diff suppressed because one or more lines are too long

View File

@ -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'

File diff suppressed because one or more lines are too long

View File

@ -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

View File

@ -0,0 +1,5 @@
username: docker
email: trendschau@gmail.com
userrole: administrator
password: $2y$10$cZWc00dCWlg9VWg0sw8zr.ewih78gx0Hu6/ZiYnfsWYcw3SaTXuxi
lastlogin: 1705435318

View File

@ -0,0 +1,24 @@
{% extends 'layout.twig' %}
{% block title %}ERROR 404: Page not found{% endblock %}
{% block content %}
<section class="w-100 dib tc bt bl br bb">
<div class="mw7 pb7 ph3 center">
<header class="mt6">
<h1 class="f-large f-headline-ns lh-title mv2 pt5-ns">Not Found</h1>
</header>
<div class="f5 f4-ns fw3 lh-copy">
<p>Sorry, but we did not find the page that you are looking for.</p>
</div>
<a class="button link dim ph4 pv3 mt3 dib" href="{{ base_url }}">Home</a>
</div>
</section>
{% endblock %}

View File

@ -0,0 +1,112 @@
<main class="{{ item.elementType }} w-100 pb5 bl br bb">
<div class="w-100 center grid-container">
<aside class="grid-header ph3 pv3">
<header>
<div class="logo">
<p class="pa0 ma0">
<a class="link f1 fw9" href="{{ base_url }}" title="My Title">
{% if logo %}
<img src="{{ base_url }}/{{ logo }}" class="logo-image"/>
{% else %}
{{ settings.title }}
{% endif %}
</a>
</p>
</div>
</header>
{% if widgets %}
{% for index,widget in widgets %}
<div id="{{ index }}" class="mt4-l mt3">
{{ widget }}
</div>
{% endfor %}
{% endif %}
</aside>
<div class="grid-main ph3 ph4-l pv3 lh-copy f4 fw3">
{% if settings.themes.cyanine.blogintro %}
<article>
<header>
<h1>{{ title }}</h1>
</header>
{{ content }}
</article>
{% endif %}
{% set pagelist = getPageList(navigation, settings.themes.cyanine.blogfolder, base_url) %}
{% set pagesize = 10 %}
{% set pages = ( pagelist.folderContent|length / pagesize)|round(0, 'ceil') %}
{% set currentpage = currentpage ? currentpage : 1 %}
{% set currentposts = (currentpage - 1) * pagesize %}
{% if pagelist.contains == "posts" %}
<ul class="post list pa0">
{% 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] %}
<li class="post-entry">
<header>
{% if settings.themes.cyanine.blogimage and post.meta.heroimage != '' %}
<figure>
<img src="{{ assets.image(post.meta.heroimage).resize(820,500).src() }}"{% if post.meta.heroimage != '' %} alt="{{ post.meta.heroimage }}"{% endif %} />
</figure>
{% endif %}
<a class="link f-link underline-hover" href="{{ element.urlAbs }}"><h2 class="mt4 mb2">{{ post.meta.title }}</h2></a>
<div class="mt3"><small><time datetime="{{date}}">{{ date | date("d.m.Y") }}</time> | {{ post.meta.author }}</small></div>
</header>
<p>{{ post.meta.description }}</p>
</li>
{% endfor %}
{% if pages > 1 %}
<hr class="mv4">
<p>Page:
{% for i in 1 .. pages %}
{% if i == currentpage %}
{{i}}
{% else %}
<a class="page" href="{{ item.urlAbs }}/p/{{i}}">{{i}}</a>
{% endif %}
{% endfor %}
</p>
{% endif %}
</ul>
{% else %}
<p>The folder contains pages. To use the blog-feature on the startpage, please change the folder content to posts.</p>
{% endif %}
</div>
<aside class="grid-sidebar ph3 pv3">
<nav id="contentnav" class="contentnav{{ settings.themes.cyanine.collapseNav ? ' collapse' : '' }}" aria-label="Menu">
<!-- burger menu controlled by invisible checkbox -->
<input type="checkbox" id="burger" class="dn">
<label for="burger" class="burgerbutton">&#9776;</label>
{% include 'partials/navigation.twig' %}
</nav>
</aside>
</div>
</main>

View File

@ -0,0 +1,629 @@
/* Y O U R C S S S T Y L E S
**
** Style all markdown content elements properly
** Use the markdown test file to check it: https://github.com/typemill/typemill/blob/master/content/00-Welcome/03-Markdown-Test.md
** You can activate and use the Tachyons CSS library: https://typemill.net/theme-developers/helper-functions#activate-tachyons
**
*/
/************************************
* STANDARD-ELEMENTS *
************************************/
html{}
body{}
header{}
footer{}
nav{}
main{}
aside{}
article{}
article a, article a:link, article a:visited{ text-decoration: underline; }
/* article a:before{ content: '\203A'; margin-right: 5px; } */
abbr{}
blockquote{
margin: 1.5em 1.5em;
padding: 0.5em 0;
quotes: "\201C""\201D""\2018""\2019";
font-style: italic;
}
blockquote:before{
color: #ccc;
content: open-quote;
font-size: 4em;
line-height: 0.1em;
margin-right: 0.25em;
vertical-align: -0.4em;
}
blockquote p {
display: inline;
}
article pre, article code{
font-family: monospace;
}
article pre{
white-space: pre;
padding: 0em;
display: block;
max-width: 100%;
overflow-x: auto;
}
article code{
font-size: 0.8em;
line-height: 1.4em;
padding: 0 0.5em;
word-break: break-word;
}
pre > code{
font-size: 0.8em;
padding: 1em;
display: inline-block;
}
pre > code.language-pagebreak{
display: none;
}
dl{}
dt{}
dd{}
img{}
article h1, article h2, article h3, article h4, article h5, article h6{
line-height: 1.15em;
font-weight: 700;
line-height: 1em;
}
h1,h2,h3,h4,h5,h6{ word-wrap: break-word; hyphens: auto; }
article h1{ font-size: 2.2em; margin: 1.4em 0 0.6em; z-index:1; }
article h2{ font-size: 1.6em; margin: 1.8em 0 0.6em; }
article h3{ font-size: 1.3em; margin: 1.6em 0 0.6em; }
article h4{ font-size: 1.1em; margin: 1.4em 0 0.6em; }
article h5{ font-size: 1em; margin: 1.2em 0 0.6em; }
article h6{ font-size: 1em; font-style: italic; font-weight:300; margin: 1em 0 0.6em; }
article .h1, article .h2, article .h3, article .h4, article .h5, article .h6{
height: auto; /* fix for tachyons */
}
hr{
border: none;
border-top: 1px solid;
}
ol{}
footer ul{ padding-left:1em; }
li{}
sup{}
/* Make table look good */
.tm-table{
overflow-x: auto;
}
table{
width: 100%;
border-collapse: collapse;
font-size: .8em;
}
thead{
text-align: left;
}
tr{
border-top: 1px solid;
border-bottom: 1px solid;
margin-bottom: -1px;
}
th,td{
padding: .5em 1em;
}
main b, main strong{
font-weight: 600;
}
/************************************
* STANDARD SUGGESTIONS *
************************************/
/* Make links and buttons smooth */
.link, .link:active, .link:focus, .link:hover, .link:link, .link:visited{
transition: none;
}
a, a:link, a:visited, a:focus, a:hover, a:active, button{
transition: all .15s ease!important;
transition-property: color, background-color, text-shadow, border;
}
article a:hover, article a:focus, article a:active,
footer a:hover, footer a:focus, footer a:active{
text-decoration: none;
}
/* For definition list */
dt::after{
content: ":";
}
/* Make images and image captions look good */
img, figure,figure img{
max-width: 100%;
height: auto;
aspect-ratio: attr(width) / attr(height);
}
figure{
display: table;
margin: 2em auto;
padding: 0;
}
figure.right, figure.left {
width: auto;
float: none;
margin: auto auto;
}
figure img{
display: block;
margin: auto;
}
figcaption{
display: table-caption;
caption-side: bottom;
font-size: 0.8em;
margin-top: .5em;
line-height: 1.2em;
}
.footnotes ol{
font-size: .8em;
line-height: 1em;
margin: 0 0 0 0;
}
/************************************
* TYPEMILL-ELEMENTS *
************************************/
ul.TOC,.TOC ul{
list-style: none;
}
.TOC{
padding: 1em;
border: 1px solid;
}
.TOC{
border-color: lightgray;
}
.TOC li{
position: relative;
}
.TOC li a{
text-decoration: none;
display: inline-block;
width: 100%;
border-bottom: 1px dashed;
line-height: 1em;
margin: .3em 0;
}
.TOC li a:hover,.TOC li a:focus,.TOC li a:active{
border-bottom: 1px solid;
}
.TOC li a:after{
content: '\203A';
position: absolute;
right: 5px;
transition: all .2s;
}
.TOC li a:hover:after{
right: 0px;
}
.notice1 {
margin: 1em 0;
padding: 10px 1em;
}
.notice2 {
margin: 1em 0;
padding: 10px 1em;
}
.notice3{
margin: 1em 0;
padding: 10px 1em;
background-color: #d4e0ff;
border-left: 4px solid #3c7bf6;
}
/* used for pro content box */
.notice4{
position: relative;
text-align: center;
padding: 1em;
border: 1px solid;
}
/* Style the optional anchor-links for headlines */
a.tm-heading-anchor {
display: inline-block;
margin-left: -0.8em;
width: 0.8em;
font-weight: 300;
opacity: 0;
text-decoration: none;
float: right;
}
a.tm-heading-anchor:hover,a.tm-heading-anchor:focus {
opacity: 1;
text-decoration: none;
}
h2:focus > .tm-heading-anchor,
h2:hover > .tm-heading-anchor,
h3:focus > .tm-heading-anchor,
h3:hover > .tm-heading-anchor,
h4:focus > .tm-heading-anchor,
h4:hover > .tm-heading-anchor,
h5:focus > .tm-heading-anchor,
h5:hover > .tm-heading-anchor,
h6:focus > .tm-heading-anchor,
h6:hover > .tm-heading-anchor{
opacity: .5;
text-decoration: none;
}
/* style the typemill download-button for files */
a.tm-download{}
a.tm-download::before{
content: "\2193";
-webkit-mask: url("data:image/svg+xml; utf8, <svg width='24' fill='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M23 12c0-3.037-1.232-5.789-3.222-7.778s-4.741-3.222-7.778-3.222-5.789 1.232-7.778 3.222-3.222 4.741-3.222 7.778 1.232 5.789 3.222 7.778 4.741 3.222 7.778 3.222 5.789-1.232 7.778-3.222 3.222-4.741 3.222-7.778zM21 12c0 2.486-1.006 4.734-2.636 6.364s-3.878 2.636-6.364 2.636-4.734-1.006-6.364-2.636-2.636-3.878-2.636-6.364 1.006-4.734 2.636-6.364 3.878-2.636 6.364-2.636 4.734 1.006 6.364 2.636 2.636 3.878 2.636 6.364zM11 8v5.586l-2.293-2.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414l4 4c0.092 0.092 0.202 0.166 0.324 0.217 0.245 0.101 0.521 0.101 0.766 0 0.118-0.049 0.228-0.121 0.324-0.217l4-4c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-2.293 2.293v-5.586c0-0.552-0.448-1-1-1s-1 0.448-1 1z'></path></svg>") no-repeat 50% 50%;
mask: url("data:image/svg+xml; utf8, <svg width='24' fill='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M23 12c0-3.037-1.232-5.789-3.222-7.778s-4.741-3.222-7.778-3.222-5.789 1.232-7.778 3.222-3.222 4.741-3.222 7.778 1.232 5.789 3.222 7.778 4.741 3.222 7.778 3.222 5.789-1.232 7.778-3.222 3.222-4.741 3.222-7.778zM21 12c0 2.486-1.006 4.734-2.636 6.364s-3.878 2.636-6.364 2.636-4.734-1.006-6.364-2.636-2.636-3.878-2.636-6.364 1.006-4.734 2.636-6.364 3.878-2.636 6.364-2.636 4.734 1.006 6.364 2.636 2.636 3.878 2.636 6.364zM11 8v5.586l-2.293-2.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414l4 4c0.092 0.092 0.202 0.166 0.324 0.217 0.245 0.101 0.521 0.101 0.766 0 0.118-0.049 0.228-0.121 0.324-0.217l4-4c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-2.293 2.293v-5.586c0-0.552-0.448-1-1-1s-1 0.448-1 1z'></path></svg>") no-repeat 50% 50%;
-webkit-mask-size: cover;
mask-size: cover;
background-color: currentColor;
display: inline-block;
margin-right: 5px;
width: 24px;
height: 24px;
text-decoration: none;
vertical-align: middle;
}
a.tm-download:hover::before{
text-decoration: none;
}
/* Fake youtube button. Works with typemillutilities.js */
.video-container{
position: relative;
text-align: center;
}
img.youtube{
position: relative;
max-width: 560px;
}
button.play-video {
position: absolute;
top: 50%;
left: 50%;
margin-top: -50px;
margin-left: -50px;
height: 100px;
width: 100px;
background: #e0474c;
color: #FFFFFF;
border-radius: 50%;
border: 0px;
padding: 0;
text-align: center;
}
button.play-video:hover {
background: #cc4146;
cursor: pointer;
}
button.play-video::after {
position: absolute;
top: 50%;
margin: -20px 0 0 -15px;
height: 0;
width: 0;
border-style: solid;
border-width: 20px 0 20px 40px;
border-color: transparent transparent transparent rgba(255, 255, 255, 0.75);
content: ' ';
}
.landingpageinfo h2{
font-size: 2.25rem;
}
.landingpageinfo h3{
font-size: 1.5rem;
}
.landingpageinfo h4{
font-size: 1.25rem;
}
.icon {
display: inline-block;
width: 1em;
height: 1em;
stroke-width: 0;
stroke: currentColor;
fill: currentColor;
}
/************************************
* TACHYONS ADDITIONS *
************************************/
/* Keeps Footer at the bottom */
.body-footer-bottom { /* add this class to the body-tag */
min-height: 100vh;
display: flex;
flex-direction: column;
}
.footer-bottom { /* add this class to the footer-tag */
margin-top: auto;
}
/* Nice set of system fonts, add this to the body-tag */
.sans-serif-tm {
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
}
.sans-serif-title{
font-family: arial,"Segoe UI",Roboto,-apple-system,BlinkMacSystemFont,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
}
/* optimize text, add this to the body-tag */
.optimize-text{
/* Adjust font size */
font-size: 100%;
-webkit-text-size-adjust: 100%;
/* Font varient */
font-variant-ligatures: none;
-webkit-font-variant-ligatures: none;
/* Smoothing */
text-rendering: optimizeLegibility;
-moz-osx-font-smoothing: grayscale;
font-smoothing: antialiased;
-webkit-font-smoothing: antialiased;
text-shadow: rgba(0, 0, 0, .01) 0 0 1px;
}
.grid-container{
display: block;
}
.grid-header, .grid-main, .grid-sidebar{
display: block;
width: 100%;
}
.f-large{
font-size: 4rem;
}
.h4-5{
height: 12rem;
}
.shadow-2-hover{
transition: all 0.2s cubic-bezier(0.165, 0.84, 0.44, 1);
}
.shadow-2-hover:hover, .shadow-2-hover:focus{
box-shadow:0px 0px 8px 2px rgba( 0, 0, 0, 0.2 );
}
.margin-bottom-1{
margin-bottom: -1px;
}
.arrow-after:after{
content: '\203A'; position: absolute; right:5px;
}
.arrow-after-transition:after{
content: '\203A'; position: absolute; right:5px;
transition: all .2s;
}
.arrow-after-transition:hover:after{
right:0px;
}
.indent-l-1{ padding-left:1rem; }
.indent-l-2{ padding-left:2rem; }
.indent-l-3{ padding-left:3rem; }
.indent-l-4{ padding-left:4rem; }
.indent-l-5{ padding-left:4.5rem; }
.indent-l-6{ padding-left:5rem; }
.b--solid-hover:hover,.b--solid-hover:focus,.b--solid-hover:active{
border-style: solid;
}
/*************************
* RESPONSIVE NAVIGATION *
*************************/
.contentnav{
width: 70%;
position: absolute;
right: 0;
top: 0;
}
.contentnav.collapse .folder > ul{
display: none;
}
.contentnav .folder.active > ul,.contentnav .folder.activeParent > ul{
display: block;
}
.burgerbutton{
display: inline-block;
font-size: 2em;
width: 100%;
text-align: right;
padding: 2rem;
box-sizing: border-box;
}
.burgerbutton, .menu{
transition:all .2s ease;
}
.menu {
max-height: 0; /* hide menu completely when burger unchecked */
margin: 0px;
overflow:hidden;
position: relative;
z-index: 1;
font-size: 1.3rem;
}
#burger:checked ~ .menu {
max-height: 200%;
}
#burger:checked ~ .menu {
background: #333;
}
.menu a{
color: #fff;
}
#burger:checked ~ .burgerbutton {
color: #fff;
background: #333;
}
.logo-image{
max-width: 200px;
}
@media screen and (min-width:30em){
h1,h2,h3,h4,h5,h6{ hyphens: manual; }
}
@media (min-width: 40em) {
figure.right {
width: auto;
float: right;
margin: 0 0 2em 2em;
}
figure.left {
width: auto;
float: left;
margin: 0 2em 2em 0;
}
}
/**************
* Forms *
**************/
form{
width: 100%;
max-width: 800px;
border: none;
margin: 20px 0 20px 0;
padding: 0 0 0 0;
}
form fieldset{
width: 100%;
border: none;
margin: 0 0 0 0;
padding: 0 0 0 0;
}
form label{
width: 100%;
display: block;
color: #333;
margin-top: 1.5em;
}
form input, form textarea{
width: 100%;
display: block;
border: 1px solid #ddd;
padding: 15px;
margin: 0 0 20px 0;
background: #f5f5f5;
}
form input:focus,form select:focus,form textarea:focus{
outline: none;
border: 1px solid rgba(229, 226, 211, 1);
box-shadow: 0 0 2px #D73B00;;
}
form input[type="submit"],form button,form .button{
cursor: pointer;
font-size: 1em;
border: 0;
margin-top: 1.5em;
width: 100%;
padding: 15px;
}
form input[type="submit"]:hover,form button:hover,.button:hover{
opacity: .8;
}
@media screen and (min-width:50em) {
.grid-container{
display: grid;
grid-template-columns: 30% 70%;
grid-column-gap: 1em;
grid-template-rows: auto auto;
grid-template-areas:
"gridHeader gridMain"
"gridSidebar gridMain"
". gridMain"
}
.grid-header{
grid-area: gridHeader;
}
.grid-main{
grid-area: gridMain;
}
.grid-sidebar{
grid-area: gridSidebar;
}
.logo-image{
max-width: 100%;
}
#burger:checked ~ .burgerbutton {
color: inherit;
background: inherit;
}
#burger:checked ~ .menu {
background: inherit;
}
.menu a{
color: inherit;
}
.contentnav{
position: relative;
width: auto;
}
.burgerbutton{
display: none;
}
.menu{
font-size: inherit;
max-height: inherit;
}
a.tm-heading-anchor {
float: left;
}
}
@media print {
#contentnav, nav, #bottompager,.widgetcontainer,.funcicons,.account,footer{
display: none;
}
.grid-main{
margin-top: -10px!important;
padding-top: 0px!important;
}
.logo-image{
max-width: 150px;
}
main{
padding-bottom: 0!important;
}
aside{
padding-top: 0!important;
padding-bottom: 0!important;
}
main,footer{
border: 0px!important;
}
footer .ph3
{
padding-top: 0;
padding-bottom: 0;
}
body, .landingpagecontrast, .account, main, footer, .landingpageintro, .landingpageinfo, .landingpageteaser, .landingpagenavi, .landingpagenews, button.expander, .notice4{
background: #fff!important;
color: black!important;
}
article{
font-size: .8em;
}
article a[href]{
color: black;
text-decoration: underline;
}
article a[href]:after {
content: " (" attr(href) ")";
}
nav .mw6{
width: 100%;
}
a.tm-heading-anchor {
display: none;
}
}

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

@ -0,0 +1,540 @@
name: Cyanine Theme
version: 2.0.1
description: Cyanine is a modern and flexible multi-purpose theme and the standard theme for typemill.
author: Trendschau
homepage: https://trendschau.net
license: MIT
settings:
landingpage: on
introPosition: '1'
naviPosition: '2'
naviTitle: Get Started
fontheadline: sans-serif
fontnavi: sans-serif
forms:
fields:
layout:
type: fieldset
legend: General Layout
fields:
layoutsize:
type: select
label: Layout Size
options:
standard: Standard
large: Large
full: Full Width
blogimage:
type: checkbox
label: Post-Images
checkboxlabel: Generally show hero images in all lists of posts
bloghomepage:
type: fieldset
legend: Posts on Homepage
fields:
blog:
type: checkbox
checkboxlabel: Activate a list of posts on the homepage
blogintro:
type: checkbox
label: Intro Content
checkboxlabel: Show the content of the homepage before the posts get listed
blogfolder:
type: text
label: Enter the folder path with the posts
placeholder: /blog
landing:
type: fieldset
legend: Landingpage
fields:
landingpage:
type: checkbox
checkboxlabel: Activate a landing page with segments on the homepage
landingpageIntro:
type: fieldset
legend: Landingpage Intro Segment
fields:
introPosition:
type: number
label: Position of Intro Segment
description: Use 0 to disable the section
css: 'lg:w-half'
introTitle:
type: text
label: Title for your landingpage intro
placeholder: Typemill
description: Leave empty to use the title of your base content page.
css: 'lg:w-half'
introMarkdown:
type: textarea
label: Text for your landingpage intro (use markdown)
description: Leave empty to use the content of your base content page.
introButtonLink:
type: text
label: Link for startbutton
placeholder: /my/deeplink
css: 'lg:w-half'
introButtonLabel:
type: text
label: Label for startbutton
placeholder: my label
css: 'lg:w-half'
introFullsize:
type: checkbox
label: Full Screen
checkboxlabel: Use full screen for the intro segment
introImage:
type: checkbox
label: Background Image
checkboxlabel: Use the hero-image from the homepage as background image
introImageOpacity:
type: text
label: Opacity for background image
placeholder: 0.8
landingpageInfo:
type: fieldset
legend: Landingpage Info Segment
fields:
infoPosition:
type: number
label: Position of Info Segment
description: Use 0 to disable the section
infoMarkdown:
type: textarea
label: Use Markdown
landingpageTeaser:
type: fieldset
legend: Landingpage Teaser Segment
fields:
teaserPosition:
type: number
label: Position of Teaser Segment
description: Use 0 to disable the section
teaser1title:
type: text
label: Teaser 1 Title
css: 'lg:w-half'
teaser1text:
type: text
label: Teaser 1 Text
css: 'lg:w-half'
teaser1link:
type: text
label: Teaser 1 Link
css: 'lg:w-half'
teaser1label:
type: text
label: Teaser 1 Label
css: 'lg:w-half'
teaser2title:
type: text
label: Teaser 2 Title
css: 'lg:w-half'
teaser2text:
type: text
label: Teaser 2 Text
css: 'lg:w-half'
teaser2link:
type: text
label: Teaser 2 Link
css: 'lg:w-half'
teaser2label:
type: text
label: Teaser 2 Label
css: 'lg:w-half'
teaser3title:
type: text
label: Teaser 3 Title
css: 'lg:w-half'
teaser3text:
type: text
label: Teaser 3 Text
css: 'lg:w-half'
teaser3link:
type: text
label: Teaser 3 Link
css: 'lg:w-half'
teaser3label:
type: text
label: Teaser 3 Label
css: 'lg:w-half'
landingpageContrast:
type: fieldset
legend: Landingpage Contrast Segment
fields:
contrastPosition:
type: number
label: Position of Contrast Segment
description: Use 0 to disable the section
contrastTitle:
type: text
label: Title
contrastText:
type: textarea
label: Text
contrastLink:
type: text
label: Button Link
css: 'lg:w-half'
contrastLabel:
type: text
label: Button Label
css: 'lg:w-half'
landingpageNavi:
type: fieldset
legend: Landingpage Navigation Segment
fields:
naviPosition:
type: number
label: Position of Navi Segment
description: Use 0 to disable the section
naviTitle:
type: text
label: Title for navigation
naviDepth:
type: number
label: How many navigation levels?
landingpageNews:
type: fieldset
legend: Landingpage News Segment
fields:
newsPosition:
type: number
label: Position of News Segment
description: Use 0 to disable the section
css: 'lg:w-half'
newsHeadline:
type: text
label: Headline for news-segment
placeholder: News
css: 'lg:w-half'
newsFolder:
type: text
label: List entries from folder
placeholder: /blog
description: Add a path to a folder from which you want to list entries
css: 'lg:w-half'
newsLabel:
type: text
label: Label for read more link
placeholder: All News
css: 'lg:w-half'
fieldsetAuthor:
type: fieldset
legend: Article Author
fields:
authorPosition:
type: checkboxlist
label: Position of article author-line (top/bottom)
options:
top: Top
bottom: Bottom
authorIntro:
type: text
label: Author intro text
placeholder: Author
fieldsetDate:
type: fieldset
legend: Article Date
fields:
datePosition:
type: checkboxlist
label: Position of article date (top/bottom)
options:
top: Top
bottom: Bottom
dateIntro:
type: text
label: Date intro text
placeholder: Last Updated
css: 'lg:w-half'
dateFormat:
type: select
label: Date format
css: 'lg:w-half'
options:
'm/d/Y': 01/20/2020
'd.m.Y': 20.01.2020
fieldsetGitHub:
type: fieldset
legend: Article edit link
fields:
gitPosition:
type: checkboxlist
label: Position of the edit link (top/bottom)
options:
top: Top
bottom: Bottom
gitLink:
type: text
label: Link to repository
placeholder: https://github.com/typemill/documentation
help: Add the base url to the content repository (e.g. github).
editText:
type: text
label: Text/label for edit link
placeholder: edit on github
editIcon:
type: checkbox
label: Icon
checkboxlabel: use an edit-icon instead of text
fieldsetPrint:
type: fieldset
legend: Print Button
fields:
printPosition:
type: checkboxlist
label: Position of the print-button (top/bottom)
options:
top: Top
bottom: Bottom
printText:
type: text
label: Text/label for print-button
placeholder: print
printIcon:
type: checkbox
label: Icon
checkboxlabel: use a print-icon instead of text
fieldsetNavigations:
type: fieldset
legend: Navigations and Chapters
fields:
chapnum:
type: checkbox
label: Chapter Numbers
checkboxlabel: Show chapter numbers in navigation?
collapseNav:
type: checkbox
label: Collapse navigation
checkboxlabel: Collapse and expand navigation?
expand:
type: text
label: Label for expand button
placeholder: expand navigation
css: 'lg:w-half'
collapse:
type: text
label: Label for collapse button
placeholder: collapse navigation
css: 'lg:w-half'
next:
type: text
label: Label for next link
placeholder: next
css: 'lg:w-half'
previous:
type: text
label: Label for previous link
placeholder: previous
css: 'lg:w-half'
fieldsetfooter:
type: fieldset
legend: Footer columns
fields:
footercolumns:
type: checkboxlist
label: Activate footer columns
options:
footer1: Column 1
footer2: Column 2
footer3: Column 3
footer1:
type: textarea
label: footer column 1 (use markdown)
footer2:
type: textarea
label: footer column 2 (use markdown)
footer3:
type: textarea
label: footer column 3 (use markdown)
fieldsetcopyrightline:
type: fieldset
legend: Copyright Line
fields:
copyrightline:
type: checkbox
checkboxlabel: Overwrite the copyright line
copyrightlinetext:
type: textarea
label: Overwrite Copyright Line (use markdown)
description: If overwrite the copyright line with the link to typemill, then please support Typemill e.g. with a link in the imprint, a blog-post, a social media mention or a recommendation.
fieldsetFonts:
type: fieldset
legend: Font Families
fields:
font:
type: select
label: General font-family
description: All fonts are system fonts with fallbacks
options:
BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif: sans-serif
georgia,times,serif: serif
courier,sans-serif: courier (sans-serif)
helvetica,sans-serif: helvetica (sans-serif)
avenir,sans-serif: avenir (sans-serif)
athelas,serif: athelas (serif)
georgia,serif: georgia (serif)
times,serif: times (serif)
bodoni,serif: bodoni (serif)
calisto,serif: calisto (serif)
garamond,serif: garamond (serif)
baskerville,serif: baskerville (serif)
fontheadline:
type: select
label: Font-family for headlines
description: All fonts are system fonts with fallbacks
options:
BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif: sans-serif
georgia,times,serif: serif
courier,sans-serif: courier (sans-serif)
helvetica,sans-serif: helvetica (sans-serif)
avenir,sans-serif: avenir (sans-serif)
athelas,serif: athelas (serif)
georgia,serif: georgia (serif)
times,serif: times (serif)
bodoni,serif: bodoni (serif)
calisto,serif: calisto (serif)
garamond,serif: garamond (serif)
baskerville,serif: baskerville (serif)
fontnavi:
type: select
label: Font-family for navigations
description: All fonts are system fonts with fallbacks
options:
BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif: sans-serif
georgia,times,serif: serif
courier,sans-serif: courier (sans-serif)
helvetica,sans-serif: helvetica (sans-serif)
avenir,sans-serif: avenir (sans-serif)
athelas,serif: athelas (serif)
georgia,serif: georgia (serif)
times,serif: times (serif)
bodoni,serif: bodoni (serif)
calisto,serif: calisto (serif)
garamond,serif: garamond (serif)
baskerville,serif: baskerville (serif)
fieldsetColors:
type: fieldset
legend: Colors
fields:
brandcolorprimary:
type: text
label: Background color for body
placeholder: 'leightseagreen'
css: 'lg:w-half'
fontcolorprimary:
type: text
label: Font color for body
placeholder: 'white'
css: 'lg:w-half'
newsbackground:
type: text
label: Background color for news-box
placeholder: 'white'
css: 'lg:w-half'
newscolor:
type: text
label: Font color for news-box
placeholder: '#333'
css: 'lg:w-half'
brandcolortertiary:
type: text
label: Background color for buttons
placeholder: 'lightseagreen'
css: 'lg:w-half'
fontcolortertiary:
type: text
label: Font color for buttons
placeholder: '#F7F7F7'
css: 'lg:w-half'
bordercolortertiary:
type: text
label: Border color for buttons
placeholder: '#F7F7F7'
css: 'lg:w-half'
fontcolorlink:
type: text
label: Font color for content links
placeholder: '#007F7F'
css: 'lg:w-half'
brandcolorsecondary:
type: text
label: Background color for content
placeholder: '#f7f7f7'
css: 'lg:w-half'
fontcolorsecondary:
type: text
label: Font color for content
placeholder: '#333'
css: 'lg:w-half'
codebackground:
type: text
label: Background color for code
placeholder: '#ddd'
css: 'lg:w-half'
codecolor:
type: text
label: Font color for code
placeholder: '#333'
css: 'lg:w-half'
contentnavihoverbackground:
type: text
label: Background color for hover of content navigation
placeholder: 'lightseagreen'
css: 'lg:w-half'
contentnavihovercolor:
type: text
label: Font color for hover of content navigation
placeholder: 'white'
css: 'lg:w-half'
thinbordercolor:
type: text
label: Thin border color
placeholder: 'lightgray'
description: Used for content navigation, table and horizontal line
css: 'lg:w-half'
noticecolors:
type: checkbox
label: Color for notices
checkboxlabel: Use grayscale color schema for notices
css: 'lg:w-half'
metatabs:
meta:
fields:
fieldsetfolder:
fields:
glossary:
type: checkbox
label: Glossary List (cyanine theme)
checkboxlabel: List pages or posts of this folder as glossary (only for folders)

View File

@ -0,0 +1,19 @@
{% set home = {
"landingpageIntro" : settings.themes.cyanine.introPosition,
"landingpageInfo" : settings.themes.cyanine.infoPosition,
"landingpageTeaser" : settings.themes.cyanine.teaserPosition,
"landingpageContrast" : settings.themes.cyanine.contrastPosition,
"landingpageNavi" : settings.themes.cyanine.naviPosition,
"landingpageNews" : settings.themes.cyanine.newsPosition
}
%}
{% for section,index in home|sort %}
{% if index > 0 %}
{% include 'home/' ~ section ~ '.twig' %}
{% endif %}
{% endfor %}

View File

@ -0,0 +1,11 @@
<section class="landingpagecontrast w-100 dib tc bl br bb">
<div class="f4 f4-ns mw7 pv6 ph3 fw3 lh-copy center">
<h2 class="f2">{{ settings.themes.cyanine.contrastTitle }}</h2>
<p class="f5 f4-ns fw3 lh-copy">{{ markdown(settings.themes.cyanine.contrastText) }}</p>
{% if settings.themes.cyanine.contrastLink %}
<a class="button link ba dim ph4 pv3 mt3 dib" href="{{ settings.themes.cyanine.contrastLink }}">{{ settings.themes.cyanine.contrastLabel }}</a>
{% endif %}
</div>
</section>

View File

@ -0,0 +1,9 @@
<section class="landingpageinfo w-100 dib tc bl br bb">
<div class="f5 f4-ns mw7 pv6 ph3 fw3 lh-copy center">
{{ markdown(settings.themes.cyanine.infoMarkdown) }}
</div>
</section>

View File

@ -0,0 +1,44 @@
{% if settings.themes.cyanine.introFullsize %}
<section class="landingpageintro vh-100 dt w-100 tc bt bl br bb">
<div class="cover dtc v-mid bg-left bg-center-l" {% if settings.themes.cyanine.introImage %}style="background-image: url({{metatabs.meta.heroimage}});background-color:rgba(255,255,255,{{settings.themes.cyanine.introImageOpacity|default('0.8')}});background-blend-mode: lighten;" {% endif%} >
<div class="mw7 ph3 center">
{% else %}
<section class="landingpageintro w-100 dib tc bt bl br bb">
<div class="cover bg-left bg-center-l" {% if settings.themes.cyanine.introImage %}style="background-image: url({{metatabs.meta.heroimage}});background-color:rgba(255,255,255,{{settings.themes.cyanine.introImageOpacity|default('0.8')}});background-blend-mode: lighten;" {% endif%} >
<div class="mw7 pb7 pt6 ph3 center">
{% endif %}
<div class="introbg pa4">
<header>
{% if logo %}
<img src="{{ base_url }}/{{ logo }}" class="logo-image"/>
{% elseif settings.themes.cyanine.introTitle %}
<h1 class="f-large lh-title mv2">{{ settings.themes.cyanine.introTitle }}</h1>
{% else %}
<h1 class="f-large lh-title mv2">{{ title }}</h1>
{% endif %}
</header>
<div class="f5 f4-ns fw3 lh-copy">
{% if settings.themes.cyanine.introMarkdown %}
{{ markdown(settings.themes.cyanine.introMarkdown) }}
{% else %}
{{ content }}
{% endif %}
</div>
{% if settings.themes.cyanine.introButtonLink %}
<a class="button link dim ph4 pv3 mt3 ba dib" href="{{ settings.themes.cyanine.introButtonLink }}">{{ settings.themes.cyanine.introButtonLabel }}</a>
{% endif %}
</div>
</div>
</div>
</section>

View File

@ -0,0 +1,12 @@
<section class="landingpagenavi w-100 dib tc bl br bb">
<div class="mw7 pv6 ph3 center">
<h2 class="f2">{{ settings.themes.cyanine.naviTitle }}</h2>
<nav class="navigation f5 f4-l fw3">
{% include 'partials/navigationFlat.twig' with {'flatnavi': navigation, 'navidepth': settings.themes.cyanine.naviDepth } %}
</nav>
</div>
</section>

View File

@ -0,0 +1,66 @@
<section class="landingpagenews w-100 dib tc bl br bb">
<div class="mw8 pv6 ph3 center">
<h2 class="f2">{{ settings.themes.cyanine.newsHeadline }}</h2>
{% set pagelist = getPageList(navigation, settings.themes.cyanine.newsFolder, base_url) %}
{% if pagelist.contains == 'pages' %}
<ul class="flex-l justify-between pa0">
{% for element in pagelist.folderContent|slice(0, 3) %}
{% set page = getPageMeta(settings, element) %}
<li class="db list tl pa0 w-100 mh0 mv2 mh2-l shadow-2-hover">
<a class="link mv4 dim" href="{{ element.urlAbs }}">
<div class="db h4-5 overflow-hidden">
<img class="db w-100" src="{{base_url}}/{{ page.meta.heroimage }}" alt="{{ page.meta.heroimagealt }}">
</div>
<div class="pa2 ph3-ns pb3-ns">
<h3>{{ page.meta.title }}</h3>
<p class="f5 lh-copy">{{ page.meta.description|length > 80 ? page.meta.description|slice(0, 81)|split(' ')|slice(0, -1)|join(' ') ~ '…' : page.meta.description }}</p>
</div>
</a>
</li>
{% endfor %}
</ul>
{% elseif pagelist.contains == 'posts' %}
<ul class="flex-l justify-between pa0">
{% 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] %}
<li class="db list tl pa0 w-100 mh0 mv2 mh2-l shadow-2-hover">
<a class="link mv4 dim" href="{{ element.urlAbs }}">
<div class="db h4-5 overflow-hidden">
<img class="db w-100" src="{{base_url}}/{{ post.meta.heroimage }}" alt="{{ post.meta.heroimagealt }}">
</div>
<div class="pa2 ph3-ns pb3-ns">
<h3>{{ post.meta.title }}</h3>
<small class="f6"><time datetime="{{date}}">{{ date | date("d.m.Y") }}</time> | {{ post.meta.author }}</small>
<p class="f5 lh-copy">{{ post.meta.description|length > 80 ? post.meta.description|slice(0, 81)|split(' ')|slice(0, -1)|join(' ') ~ '…' : post.meta.description }}</p>
</div>
</a>
</li>
{% endfor %}
</ul>
{% endif %}
<a href="{{base_url}}{{ settings.themes.cyanine.newsFolder }}" class="button link dim dib pa3 ma1 ba">{{ settings.themes.cyanine.newsLabel }}</a>
</div>
</section>

View File

@ -0,0 +1,27 @@
<section class="landingpageteaser w-100 dib tc bl br bb">
<div class="mw8 pv6 ph3 center flex-m flex-l justify-around">
{% if settings.themes.cyanine.teaser1title %}
<div class="mw5 center ml0-l mr0-l mv4 dib">
<h2 class="f2">{{ settings.themes.cyanine.teaser1title }}</h2>
<p class="f5 f4-ns fw3 lh-copy">{{ settings.themes.cyanine.teaser1text }}</p>
<a href="{{ settings.themes.cyanine.teaser1link }}" class="button link dim w-100 dib pa3 ma1 ba">{{ settings.themes.cyanine.teaser1label }}</a>
</div>
{% endif %}
{% if settings.themes.cyanine.teaser2title %}
<div class="mw5 center ml0-l mr0-l mv4 dib">
<h2 class="f2">{{ settings.themes.cyanine.teaser2title }}</h2>
<p class="f5 f4-ns fw3 lh-copy">{{ settings.themes.cyanine.teaser2text }}</p>
<a href="{{ settings.themes.cyanine.teaser2link }}" class="button link dim w-100 dib pa3 ma1 ba">{{ settings.themes.cyanine.teaser2label }}</a>
</div>
{% endif %}
{% if settings.themes.cyanine.teaser3title %}
<div class="mw5 center ml0-l mr0-l mv4 dib">
<h2 class="f2">{{ settings.themes.cyanine.teaser3title }}</h2>
<p class="f5 f4-ns fw3 lh-copy">{{ settings.themes.cyanine.teaser3text }}</p>
<a href="{{ settings.themes.cyanine.teaser3link }}" class="button link dim w-100 dib pa3 ma1 ba">{{ settings.themes.cyanine.teaser3label }}</a>
</div>
{% endif %}
</div>
</section>

View File

@ -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 %}

View File

@ -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.
*/

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,254 @@
<!DOCTYPE html>
<html lang="{{ settings.langattr | default('en') }}">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="{{ metatabs.meta.description }}" />
<meta name="author" content="{{ metatabs.meta.author }}" />
<meta name="generator" content="TYPEMILL" />
<link rel="canonical" href="{{ item.urlAbs }}" />
{{ assets.renderMeta() }}
{% block stylesheets %}
<link rel="stylesheet" href="{{ base_url }}/themes/cyanine/css/tachyons.min.css?20220527" />
<link rel="stylesheet" href="{{ base_url }}/themes/cyanine/css/style.css?20220527" />
<style>
/*******************
** LAYOUT SIZES **
*******************/
{% if settings.themes.cyanine.layoutsize == 'large' %}
@media screen and (min-width: 50em){
.grid-container{
max-width: 82rem;
grid-template-columns: 25% 75%;
}
.grid-main{
max-width: 48rem;
margin: 0 auto;
}
}
{% elseif settings.themes.cyanine.layoutsize == 'full' %}
@media screen and (min-width: 70em){
.grid-container{
max-width: 100%;
grid-template-columns: 20% 80%;
}
.grid-main{
padding-left: 4rem;
padding-right: 4rem;
margin: 0 auto;
}
}
{% else %}
@media screen and (min-width: 50em){
.grid-container{
max-width: 64rem;
grid-template-columns: 30% 70%;
}
}
{% endif %}
/*******************
** FONT FAMILIES **
*******************/
body,.landingpagecontrast{
font-family: {{ settings.themes.cyanine.font|default('-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif') }};
}
h1,h2,h3,h4,h5,h6,.logo{
font-family: {{ settings.themes.cyanine.fontheadline|default('-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif') }};
}
.navigation, button, .button, .mainnavigation{
font-family: {{ settings.themes.cyanine.fontnavi|default('-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif') }};
}
/*******************
** COLORS **
*******************/
body,.landingpagecontrast,.account,form input[type="submit"],from button,form .button{
background: {{ settings.themes.cyanine.brandcolorprimary|default('lightseagreen') }};
}
main, footer, .landingpageintro, .landingpageinfo, .landingpageteaser, .landingpagenavi, .landingpagecontrast, .landingpagenews,form input[type="submit"],from button,form .button{
border-color: {{ settings.themes.cyanine.brandcolorprimary|default('lightseagreen') }};
}
.landingpagecontrast a, .landingpagecontrast a:link, .landingpagecontrast a:visited{
background: {{ settings.themes.cyanine.brandcolorprimary|default('lightseagreen') }};
}
body,.landingpagecontrast, a,
.landingpagecontrast a, .landingpagecontrast a:link, .landingpagecontrast a:visited,
.account, .account a, .account a:link, .account a:hover, .account a:focus, .account a:visited,
form input[type="submit"],from button,form .button{
color: {{ settings.themes.cyanine.fontcolorprimary|default('#F7F7F7') }};
}
.landingpagecontrast a, .landingpagecontrast a:link, .landingpagecontrast a:visited{
border-color: {{ settings.themes.cyanine.fontcolorprimary|default('#F7F7F7') }};
}
main, footer, .landingpageintro, .landingpageinfo, .landingpageteaser, .landingpagenavi, .landingpagenews,button.expander, .notice4{
background: {{ settings.themes.cyanine.brandcolorsecondary|default('#f7f7f7') }};
}
.notice4{
box-shadow: 0 -100px 80px 0px {{ settings.themes.cyanine.brandcolorsecondary|default('#f7f7f7') }};
}
main, footer, .landingpageintro, .landingpageinfo, .landingpageteaser, .landingpagenavi, .landingpagenews, .logo a, button.expander{
color: {{ settings.themes.cyanine.fontcolorsecondary|default('#333') }};
}
button.expander{
border-color: {{ settings.themes.cyanine.fontcolorsecondary|default('#333') }};
}
main a, main a:before, footer a, .landingpageintro p a, .landingpageinfo p a, .landingpageteaser p a, .landingpagenavi p a{
color: {{ settings.themes.cyanine.fontcolorlink|default('#007474') }};
}
.TOC li a, .TOC li a:hover,.TOC li a:focus,.TOC li a:active{
border-color: {{ settings.themes.cyanine.fontcolorlink|default('#007474') }};
}
.navigation, button, .button,thead{
background: {{ settings.themes.cyanine.brandcolortertiary|default('lightseagreen') }};
}
.navigation, button, .button{
border-color: {{ settings.themes.cyanine.bordercolortertiary|default('lightseagreen') }};
}
.navigation, button, .button,thead,
.navigation a,.navigation a:hover,.navigation a:focus, .navigation a:active{
color: {{ settings.themes.cyanine.fontcolortertiary|default('#F7F7F7') }};
}
article pre{
border-left: 4px solid {{ settings.themes.cyanine.brandcolortertiary|default('lightseagreen') }};
}
article pre, article code{
background: {{ settings.themes.cyanine.codebackground|default('#ddd') }};
color: {{ settings.themes.cyanine.codecolor|default('#333') }};
}
.mainnavigation a:hover,.mainnavigation a:focus,.mainnavigation a:active, .mainnavigation .active > a:first-child{
background: {{ settings.themes.cyanine.contentnavihoverbackground|default('lightseagreen') }};
color: {{ settings.themes.cyanine.contentnavihovercolor|default('white') }};
}
.landingpagenews li, .newsbox{
background: {{ settings.themes.cyanine.newsbackground|default('white') }};
}
.landingpagenews li a{
color: {{ settings.themes.cyanine.newscolor|default('#333') }};
}
.mainnavigation li, tr, hr, .notice4{
border-color: {{ settings.themes.cyanine.thinbordercolor|default('lightgray') }};
}
.notice1{
background-color: #ffded4;
border-left: 4px solid #f65a3c;
}
.notice2{
background-color: #fff3d4;
border-left: 4px solid #f6b73c;
}
.notice3{
background-color: #d4e0ff;
border-left: 4px solid #3c7bf6;
}
{% if settings.themes.cyanine.noticecolors %}
.notice1 {
background-color: #fafafa;
border-left: 10px solid #000;
color: #333;
}
.notice2 {
background-color: #eee;
border-left: 10px solid #999;
color: #333;
}
.notice3{
background-color: #444;
border-left: 10px solid #ccc;
color: #fff;
}
{% endif %}
</style>
{{ assets.renderCSS() }}
{% endblock %}
</head>
<body class="optimize-text pa2">
<svg style="position: absolute; width: 0; height: 0; overflow: hidden" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<symbol id="icon-user" viewBox="0 0 20 28">
<path d="M20 21.859c0 2.281-1.5 4.141-3.328 4.141h-13.344c-1.828 0-3.328-1.859-3.328-4.141 0-4.109 1.016-8.859 5.109-8.859 1.266 1.234 2.984 2 4.891 2s3.625-0.766 4.891-2c4.094 0 5.109 4.75 5.109 8.859zM16 8c0 3.313-2.688 6-6 6s-6-2.688-6-6 2.688-6 6-6 6 2.688 6 6z"></path>
</symbol>
<symbol id="icon-pencil" viewBox="0 0 32 32">
<path d="M27 0c2.761 0 5 2.239 5 5 0 1.126-0.372 2.164-1 3l-2 2-7-7 2-2c0.836-0.628 1.874-1 3-1zM2 23l-2 9 9-2 18.5-18.5-7-7-18.5 18.5zM22.362 11.362l-14 14-1.724-1.724 14-14 1.724 1.724z"></path>
</symbol>
<symbol id="icon-printer" viewBox="0 0 32 32">
<path d="M8 2h16v4h-16v-4z"></path>
<path d="M30 8h-28c-1.1 0-2 0.9-2 2v10c0 1.1 0.9 2 2 2h6v8h16v-8h6c1.1 0 2-0.9 2-2v-10c0-1.1-0.9-2-2-2zM4 14c-1.105 0-2-0.895-2-2s0.895-2 2-2 2 0.895 2 2-0.895 2-2 2zM22 28h-12v-10h12v10z"></path>
</symbol>
</defs>
</svg>
{% if is_loggedin() %}
<div class="account fixed pb2 top-0 right-0 left-0">
<div class="account fixed h1 w2 w2 right-2">
<a href="{{base_url}}/tm/account"><div class="account fixed h2 w2 top-0 br-100 tc">
<svg class="icon baseline icon-user w1 h1 mt2"><use xlink:href="#icon-user"></use></svg>
</div></a>
</div>
</div>
{% endif %}
{% block content %}{% endblock %}
{% include 'partials/footer.twig' %}
{% block javascripts %}
<script src="{{ base_url }}/system/typemill/author/js/typemillutils.js?20220108"></script>
<script>typemillUtilities.start();</script>
{% if settings.themes.cyanine.collapseNav %}
<script>
var expandButton = document.getElementById("expander");
if(expandButton !== null)
{
var expandLabel = expandButton.dataset.expandlabel;
var collapseLabel = expandButton.dataset.collapselabel;
expandButton.addEventListener('click', function(e)
{
var contentnav = document.getElementById("contentnav");
contentnav.classList.toggle("collapse");
if(contentnav.classList.contains("collapse"))
{
expandButton.innerHTML = expandLabel;
}
else
{
expandButton.innerHTML = collapseLabel;
}
});
}
</script>
{% endif %}
{{ assets.renderJS() }}
{% endblock %}
</body>
</html>

View File

@ -0,0 +1,148 @@
{% set published = metatabs.meta.manualdate ? metatabs.meta.manualdate : metatabs.meta.modified %}
<main class="{{ item.elementType }} w-100 pb5 bl br bb">
<div class="w-100 center grid-container">
<aside class="grid-header ph3 pv3">
<header>
<div class="logo">
<p class="pa0 ma0">
<a class="link f1 fw9" href="{{ base_url }}" title="My Title">
{% if logo %}
<img src="{{ base_url }}/{{ logo }}" class="logo-image"/>
{% else %}
{{ settings.title }}
{% endif %}
</a>
</p>
</div>
</header>
{% if widgets %}
<div class="widgetcontainer">
{% for index,widget in widgets %}
<div id="{{ index }}" class="mt4-l mt3">
{{ widget }}
</div>
{% endfor %}
</div>
{% endif %}
</aside>
<div class="grid-main ph3 ph4-l pv3 lh-copy f4-l f5 fw3">
<nav id="breadcrumb">
{% include 'partials/breadcrumb.twig' %}
</nav>
<article>
<header>
<h1>{{ title }}</h1>
{% if (settings.themes.cyanine.datePosition.top or settings.themes.cyanine.authorPosition.top or settings.themes.cyanine.gitPosition.top or settings.themes.cyanine.printPosition.top) %}
<div class="f5 pv1 flex justify-between">
<div class="byline">
{% if settings.themes.cyanine.datePosition.top %}
<time pubdate datetime="{{ published }}" class="pr2">{{ settings.themes.cyanine.dateIntro }} {{ published|date(settings.themes.cyanine.dateFormat) }}</time>
{% endif %}
{% if settings.themes.cyanine.authorPosition.top %}
<adress class="pr2">{{ settings.themes.cyanine.authorIntro }} {{ metatabs.meta.author|default(settings.author) }}</adress>
{% endif %}
</div>
<div class="funcicons">
{% if settings.themes.cyanine.gitPosition.top %}
<a class="link" title="edit on github" href="{{ settings.themes.cyanine.gitLink }}{{ item.path }}">{% if settings.themes.cyanine.editIcon %}<svg class="icon baseline icon-edit"><use xlink:href="#icon-edit"></use></svg>{% else %}{{ settings.themes.cyanine.editText }}{% endif %}</a>
{% endif %}
{% if settings.themes.cyanine.printPosition.top %}
<a class="link" title="open printer dialogue" href="#" onclick="if (window.print) {window.print();}">{% if settings.themes.cyanine.printIcon %}<svg class="icon baseline icon-printer"><use xlink:href="#icon-printer"></use></svg>{% else %}{{ settings.themes.cyanine.printText }}{% endif %}</a>
{% endif %}
</div>
</div>
{% endif %}
</header>
{{ content }}
{% if (settings.themes.cyanine.datePosition.bottom or settings.themes.cyanine.authorPosition.bottom or settings.themes.cyanine.gitPosition.bottom or settings.themes.cyanine.printPosition.bottom) %}
<div class="f5 pv1 flex justify-between">
<div class="byline">
{% if settings.themes.cyanine.datePosition.bottom %}
<time pubdate datetime="{{ published }}" class="pr2">{{ settings.themes.cyanine.dateIntro }} {{ published|date(settings.themes.cyanine.dateFormat) }}</time>
{% endif %}
{% if settings.themes.cyanine.authorPosition.bottom %}
<adress class="pr2">{{ settings.themes.cyanine.authorIntro }} {{ metatabs.meta.author|default(settings.author) }}</adress>
{% endif %}
</div>
<div class="funcicons">
{% if settings.themes.cyanine.gitPosition.bottom %}
<a class="link" title="edit on github" href="{{ settings.themes.cyanine.gitLink }}{{ item.path }}">{% if settings.themes.cyanine.editIcon %}<svg class="icon baseline icon-edit"><use xlink:href="#icon-edit"></use></svg>{% else %}{{ settings.themes.cyanine.editText }}{% endif %}</a>
{% endif %}
{% if settings.themes.cyanine.printPosition.bottom %}
<a class="link" title="open printer dialogue" href="#" onclick="if (window.print) {window.print();}">{% if settings.themes.cyanine.printIcon %}<svg class="icon baseline icon-printer"><use xlink:href="#icon-printer"></use></svg>{% else %}{{ settings.themes.cyanine.printText }}{% endif %}</a>
{% endif %}
</div>
</div>
{% endif %}
</article>
{% if item.elementType == 'file' %}
{% if item.prevItem or item.nextItem %}
<div id="bottompager" class="f5 pv5 flex-l flex-m justify-between {{ settings.themes.cyanine.fontnavi|default('tm-sans-serif') }}">
{% if item.prevItem %}
<a class="navigation link w-100 w-40-l w-40-m mv1 pv2 ph3 ba dim dib" href="{{ item.prevItem.urlRel }}">&lsaquo;&nbsp; {{ item.prevItem.name }}</a>
{% endif %}
{% if item.nextItem %}
<a class="navigation link w-100 w-40-l w-40-m mv1 pv2 ph3 dib ba dim tr" href="{{ item.nextItem.urlRel }}">{{ item.nextItem.name }} &nbsp;&rsaquo;</a>
{% endif %}
</div>
{% endif %}
{% endif %}
{% if item.elementType == 'folder' and metatabs.meta.glossary %}
<nav class="f4-l f5">
{% include 'partials/navigationGlossary.twig' with {'glossary': item.folderContent} %}
</nav>
{% elseif item.elementType == 'folder' and item.contains == 'pages' %}
<nav class="f4-l f5">
{% include 'partials/navigationFlat.twig' with {'flatnavi': item.folderContent} %}
</nav>
{% elseif item.elementType == 'folder' and item.contains == 'posts' %}
{% include 'partials/posts.twig' %}
{% endif %}
</div>
<aside class="grid-sidebar ph3 pv3">
<nav id="contentnav" class="contentnav{{ settings.themes.cyanine.collapseNav ? ' collapse' : '' }}" aria-label="Menu">
<!-- burger menu controlled by invisible checkbox -->
<input type="checkbox" id="burger" class="dn">
<label for="burger" class="burgerbutton">&#9776;</label>
{% include 'partials/navigation.twig' %}
</nav>
</aside>
</div>
</main>

View File

@ -0,0 +1,23 @@
<div class="f6 pv3 w-100 flex-l justify-between">
<div class="mw6">
<a class="link f-link underline-hover" href="{{ base_url }}">{{ settings.title }}</a>
{% for crumb in breadcrumb %}
&nbsp; &#x203A; &nbsp;
{% if loop.last %}
{{ crumb.name }}
{% else %}
<a class="link f-link underline-hover" href="{{ crumb.urlRel }}">{{ crumb.name }}</a>
{% endif %}
{% endfor %}
</div>
<div class="dn dib-l">
{% if item.prevItem %}
<a class="link pr1 f-link underline-hover" href="{{ item.prevItem.urlRel }}">&lsaquo;&nbsp; {{ settings.themes.cyanine.previous|default('previous') }}</a>
{% endif %}
{% if item.nextItem %}
<a class="link pl1 f-link underline-hover" href="{{ item.nextItem.urlRel }}">{{ settings.themes.cyanine.next|default('next') }} &nbsp;&rsaquo;</a>
{% endif %}
</div>
</div>

View File

@ -0,0 +1,31 @@
{% if settings.themes.cyanine.footercolumns is not empty %}
<footer class="w-100 bl br bb lh-copy">
<div class="center pv3 flex-l">
{% for column,key in settings.themes.cyanine.footercolumns %}
{% if settings.themes.cyanine[key] %}
<div class="w-100 pv3 ph3 ph4-l">
{{ markdown(settings.themes.cyanine[key]) }}
</div>
{% endif %}
{% endfor %}
</div>
</footer>
{% endif %}
<div class="w-100 center f6">
{% 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 %}
<p class="f6">{{ settings.copyright }} {{ translate('by') }} {{ settings.author }}, {{ copyrightYears }}. {{ translate('All Rights Reserved') }}. {{ translate('Built with') }} <a class="link underline f-secondary" href="https://typemill.net">Typemill</a>.</p>
{% endif %}
</div>

View File

@ -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 %}
<li class="bt bb margin-bottom-1 {{ element.elementType }} level-{{ depth }} activeParent">
{% elseif element.active %}
<li class="bt bb margin-bottom-1 {{ element.elementType }} level-{{ depth }} active">
{% else %}
<li class="bt bb margin-bottom-1 {{ element.elementType }} level-{{ depth }}">
{% endif %}
{% if (element.elementType == 'folder') %}
<a class="link dib w-100 relative fw7 pv2 pr2 indent-l-{{depth}} margin-bottom-1 arrow-after" href="{{ element.urlAbs }}">{% if chapnum %}{{ element.chapter }}. {% endif %}{{ element.name }}</a>
{% if (element.folderContent|length > 0) and (element.contains == 'pages') %}
<ul class="list pa0">
{{ macros.loop_over(element.folderContent, chapnum) }}
</ul>
{% endif %}
{% else %}
<a class="link dib w-100 relative fw3 pv2 pr2 indent-l-{{depth}} margin-bottom-1 arrow-after" href="{{ element.urlAbs }}">{% if chapnum %}{{ element.chapter }} {% endif %}{{ element.name }}</a>
{% endif %}
</li>
{% endfor %}
{% endmacro %}
{% import _self as macros %}
{% if settings.themes.cyanine.collapseNav %}
<button id="expander" data-expandlabel="{{ settings.themes.cyanine.expand|default('expand navigation') }}" data-collapselabel="{{ settings.themes.cyanine.collapse|default('collapse navigation') }}" class="expander dim dn db-l link pointer w-100 ba pa2 mb3 f6">{{ settings.themes.cyanine.expand|default('expand navigation') }}</button>
{% endif %}
<ul class="cy-nav mainnavigation list pa0 menu f5">
{{ macros.loop_over(navigation, settings.themes.cyanine.chapnum ) }}
</ul>

View File

@ -0,0 +1,27 @@
{% set maxdepth = navidepth ? navidepth : 2 %}
{% macro loop_over(navigation, level, maxdepth, chapnum) %}
{% import _self as macros %}
{% for element in navigation %}
<li class="{% if level == 1 %}w-100 w-50-l ba bb pa3 pa4-l{% endif %} {{ element.elementType }}">
{% if element.elementType == 'folder' and level < maxdepth %}
<a class="link relative dib bb bt-0 br-0 bl-0 b--dashed b--solid-hover w-100 ma2 arrow-after-transition" href="{{ element.urlAbs }}">{% if chapnum %}{{ element.chapter }}. {% endif %}{{ element.name }}</a>
{% if element.contains == 'pages' %}
<ul class="list">
{{ macros.loop_over(element.folderContent,level+1, maxdepth, chapnum) }}
</ul>
{% endif %}
{% else %}
<a class="link relative dib bb bt-0 br-0 bl-0 b--dashed b--solid-hover w-100 ma2 arrow-after-transition" href="{{ element.urlAbs }}">{% if chapnum %}{{ element.chapter }} {% endif %}{{ element.name }}</a>
{% endif %}
</li>
{% endfor %}
{% endmacro %}
{% import _self as macros %}
<ul class="navigation list pa0 flex-m flex-l flex-wrap tl justify-between">
{{ macros.loop_over(flatnavi, 1, maxdepth, settings.themes.cyanine.chapnum) }}
</ul>

View File

@ -0,0 +1,21 @@
{% macro loop_over(navigation) %}
{% import _self as macros %}
{% set alphabet = 'ß' %}
{% for element in navigation|sort((a, b) => a.name <=> b.name) %}
{% if element.name|first|upper != alphabet %}
{% set alphabet = element.name|first|upper %}
<h2>{{ alphabet }}</h2>
{% endif %}
<li class="w-100 pa3 pa0-l">
<a class="link relative dib w-100" href="{{ element.urlAbs }}">{{ element.name }}</a>
</li>
{% endfor %}
{% endmacro %}
{% import _self as macros %}
<ul class="list pa0 flex-m flex-l flex-wrap tl justify-between">
{{ macros.loop_over(glossary) }}
</ul>

View File

@ -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 %}
<ul class="post list pa0">
{% 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 != '' %}
<li class="post-entry newsbox dib list pa0 w-100 mh0 mv4">
<figure class="ma0">
<img src="{{ assets.image(post.meta.heroimage).resize(820,500).src() }}"{% if post.meta.heroimagealt and post.meta.heroimagealt != '' %} alt="{{ post.meta.heroimagealt }}"{% endif %} />
</figure>
<div class="pa2 ph4-ns pb4-ns">
<header>
<a class="link f-link underline-hover" href="{{ element.urlAbs }}"><h2 class="mt4 mb2">{{ post.meta.title }}</h2></a>
<div class="mt3"><small><time datetime="{{date}}">{{ date | date("d.m.Y") }}</time> | {{ post.meta.author }}</small></div>
</header>
<p>{{ post.meta.description }}</p>
</div>
</li>
{% else %}
<li class="post-entry">
<header>
<a class="link f-link underline-hover" href="{{ element.urlAbs }}"><h2 class="mt4 mb2">{{ post.meta.title }}</h2></a>
<div class="mt3"><small><time datetime="{{date}}">{{ date | date("d.m.Y") }}</time> | {{ post.meta.author }}</small></div>
</header>
<p>{{ post.meta.description }}</p>
</li>
{% endif %}
{% endfor %}
{% if pages > 1 %}
<hr class="mv4">
<p>Page:
{% for i in 1 .. pages %}
{% if i == currentpage %}
{{i}}
{% else %}
<a class="page" href="{{ item.urlAbs }}/p/{{i}}">{{i}}</a>
{% endif %}
{% endfor %}
</p>
{% endif %}
</ul>