New startpage and some minor improovements (#10)
- Fixes #1 - Fixes #9 Reviewed-on: #10
31
.drone.yml
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
kind: pipeline
|
||||
name: default
|
||||
name: production
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
|
@ -12,4 +13,30 @@ steps:
|
|||
settings:
|
||||
folder: public
|
||||
ssh_key:
|
||||
from_secret: gitea-ssh-key
|
||||
from_secret: gitea-ssh-key
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- main
|
||||
---
|
||||
kind: pipeline
|
||||
name: dev
|
||||
|
||||
steps:
|
||||
- name: build
|
||||
image: klakegg/hugo:ext-alpine-ci
|
||||
commands:
|
||||
- hugo --config config.dev.yaml --minify
|
||||
- rm public/.domains
|
||||
|
||||
- name: publish
|
||||
image: itsblue.dev/plugins/codeberg-pages-deploy
|
||||
settings:
|
||||
folder: public
|
||||
git_branch: pages-dev
|
||||
ssh_key:
|
||||
from_secret: gitea-ssh-key
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- dev
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"recommendations": [
|
||||
"valentjn.vscode-ltex"
|
||||
"valentjn.vscode-ltex",
|
||||
"budparr.language-hugo-vscode"
|
||||
]
|
||||
}
|
|
@ -8,3 +8,4 @@ Murnau
|
|||
MakerLab
|
||||
blueROCK
|
||||
digitalrock
|
||||
assable
|
||||
|
|
|
@ -1,5 +1,14 @@
|
|||
{
|
||||
"ltex.language": "en-US",
|
||||
"ltex.enabled": ["markdown", "yaml"],
|
||||
"ltex.markdown.nodes": {"CodeBlock": "default", "FencedCodeBlock": "default", "AutoLink": "dummy", "Code": "dummy", "YamlFrontMatterBlock": "default"}
|
||||
"ltex.markdown.nodes": {
|
||||
"CodeBlock": "default",
|
||||
"FencedCodeBlock": "default",
|
||||
"AutoLink": "dummy",
|
||||
"Code": "dummy",
|
||||
"YamlFrontMatterBlock": "default"
|
||||
},
|
||||
"editor.detectIndentation": false,
|
||||
"editor.tabSize": 2,
|
||||
"editor.insertSpaces": true,
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
baseURL: "https://itsblue-development.itsblue.online/itsblue-website/@pages-dev"
|
||||
defaultContentLanguage: "en"
|
||||
title: "Itsblue"
|
||||
theme: "quark-hugo"
|
||||
|
||||
params:
|
||||
gridSize: "grid-lg"
|
||||
|
||||
languages:
|
||||
de:
|
||||
title: "Itsblue"
|
||||
en:
|
||||
title: "Itsblue"
|
||||
|
||||
markup:
|
||||
goldmark:
|
||||
renderer:
|
||||
unsafe: true
|
||||
|
||||
outputFormats:
|
||||
privacypolicy:
|
||||
baseName: "privacypolicy"
|
||||
isPlainText: false
|
||||
isHTML: true
|
||||
permalinkable: true
|
||||
suffix: "html"
|
||||
mediaType: "text/html"
|
14
config.toml
|
@ -1,14 +0,0 @@
|
|||
baseURL = "https://itsblue.de/"
|
||||
defaultContentLanguage = "en"
|
||||
title = "Itsblue"
|
||||
theme = "quark-hugo"
|
||||
|
||||
[params]
|
||||
gridSize = "grid-lg"
|
||||
|
||||
[languages]
|
||||
[languages.de]
|
||||
[languages.en]
|
||||
|
||||
[markup.goldmark.renderer]
|
||||
unsafe= true
|
|
@ -0,0 +1,27 @@
|
|||
baseURL: "https://itsblue.de/"
|
||||
defaultContentLanguage: "en"
|
||||
title: "Itsblue"
|
||||
theme: "quark-hugo"
|
||||
|
||||
params:
|
||||
gridSize: "grid-lg"
|
||||
|
||||
languages:
|
||||
de:
|
||||
title: "Itsblue"
|
||||
en:
|
||||
title: "Itsblue"
|
||||
|
||||
markup:
|
||||
goldmark:
|
||||
renderer:
|
||||
unsafe: true
|
||||
|
||||
outputFormats:
|
||||
privacypolicy:
|
||||
baseName: "privacypolicy"
|
||||
isPlainText: false
|
||||
isHTML: true
|
||||
permalinkable: true
|
||||
suffix: "html"
|
||||
mediaType: "text/html"
|
|
@ -3,12 +3,16 @@ title: blueROCK
|
|||
layout: appitem
|
||||
title: blueROCK
|
||||
heroClasses: 'overlay-dark text-light hero-tiny'
|
||||
image: images/apps/bluerock.png
|
||||
imagesDir: images/apps/bluerock
|
||||
links:
|
||||
googleplay: 'https://play.google.com/store/apps/details?id=com.itsblue.blueROCK'
|
||||
appstore: 'https://apps.apple.com/de/app/bluerock/id1503699996?app=itunes&ign-mpt=uo%3D4'
|
||||
opensource: 'https://itsblue.dev/dorian/blueROCK'
|
||||
privacyPolicy: "While you're using blueROCK Itsblue Development does not collect any of your personal data.<br>\r\n<br>\r\nHowever, digitalROCK (provider of rankings and resultservice) may collect personal data. <br>\r\nFurther information can be found in their privacy policy:<br>\r\n<a href=\"https://www.digitalrock.de/?load=kontakt.php%3Fprivacy-policy\" target=\"blank\">https://www.digitalrock.de/?load=kontakt.php%3Fprivacy-policy</a>"
|
||||
privacyPolicy: |
|
||||
While you're using blueROCK Itsblue Development does not collect any of your personal data.
|
||||
outputs:
|
||||
- html
|
||||
- privacypolicy
|
||||
|
||||
menu:
|
||||
main:
|
||||
|
@ -16,8 +20,10 @@ menu:
|
|||
name: blueROCK
|
||||
weight: 1
|
||||
parent: Apps
|
||||
|
||||
aliases: ["/index.php/apps/bluerock"]
|
||||
---
|
||||
|
||||
blueROCK is an app to view climbing results from [digitalrock](https://digitalrock.de) comfortable on the go.
|
||||
|
||||
<!--more-->
|
||||
<!--more-->
|
||||
|
|
|
@ -1,16 +1,20 @@
|
|||
---
|
||||
title: Fannyapp
|
||||
layout: appitem
|
||||
title: Fannyapp
|
||||
heroClasses: 'overlay-dark text-light hero-tiny'
|
||||
heroImageParallax: true
|
||||
heroAlign: center
|
||||
image: images/apps/fannyapp.png
|
||||
imagesDir: images/apps/fannyapp
|
||||
links:
|
||||
googleplay: 'https://play.google.com/store/apps/details?id=com.itsblue.flgvertretung'
|
||||
appstore: 'https://apps.apple.com/de/app/fannyapp/id1495583845'
|
||||
opensource: 'https://itsblue.dev/dorian/fanny-app'
|
||||
privacyPolicy: "While you're using the fannyapp, Itsblue Development does not collect any of your personal data.<br>\r\n<br>\r\nHowever, Treffpunkt Fanny e.V. (provider of foodplan data) may collect personal data. <br>\r\nFurther information can be found in their privacy policy:<br>\r\n<a href=\"http://treffpunkt-fanny.de/datenschutzerklaerung.html\" target=\"blank\">http://treffpunkt-fanny.de/datenschutzerklaerung.html</a>"
|
||||
googleplay: "https://play.google.com/store/apps/details?id=com.itsblue.flgvertretung"
|
||||
appstore: "https://apps.apple.com/de/app/fannyapp/id1495583845"
|
||||
opensource: "https://itsblue.dev/dorian/fanny-app"
|
||||
privacyPolicy: |
|
||||
While you're using the Fannyapp Itsblue Development does not collect any of your personal data.<br>
|
||||
<br>
|
||||
However, Treffpunkt Fanny e.V. (provider of foodplan data) may collect personal data.<br>
|
||||
Further information can be found in their privacy policy:<br>
|
||||
<a href=\"http://www.treffpunkt-fanny.de/index.php/datenschutzerklaerung\" target=\"blank\">http://www.treffpunkt-fanny.de/index.php/datenschutzerklaerung</a>
|
||||
outputs:
|
||||
- html
|
||||
- privacypolicy
|
||||
|
||||
menu:
|
||||
main:
|
||||
|
@ -20,9 +24,23 @@ menu:
|
|||
parent: Apps
|
||||
---
|
||||
|
||||
The Fannyapp is an app designed for a school in Stuttgart (Germany).
|
||||
The Fannyapp was our first public app and the reason we decided to start publishing apps for Apple devices.
|
||||
|
||||
<!--more-->
|
||||
|
||||
Find out more over here:
|
||||
[http://www.fanny-leicht.de/j34/index.php/aktuelles/fanny-app](http://www.fanny-leicht.de/j34/index.php/aktuelles/fanny-app)
|
||||
##### What it is now
|
||||
|
||||
It is a simple app for the mensa of my former highschool, [Treffpunkt Fanny](https://treffpunkt-fanny.de), which shows the meals being served in the next ten days.
|
||||
To accomplish this, we also wrote a php script which parses the [excel table](http://www.treffpunkt-fanny.de/images/stories/dokumente/Essensplaene/current.xlsx), which Treffpunkt Fanny uses to keep track which meals will be served, and turns it into a [REST-API](http://www.treffpunkt-fanny.de/images/stories/dokumente/Essensplaene/api/TFfoodplanAPI.php). The source code of that php script can be found on [GitHub](https://github.com/Fanny-Leicht-Gymnasium/TFfoodplan).
|
||||
|
||||
##### What it used to be
|
||||
|
||||
Back when I still went to the Fanny-Leicht-Gymnasium, the Fannyapp used to be more than just a meal-plan. It showed events like "The maths class today at 7:30am is cancelled", or "The biology class today at 3:30pm is moved to a diffrent room". The last three screenshots are from back when it could still do that.
|
||||
I'd like to give a little background on that:
|
||||
At that time, this so-called "substitution plan" was only available as an ugly pdf at the schools website. It was very annoying to read on a phone, as it was small text and always contained all events for all grades. The app was able to filter the eventy by grade and group (see last screenshot), which made it much more convenient to read.
|
||||
Also, users had to login to the website every time, since it used plain old http basic authentication. The app could just remember the username and password.
|
||||
At that time, I was also maintaining the schools main website. Since I found the http basic system very annoying and outdated, the authentication was fully migrated to Joomla (the CMS we were using) on my initiative.
|
||||
That opened up more possibilities, since I was now able to use Joomlas plugin system to write a [plugin](https://github.com/Fanny-Leicht-Gymnasium/JoomlaFannySubstitutionPlan) which converted the pdf to an easy to parse REST-API.
|
||||
As you can see, I spent lots of time to develop all of this, and it was my first public project that was actually useful.
|
||||
|
||||
So what happened? It's pretty simple actually: The school decided to purchase the commercially available app "Untis mobile" and therefore, my app was no longer needed and truned into a meal-plan.
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
---
|
||||
title: 'Led Display Controller'
|
||||
layout: appitem
|
||||
heroClasses: 'overlay-dark text-light hero-tiny'
|
||||
image: images/apps/ledDisplayController.png
|
||||
imagesDir: images/apps/leddisplaycontroller
|
||||
links:
|
||||
googleplay: 'https://play.google.com/store/apps/details?id=de.itsblue.LedDisplayController'
|
||||
opensource: 'https://itsblue.dev/itsblue-development/LedDisplay'
|
||||
privacyPolicy: 'While you are using the Led Display Controller app, Itsblue Development does not collect any of your personal data.'
|
||||
outputs:
|
||||
- html
|
||||
- privacypolicy
|
||||
|
||||
menu:
|
||||
main:
|
||||
|
|
|
@ -2,19 +2,24 @@
|
|||
title: 'Speed Climbing Reaction Trainer'
|
||||
layout: appitem
|
||||
heroClasses: 'overlay-dark text-light hero-tiny'
|
||||
image: images/apps/scstwrt.png
|
||||
imagesDir: images/apps/scrt
|
||||
links:
|
||||
googleplay: 'https://play.google.com/store/apps/details?id=com.itsblue.SpeedClimbingReactionTrainer'
|
||||
appstore: 'https://apps.apple.com/de/app/speed-climbing-reactiontrainer/id1527603031'
|
||||
opensource: 'https://itsblue.dev/ScStw/reaction-trainer'
|
||||
privacyPolicy: 'While you are using the Speed Climbing Reaction Trainer app, Itsblue Development does not collect any of your personal data.'
|
||||
|
||||
outputs:
|
||||
- html
|
||||
- privacypolicy
|
||||
|
||||
menu:
|
||||
main:
|
||||
title: Speed Climbing Reaction Trainer
|
||||
name: Speed Climbing Reaction Trainer
|
||||
weight: 3
|
||||
parent: Apps
|
||||
|
||||
aliases: ["/index.php/apps/speed-climbing-stopwatch-reaction-trainer"]
|
||||
---
|
||||
|
||||
The Speed Climbing Reaction Trainer is an app to train your reaction time to the IFSC speed climbing start signal.
|
||||
|
|
|
@ -1,20 +1,25 @@
|
|||
---
|
||||
title: 'Speed Climbing Stopwatch App'
|
||||
title: 'Speed Climbing Stopwatch'
|
||||
layout: appitem
|
||||
heroClasses: 'overlay-dark text-light hero-tiny'
|
||||
image: images/apps/scstw.png
|
||||
imagesDir: images/apps/scstw
|
||||
links:
|
||||
googleplay: 'https://play.google.com/store/apps/details?id=com.itsblue.speedclimbing_stopwatch'
|
||||
appstore: 'https://apps.apple.com/de/app/speed-climbing-stopwatch/id1527590772'
|
||||
opensource: 'https://itsblue.dev/scstw/app'
|
||||
privacyPolicy: 'While you are using the Speed Climbing Stopwatch app, Itsblue Development does not collect any of your personal data.'
|
||||
|
||||
outputs:
|
||||
- html
|
||||
- privacypolicy
|
||||
|
||||
menu:
|
||||
main:
|
||||
title: Speed Climbing Stopwatch App
|
||||
name: Speed Climbing Stopwatch App
|
||||
weight: 2
|
||||
parent: Apps
|
||||
|
||||
aliases: ["/index.php/apps/speed-climbing-stopwatch-app"]
|
||||
---
|
||||
|
||||
The speed climbing stopwatch app is a simple and lightweight stopwatch app that plays the official IFSC start signal before beginning to stop the time.
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: redirect
|
||||
redirectUrl: "/apps/bluerock"
|
||||
redirectDelay: "0"
|
||||
---
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: redirect
|
||||
redirectUrl: "/apps/scstw"
|
||||
redirectDelay: "0"
|
||||
---
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: redirect
|
||||
redirectUrl: "/apps/scrt"
|
||||
redirectDelay: "0"
|
||||
---
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
layout: redirect
|
||||
redirectUrl: "/scstw?ref=ScStwApp"
|
||||
redirectDelay: "0"
|
||||
---
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
title: Projects
|
||||
layout: blog
|
||||
redirectUrl: "reader-clock"
|
||||
bodyClasses: 'title-h1h2 header-animated sticky-footer'
|
||||
|
||||
menu:
|
||||
main:
|
||||
title: Projects
|
||||
name: Projects
|
||||
weight: 2
|
||||
---
|
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
title: 'LED-Display'
|
||||
layout: "modular"
|
||||
bodyClasses: 'title-h1h2 header-fixed header-animated header-dark header-transparent sticky-footer'
|
||||
modularDataDir: "led-display"
|
||||
image: images/led-display/front-on.jpg
|
||||
summary: "The Itsblue LED-Display provides an easy way to show off messages."
|
||||
|
||||
menu:
|
||||
main:
|
||||
title: LED-Display
|
||||
name: LED-Display
|
||||
weight: 2
|
||||
parent: Projects
|
||||
---
|
||||
|
||||
# LED-Display
|
||||
|
||||
{{% contactForm %}}
|
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
title: 'Reader Clock'
|
||||
layout: "modular"
|
||||
bodyClasses: 'title-h1h2 header-fixed header-animated header-dark header-transparent sticky-footer'
|
||||
modularDataDir: "reader-clock"
|
||||
image: images/reader-clock/front.jpg
|
||||
summary: "The Reader-Clock is a digital clock which tells the time by showing a quote from an actual book."
|
||||
|
||||
menu:
|
||||
main:
|
||||
title: Reader Clock
|
||||
name: Reader Clock
|
||||
weight: 2
|
||||
parent: Projects
|
||||
---
|
||||
|
||||
# Want to get your own?
|
||||
\
|
||||
\
|
||||
<a href="https://www.etsy.com/de/listing/1153472132/readerclock-die-uhrzeit-mal-ganz-anders" class="btn btn-primary btn-lg">Check out our Etsy store</a>
|
|
@ -2,14 +2,18 @@
|
|||
title: 'Speed Climbing Stopwatch'
|
||||
layout: "modular"
|
||||
bodyClasses: 'title-h1h2 header-fixed header-animated header-dark header-transparent sticky-footer'
|
||||
menu: "main"
|
||||
modularDataDir: "scstw"
|
||||
image: "images/scstw/BaseStation.jpg"
|
||||
summary: "The Speed Climbing Stopwatch (aka ScStw) is a modern speed climbing timing system that just works. "
|
||||
|
||||
menu:
|
||||
main:
|
||||
title: Speed Climbing Stopwatch
|
||||
name: Speed Climbing Stopwatch
|
||||
weight: 2
|
||||
parent: Projects
|
||||
|
||||
aliases: ["/scstw", "/index.php/speed-climbing"]
|
||||
---
|
||||
## What next?
|
||||
|
|
@ -1,37 +1,77 @@
|
|||
00-carousel:
|
||||
enabled: true
|
||||
modularLayout: carousel
|
||||
classes: "text-light overlay-dark"
|
||||
items:
|
||||
- image: "images/scstw/hero.jpeg"
|
||||
positionY: 80
|
||||
content: |
|
||||
## The Speed Climbing Stopwatch
|
||||
Modern speed climbing timing right at your fingertips
|
||||
links:
|
||||
- text: "Learn more"
|
||||
href: "projects/scstw"
|
||||
classes: "btn btn-primary"
|
||||
|
||||
- image: "images/reader-clock/cnc.jpg"
|
||||
positionY: 80
|
||||
content: |
|
||||
## Introducing: The Reader-Clock
|
||||
A beautiful, handcrafted clock, which shows the time in form of quotes from actual books
|
||||
links:
|
||||
- text: "Check it out"
|
||||
href: "projects/reader-clock"
|
||||
classes: "btn btn-primary"
|
||||
|
||||
- image: "images/led-display/front-on.jpg"
|
||||
positionY: 50
|
||||
content: |
|
||||
## The Itsblue LED-Display
|
||||
A simple display to show off your messages - wherever you are
|
||||
links:
|
||||
- text: "More details"
|
||||
href: "projects/led-display"
|
||||
classes: "btn btn-primary"
|
||||
|
||||
01-hero:
|
||||
enabled: false
|
||||
modularLayout: hero
|
||||
classes: 'text-light overlay-dark'
|
||||
classes: "text-light overlay-dark"
|
||||
image: "images/reader-clock/cnc.jpg"
|
||||
positionY: 80
|
||||
image: "images/home/Hero.jpg"
|
||||
imageParallax: true
|
||||
content: "# Welcome \n ## Itsblue Development"
|
||||
content: |
|
||||
## Introducing: The Reader-Clock
|
||||
A beautiful, handcrafted clock, which shows the time in form of quotes from actual books
|
||||
links:
|
||||
- text: "Check it out"
|
||||
href: "projects/reader-clock"
|
||||
classes: "btn btn-primary"
|
||||
|
||||
02-highlights:
|
||||
modularLayout: features
|
||||
classes: offset-box
|
||||
smallColumns: false
|
||||
features:
|
||||
-
|
||||
icon: 'fas fa-code'
|
||||
- icon: "fas fa-code"
|
||||
header: Coding
|
||||
-
|
||||
icon: 'fas fa-cubes'
|
||||
header: '3D printing'
|
||||
-
|
||||
icon: 'fas fa-microchip'
|
||||
|
||||
- icon: "fas fa-cubes"
|
||||
header: "3D printing"
|
||||
|
||||
- icon: "fas fa-microchip"
|
||||
header: Microcontrollers
|
||||
-
|
||||
icon: 'fas fa-bahai'
|
||||
header: 'Laser cutting'
|
||||
-
|
||||
icon: 'far fa-file'
|
||||
|
||||
- icon: "fas fa-bahai"
|
||||
header: "Laser cutting"
|
||||
|
||||
- icon: "far fa-file"
|
||||
header: Foiling
|
||||
-
|
||||
icon: 'fas fa-server'
|
||||
header: 'Server management'
|
||||
|
||||
- icon: "fas fa-server"
|
||||
header: "Server management"
|
||||
|
||||
content: |
|
||||
# What's our field of activity?
|
||||
# Our field of activity
|
||||
## **everything around electronics**
|
||||
|
||||
03-headlineCurrentProjects:
|
||||
|
@ -48,7 +88,7 @@
|
|||
|
||||
Professional time measuring often is a hassle. The Speed Climbing Stopwatch (aka ScStw) aims to change that. It is a modern speed climbing timing system that just works.
|
||||
<br />
|
||||
<a href="/scstw" class="btn btn-primary btn-lg">Find out more</a>
|
||||
<a href="scstw" class="btn btn-primary btn-lg">Find out more</a>
|
||||
|
||||
05-apps:
|
||||
modularLayout: text
|
||||
|
@ -59,32 +99,31 @@
|
|||
|
||||
We have developed some apps that might come in handy if you are interested in climbing.
|
||||
<br />
|
||||
<a href="/apps" class="btn btn-primary btn-lg">Find out more</a>
|
||||
<a href="apps" class="btn btn-primary btn-lg">Find out more</a>
|
||||
|
||||
06-links:
|
||||
modularLayout: features
|
||||
small: true
|
||||
features:
|
||||
-
|
||||
icon: 'fab fa-gitlab'
|
||||
header: 'Our GitLab'
|
||||
text: 'We use GitLab for most of our projects, you can explore them here.'
|
||||
url: 'https://itsblue.dev/explore'
|
||||
-
|
||||
icon: 'fab fa-google-play'
|
||||
header: 'Google Play'
|
||||
text: 'This is our developer account on Google Play where you can find all of our apps for android.'
|
||||
url: 'https://play.google.com/store/apps/developer?id=Itsblue+Development'
|
||||
-
|
||||
icon: 'fab fa-app-store-ios'
|
||||
header: 'App Store'
|
||||
text: 'This is our developer account on the App Store where you can find all of our apps for IOS.'
|
||||
url: 'https://apps.apple.com/de/developer/dorian-zedler/id1666039119'
|
||||
-
|
||||
icon: 'fas fa-pencil-ruler'
|
||||
header: 'MakerLab Murnau'
|
||||
text: 'This is where our hardware development and production takes place.'
|
||||
url: 'https://makerlab-murnau.de/'
|
||||
- icon: "fab fa-git-alt"
|
||||
header: "blue.code"
|
||||
text: "This is where our open source projects live, you can explore them here."
|
||||
url: "https://itsblue.dev/explore"
|
||||
|
||||
- icon: "fab fa-google-play"
|
||||
header: "Google Play"
|
||||
text: "This is our developer account on Google Play where you can find all of our apps for android."
|
||||
url: "https://play.google.com/store/apps/developer?id=Itsblue+Development"
|
||||
|
||||
- icon: "fab fa-app-store-ios"
|
||||
header: "App Store"
|
||||
text: "This is our developer account on the App Store where you can find all of our apps for IOS."
|
||||
url: "https://apps.apple.com/de/developer/dorian-zedler/id1666039119"
|
||||
- icon: "fas fa-pencil-ruler"
|
||||
header: "MakerLab Murnau"
|
||||
text: "This is where our hardware development and production takes place."
|
||||
url: "https://makerlab-murnau.de/"
|
||||
|
||||
content: |
|
||||
# Links
|
||||
## **Some things you might find interesting...**
|
||||
## **Some things you might find interesting...**
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
01-hero:
|
||||
modularLayout: hero
|
||||
classes: 'text-light overlay-dark-gradient'
|
||||
positionY: 80
|
||||
image: "images/led-display/front-on.jpg"
|
||||
imageParallax: true
|
||||
content: |
|
||||
# The LED-Display
|
||||
|
||||
The Itsblue LED-Display provides an easy way to show off messages.
|
||||
|
||||
02-display:
|
||||
modularLayout: text
|
||||
imageAlign: right
|
||||
image: images/led-display/close-up.jpg
|
||||
content: |
|
||||
## Powered by RGB
|
||||
|
||||
The display consists of 384 individually adressable RGB LEDs. together, they form a powerful matrix that can be used to display anything you can imagine.
|
||||
|
||||
04-bus:
|
||||
modularLayout: text
|
||||
align: "left"
|
||||
image: images/led-display/omobi-bus.jpg
|
||||
content: |
|
||||
## Used every day
|
||||
|
||||
Our displays are in active use by Omobi busses in southern Bavaria.
|
||||
<br />
|
||||
<a href="https://www.omobi.de" target="_blank" class="">More about omobi <i class="fa fa-angle-right"></i></a>
|
||||
|
||||
05-app:
|
||||
modularLayout: text
|
||||
align: "right"
|
||||
image: images/apps/leddisplaycontroller/banner.png
|
||||
content: |
|
||||
## Easy to configure
|
||||
|
||||
Intuitive configuration a feature of itsblue products. The LED display can be easily configured through the led display controller app.
|
||||
The password protection feature also makes sure, that no unauthorized access can occur.
|
||||
<br />
|
||||
<a href="../../apps/leddisplaycontroller/" class="">Get the app <i class="fa fa-angle-right"></i></a>
|
|
@ -0,0 +1,107 @@
|
|||
01-hero:
|
||||
modularLayout: hero
|
||||
classes: "text-light overlay-dark-gradient"
|
||||
positionY: 80
|
||||
image: "images/reader-clock/cnc.jpg"
|
||||
imageParallax: true
|
||||
content: |
|
||||
# The Reader-Clock
|
||||
## A new way to view the time
|
||||
|
||||
The Reader-Clock is a digital clock which tells the time by showing a quote from an actual book.
|
||||
|
||||
02-highlights:
|
||||
disabled: true
|
||||
modularLayout: features
|
||||
classes: offset-box
|
||||
smallColumns: false
|
||||
features:
|
||||
- icon: "fas fa-tachometer-alt"
|
||||
header: "Super simple"
|
||||
text: "Simplicity and ease of use is one of the major features of the ScStw."
|
||||
|
||||
- icon: "fa fa-suitcase"
|
||||
header: "Super portable"
|
||||
text: "The ScStw literally fits in your suitcase!"
|
||||
|
||||
- icon: "fas fa-clock"
|
||||
header: "Easy to deploy"
|
||||
text: "The ScStw can be fully deployed within 15 minutes."
|
||||
|
||||
- icon: "fas fa-wifi"
|
||||
header: "Fully wireless"
|
||||
text: "Stop fighting with cables and start climbing!"
|
||||
|
||||
- icon: "fa fa-money-bill-alt"
|
||||
header: Affordable
|
||||
text: "You don't need to spend an arm or a leg for precise timing."
|
||||
|
||||
- icon: "fas fa-medal"
|
||||
header: "High quality"
|
||||
text: "All ScStw devices are handmade in Germany!"
|
||||
|
||||
content: |
|
||||
# Why ScStw?
|
||||
## **keep it simple**
|
||||
|
||||
Professional time measuring often is a hassle. The ScStw aims to change that.
|
||||
|
||||
03-display:
|
||||
modularLayout: text
|
||||
imageAlign: right
|
||||
image: images/reader-clock/front.jpg
|
||||
content: |
|
||||
## E-Ink Display
|
||||
|
||||
The Reader-Clock uses an E-Ink display which is easy on the eye and looks like actual paper.
|
||||
|
||||
04-case:
|
||||
modularLayout: text
|
||||
align: "left"
|
||||
image: images/reader-clock/cnc.jpg
|
||||
content: |
|
||||
## Handcrafted in Bavaria
|
||||
|
||||
The case of the Reader-Clock is a handcrafted piece of art, made in Bavaria. Every piece is unique...
|
||||
|
||||
05-diy-kit:
|
||||
modularLayout: text
|
||||
imageAlign: right
|
||||
image: images/reader-clock/diy-kit.jpg
|
||||
content: |
|
||||
## Do it yourself!
|
||||
|
||||
The Reader-Clock comes a DIY-Kit. It's easy to assemble and only requires some soldering skills.
|
||||
|
||||
07-pricing:
|
||||
disabled: true
|
||||
modularLayout: pricing
|
||||
containerType: panel
|
||||
products:
|
||||
- name: Base
|
||||
subtitle: All parts you need to build your Reader-Clock
|
||||
image: images/reader-clock/diy-kit.jpg
|
||||
price: 120€
|
||||
|
||||
- name: Engraving on the front
|
||||
subtitle: A custom engraving on front
|
||||
image: images/reader-clock/diy-kit.jpg
|
||||
price: 10€
|
||||
|
||||
- name: Engraving on the back
|
||||
subtitle: A custom engraving on the back
|
||||
image: images/reader-clock/diy-kit.jpg
|
||||
price: 30€
|
||||
|
||||
- name: Custom wood
|
||||
subtitle: Send us your wood, and we turn it into a case
|
||||
image: images/reader-clock/diy-kit.jpg
|
||||
price: free
|
||||
|
||||
content: |
|
||||
# Pricing
|
||||
|
||||
08-contact:
|
||||
disabled: false
|
||||
modularLayout: text
|
||||
content: "@@PageContent@@"
|
|
@ -1,6 +1,6 @@
|
|||
01-hero:
|
||||
modularLayout: hero
|
||||
classes: 'text-light overlay-dark-gradient'
|
||||
classes: "text-light overlay-dark-gradient"
|
||||
positionY: 80
|
||||
image: "images/scstw/hero.jpeg"
|
||||
imageParallax: true
|
||||
|
@ -15,30 +15,29 @@
|
|||
classes: offset-box
|
||||
smallColumns: false
|
||||
features:
|
||||
-
|
||||
icon: 'fas fa-tachometer-alt'
|
||||
header: 'Super simple'
|
||||
text: 'Simplicity and ease of use is one of the major features of the ScStw.'
|
||||
-
|
||||
icon: 'fa fa-suitcase'
|
||||
header: 'Super portable'
|
||||
text: 'The ScStw literally fits in your suitcase!'
|
||||
-
|
||||
icon: 'fas fa-clock'
|
||||
header: 'Easy to deploy'
|
||||
text: 'The ScStw can be fully deployed within 15 minutes.'
|
||||
-
|
||||
icon: 'fas fa-wifi'
|
||||
header: 'Fully wireless'
|
||||
text: 'Stop fighting with cables and start climbing!'
|
||||
-
|
||||
icon: 'fa fa-money-bill-alt'
|
||||
- icon: "fas fa-tachometer-alt"
|
||||
header: "Super simple"
|
||||
text: "Simplicity and ease of use is one of the major features of the ScStw."
|
||||
|
||||
- icon: "fa fa-suitcase"
|
||||
header: "Super portable"
|
||||
text: "The ScStw literally fits in your suitcase!"
|
||||
|
||||
- icon: "fas fa-clock"
|
||||
header: "Easy to deploy"
|
||||
text: "The ScStw can be fully deployed within 15 minutes."
|
||||
|
||||
- icon: "fas fa-wifi"
|
||||
header: "Fully wireless"
|
||||
text: "Stop fighting with cables and start climbing!"
|
||||
|
||||
- icon: "fa fa-money-bill-alt"
|
||||
header: Affordable
|
||||
text: 'You don''t need to spend an arm or a leg for precise timing.'
|
||||
-
|
||||
icon: 'fas fa-medal'
|
||||
header: 'High quality'
|
||||
text: 'All ScStw devices are handmade in Germany!'
|
||||
text: "You don't need to spend an arm or a leg for precise timing."
|
||||
|
||||
- icon: "fas fa-medal"
|
||||
header: "High quality"
|
||||
text: "All ScStw devices are handmade in Germany!"
|
||||
|
||||
content: |
|
||||
# Why ScStw?
|
||||
|
@ -90,26 +89,22 @@
|
|||
modularLayout: pricing
|
||||
containerType: panel
|
||||
products:
|
||||
-
|
||||
name: Basestation
|
||||
- name: Basestation
|
||||
subtitle: Required once
|
||||
image: images/scstw/BaseStation.jpg
|
||||
price: 700€
|
||||
|
||||
-
|
||||
name: Toppad
|
||||
- name: Toppad
|
||||
subtitle: Required once per lane
|
||||
image: images/scstw/Toppad1.jpg
|
||||
price: 325€
|
||||
|
||||
-
|
||||
name: Startpad
|
||||
- name: Startpad
|
||||
subtitle: Required once per lane
|
||||
image: images/scstw/Startpad1.jpg
|
||||
price: 325€
|
||||
|
||||
-
|
||||
name: Storage box
|
||||
- name: Storage box
|
||||
subtitle: Optional
|
||||
image: images/scstw/Box.jpg
|
||||
price: 350€
|
||||
|
@ -119,4 +114,4 @@
|
|||
|
||||
08-contact:
|
||||
modularLayout: text
|
||||
content: "@@PageContent@@"
|
||||
content: "@@PageContent@@"
|
||||
|
|
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 113 KiB |
After Width: | Height: | Size: 124 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 89 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 186 KiB |
After Width: | Height: | Size: 549 KiB |
After Width: | Height: | Size: 185 KiB |
After Width: | Height: | Size: 537 KiB |
After Width: | Height: | Size: 104 KiB |
After Width: | Height: | Size: 174 KiB |
After Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 119 KiB |
After Width: | Height: | Size: 127 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 105 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 120 KiB |
After Width: | Height: | Size: 142 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 75 KiB |
After Width: | Height: | Size: 236 KiB |
After Width: | Height: | Size: 139 KiB |
|
@ -1,21 +0,0 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2018 Trilby Media
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
|
@ -1 +0,0 @@
|
|||
sass --watch --style compressed --sourcemap=none scss:css-compiled
|
|
@ -1,174 +0,0 @@
|
|||
name: Itsblue
|
||||
version: 2.0.2
|
||||
description: New Grav Default Theme
|
||||
icon: microchip
|
||||
author:
|
||||
name: Team Grav
|
||||
email: devs@getgrav.org
|
||||
url: http://getgrav.org
|
||||
homepage: https://github.com/getgrav/grav-theme-itsblue
|
||||
demo: https://demo.getgrav.org/onepage-skeleton
|
||||
keywords: itsblue, spectre, theme, core, modern, fast, responsive, html5, css3
|
||||
bugs: https://github.com/getgrav/grav-theme-itsblue/issues
|
||||
license: MIT
|
||||
|
||||
dependencies:
|
||||
- { name: grav, version: '>=1.6.0' }
|
||||
|
||||
form:
|
||||
validation: loose
|
||||
|
||||
fields:
|
||||
production-mode:
|
||||
type: toggle
|
||||
label: Production mode
|
||||
help: When enabled, Itsblue will render with minified CSS
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
grid-size:
|
||||
type: select
|
||||
label: Grid size
|
||||
help: The maximum width of the theme
|
||||
size: small
|
||||
options:
|
||||
'': None (full width)
|
||||
grid-xl: Extra Large
|
||||
grid-lg: Large
|
||||
grid-md: Medium
|
||||
|
||||
header_section:
|
||||
type: section
|
||||
title: Header Defaults
|
||||
underline: true
|
||||
|
||||
custom_logo:
|
||||
type: file
|
||||
label: Custom Logo
|
||||
size: large
|
||||
destination: 'theme://images/logo'
|
||||
multiple: false
|
||||
markdown: true
|
||||
description: Will be used instead of default logo `theme://images/grav-logo.svg`
|
||||
accept:
|
||||
- image/*
|
||||
|
||||
custom_logo_mobile:
|
||||
type: file
|
||||
label: Mobile Custom Logo
|
||||
size: large
|
||||
destination: 'theme://images/logo'
|
||||
multiple: false
|
||||
accept:
|
||||
- image/*
|
||||
|
||||
header-fixed:
|
||||
type: toggle
|
||||
label: Fixed header
|
||||
help: When enabled, the header will be fixed at the top of the browser
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header-animated:
|
||||
type: toggle
|
||||
label: Animated
|
||||
help: When enabled, the header will animate to a smaller header when scrolling
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header-dark:
|
||||
type: toggle
|
||||
label: Dark Style
|
||||
help: When enabled, a dark-friendly style will be used
|
||||
highlight: 0
|
||||
default: 0
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header-transparent:
|
||||
type: toggle
|
||||
label: Transparent
|
||||
help: When enabled, a transparent style will be used
|
||||
highlight: 0
|
||||
default: 0
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
footer_section:
|
||||
type: section
|
||||
title: Footer Defaults
|
||||
underline: true
|
||||
|
||||
sticky-footer:
|
||||
type: toggle
|
||||
label: Sticky footer
|
||||
help: When enabled, the footer will be sticky at the bottom of the browser
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
blog_section:
|
||||
type: section
|
||||
title: Blog Defaults
|
||||
underline: true
|
||||
|
||||
blog-page:
|
||||
type: text
|
||||
label: Blog Page
|
||||
help: The route to the blog page when working with blog sidebar
|
||||
size: medium
|
||||
default: '/blog'
|
||||
|
||||
spectre_section:
|
||||
type: section
|
||||
title: Spectre.css Options
|
||||
underline: true
|
||||
|
||||
spectre.exp:
|
||||
type: toggle
|
||||
label: Experimentals CSS
|
||||
help: When enabled, the `spectre-exp.css` file will be included
|
||||
highlight: 0
|
||||
default: 0
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
spectre.icons:
|
||||
type: toggle
|
||||
label: Icons CSS
|
||||
help: When enabled, the `spectre-icons.css` file will be included
|
||||
highlight: 0
|
||||
default: 0
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
|
@ -1,156 +0,0 @@
|
|||
extends@: default
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
|
||||
fields:
|
||||
blog:
|
||||
type: tab
|
||||
title: Blog Appitem
|
||||
|
||||
fields:
|
||||
|
||||
|
||||
links:
|
||||
type: section
|
||||
title: Links
|
||||
underline: true
|
||||
|
||||
header.links.googleplay:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: URL for GooglePlay
|
||||
size: x-large
|
||||
|
||||
header.links.appstore:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: URL for AppStore
|
||||
size: x-large
|
||||
|
||||
header.links.opensource:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: URL for project repository
|
||||
size: x-large
|
||||
|
||||
|
||||
privacy-policy:
|
||||
type: section
|
||||
title: Privacy policy
|
||||
underline: true
|
||||
|
||||
header.privacyPolicy:
|
||||
type: editor
|
||||
autofocus: true
|
||||
codemirror:
|
||||
mode: 'md'
|
||||
indentUnit: 4
|
||||
autofocus: true
|
||||
indentWithTabs: false
|
||||
lineNumbers: true
|
||||
styleActiveLine: true
|
||||
gutters: ['CodeMirror-lint-markers']
|
||||
lint: true
|
||||
|
||||
header_options:
|
||||
type: section
|
||||
title: Header Options
|
||||
underline: true
|
||||
|
||||
header.continue_link:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: DF Style Link
|
||||
help: Daring Fireball style title link
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header.header_image:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: Display Header Image
|
||||
help: Enabled displaying of a header image
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
|
||||
header.header_image_file:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Image File
|
||||
help: image filename that exists in the page folder. If not provided, will use the first image found.
|
||||
placeholder: "For example: myimage.jpg"
|
||||
|
||||
header.header_image_width:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Image Width
|
||||
size: small
|
||||
help: Header width in px
|
||||
placeholder: Default is 900
|
||||
validate:
|
||||
type: int
|
||||
min: 0
|
||||
max: 5000
|
||||
|
||||
header.header_image_height:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Image Height
|
||||
size: small
|
||||
help: Header height in px
|
||||
placeholder: Default is 300
|
||||
validate:
|
||||
type: int
|
||||
min: 0
|
||||
max: 5000
|
||||
|
||||
summary:
|
||||
type: section
|
||||
title: Summary
|
||||
underline: true
|
||||
|
||||
header.summary.enabled:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: Summary
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
|
||||
header.summary.format:
|
||||
type: select
|
||||
toggleable: true
|
||||
label: Format
|
||||
classes: fancy
|
||||
options:
|
||||
'short': 'Use the first occurence of delimiter or size'
|
||||
'long': 'Summary delimiter will be ignored'
|
||||
|
||||
header.summary.size:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Size
|
||||
classes: large
|
||||
placeholder: 300
|
||||
validate:
|
||||
type: int
|
||||
min: 1
|
||||
|
||||
header.summary.delimiter:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Summary delimiter
|
||||
classes: large
|
||||
placeholder: ===
|
||||
|
||||
import@:
|
||||
type: partials/blog-bits
|
|
@ -1,92 +0,0 @@
|
|||
extends@: default
|
||||
child_type: item
|
||||
|
||||
rules:
|
||||
slug:
|
||||
pattern: "[a-z][a-z0-9_-]+"
|
||||
min: 2
|
||||
max: 80
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
type: tabs
|
||||
active: 1
|
||||
|
||||
fields:
|
||||
advanced:
|
||||
fields:
|
||||
overrides:
|
||||
fields:
|
||||
header.child_type:
|
||||
default: item
|
||||
blog:
|
||||
type: tab
|
||||
title: Blog Config
|
||||
|
||||
fields:
|
||||
|
||||
content_title:
|
||||
type: spacer
|
||||
title: Content Definition
|
||||
|
||||
header.content.items:
|
||||
type: textarea
|
||||
yaml: true
|
||||
label: Items
|
||||
default: '@self.children'
|
||||
validate:
|
||||
type: yaml
|
||||
|
||||
header.content.limit:
|
||||
type: text
|
||||
label: Max Item Count
|
||||
default: 5
|
||||
validate:
|
||||
required: true
|
||||
type: int
|
||||
min: 1
|
||||
|
||||
header.content.order.by:
|
||||
type: select
|
||||
label: Order By
|
||||
default: date
|
||||
options:
|
||||
folder: Folder
|
||||
title: Title
|
||||
date: Date
|
||||
default: Default
|
||||
|
||||
header.content.order.dir:
|
||||
type: select
|
||||
label: Order
|
||||
default: desc
|
||||
options:
|
||||
asc: Ascending
|
||||
desc: Descending
|
||||
|
||||
header.content.pagination:
|
||||
type: toggle
|
||||
label: Pagination
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header.content.url_taxonomy_filters:
|
||||
type: toggle
|
||||
label: URL Taxonomy Filters
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
import@:
|
||||
type: partials/blog-bits
|
||||
context: blueprints://pages
|
|
@ -1,15 +0,0 @@
|
|||
extends@: default
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
fields:
|
||||
advanced:
|
||||
fields:
|
||||
columns:
|
||||
fields:
|
||||
column1:
|
||||
fields:
|
||||
header.body_classes:
|
||||
markdown: true
|
||||
description: 'Available classes in Quark Theme (space separated):<br />`header-fixed`, `header-animated`, `header-dark`, `header-transparent`, `sticky-footer`'
|
|
@ -1,113 +0,0 @@
|
|||
extends@: default
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
|
||||
fields:
|
||||
blog:
|
||||
type: tab
|
||||
title: Blog Item
|
||||
|
||||
fields:
|
||||
|
||||
header_options:
|
||||
type: section
|
||||
title: Header Options
|
||||
underline: true
|
||||
|
||||
header.continue_link:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: DF Style Link
|
||||
help: Daring Fireball style title link
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header.header_image:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: Display Header Image
|
||||
help: Enabled displaying of a header image
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
|
||||
header.header_image_file:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Image File
|
||||
help: image filename that exists in the page folder. If not provided, will use the first image found.
|
||||
placeholder: "For example: myimage.jpg"
|
||||
|
||||
header.header_image_width:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Image Width
|
||||
size: small
|
||||
help: Header width in px
|
||||
placeholder: Default is 900
|
||||
validate:
|
||||
type: int
|
||||
min: 0
|
||||
max: 5000
|
||||
|
||||
header.header_image_height:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Image Height
|
||||
size: small
|
||||
help: Header height in px
|
||||
placeholder: Default is 300
|
||||
validate:
|
||||
type: int
|
||||
min: 0
|
||||
max: 5000
|
||||
|
||||
summary:
|
||||
type: section
|
||||
title: Summary
|
||||
underline: true
|
||||
|
||||
header.summary.enabled:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: Summary
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
|
||||
header.summary.format:
|
||||
type: select
|
||||
toggleable: true
|
||||
label: Format
|
||||
classes: fancy
|
||||
options:
|
||||
'short': 'Use the first occurence of delimiter or size'
|
||||
'long': 'Summary delimiter will be ignored'
|
||||
|
||||
header.summary.size:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Size
|
||||
classes: large
|
||||
placeholder: 300
|
||||
validate:
|
||||
type: int
|
||||
min: 1
|
||||
|
||||
header.summary.delimiter:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Summary delimiter
|
||||
classes: large
|
||||
placeholder: ===
|
||||
|
||||
import@:
|
||||
type: partials/blog-bits
|
|
@ -1,91 +0,0 @@
|
|||
extends@: default
|
||||
|
||||
rules:
|
||||
slug:
|
||||
pattern: "[a-z][a-z0-9_-]+"
|
||||
min: 2
|
||||
max: 80
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
type: tabs
|
||||
active: 1
|
||||
|
||||
fields:
|
||||
advanced:
|
||||
fields:
|
||||
overrides:
|
||||
fields:
|
||||
header.child_type:
|
||||
default: item
|
||||
blog:
|
||||
type: tab
|
||||
title: Blog Config
|
||||
|
||||
fields:
|
||||
|
||||
content_title:
|
||||
type: spacer
|
||||
title: Content Definition
|
||||
|
||||
header.content.items:
|
||||
type: textarea
|
||||
yaml: true
|
||||
label: Items
|
||||
default: '@self.children'
|
||||
validate:
|
||||
type: yaml
|
||||
|
||||
header.content.limit:
|
||||
type: text
|
||||
label: Max Item Count
|
||||
default: 5
|
||||
validate:
|
||||
required: true
|
||||
type: int
|
||||
min: 1
|
||||
|
||||
header.content.order.by:
|
||||
type: select
|
||||
label: Order By
|
||||
default: date
|
||||
options:
|
||||
folder: Folder
|
||||
title: Title
|
||||
date: Date
|
||||
default: Default
|
||||
|
||||
header.content.order.dir:
|
||||
type: select
|
||||
label: Order
|
||||
default: desc
|
||||
options:
|
||||
asc: Ascending
|
||||
desc: Descending
|
||||
|
||||
header.content.pagination:
|
||||
type: toggle
|
||||
label: Pagination
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header.content.url_taxonomy_filters:
|
||||
type: toggle
|
||||
label: URL Taxonomy Filters
|
||||
highlight: 1
|
||||
default: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
import@:
|
||||
type: partials/blog-bits
|
||||
context: blueprints://pages
|
|
@ -1,44 +0,0 @@
|
|||
title: Features
|
||||
'@extends': default
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
fields:
|
||||
features:
|
||||
type: tab
|
||||
title: Features
|
||||
fields:
|
||||
header.class:
|
||||
type: text
|
||||
label: Layout
|
||||
default: small
|
||||
markdown: true
|
||||
description: 'There are several Hero class options that can be listed here (space separated):<br />`small`, `standard`, `offset-box`, `bg-grav`'
|
||||
size: medium
|
||||
options:
|
||||
small: Small = 4 / 3 / 2 columns
|
||||
standard: Standard = 3 / 2 / 1 columns
|
||||
offset-box: Offset Box
|
||||
|
||||
header.features:
|
||||
name: features
|
||||
type: list
|
||||
label: Features
|
||||
|
||||
fields:
|
||||
.iconFa:
|
||||
type: iconpicker
|
||||
label: Icon (Fontawesome)
|
||||
.iconBase64:
|
||||
type: text
|
||||
label: Icon (base64)
|
||||
.header:
|
||||
type: text
|
||||
label: Header
|
||||
.text:
|
||||
type: text
|
||||
label: Text
|
||||
.url:
|
||||
type: text
|
||||
label: Link
|
|
@ -1,32 +0,0 @@
|
|||
title: Hero
|
||||
'@extends': default
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
fields:
|
||||
buttons:
|
||||
type: tab
|
||||
title: Hero
|
||||
fields:
|
||||
header.hero_classes:
|
||||
type: text
|
||||
label: Hero Classes
|
||||
markdown: true
|
||||
description: 'There are several Hero class options that can be listed here (space separated):<br />`text-light`, `text-dark`, `title-h1h2`, `parallax`, `overlay-dark-gradient`, `overlay-light-gradient`, `overlay-dark`, `overlay-light`, `hero-fullscreen`, `hero-large`, `hero-medium`, `hero-small`, `hero-tiny`<br />Please consult the [Quark documentation](https://github.com/getgrav/grav-theme-quark#hero-options) for more details.'
|
||||
header.hero_image:
|
||||
type: filepicker
|
||||
label: Hero Image
|
||||
preview_images: true
|
||||
description: 'If not specified, this defaults to the first image found in the page''s folder'
|
||||
header.hero_positionY:
|
||||
type: text
|
||||
label: Image Y Position
|
||||
description: 'The initial y Position of the hero image (in percent)'
|
||||
default: 100
|
||||
validate:
|
||||
type: int
|
||||
min: 0
|
||||
max: 100
|
||||
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
title: Text
|
||||
'@extends': default
|
||||
|
||||
form:
|
||||
fields:
|
||||
tabs:
|
||||
fields:
|
||||
content:
|
||||
fields:
|
||||
header.media_order:
|
||||
label: Page Media (first one will be displayed next to your content)
|
||||
header.image_align:
|
||||
type: select
|
||||
label: Image position
|
||||
classes: fancy
|
||||
default: left
|
||||
options:
|
||||
'left': 'Left'
|
||||
'right': 'Right'
|
|
@ -1,64 +0,0 @@
|
|||
form:
|
||||
fields:
|
||||
|
||||
hero_title:
|
||||
type: spacer
|
||||
title: Hero Section
|
||||
|
||||
header.hero_classes:
|
||||
type: text
|
||||
label: Hero Classes
|
||||
markdown: true
|
||||
description: 'There are several Hero class options that can be listed here (space separated):<br />`text-light`, `text-dark`, `title-h1h2`, `parallax`, `overlay-dark-gradient`, `overlay-light-gradient`, `overlay-dark`, `overlay-light`, `hero-fullscreen`, `hero-large`, `hero-medium`, `hero-small`, `hero-tiny`<br />Please consult the [Quark documentation](https://github.com/getgrav/grav-theme-quark#hero-options) for more details.'
|
||||
|
||||
header.hero_image:
|
||||
type: filepicker
|
||||
label: Hero Image
|
||||
preview_images: true
|
||||
description: 'If not specified, this defaults to the first image found in the page''s folder'
|
||||
|
||||
toggles_title:
|
||||
type: spacer
|
||||
title: Configuration
|
||||
|
||||
header.blog_url:
|
||||
type: text
|
||||
toggleable: true
|
||||
label: Blog Route
|
||||
help: The route to the main blog page that contains the "Show ..." configuration
|
||||
default: '/blog'
|
||||
placeholder: '/blog'
|
||||
size: medium
|
||||
|
||||
header.show_sidebar:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: Show Sidebar
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header.show_breadcrumbs:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: Show Breadcrumbs
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
||||
|
||||
header.show_pagination:
|
||||
type: toggle
|
||||
toggleable: true
|
||||
label: Show Pagination
|
||||
highlight: 1
|
||||
options:
|
||||
1: PLUGIN_ADMIN.ENABLED
|
||||
0: PLUGIN_ADMIN.DISABLED
|
||||
validate:
|
||||
type: bool
|
|
@ -1,49 +0,0 @@
|
|||
.bricklayer {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-align: start;
|
||||
-webkit-align-items: flex-start;
|
||||
-ms-flex-align: start;
|
||||
align-items: flex-start;
|
||||
-webkit-box-pack: center;
|
||||
-webkit-justify-content: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-flex-wrap: wrap;
|
||||
-ms-flex-wrap: wrap;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.bricklayer-column-sizer {
|
||||
width: 100%;
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 640px) {
|
||||
.bricklayer-column-sizer {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 980px) {
|
||||
.bricklayer-column-sizer {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
/*@media screen and (min-width: 1200px) {*/
|
||||
/*.bricklayer-column-sizer {*/
|
||||
/*width: 33.33333%;*/
|
||||
/*}*/
|
||||
/*}*/
|
||||
|
||||
.bricklayer-column {
|
||||
-webkit-box-flex: 1;
|
||||
-webkit-flex: 1;
|
||||
-ms-flex: 1;
|
||||
flex: 1;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
ScStw {
|
||||
background-color: red;
|
||||
}
|
|
@ -1,56 +0,0 @@
|
|||
<?php
|
||||
namespace Grav\Theme;
|
||||
|
||||
use Grav\Common\Grav;
|
||||
use Grav\Common\Theme;
|
||||
|
||||
class Itsblue extends Theme
|
||||
{
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return [
|
||||
'onThemeInitialized' => ['onThemeInitialized', 0],
|
||||
'onTwigLoader' => ['onTwigLoader', 0],
|
||||
'onTwigInitialized' => ['onTwigInitialized', 0],
|
||||
];
|
||||
}
|
||||
|
||||
public function onThemeInitialized()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Add images to twig template paths to allow inclusion of SVG files
|
||||
public function onTwigLoader()
|
||||
{
|
||||
$theme_paths = Grav::instance()['locator']->findResources('theme://images');
|
||||
foreach($theme_paths as $images_path) {
|
||||
$this->grav['twig']->addPath($images_path, 'images');
|
||||
}
|
||||
}
|
||||
|
||||
public function onTwigInitialized()
|
||||
{
|
||||
$twig = $this->grav['twig'];
|
||||
|
||||
$form_class_variables = [
|
||||
// 'form_outer_classes' => 'form-horizontal',
|
||||
'form_button_outer_classes' => 'button-wrapper',
|
||||
'form_button_classes' => 'btn',
|
||||
'form_errors_classes' => '',
|
||||
'form_field_outer_classes' => 'form-group',
|
||||
'form_field_outer_label_classes' => 'form-label-wrapper',
|
||||
'form_field_label_classes' => 'form-label',
|
||||
// 'form_field_outer_data_classes' => 'col-9',
|
||||
'form_field_input_classes' => 'form-input',
|
||||
'form_field_textarea_classes' => 'form-input',
|
||||
'form_field_select_classes' => 'form-select',
|
||||
'form_field_radio_classes' => 'form-radio',
|
||||
'form_field_checkbox_classes' => 'form-checkbox',
|
||||
];
|
||||
|
||||
$twig->twig_vars = array_merge($twig->twig_vars, $form_class_variables);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
enabled: true
|
||||
production-mode: true
|
||||
grid-size: grid-lg
|
||||
header-fixed: true
|
||||
header-animated: true
|
||||
header-dark: false
|
||||
header-transparent: false
|
||||
sticky-footer: true
|
||||
blog-page: '/blog'
|
||||
spectre:
|
||||
exp: false
|
||||
icons: false
|
|
@ -1,288 +0,0 @@
|
|||
en:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Continue reading...
|
||||
NEXT_POST: Next Post
|
||||
PREV_POST: Previous Post
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Search
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Related Posts
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Random Article
|
||||
FEELING_LUCKY: I'm Feeling Lucky!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Some Text Widget
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Popular Tags
|
||||
ARCHIVES:
|
||||
HEADLINE: Archives
|
||||
SYNDICATE:
|
||||
HEADLINE: Syndicate
|
||||
|
||||
de:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Weiterlesen...
|
||||
NEXT_POST: Nächster Beitrag
|
||||
PREV_POST: Vorheriger Beitrag
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: SimpleSearch
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Ähnliche Beiträge
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Zufälliger Artikel
|
||||
FEELING_LUCKY: Auf gut Glück!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Text Widget Beispiel
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Häufigste Tags
|
||||
ARCHIVES:
|
||||
HEADLINE: Archiv
|
||||
SYNDICATE:
|
||||
HEADLINE: Abonnements
|
||||
|
||||
es:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Continuar leyendo...
|
||||
NEXT_POST: Siguiente Entrada
|
||||
PREV_POST: Entrada Anterior
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Buscar
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Entradas Relacionadas
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Artículo Aleatorio
|
||||
FEELING_LUCKY: Voy a tener suerte!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Algunos Widget de Texto
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Etiquetas Populares
|
||||
ARCHIVES:
|
||||
HEADLINE: Archivos
|
||||
SYNDICATE:
|
||||
HEADLINE: Distribuir
|
||||
|
||||
fr:
|
||||
THEME_QUARK:
|
||||
TRANSLATION_TEST: Quark !
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Continuer la lecture...
|
||||
NEXT_POST: Article suivant
|
||||
PREV_POST: Article précédent
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Recherche simple
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Articles en relation
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Article aléatoire
|
||||
FEELING_LUCKY: J'ai de la chance !
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Du texte gadget
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Tags populaires
|
||||
ARCHIVES:
|
||||
HEADLINE: Archives
|
||||
SYNDICATE:
|
||||
HEADLINE: Syndication
|
||||
|
||||
it:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Continua a leggere...
|
||||
NEXT_POST: Prossimo articolo
|
||||
PREV_POST: Articolo precedente
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: SimpleSearch
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Articoli correlati
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Articolo a caso
|
||||
FEELING_LUCKY: Mi sento fortunato!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Widget di testo
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Tag popolari
|
||||
ARCHIVES:
|
||||
HEADLINE: Archivio
|
||||
SYNDICATE:
|
||||
HEADLINE: Feed
|
||||
|
||||
ro:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Mai multe...
|
||||
NEXT_POST: Următorul articol
|
||||
PREV_POST: Articolul anterior
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Căutare
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Articole corelate
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Articol aleator
|
||||
FEELING_LUCKY: Mă simt norocos
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Text modular
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Etichete populare
|
||||
ARCHIVES:
|
||||
HEADLINE: Arhive
|
||||
SYNDICATE:
|
||||
HEADLINE: Abonați-vă
|
||||
|
||||
ru:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Читать далее...
|
||||
NEXT_POST: Следующая запись
|
||||
PREV_POST: Предыдущая запись
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Поиск
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Также читайте
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Случайная запись
|
||||
FEELING_LUCKY: Мне повезёт!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Текстовой виджет
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Популярные теги
|
||||
ARCHIVES:
|
||||
HEADLINE: Архив
|
||||
SYNDICATE:
|
||||
HEADLINE: Синдикация
|
||||
|
||||
uk:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Читати далі...
|
||||
NEXT_POST: Наступний запис
|
||||
PREV_POST: Попередній запис
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Пошук
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Також читайте
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Випадковий запис
|
||||
FEELING_LUCKY: Мені пощастить!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Текстовий віджет
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Популярні теги
|
||||
ARCHIVES:
|
||||
HEADLINE: Архів
|
||||
SYNDICATE:
|
||||
HEADLINE: Синдикація
|
||||
|
||||
hr:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Nastavi s čitanjem...
|
||||
NEXT_POST: Slijedeća objava
|
||||
PREV_POST: Prethodna objava
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Pretraživanje
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Povezane objave
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Slučajni članak
|
||||
FEELING_LUCKY: Osjećam se sretno!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Neki tekst widget
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Popularni tagovi
|
||||
ARCHIVES:
|
||||
HEADLINE: Arhiva
|
||||
SYNDICATE:
|
||||
HEADLINE: Kanali
|
||||
|
||||
nl:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Lees Meer...
|
||||
NEXT_POST: Volgende Bericht
|
||||
PREV_POST: Vorige Bericht
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Zoek
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Gerelateerde Berichten
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Willekeurig Artikel
|
||||
FEELING_LUCKY: Ik Voel Me Gelukkig!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Een Tekst Widget
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Populaire Labels
|
||||
ARCHIVES:
|
||||
HEADLINE: Archieven
|
||||
SYNDICATE:
|
||||
HEADLINE: Syndicatie
|
||||
|
||||
cs:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: Pokračovat ve čtení...
|
||||
NEXT_POST: Následující příspěvek
|
||||
PREV_POST: Předchozí příspěvek
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: Vyhledávání
|
||||
RELATED_POSTS:
|
||||
HEADLINE: Související příspěvky
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: Náhodný článek
|
||||
FEELING_LUCKY: Zkusím štěstí!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: Textový widget
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: Oblíbené štítky
|
||||
ARCHIVES:
|
||||
HEADLINE: Archiv
|
||||
SYNDICATE:
|
||||
HEADLINE: Syndikace
|
||||
|
||||
zh:
|
||||
THEME_QUARK:
|
||||
BLOG:
|
||||
ITEM:
|
||||
CONTINUE_READING: 继续阅读...
|
||||
NEXT_POST: 下一篇
|
||||
PREV_POST: 上一篇
|
||||
SIDEBAR:
|
||||
SIMPLE_SEARCH:
|
||||
HEADLINE: 搜索
|
||||
RELATED_POSTS:
|
||||
HEADLINE: 相关内容
|
||||
RANDOM_ARTICLE:
|
||||
HEADLINE: 随机一篇
|
||||
FEELING_LUCKY: 手气不错!
|
||||
SOME_TEXT_WIDGET:
|
||||
HEADLINE: 一个文本小部件
|
||||
POPULAR_TAGS:
|
||||
HEADLINE: 热门标签
|
||||
ARCHIVES:
|
||||
HEADLINE: 归档
|
||||
SYNDICATE:
|
||||
HEADLINE: 订阅流
|
|
@ -1 +0,0 @@
|
|||
sass --update --force --style compressed --sourcemap=none scss:css-compiled
|
|
@ -1,41 +0,0 @@
|
|||
{% extends 'partials/base.html.twig' %}
|
||||
{% set blog = page.find(header_var('blog_url')|defined(theme_var('blog-page'))) %}
|
||||
{% set show_breadcrumbs = header_var('show_breadcrumbs', [page, blog])|defined(true) %}
|
||||
{% set show_sidebar = header_var('show_sidebar', [page, blog])|defined(true) %}
|
||||
{% set show_pagination = header_var('show_pagination', [page, blog])|defined(true) %}
|
||||
{% set hero_image_name = page.header.hero_image %}
|
||||
|
||||
{% block hero %}
|
||||
{% if hero_image_name %}
|
||||
{% set hero_image = page.media[hero_image_name] %}
|
||||
{% set content %}
|
||||
<h1>{{ page.title }}</h1>
|
||||
<h2>{{ page.header.subtitle }}</h2>
|
||||
{% include 'partials/blog/date.html.twig' %}
|
||||
{% include 'partials/blog/taxonomy.html.twig' %}
|
||||
{% endset %}
|
||||
{% include 'partials/hero.html.twig' with {id: 'blog-hero'} %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<section id="body-wrapper" class="section blog-listing">
|
||||
<section class="container {{ grid_size }}">
|
||||
|
||||
{% if show_breadcrumbs and config.plugins.breadcrumbs.enabled %}
|
||||
{% include 'partials/breadcrumbs.html.twig' %}
|
||||
{% endif %}
|
||||
|
||||
{% embed 'partials/layout.html.twig' %}
|
||||
{% block item %}
|
||||
{% include 'partials/blog-appitem.html.twig' %}
|
||||
{% endblock %}
|
||||
{% block sidebar %}
|
||||
{% include 'partials/sidebar.html.twig' %}
|
||||
{% endblock %}
|
||||
{% endembed %}
|
||||
|
||||
</section>
|
||||
</section>
|
||||
{% endblock %}
|
|
@ -1,3 +0,0 @@
|
|||
{% block content_surround %}
|
||||
{% block content %}{% endblock %}
|
||||
{% endblock %}
|
|
@ -1,63 +0,0 @@
|
|||
{% extends 'partials/base.html.twig' %}
|
||||
{% set blog_image = page.media.images[page.header.hero_image] ?: page.media.images|first %}
|
||||
{% set collection = page.collection() %}
|
||||
{% set blog = page.find(header_var('blog_url')|defined(theme_var('blog-page'))) %}
|
||||
{% set show_breadcrumbs = header_var('show_breadcrumbs', [page, blog])|defined(true) %}
|
||||
{% set show_sidebar = header_var('show_sidebar', [page, blog])|defined(true) %}
|
||||
{% set show_pagination = header_var('show_pagination', [page, blog])|defined(true) %}
|
||||
|
||||
{% block stylesheets %}
|
||||
{% do assets.addCss('theme://css/bricklayer.css') %}
|
||||
{{ parent() }}
|
||||
{% endblock %}
|
||||
|
||||
{% block javascripts %}
|
||||
{{ parent() }}
|
||||
{% do assets.add('theme://js/bricklayer.min.js') %}
|
||||
{% do assets.add('theme://js/scopedQuerySelectorShim.min.js') %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block hero %}
|
||||
{% include 'partials/hero.html.twig' with {id: 'blog-hero', content: page.content, hero_image: blog_image} %}
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<section id="body-wrapper" class="section blog-listing">
|
||||
<section class="container {{ grid_size }}">
|
||||
|
||||
{% if show_breadcrumbs and config.plugins.breadcrumbs.enabled %}
|
||||
{% include 'partials/breadcrumbs.html.twig' %}
|
||||
{% endif %}
|
||||
|
||||
{% embed 'partials/layout.html.twig' with {blog: page} %}
|
||||
{% block item %}
|
||||
|
||||
<div class="bricklayer">
|
||||
{% for child in collection %}
|
||||
{% include 'partials/blog-list-item.html.twig' with {blog: page, page: child} %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
{% if show_pagination and config.plugins.pagination.enabled and collection.params.pagination %}
|
||||
<div id="listing-footer">
|
||||
{% include 'partials/pagination.html.twig' with {base_url: page.url, pagination: collection.params.pagination} %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block sidebar %}
|
||||
{% include 'partials/sidebar.html.twig' %}
|
||||
{% endblock %}
|
||||
{% endembed %}
|
||||
</section>
|
||||
</section>
|
||||
<script>
|
||||
//Bricklayer
|
||||
var bricklayer = new Bricklayer(document.querySelector('.bricklayer'))
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
{% extends 'partials/base.html.twig' %}
|
||||
|
||||
{% block content %}
|
||||
{{ page.content|raw }}
|
||||
{% endblock %}
|
|
@ -1,12 +0,0 @@
|
|||
{% extends 'partials/base.html.twig' %}
|
||||
|
||||
{% block content %}
|
||||
<div id="error">
|
||||
<div>
|
||||
<h1>{{ 'PLUGIN_ERROR.ERROR'|t }} {{ page.header.http_response_code }}</h1>
|
||||
<p>
|
||||
{{ page.content|raw }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -1,32 +0,0 @@
|
|||
{% extends "forms/field.html.twig" %}
|
||||
|
||||
{% block label %}
|
||||
{% endblock %}
|
||||
|
||||
{% block input %}
|
||||
{% set id = field.id|default(field.name) ~ '-' ~ key %}
|
||||
<div class="{{ form_field_wrapper_classes ?: 'form-input-wrapper' }} {{ field.size }} {{ field.wrapper_classes }}">
|
||||
<label class="{{ form_field_checkbox_classes }}" for="{{ id|e }}">
|
||||
<input
|
||||
{# required attribute structures #}
|
||||
name="{{ (scope ~ field.name)|fieldName }}"
|
||||
value="{{ value|join(', ') }}"
|
||||
type="checkbox"
|
||||
{% if value == true %} checked="checked" {% endif %}
|
||||
|
||||
{# input attribute structures #}
|
||||
{% block input_attributes %}
|
||||
id="{{ id|e }}"
|
||||
{% if field.classes is defined %}class="{{ field.classes }}" {% endif %}
|
||||
{% if field.style is defined %}style="{{ field.style|e }}" {% endif %}
|
||||
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
||||
{% if field.autofocus in ['on', 'true', 1] %}autofocus="autofocus"{% endif %}
|
||||
{% if field.novalidate in ['on', 'true', 1] %}novalidate="novalidate"{% endif %}
|
||||
{% if required %}required="required"{% endif %}
|
||||
{% endblock %}
|
||||
/>
|
||||
<i class="form-icon"></i>
|
||||
{{ field.label|t|e }} {{ field.validate.required in ['on', 'true', 1] ? '<span class="required">*</span>' }}
|
||||
</label>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -1,44 +0,0 @@
|
|||
{% extends "forms/field.html.twig" %}
|
||||
|
||||
{% set originalValue = value %}
|
||||
{% set value = (value is null ? field.default : value) %}
|
||||
{% if field.use == 'keys' and field.default %}
|
||||
{% set value = field.default|merge(value) %}
|
||||
{% endif %}
|
||||
|
||||
{% block global_attributes %}
|
||||
{{ parent() }}
|
||||
data-grav-keys="{{ field.use == 'keys' ? 'true' : 'false' }}"
|
||||
data-grav-field-name="{{ (scope ~ field.name)|fieldName }}"
|
||||
{% endblock %}
|
||||
|
||||
{% block input %}
|
||||
{% for key, text in field.options %}
|
||||
|
||||
{% set id = field.id|default(field.name) ~ '-' ~ key %}
|
||||
{% set name = field.use == 'keys' ? key : id %}
|
||||
{% set val = field.use == 'keys' ? '1' : key %}
|
||||
{% set checked = (field.use == 'keys' ? value[key] : key in value) %}
|
||||
{% set help = (key in field.help_options|keys ? field.help_options[key] : false) %}
|
||||
|
||||
<div class="checkboxes {{ form_field_wrapper_classes }} {{ field.wrapper_classes }}">
|
||||
<label class="{{ form_field_checkbox_classes }}" for="{{ id|e }}">
|
||||
<input type="checkbox"
|
||||
id="{{ id|e }}"
|
||||
value="{{ val|e }}"
|
||||
name="{{ (scope ~ field.name)|fieldName ~ '[' ~ name ~ ']' }}"
|
||||
{% if checked %}checked="checked"{% endif %}
|
||||
{% if field.classes is defined %}class="{{ field.classes }}" {% endif %}
|
||||
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
||||
|
||||
>
|
||||
<i class="form-icon"></i>
|
||||
{% if help %}
|
||||
<span class="hint--bottom" data-hint="{{ help|t|e('html_attr') }}">{{ text|t|e }}</span>
|
||||
{% else %}
|
||||
{{ text|t|e }}
|
||||
{% endif %}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
|
@ -1,26 +0,0 @@
|
|||
{% extends "forms/field.html.twig" %}
|
||||
|
||||
{% set originalValue = value %}
|
||||
{% set value = (value is null ? field.default : value) %}
|
||||
|
||||
{% block input %}
|
||||
{% for key, text in field.options %}
|
||||
{% set id = field.id|default(field.name) ~ '-' ~ key %}
|
||||
|
||||
<div class="radio {{ form_field_wrapper_classes }} {{ field.wrapper_classes }}">
|
||||
<label class="{{ form_field_radio_classes }}" for="{{ id|e }}">
|
||||
<input type="radio"
|
||||
value="{{ key|e }}"
|
||||
id="{{ id|e }}"
|
||||
name="{{ (scope ~ field.name)|fieldName }}"
|
||||
{% if field.classes is defined %}class="{{ field.classes }}" {% endif %}
|
||||
{% if key == value %}checked="checked" {% endif %}
|
||||
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
||||
{% if required %}required="required"{% endif %}
|
||||
/>
|
||||
<i class="form-icon"></i>
|
||||
{% if grav.twig.twig.filters['tu'] is defined %}{{ text|tu|raw }}{% else %}{{ text|t|raw }}{% endif %}
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
|
@ -1,3 +0,0 @@
|
|||
{% set form_field_checkbox_classes = 'form-switch' %}
|
||||
{% extends "forms/fields/checkbox/checkbox.html.twig" %}
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
{% extends 'partials/base.html.twig' %}
|
||||
{% set blog = page.find(header_var('blog_url')|defined(theme_var('blog-page'))) %}
|
||||
{% set show_breadcrumbs = header_var('show_breadcrumbs', [page, blog])|defined(true) %}
|
||||
{% set show_sidebar = header_var('show_sidebar', [page, blog])|defined(true) %}
|
||||
{% set show_pagination = header_var('show_pagination', [page, blog])|defined(true) %}
|
||||
{% set hero_image_name = page.header.hero_image %}
|
||||
|
||||
{% block hero %}
|
||||
{% if hero_image_name %}
|
||||
{% set hero_image = page.media[hero_image_name] %}
|
||||
{% set content %}
|
||||
<h1>{{ page.title }}</h1>
|
||||
<h2>{{ page.header.subtitle }}</h2>
|
||||
{% include 'partials/blog/date.html.twig' %}
|
||||
{% include 'partials/blog/taxonomy.html.twig' %}
|
||||
{% endset %}
|
||||
{% include 'partials/hero.html.twig' with {id: 'blog-hero'} %}
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<section id="body-wrapper" class="section blog-listing">
|
||||
<section class="container {{ grid_size }}">
|
||||
|
||||
{% if show_breadcrumbs and config.plugins.breadcrumbs.enabled %}
|
||||
{% include 'partials/breadcrumbs.html.twig' %}
|
||||
{% endif %}
|
||||
|
||||
{% embed 'partials/layout.html.twig' %}
|
||||
{% block item %}
|
||||
{% include 'partials/blog-item.html.twig' %}
|
||||
{% endblock %}
|
||||
{% block sidebar %}
|
||||
{% include 'partials/sidebar.html.twig' %}
|
||||
{% endblock %}
|
||||
{% endembed %}
|
||||
|
||||
</section>
|
||||
</section>
|
||||
{% endblock %}
|
|
@ -1,22 +0,0 @@
|
|||
{% macro nav_loop(page, level) %}
|
||||
{% import _self as macros %}
|
||||
{% for p in page.children.visible %}
|
||||
{% set active_page = (p.active or p.activeChild) ? 'active' : '' %}
|
||||
{% if level > 0 %}
|
||||
<li class="submenu">
|
||||
<a href="{{ p.url }}" class="{{ active_page }} submenu">
|
||||
{% else %}
|
||||
<li>
|
||||
<a href="{{ p.url }}" class="{{ active_page }}">
|
||||
{% endif %}
|
||||
{{ p.menu }}
|
||||
</a>
|
||||
|
||||
{% if p.children.visible.count > 0 %}
|
||||
<ul class="submenu">
|
||||
{{ macros.nav_loop(p, level + 1) }}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% endmacro %}
|