1
0
Fork 0

Upgrade to Kirby 3

This commit is contained in:
Jannik Beyerstedt 2021-01-24 18:05:39 +01:00
parent 80004a968c
commit 03ab30b8c1
64 changed files with 523 additions and 682 deletions

4
.gitignore vendored
View file

@ -1,8 +1,8 @@
.DS_Store
/site/accounts
/site/cache
/assets/avatars
/thumbs
/site/sessions
/media
/content
/video

20
.gitmodules vendored
View file

@ -1,18 +1,6 @@
[submodule "kirby"]
path = kirby
url = https://github.com/getkirby-v2/kirby
[submodule "panel"]
path = panel
url = https://github.com/getkirby-v2/panel
[submodule "modules/kirby-template-sitemap"]
path = modules/kirby-template-sitemap
url = https://github.com/jbeyerstedt/kirby-template-sitemap
[submodule "modules/kirby-plugin-thumbExt"]
path = modules/kirby-plugin-thumbExt
url = https://github.com/jbeyerstedt/kirby-plugin-thumbExt.git
[submodule "modules/kirby-plugin-kirbytextRaw"]
path = modules/kirby-plugin-kirbytextRaw
url = https://github.com/jbeyerstedt/kirby-plugin-kirbytextRaw
url = https://github.com/getkirby/kirby.git
[submodule "modules/kirby-site-snippets"]
path = modules/kirby-site-snippets
url = https://github.com/jbeyerstedt/kirby-site-snippets.git
@ -22,13 +10,7 @@
[submodule "assets/vendors/masonry"]
path = assets/vendors/masonry
url = https://github.com/desandro/masonry.git
[submodule "modules/kirby-kirbytag-html5video"]
path = modules/kirby-kirbytag-html5video
url = https://github.com/jbeyerstedt/kirby-kirbytag-html5video.git
[submodule "assets/vendors/bootstrap"]
path = assets/vendors/bootstrap
url = https://github.com/twbs/bootstrap.git
branch = v4-dev
[submodule "modules/columns-plugin"]
path = modules/columns-plugin
url = https://github.com/getkirby-v2/columns-plugin

View file

@ -1,26 +1,39 @@
# Kirby .htaccess
# revision 2020-06-15
# rewrite rules
<IfModule mod_rewrite.c>
# enable awesome urls. i.e.:
# http://yourdomain.com/about-us/team
RewriteEngine on
# make sure to set the RewriteBase correctly
# if you are running the site in a subfolder;
# otherwise links or the entire site will break.
#
# If your homepage is http://yourdomain.com/mysite,
# set the RewriteBase to:
#
# RewriteBase /mysite
# In some environments it's necessary to
# set the RewriteBase to:
#
RewriteBase /
# block text files in the content folder from being accessed directly
RewriteRule ^content/(.*)\.(txt|md|mdown)$ index.php [L]
# block files and folders beginning with a dot, such as .git
# except for the .well-known folder, which is used for Let's Encrypt and security.txt
RewriteRule (^|/)\.(?!well-known\/) index.php [L]
# block all files in the content folder from being accessed directly
RewriteRule ^content/(.*) index.php [L]
# block all files in the site folder from being accessed directly
# except for requests to plugin assets files
RewriteRule ^assets/plugins/([a-zA-Z0-9\.\-_%=]+)/(.*)$ site/plugins/$1/assets/$2 [L,N]
RewriteCond $1 !^plugins/[a-zA-Z0-9\.\-_%=]+/assets/.*
RewriteRule ^site/(.*) index.php [L]
# block direct access to kirby and the panel sources
RewriteRule ^(kirby|panel\/app|panel\/tests)/(.*) index.php [L]
# make panel links work
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^panel/(.*) panel/index.php [L]
# block direct access to Kirby and the Panel sources
RewriteRule ^kirby/(.*) index.php [L]
# make site links work
RewriteCond %{REQUEST_FILENAME} !-f
@ -29,57 +42,16 @@ RewriteRule ^(.*) index.php [L]
</IfModule>
# pass the Authorization header to PHP
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
# block update scripts
RewriteRule ^(.*).sh$ error [R=301,L]
# block git repo
RewriteRule ^.git/(.*) error [R=301,L]
RewriteRule ^.gitattributes error [R=301,L]
RewriteRule ^.gitignore error [R=301,L]
RewriteRule ^.gitmodules error [R=301,L]
# enable gzip compressed transfer
# compress text file responses
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
<IfModule mod_setenvif.c>
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# Don't compress images
#SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
</IfModule>
<IfModule mod_headers.c>
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>
</IfModule>
# enable browser caching headers
AddType image/svg+xml .svg
AddType application/vnd.ms-fontobject .eot
AddType application/x-font-opentype .otf
AddType application/x-font-ttf .ttf
AddType application/font-woff .woff
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 hour"
ExpiresByType text/xml "access plus 1 hour"
ExpiresByType text/css "access plus 1 month"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
ExpiresByType application/x-font-opentype "access plus 1 year"
ExpiresByType application/x-font-ttf "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -310,61 +310,30 @@ $header_height: 2*$header_logoPadg + $header_logoSize + 4px; // + weird "padding
*/
/*
* KIRBY PLUGIN columns by Bastians Allgeier
* KIRBY PLUGIN columns
*/
$cols-breakdown-width: 600px;
$cols-pad: 15px;
.columns {
margin-right: -$cols-pad;
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
margin-left: -$cols-pad;
&:before {
display: table;
content: " ";
}
&:after {
clear: both;
display: table;
content: " ";
}
margin-right: -$cols-pad;
}
.column {
padding-right: $cols-pad;
padding-left: $cols-pad;
flex: 0 1 100%;
margin-left: $cols-pad;
margin-right: $cols-pad;
max-width: 100%;
}
display: block;
float: left;
position: relative;
min-height: 1px;
}
.columns-1 .column {
width: 100%;
}
.columns-2 .column {
width: 50%;
@media(max-width: $cols-breakdown-width) {
width: 100%;
@media (min-width: $cols-breakdown-width) {
.column {
flex: 1;
}
}
.columns-3 .column {
width: 33.33%;
@media(max-width: $cols-breakdown-width) {
width: 100%;
}
}
.columns-4 .column {
width: 25%;
@media(max-width: $cols-breakdown-width*2) {
width: 50%;
}
@media(max-width: $cols-breakdown-width) {
width: 100%;
}
}
.columns-5 .column {
width: 20%;
}
/* to break down col-xs */

View file

@ -1,16 +1,5 @@
<?php
define('DS', DIRECTORY_SEPARATOR);
require 'kirby/bootstrap.php';
// load kirby
require(__DIR__ . DS . 'kirby' . DS . 'bootstrap.php');
// check for a custom site.php
if(file_exists(__DIR__ . DS . 'site.php')) {
require(__DIR__ . DS . 'site.php');
} else {
$kirby = kirby();
}
// render
echo $kirby->launch();
echo (new Kirby)->render();

2
kirby

@ -1 +1 @@
Subproject commit e3bc4e4277859249cff1a67c333a5544766cad31
Subproject commit 551e2f427eaf18e471df1c304552ab3de35e37c6

@ -1 +0,0 @@
Subproject commit 57b4ccd2c12db25860baa8d3486bf42cacce05a6

View file

@ -0,0 +1,28 @@
<?php
# from https://getkirby.com/docs/cookbook/extensions/columns-in-kirbytext
# copied at 2021-01-23
Kirby::plugin('kirby/columns', [
'hooks' => [
'kirbytags:before' => function ($text, array $data = []) {
$text = preg_replace_callback('!\(columns(…|\.{3})\)(.*?)\((…|\.{3})columns\)!is', function($matches) use($text, $data) {
$columns = preg_split('!(\n|\r\n)\+{4}\s+(\n|\r\n)!', $matches[2]);
$html = [];
$classItem = $this->option('kirby.columns.item', 'column');
$classContainer = $this->option('kirby.columns.container', 'columns');
foreach ($columns as $column) {
$html[] = '<div class="' . $classItem . '">' . $this->kirbytext($column, $data) . '</div>';
}
return '<div class="' . $classContainer . '">' . implode($html) . '</div>';
}, $text);
return $text;
}
]
]);

@ -1 +0,0 @@
Subproject commit 81564cfc343f733e47012895ed249bb69f99b96c

@ -1 +0,0 @@
Subproject commit 9cf8c1e749efdedb3b21c8bc31535bbfbb7a68e9

@ -1 +0,0 @@
Subproject commit d222f4f02eef5574dd7850b40391f86688283f27

@ -1 +1 @@
Subproject commit 5b56892014a01e3e4f602576e4912c54da911648
Subproject commit c17f1c4d6ac66326ca481df8e0ecf720efc29e05

@ -1 +0,0 @@
Subproject commit b9639427e03917b1ac8bb3cd7c35a61fa90b839e

1
panel

@ -1 +0,0 @@
Subproject commit 31a79539294c24f636d2f3af004aa2576eb59040

View file

@ -26,8 +26,7 @@ Im Folgenden wird `$git-url` als Platzhalter für die echte Git-URL verwendet.
git clone --recursive $git-url /path/to/documentroot
cd /path/to/documentroot
mkdir content
mkdir thumbs
mkdir site/accounts
mkdir media
mkdir site/cache
````

View file

@ -1,16 +0,0 @@
title: Blog
pages:
template:
- blogarticle
num: date
sort: flip
files: false
fields:
title:
label: Title
type: text
text:
label: Text
type: textarea

View file

@ -1,29 +0,0 @@
title: Blog Article
pages: false
files: true
fields:
title:
label: Title
type: text
date:
label: Date
type: date
width: 1/4
tags:
label: Tags
type: tags
width: 3/4
text:
label: Text
type: textarea
en_masonry:
text: enable masonry
type: checkbox
text2:
label: Text below masonry
type: textarea
meta-robots:
label: Metatag robots
type: text

View file

@ -1,47 +0,0 @@
<?php if(!defined('KIRBY')) exit ?>
# carousel pseudo-site blueprint
title: Foto-Diashow
pages: false
preview: parent
files:
sortable: true
fields:
title:
label: Titel (z.Zt. nicht benutzt)
type: text
heading:
label: Bildüberschrift
type: text
caption:
label: Bildtext
type: textarea
header1: h3
header2: h4
options:
preview: true
status: false
template: false
url: false
delete: true
fields:
info:
label: HINWEIS
type: info
text: >
Auf dieser "Seite" werden die Bilder abgelegt, die in der großen Bildergalerie oben auf der Seite dargestellt werden sollen.
Dabei sind ein paar Dinge zu beachten:<br>
- Alle Bilder müssen dasselbe Seitenverhältnis haben, wenigstens jedoch im **Querformat** vorliegen.<br>
- Diese Seite muss die unter der URL "carousel" abgelegt sein.<br>
- Wenn die Bildergalerie leer bleiben soll, muss diese Seite nicht gelöscht werden, sondern kann auch einfach keine Bilder enthalten.<br>
- Die Reihenfolge der Bilder kann unter "Dateien -> bearbeiten" angepasst werden.<br>
- Um ein Bild mit einer Bildüberschrift zu versehen, einfach die Datei auswählen und die entsprechenden Felder bearbeiten. Speichern nicht vergessen.<br>
- HINWEIS: Bei sehr großen Bildern kann es vorkommen, dass keine Vorschau angezeigt wird.
title:
label:
en: Title (has no fuction)
de: Seitenüberschrift (hat keine Funktion)
type: text

View file

@ -1,12 +0,0 @@
title: default Page
pages: true
files: true
fields:
title:
label: Title
type: text
text:
label: Text
type: textarea

View file

@ -0,0 +1,14 @@
Title: File
fields:
alt:
label: Alt Text
type: text
heading:
label: Bildüberschrift
type: text
caption:
label: Bildtext
type: textarea
header1: h3
header2: h4

View file

@ -1,18 +0,0 @@
title: Home
pages: true
files: true
fields:
title:
label: Title
type: text
hero_text:
label: main text
type: textarea
subtitle:
label: subtitle
type: text
text:
label: text
type: textarea

View file

@ -0,0 +1,32 @@
title: Blog
columns:
main:
width: 2/3
sections:
content:
type: fields
fields:
text:
label: Text
type: textarea
sidebar:
width: 1/3
sections:
drafts:
headline: Drafts
type: pages
status: draft
create:
- blogarticle
published:
headline: Published Articles
type: pages
status: listed
sortBy: date desc
files: false

View file

@ -0,0 +1,39 @@
title: Blog Article
num: '{{ page.date.toDate("Ymd") }}'
columns:
main:
width: 2/3
sections:
content:
type: fields
fields:
date:
label: Date
type: date
width: 1/4
tags:
label: Tags
type: tags
width: 3/4
text:
label: Text
type: textarea
en_masonry:
label: Masonry
type: toggle
text: enable
text2:
label: Text below masonry
type: textarea
meta-robots:
label: Metatag robots
type: text
sidebar:
width: 1/3
sections:
files: true

View file

@ -0,0 +1,21 @@
title: default Page
columns:
main:
width: 2/3
sections:
content:
type: fields
fields:
text:
label: Text
type: textarea
sidebar:
width: 1/3
sections:
pages: true
files: true

View file

@ -0,0 +1,28 @@
title: Home
columns:
main:
width: 2/3
sections:
content:
type: fields
fields:
hero_text:
label: main text
type: textarea
subtitle:
label: subtitle
type: text
text:
label: text
type: textarea
sidebar:
width: 1/3
sections:
pages: true
files: true

View file

@ -0,0 +1,44 @@
title: Photo
tabs:
content:
label: Content
icon: text
columns:
main:
width: 2/3
sections:
content:
type: fields
fields:
text:
label: Text
type: textarea
text2:
label: Text below masonry
type: textarea
sidebar:
width: 1/3
sections:
carousel:
type: fields
fields:
carousel:
label: Carousel
type: files
query: page.images
max: 10
masonry:
label: Images
icon: image
sections:
gallery:
headline: Masonry
type: files
layout: cards
limit: 50
sortable: false

View file

@ -0,0 +1,37 @@
title: Project
columns:
main:
width: 2/3
sections:
content:
type: fields
fields:
exrpt_img:
label: Excerpt image
type: files
multiple: false
width: 1/2
exrpt_text:
label: Excerpt for overview
type: textarea
width: 1/2
text:
label: Text
type: textarea
en_masonry:
label: Masonry
type: toggle
text: enable
text2:
label: Text below masonry
type: textarea
sidebar:
width: 1/3
sections:
pages: false
files: true

View file

@ -0,0 +1,23 @@
title: Projects
columns:
main:
width: 2/3
sections:
content:
type: fields
fields:
text:
label: Text
type: textarea
sidebar:
width: 1/3
sections:
pages:
type: pages
create: project
files: true

View file

@ -0,0 +1,29 @@
title: redirect
columns:
main:
width: 2/3
sections:
content:
type: fields
fields:
target:
label: Target
type: pages
multiple: false
red_type:
label: Redirect Type
type: radio
default: temporarly
options:
temp: temporarly (302)
perm: permanent (301)
sidebar:
width: 1/3
sections:
pages: true
files: true

View file

@ -0,0 +1,33 @@
title: Webdesign
columns:
main:
width: 2/3
sections:
content:
type: fields
fields:
featurette_headline:
label: Featurette Headline
type: text
featurette_text:
label: Featurette Text
type: textarea
width: 1/2
featurette_img:
label: Featurette Image
type: files
multiple: false
width: 1/2
text:
label: Text
type: textarea
sidebar:
width: 1/3
sections:
pages: true
files: true

View file

@ -0,0 +1 @@
../../../modules/kirby-template-sitemap/blueprints/xmlsitemap.yml

View file

@ -1,22 +0,0 @@
title: Photo
pages:
build:
- title: carousel
uid: carousel
template: carousel
template:
- photo
- carousel
files: true
fields:
title:
label: Title
type: text
text:
label: Text
type: textarea
text2:
label: Text below masonry
type: textarea

View file

@ -1,28 +0,0 @@
title: Project
pages:
template:
- project
files: true
fields:
title:
label: Title
type: text
exrpt_img:
label: Excerpt image
type: image
width: 1/2
exrpt_text:
label: Excerpt for overview
type: textarea
width: 1/2
text:
label: Text
type: textarea
en_masonry:
type: checkbox
text: Enable masonry
text2:
label: Text below masonry
type: textarea

View file

@ -1,14 +0,0 @@
title: Projects
pages:
template:
- project
files: true
fields:
title:
label: Title
type: text
text:
label: Text
type: textarea

View file

@ -1,19 +0,0 @@
title: redirect
pages: true
files: false
fields:
title:
label: Title (not used)
type: text
target:
label: Target
type: page
red_type:
label: Redirect Type
type: radio
default: temporarly
options:
temp: temporarly (302)
perm: permanent (301)

View file

@ -1,53 +1,61 @@
Title: Site
pages:
template:
- default
- redirect
columns:
main:
width: 2/3
sections:
fields:
title:
label:
en: Title (shown in browser tab)
de: Titel der Website (im Browser Tab)
type: text
content:
type: fields
fields:
author:
label:
en: Author (for meta data)
de: Autor (für Metadaten)
type: text
description:
label:
en: Description (short text at Google search result)
de: Beschreibung (kurzer Text beim Google-Suchergebnis)
type: textarea
validate:
maxLength: 160
author:
label:
en: Author (for meta data)
de: Autor (für Metadaten)
type: text
description:
label:
en: Description (short text at Google search result)
de: Beschreibung (kurzer Text beim Google-Suchergebnis)
type: textarea
validate:
maxLength: 160
title_image:
label:
en: Header image / logo (drag and drop)
de: Logo für Kopf der Seite (drag and drop)
type: files
multiple: false
title_image:
label:
en: header image / logo (drag and drop)
de: Logo für Kopf der Seite (drag and drop)
type: image
line:
type: line
line:
type: line
footer_left:
label:
en: Footer left
de: Footer links
type: textarea
width: 1/3
footer_center:
label:
en: Footer center
de: Footer Mitte
type: textarea
width: 1/3
footer_right:
label:
en: Footer right
de: Footer rechts
type: textarea
width: 1/3
footer_left:
label:
en: footer left
de: Footer links
type: textarea
width: 1/3
footer_center:
label:
en: footer center
de: Footer Mitte
type: textarea
width: 1/3
footer_right:
label:
en: footer right
de: Footer rechts
type: textarea
sidebar:
width: 1/3
sections:
pages:
type: pages
create:
- default
- redirect
files: true

View file

@ -1,23 +0,0 @@
title: Webdesign
pages: true
files: true
fields:
title:
label: Title
type: text
featurette_headline:
label: Featurette Headline
type: text
featurette_text:
label: Featurette Text
type: textarea
width: 1/2
featurette_img:
label: Featurette Image
type: image
width: 1/2
text:
label: Text
type: textarea

View file

@ -1 +0,0 @@
../../modules/kirby-template-sitemap/blueprints/xmlsitemap.php

View file

@ -4,10 +4,3 @@
c::set('debug', true);
c::set('cache', false);
c::set('ssl', false);
/*
Piwik Plugin configuration
*/
c::set('spicy.piwik.active', false);

View file

@ -1,6 +1,7 @@
<?php
if(!function_exists('panel')) {
header("Content-Security-Policy: default-src 'self'; style-src 'self' 'nonce-nRfqpuKWNuYyUAFPTr6WVNZk9' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; frame-src https://www.youtube-nocookie.com; script-src 'self' 'unsafe-eval' 'nonce-nRfqpuKWNuYyUAFPTr6WVNZk9' 'unsafe-inline' https://jannikb.aquila.uberspace.de/piwik/; img-src 'self' data: https://jannikb.aquila.uberspace.de/piwik/");
## script-src unsafe-inline is needed for kirby panel
header("Content-Security-Policy: default-src 'self'; style-src 'self' 'nonce-nRfqpuKWNuYyUAFPTr6WVNZk9'; script-src 'self' 'unsafe-inline'; img-src 'self' data:");
}
//header("X-Content-Type-Options: nosniff"); // enabled at server-side
//header("X-Frame-Options: deny"); // enabled at server-side
@ -8,11 +9,6 @@ if(!function_exists('panel')) {
header("Strict-Transport-Security: max-age=31536000");
header("Referrer-Policy: no-referrer");
/*
License Setup
*/
c::set('license', 'K2-PRO-153c9c6accc73d9547e255a0daba8911');
/*
Kirby Configuration
*/
@ -24,16 +20,12 @@ c::set('smartypants.attr', 2); // -- for en-dash, --- for em-dash
c::set('smartypants.doublequote.open', '&bdquo;');
c::set('smartypants.doublequote.close', '&ldquo;');
c::set('ssl', true);
/*
Modules Configuration
*/
// plg-carousel
c::set('plg_carousel.enable', true);
c::set('plg_carousel.sort', 'sort'); // sortBy parameter: sort, title, etc.
c::set('plg_carousel.dir', 'asc'); // sortBy direction: asc, desc
c::set('plg_carousel.class', 'carousel-fade'); // additional class on top-most div
// plg-masonry
c::set('plg_masonry.enable', true);
@ -45,25 +37,18 @@ c::set('plg_masonry.sort', 'sort'); // sortBy parameter: sort, title, etc.
c::set('plg_masonry.dir', 'asc'); // sortBy direction: asc, desc
c::set('plg_masonry.lightbox', 'swipebox');
// bastians columns.php plugin from https://github.com/getkirby/plugins/tree/master/columns
//c::set('columns.container', 'row');
//c::set('columns.item', 'col-sm-6 columns');
// columns plugin
//c::set('kirby.columns.container', 'columns');
//c::set('kirby.columns.item', 'column');
// enhanced sitemap by Jannik Beyerstedt:
c::set('smap_ignoreSite', array('sitemap', 'error', 'home', 'qr', 'secret', 'test'));
c::set('smap_ignoreTemplate', array('carousel', 'redirect'));
c::set('smap_ignoreTemplate', array('redirect'));
c::set('smap_showHiddenPagesAtRootLevel', true);
c::set('smap_heading_visible', 'Hauptmenü');
c::set('smap_heading_invisible', 'weitere Seiten');
//c::set('smap_column_class_id', 'class="foo" id="bar"');
/*
Piwik Plugin configuration
*/
c::set('spicy.piwik.active', false); /* cookie notice needed! */
c::set('spicy.piwik.url', 'https://jannikb.aquila.uberspace.de/piwik');
c::set('spicy.piwik.id', 2);
/*
Routes
*/
@ -73,21 +58,5 @@ c::set('routes', array(
'action' => function() {
return site()->visit('sitemap');
}
),
// redirect legacy urls:
// feature/webdesign -> webdesign
// feature/fotografie -> fotografie
// feature/fotografie/(:any) -> fotografie/(:any)
array(
'pattern' => 'feature/(:all)',
'action' => function($uid) {
if (site()->find($uid)) {
$target = site()->find($uid)->url();
header::redirect($target, 301);
}else {
go('error');
}
}
)
));

View file

@ -1 +0,0 @@
../../modules/columns-plugin

View file

@ -0,0 +1,27 @@
<?php
# copied at 2021-01-23 from https://getkirby.com/docs/cookbook/extensions/columns-in-kirbytext
Kirby::plugin('kirby/columns', [
'hooks' => [
'kirbytags:before' => function ($text, array $data = []) {
$text = preg_replace_callback('!\(columns(…|\.{3})\)(.*?)\((…|\.{3})columns\)!is', function($matches) use($text, $data) {
$columns = preg_split('!(\n|\r\n)\+{4}\s+(\n|\r\n)!', $matches[2]);
$html = [];
$classItem = $this->option('kirby.columns.item', 'column');
$classContainer = $this->option('kirby.columns.container', 'columns');
foreach ($columns as $column) {
$html[] = '<div class="' . $classItem . '">' . $this->kirbytext($column, $data) . '</div>';
}
return '<div class="' . $classContainer . '">' . implode($html) . '</div>';
}, $text);
return $text;
}
]
]);

View file

@ -1 +0,0 @@
../../modules/kirby-plugin-kirbytextRaw

View file

@ -1 +0,0 @@
.idea

View file

@ -1,33 +0,0 @@
# Piwik plugin
A plugin for [Kirby CMS](http://getkirby.com) that generates piwik analytics code to use in your templates.
## Installation
Put the `piwik` folder in `/site/plugins`.
Configure piwik URL and site id in your page config.
### Config Variables
- spicy.piwik.active: true / false (Default: true)
- spicy.piwik.url: 'stats.yourpage.com'
- spicy.piwik.id: 1 (replace with the page ID in your piwik installation)
## How to use it
You can use this in a template file.
## Example usage
### Snippets
```php
<!-- use this right before closing </body> tag -->
<?php echo piwik(); ?>
```
## Author
Michael Fürmann @ Spicy Web
<https://spicyweb.de>

View file

@ -1,18 +0,0 @@
<?php
/**
* Piwik Plugin
*
* @author Michael Fürmann <michael@spicyweb.de>
* @version 1.0.0
*/
function piwik($options = array()) {
if(!c::get('spicy.piwik.active', true) || !c::get('spicy.piwik.url') || !c::get('spicy.piwik.id'))
return;
$options['url'] = c::get('spicy.piwik.url');
$options['id'] = c::get('spicy.piwik.id');
// Return template HTML
return tpl::load(__DIR__ . DS . 'template.php', $options);
}
?>

View file

@ -1,15 +0,0 @@
<!-- Piwik -->
<script type="text/javascript" nonce="nRfqpuKWNuYyUAFPTr6WVNZk9">
var _paq = _paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="<?= $url?>/";
_paq.push(['setTrackerUrl', u+'piwik.php']);
_paq.push(['setSiteId', <?= $id?>]);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<noscript><p><img src="<?= $url?>/piwik.php?idsite=<?= $id?>" style="border:0;" alt="" /></p></noscript>
<!-- End Piwik Code -->

View file

@ -1 +0,0 @@
../../modules/kirby-plugin-thumbExt

View file

@ -9,12 +9,12 @@
$subnav = false;
if ($page->depth() == 1) {
$baseSec = $page;
if ( $page->isVisible() && $baseSec->hasVisibleChildren() && $page->template() != 'blog' ) {
if ( $page->isListed() && $baseSec->hasListedChildren() && $page->template() != 'blog' ) {
$subnav = true;
}
}else if ($page->depth() == 2) {
$baseSec = $page->parent();
if ( $page->isVisible() && $baseSec->hasVisibleChildren() && $page->template() != 'blogarticle' ) {
if ( $page->isListed() && $baseSec->hasListedChildren() && $page->template() != 'blogarticle' ) {
$subnav = true;
}
}
@ -26,11 +26,11 @@ if ($page->depth() == 1) {
<nav class="mobile">
<ul class="nav mobileNav">
<li><a href="<?php echo $site->url()?>">Home</a></li>
<?php foreach ($site->children()->visible() as $p) : ?>
<?php foreach ($site->children()->listed() as $p) : ?>
<li><a href="<?php echo $p->url()?>" <?php echo ($page == $p)?'class="active"':'' ?>><?php echo $p->title() ?></a></li>
<?php if ($p->hasVisibleChildren() && $p->template() != 'blog') : ?>
<?php if ($p->hasListedChildren() && $p->template() != 'blog') : ?>
<ul class="">
<?php foreach ($p->children()->visible() as $c) : ?>
<?php foreach ($p->children()->listed() as $c) : ?>
<li><a href="<?php echo $c->url()?>" <?php echo ($page == $c)?'class="active"':'' ?>><?php echo $c->title() ?></a></li>
<?php endforeach; ?>
</ul>
@ -52,12 +52,12 @@ if ($page->depth() == 1) {
<nav aria-hidden="true">
<ul class="nav d-none d-sm-block">
<?php if(!$subnav) : ?>
<?php foreach ($site->children()->visible() as $p) : ?>
<?php foreach ($site->children()->listed() as $p) : ?>
<a href="<?php echo $p->url()?>" <?php echo ($page == $p || $page->parent() == $p)?'class="active"':'' ?>><li><?php echo $p->title() ?></li></a>
<?php endforeach; ?>
<?php else : ?>
<a href="<?php echo $baseSec->url()?>" class="section <?php echo ($page == $baseSec)?'active':'' ?>"><li><?php echo $baseSec->title() ?>:</li></a>
<?php foreach ($baseSec->children()->visible() as $p) : ?>
<?php foreach ($baseSec->children()->listed() as $p) : ?>
<a href="<?php echo $p->url()?>" <?php echo ($page == $p)?'class="active"':'' ?>><li><?php echo $p->title() ?></li></a>
<?php endforeach; ?>
<?php endif; ?>

View file

@ -64,8 +64,5 @@ echo js('assets/vendors/bootstrap/js/dist/carousel.js');
</script>
<?php endif; ?>
<?php echo piwik(); ?>
</body>
</html>

View file

@ -16,7 +16,7 @@ $a = $article;
<a class="more" href="<?php echo $a->url()?>">»</a>
</p>
<div class="meta">
<time datetime="<?php echo $a->date('Y-m-d') ?>"><?php echo $a->date('d. M. Y') ?></time>
<time datetime="<?php echo $a->date()->toDate('Y-m-d') ?>"><?php echo $a->date()->toDate('d. M. Y') ?></time>
<?php echo tags($base_url, $a); ?>
</div>
</article>

View file

@ -1,66 +0,0 @@
<?php
// -------------------------------------------
// kirby snippet GENERAL
// Title: plg-carousel
// funct: twitter bootstap carousel for photos in carousel subpage (folder)
// modified for bootstrap 4 !
// copyright: Jannik Beyerstedt | http://jannikbeyerstedt.de | code@jannikbeyerstedt.de
// license: http://www.gnu.org/licenses/gpl-3.0.txt GPLv3 License
// usage:
// snippet('plg-carousel', array('currentPage'=>$page,
// 'preNormal'=>'optional html to add before carousel',
// 'preAlt'=>'html if snippet is not displayed (for other styles)'))
// and set these constants in config.php:
//c::set('plg_carousel.sort', 'sort'); // sortBy parameter: sort, title, etc.
//c::set('plg_carousel.dir', 'asc'); // sortBy direction: asc, desc
// -------------------------------------------
// display carousel only if there are images
$carouselFolder = $currentPage->children()->find('carousel');
if (!isset($preNormal)) {$preNormal="";}
if (!isset($preAlt)) {$preAlt="";}
$sort = c::get('plg_carousel.sort', 'title');
$sdir = c::get('plg_carousel.dir', 'desc');
// if folder exists
if (!(false==$carouselFolder) && ($carouselFolder->hasImages())) : echo $preNormal
?>
<div id="myCarousel" class="carousel slide" data-ride="carousel">
<!-- Indicators -->
<ol class="carousel-indicators">
<?php $n=-1; foreach($carouselFolder->images()->sortBy($sort, $sdir) as $image): $n++; ?>
<li data-target="#myCarousel" data-slide-to="<?php echo $n ?>" class="<?php if($n==0) echo ' active' ?>"></li>
<?php endforeach ?>
</ol>
<div class="carousel-inner" role="listbox">
<?php $n=-1; foreach($carouselFolder->images()->sortBy($sort, $sdir) as $image): $n++; ?>
<div class="carousel-item<?php if($n==0) echo ' active' ?>">
<img src="<?php echo $image->url() ?>" alt="<?php echo $image->title()->html() ?>" />
<?php if(($image->heading() != "") || ($image->caption() != "")) : ?>
<div class="carousel-caption">
<?php if($image->heading() != "") : ?><h3><?php echo $image->heading()->kirbytext() ?></h3><?php endif; ?>
<?php echo $image->caption()->kirbytext() ?>
</div>
<?php endif; ?>
</div>
<?php endforeach ?>
</div>
<a class="carousel-control-prev" href="#myCarousel" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#myCarousel" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
<?php else : echo $preAlt ?>
<?php endif ?>

View file

@ -1 +0,0 @@
../../modules/kirby-kirbytag-html5video/html5video.php

View file

@ -1,30 +0,0 @@
<?php
/*
* kirbytag html5youtube
* responsive html5 youtube player embedding
*
* copyright: Jannik Beyerstedt | http://jannikbeyerstedt.de | code@jannikbeyerstedt.de
* license: http://www.gnu.org/licenses/gpl-3.0.txt GPLv3 License
*
* version 2.0.2 (12.12.2016)
* changelog:
* - v2.0: kirby 2 support
* - v2.0.1: fix some html validation issues with & symbols
* - v2.0.2: html5 player is now default, so no url param needed any more
*/
kirbytext::$tags['html5youtube'] = array(
'attr' => array(
'options'
),
'html' => function($tag) {
$base = 'https://www.youtube-nocookie.com/embed/';
$end = '?rel=0';
$videoID = $tag->attr('html5youtube');
$options = $tag->attr('options');
return '<div class="video-container"><iframe src="' . $base . $videoID . $end . $options . '" allowfullscreen></iframe></div>';
}
);

View file

@ -23,7 +23,7 @@ function tags($base_url, $article) {
}
}
$articles = $page->children()->visible()->flip();
$articles = $page->children()->listed()->flip();
$title = $page->title()->html();

View file

@ -33,28 +33,28 @@ snippet('base/cont-header');
<h1><?php echo $page->title()->html() ?></h1>
<div class="meta title">
<time datetime="<?php echo $page->date('Y-m-d') ?>"><?php echo $page->date('d. M. Y') ?></time>
<time datetime="<?php echo $page->date()->toDate('Y-m-d') ?>"><?php echo $page->date()->toDate('d. M. Y') ?></time>
</div>
<?php echo $page->text()->kirbytext(); ?>
<?php if ($page->en_masonry()->bool()) : echo snippet('plg/plg-masonry-sb', array('currentPage'=>$page)) ; endif;?>
<?php echo $page->text2()->kirbytext(); ?>
<div class="meta bottom">
<time datetime="<?php echo $page->date('Y-m-d') ?>"><?php echo $page->date('d. M. Y') ?></time>
<time datetime="<?php echo $page->date()->toDate('Y-m-d') ?>"><?php echo $page->date()->toDate('d. M. Y') ?></time>
<?php echo tags($base_url, $page); ?>
</div>
</article>
<?php if($page->hasPrevVisible() || $page->hasNextVisible()): ?>
<?php if($page->hasPrevListed() || $page->hasNextListed()): ?>
<div class="teasers">
<?php if($page->hasNextVisible()) {
echo snippet('blogexcerpt',["article"=>$page->nextVisible(),"length"=>200,"base_url"=>$base_url]);
<?php if($page->hasNextListed()) {
echo snippet('blogexcerpt',["article"=>$page->nextListed(),"length"=>200,"base_url"=>$base_url]);
} ?>
<?php if($page->hasPrevVisible()) {
echo snippet('blogexcerpt',["article"=>$page->prevVisible(),"length"=>200,"base_url"=>$base_url]);
<?php if($page->hasPrevListed()) {
echo snippet('blogexcerpt',["article"=>$page->prevListed(),"length"=>200,"base_url"=>$base_url]);
} ?>
</div>
<?php endif ?>

View file

@ -12,11 +12,11 @@ snippet('base/cont-header');
<main class="section">
<div class="container">
<h1><?php echo $page->title()->html() ?></h1>
<?php echo $page->text()->kirbytext(); ?>
</div>
</main>

View file

@ -12,7 +12,7 @@ snippet('base/cont-header');
<main class="section">
<div class="container">
<div class="home">
<div class="logo">
<span class="firstname">jannik</span>0b 01101010<br>
@ -25,11 +25,11 @@ snippet('base/cont-header');
01110100 01100101<br>
01100100 01110100
</div>
<p><?php echo $page->subtitle()->kirbytextRaw() ?></p>
<p><?php echo $page->subtitle()->kirbytextinline() ?></p>
</div>
<?php echo $page->text()->kirbytext(); ?>
</div>
</main>

View file

@ -11,16 +11,16 @@ snippet('base/cont-header');
?>
<main class="section photo">
<?php echo snippet('plg-carousel', array('currentPage'=>$page,
'preNormal'=>'',
'preAlt'=>'')); ?>
<?php echo snippet('plg/plg-carousel', array('currentPage'=>$page,
'preNormal'=>'',
'preAlt'=>'')); ?>
<div class="container">
<?php echo $page->text()->kirbytext(); ?>
</div>
<?php echo snippet('plg/plg-masonry-sb', array('currentPage'=>$page)) ; ?>
<div class="container">
<?php echo $page->text2()->kirbytext(); ?>
</div>

View file

@ -16,8 +16,8 @@ snippet('base/cont-header');
<?php echo $page->text()->kirbytext(); ?>
</div>
<?php if($page->en_masonry() == '1') echo snippet('plg/plg-masonry-sb', array('currentPage'=>$page)); ?>
<?php if($page->en_masonry()->bool()) echo snippet('plg/plg-masonry-sb', array('currentPage'=>$page)); ?>
<div class="container">
<?php echo $page->text2()->kirbytext(); ?>
</div>

View file

@ -6,7 +6,7 @@
// license: http://www.gnu.org/licenses/gpl-3.0.txt GPLv3 License
// -------------------------------------------
$children = $page->children()->visible();
$children = $page->children()->listed();
snippet('base/html-head');
snippet('base/cont-header');
@ -23,12 +23,16 @@ snippet('base/cont-header');
<div class="col-sm-6 col-lg-3"><div class="card">
<a href="<?php echo $c->url(); ?>">
<?php if ($img = $c->images()->find($c->exrpt_img())) {
echo ThumbExt($img, ['width'=>400,'quality'=>70,'class'=>"card-img-top",'inline-size'=>false]);
$imgurl = $img->url();
$srcset = $img->srcset([
'1x' => ['width'=>400, 'quality'=>70],
'2x' => ['width'=>800, 'quality'=>70]
]);
echo '<img src="'.$imgurl.'" class="card-img-top" srcset="'.$srcset.'" />';
} ?>
<div class="card-body">
<h5 class="card-title"><?php echo $c->title()->html(); ?></h5>
<p class="card-text"><?php echo $c->exrpt_text()->kirbytext(); ?></p>
<a href="<?php echo $c->url(); ?>" class="card-link">mehr</a>
<p class="card-text"><?php echo $c->exrpt_text()->kirbytextinline(); ?></p>
</div>
</a>
</div></div>

View file

@ -18,11 +18,16 @@ snippet('base/cont-header');
<div class="row featurette">
<div class="col-sm-9 col-12">
<h2 class="featurette-heading"><?php echo $page->featurette_headline()->html() ?></h2>
<p class="lead"><?php echo $page->featurette_text()->kirbytextRaw() ?></p>
<p class="lead"><?php echo $page->featurette_text()->kirbytextinline() ?></p>
</div>
<div class="col-sm-3 col-12">
<?php if ($img = $page->images()->find($page->featurette_img())) {
echo ThumbExt($img, ['width'=>235,'quality'=>70,'class'=>"img-fluid rounded",'alt'=>"Portrait",'inline-size'=>false]);
$imgurl = $img->url();
$srcset = $img->srcset([
'1x' => ['width'=>235, 'quality'=>70],
'2x' => ['width'=>235*2, 'quality'=>70]
]);
echo '<img src="'.$imgurl.'" class="img-fluid rounded" alt="Portrait" srcset="'.$srcset.'" />';
}?>
</div>
</div>