Add landing page
22
private/.editorconfig
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
[*.{css,scss,less,js,json,ts,sass,html,hbs,mustache,phtml,html.twig,md,yml}]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
indent_size = 4
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[site/templates/**.php]
|
||||
indent_size = 2
|
||||
|
||||
[site/snippets/**.php]
|
||||
indent_size = 2
|
||||
|
||||
[package.json,.{babelrc,editorconfig,eslintrc,lintstagedrc,stylelintrc}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
73
private/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
# System files
|
||||
# ------------
|
||||
|
||||
Icon
|
||||
.DS_Store
|
||||
|
||||
# Temporary files
|
||||
# ---------------
|
||||
|
||||
/media/*
|
||||
!/media/index.html
|
||||
|
||||
# Lock files
|
||||
# ---------------
|
||||
|
||||
.lock
|
||||
|
||||
# Editors
|
||||
# (sensitive workspace files)
|
||||
# ---------------------------
|
||||
*.sublime-workspace
|
||||
/.vscode
|
||||
/.idea
|
||||
|
||||
# -------------SECURITY-------------
|
||||
# NEVER publish these files via Git!
|
||||
# -------------SECURITY-------------
|
||||
|
||||
# Cache Files
|
||||
# ---------------
|
||||
|
||||
/site/cache/*
|
||||
!/site/cache/index.html
|
||||
|
||||
# Accounts
|
||||
# ---------------
|
||||
|
||||
/site/accounts/*
|
||||
!/site/accounts/index.html
|
||||
|
||||
# Sessions
|
||||
# ---------------
|
||||
|
||||
/site/sessions/*
|
||||
!/site/sessions/index.html
|
||||
|
||||
# License
|
||||
# ---------------
|
||||
|
||||
/site/config/.license
|
||||
|
||||
# Content
|
||||
# ---------------
|
||||
|
||||
/content
|
||||
|
||||
# Claude settings
|
||||
# ---------------
|
||||
|
||||
/.claude
|
||||
|
||||
# Node.js
|
||||
# ---------------
|
||||
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
*.log
|
||||
|
||||
# Build
|
||||
# ---------------
|
||||
|
||||
dist/
|
||||
node_modules/
|
||||
62
private/.htaccess
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
# Kirby .htaccess
|
||||
# revision 2020-06-15
|
||||
|
||||
# rewrite rules
|
||||
<IfModule mod_rewrite.c>
|
||||
|
||||
# http -> https
|
||||
RewriteEngine On
|
||||
RewriteCond %{SERVER_PORT} 80
|
||||
RewriteRule ^(.*)$ https://dataarchitectes.com/$1 [R,L]
|
||||
|
||||
# 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 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
|
||||
RewriteRule ^site/(.*) 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
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^(.*) index.php [L]
|
||||
|
||||
</IfModule>
|
||||
|
||||
# pass the Authorization header to PHP
|
||||
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
|
||||
|
||||
# compress text file responses
|
||||
<IfModule mod_deflate.c>
|
||||
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>
|
||||
82
private/README.md
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
# Kirby Plainkit
|
||||
|
||||
Kirby is a file-based CMS.
|
||||
Easy to setup. Easy to use. Flexible as hell.
|
||||
|
||||
## Trial
|
||||
|
||||
You can try Kirby on your local machine or on a test
|
||||
server as long as you need to make sure it is the right
|
||||
tool for your next project.
|
||||
|
||||
## Buy a license
|
||||
|
||||
You can purchase your Kirby license at
|
||||
<https://getkirby.com/buy>
|
||||
|
||||
A Kirby license is valid for a single domain. You can find
|
||||
Kirby's license agreement here: <https://getkirby.com/license>
|
||||
|
||||
## The Plainkit
|
||||
|
||||
Kirby's Plainkit is the most minimal setup you can get started with.
|
||||
It does not include any content, styles or other kinds of decoration,
|
||||
so it's perfect to use this as a starting point for your own project.
|
||||
|
||||
## The Panel
|
||||
|
||||
You can find the login for Kirby's admin interface at
|
||||
http://yourdomain.com/panel. You will be guided through the signup
|
||||
process for your first user, when you visit the panel
|
||||
for the first time.
|
||||
|
||||
## Installation
|
||||
|
||||
Kirby does not require a database, which makes it very easy to
|
||||
install. Just copy Kirby's files to your server and visit the
|
||||
URL for your website in the browser.
|
||||
|
||||
**Please check if the invisible .htaccess file has been
|
||||
copied to your server correctly**
|
||||
|
||||
### Requirements
|
||||
|
||||
Kirby runs on PHP 7.1+, Apache or Nginx.
|
||||
|
||||
### Download
|
||||
|
||||
You can download the latest version of the Plainkit
|
||||
from https://github.com/getkirby/plainkit/archive/master.zip
|
||||
|
||||
### With Git
|
||||
|
||||
If you are familiar with Git, you can clone Kirby's
|
||||
Plainkit repository from Github.
|
||||
|
||||
git clone https://github.com/getkirby/plainkit.git
|
||||
|
||||
## Documentation
|
||||
|
||||
<https://getkirby.com/docs>
|
||||
|
||||
## Issues
|
||||
|
||||
If you have a Github account, please report issues
|
||||
directly on Github: <https://github.com/getkirby/kirby/issues>
|
||||
|
||||
Otherwise you can use Kirby's forum: https://forum.getkirby.com
|
||||
or send us an email: <support@getkirby.com>
|
||||
|
||||
## Ideas & Feature Requests
|
||||
|
||||
If you have ideas for new features, please submit a ticket in our ideas repository:
|
||||
<https://github.com/getkirby/kirby/ideas>
|
||||
|
||||
## Support
|
||||
|
||||
<https://getkirby.com/support>
|
||||
|
||||
## Copyright
|
||||
|
||||
© 2009-2019 Bastian Allgeier (Bastian Allgeier GmbH)
|
||||
<https://getkirby.com>
|
||||
BIN
private/assets/fonts/nimbussans-bol.woff
Normal file
BIN
private/assets/fonts/nimbussans-bol.woff2
Normal file
BIN
private/assets/fonts/nimbussans-bolita.woff
Normal file
BIN
private/assets/fonts/nimbussans-bolita.woff2
Normal file
BIN
private/assets/fonts/nimbussans-light.woff
Normal file
BIN
private/assets/fonts/nimbussans-light.woff2
Normal file
BIN
private/assets/fonts/nimbussans-reg.woff
Normal file
BIN
private/assets/fonts/nimbussans-reg.woff2
Normal file
BIN
private/assets/fonts/nimbussans-regita.woff
Normal file
BIN
private/assets/fonts/nimbussans-regita.woff2
Normal file
BIN
private/assets/fonts/nimbussans-ultralight.woff
Normal file
BIN
private/assets/fonts/nimbussans-ultralight.woff2
Normal file
72
private/assets/fonts/stylesheet.css
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on October 19, 2020 */
|
||||
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'nimbus_sans_lbold';
|
||||
src: url('nimbussans-bol.woff2') format('woff2'),
|
||||
url('nimbussans-bol.woff') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'nimbus_sans_lbold_italic';
|
||||
src: url('nimbussans-bolita.woff2') format('woff2'),
|
||||
url('nimbussans-bolita.woff') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'nimbus_sans_d_otlight';
|
||||
src: url('nimbussans-light.woff2') format('woff2'),
|
||||
url('nimbussans-light.woff') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'nimbus_sans_lregular';
|
||||
src: url('nimbussans-reg.woff2') format('woff2'),
|
||||
url('nimbussans-reg.woff') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'nimbus_sans_lregular_italic';
|
||||
src: url('nimbussans-regita.woff2') format('woff2'),
|
||||
url('nimbussans-regita.woff') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@font-face {
|
||||
font-family: 'nimbus_sans_d_otultra_light';
|
||||
src: url('nimbussans-ultralight.woff2') format('woff2'),
|
||||
url('nimbussans-ultralight.woff') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
|
||||
}
|
||||
BIN
private/assets/images/DATA_INV_ARX_PH_03.jpg
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
BIN
private/assets/images/DATA_INV_ARX_PH_03.min.jpg
Normal file
|
After Width: | Height: | Size: 323 KiB |
BIN
private/assets/images/DATA_INV_CON_MO_01.jpg
Normal file
|
After Width: | Height: | Size: 726 KiB |
BIN
private/assets/images/DATA_INV_CON_MO_01.min.jpg
Normal file
|
After Width: | Height: | Size: 393 KiB |
BIN
private/assets/images/DATA_INV_GIF_PH_01-BD.jpg
Normal file
|
After Width: | Height: | Size: 223 KiB |
BIN
private/assets/images/DATA_INV_GIF_PH_01-BD.min.jpg
Normal file
|
After Width: | Height: | Size: 151 KiB |
BIN
private/assets/images/DATA_INV_GIF_PM_4000.jpg
Normal file
|
After Width: | Height: | Size: 514 KiB |
BIN
private/assets/images/DATA_INV_GIF_PM_4000.min.jpg
Normal file
|
After Width: | Height: | Size: 298 KiB |
BIN
private/assets/images/DATA_INV_ITA_DET_20.jpg
Normal file
|
After Width: | Height: | Size: 276 KiB |
BIN
private/assets/images/DATA_INV_ITA_DET_20.min.jpg
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
private/assets/images/DATA_INV_ITA_PH_01.jpg
Normal file
|
After Width: | Height: | Size: 802 KiB |
BIN
private/assets/images/DATA_INV_ITA_PH_01.min.jpg
Normal file
|
After Width: | Height: | Size: 463 KiB |
BIN
private/assets/images/DATA_INV_MDD_PH_01.jpg
Normal file
|
After Width: | Height: | Size: 761 KiB |
BIN
private/assets/images/DATA_INV_MDD_PH_01.min.jpg
Normal file
|
After Width: | Height: | Size: 459 KiB |
BIN
private/assets/images/DATA_INV_MDD_PLN-01_100.jpg
Normal file
|
After Width: | Height: | Size: 355 KiB |
BIN
private/assets/images/DATA_INV_MDD_PLN-01_100.min.jpg
Normal file
|
After Width: | Height: | Size: 181 KiB |
BIN
private/assets/images/DATA_INV_MIN_MO_02.jpg
Normal file
|
After Width: | Height: | Size: 478 KiB |
BIN
private/assets/images/DATA_INV_MIN_MO_02.min.jpg
Normal file
|
After Width: | Height: | Size: 284 KiB |
BIN
private/assets/images/DATA_INV_PAR_PLN-01_200.jpg
Normal file
|
After Width: | Height: | Size: 616 KiB |
BIN
private/assets/images/DATA_INV_PAR_PLN-01_200.min.jpg
Normal file
|
After Width: | Height: | Size: 356 KiB |
BIN
private/assets/images/DATA_INV_PET_PH_01.jpg
Normal file
|
After Width: | Height: | Size: 853 KiB |
BIN
private/assets/images/DATA_INV_PET_PH_01.min.jpg
Normal file
|
After Width: | Height: | Size: 415 KiB |
BIN
private/assets/images/DATA_INV_PRD_IM_03.jpg
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
private/assets/images/DATA_INV_PRD_IM_03.min.jpg
Normal file
|
After Width: | Height: | Size: 660 KiB |
BIN
private/assets/images/DATA_INV_PRD_PM_4000.jpg
Normal file
|
After Width: | Height: | Size: 638 KiB |
BIN
private/assets/images/DATA_INV_PRD_PM_4000.min.jpg
Normal file
|
After Width: | Height: | Size: 370 KiB |
BIN
private/assets/images/DATA_INV_PYM_MO_02.jpg
Normal file
|
After Width: | Height: | Size: 787 KiB |
BIN
private/assets/images/DATA_INV_PYM_MO_02.min.jpg
Normal file
|
After Width: | Height: | Size: 412 KiB |
BIN
private/assets/images/DATA_INV_SCB_CPE_300.jpg
Normal file
|
After Width: | Height: | Size: 259 KiB |
BIN
private/assets/images/DATA_INV_SCB_CPE_300.min.jpg
Normal file
|
After Width: | Height: | Size: 167 KiB |
BIN
private/assets/images/DATA_INV_SCB_PH_01.jpg
Normal file
|
After Width: | Height: | Size: 804 KiB |
BIN
private/assets/images/DATA_INV_SCB_PH_01.min.jpg
Normal file
|
After Width: | Height: | Size: 393 KiB |
BIN
private/assets/images/DATA_INV_SEY_PH_01.jpg
Normal file
|
After Width: | Height: | Size: 190 KiB |
BIN
private/assets/images/DATA_INV_SEY_PH_01.min.jpg
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
private/assets/images/DATA_INV_T6B_DET_33.jpg
Normal file
|
After Width: | Height: | Size: 355 KiB |
BIN
private/assets/images/DATA_INV_T6B_DET_33.min.jpg
Normal file
|
After Width: | Height: | Size: 197 KiB |
BIN
private/assets/images/DATA_INV_T6B_IM_01.jpg
Normal file
|
After Width: | Height: | Size: 701 KiB |
BIN
private/assets/images/DATA_INV_T6B_IM_01.min.jpg
Normal file
|
After Width: | Height: | Size: 425 KiB |
BIN
private/assets/images/DATA_INV_TVG_PH_01.jpg
Normal file
|
After Width: | Height: | Size: 857 KiB |
BIN
private/assets/images/DATA_INV_TVG_PH_01.min.jpg
Normal file
|
After Width: | Height: | Size: 474 KiB |
0
private/assets/images/Icon�
Normal file
BIN
private/assets/images/circle-black.png
Normal file
|
After Width: | Height: | Size: 240 B |
BIN
private/assets/images/circle-white.png
Normal file
|
After Width: | Height: | Size: 809 B |
3
private/assets/images/circle.svg
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="10" height="10" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="8.5" cy="8.09998" r="8" fill="black"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 153 B |
BIN
private/assets/images/favicon.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
private/assets/images/logo.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
5
private/assets/images/next.svg
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<svg width="38" height="32" viewBox="0 0 38 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0.5 13.75H32V18.75H0.5V13.75Z" fill="black"/>
|
||||
<path d="M19.3345 28.0845L34.5845 12.8345L38.12 16.37L22.87 31.62L19.3345 28.0845Z" fill="black"/>
|
||||
<path d="M34.6072 19.8928L18.9999 4.28553L22.5355 0.75L38.1427 16.3573L34.6072 19.8928Z" fill="black"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 361 B |
5
private/assets/images/prev.svg
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<svg width="38" height="32" viewBox="0 0 38 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M38.1427 18.62L6.6427 18.62L6.6427 13.62L38.1427 13.62L38.1427 18.62Z" fill="black"/>
|
||||
<path d="M19.3082 4.28549L4.0582 19.5355L0.522664 16L15.7727 0.749954L19.3082 4.28549Z" fill="black"/>
|
||||
<path d="M4.03552 12.4772L19.6428 28.0845L16.1072 31.62L0.49999 16.0127L4.03552 12.4772Z" fill="black"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 406 B |
555
private/assets/js/main.js
Normal file
|
|
@ -0,0 +1,555 @@
|
|||
"use strict";
|
||||
|
||||
var view;
|
||||
window.scrollTo(0, 0);
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
window.onpopstate = function () {
|
||||
window.location.href = window.location.href;
|
||||
};
|
||||
|
||||
var mySwiper;
|
||||
/* ====================
|
||||
=======================
|
||||
VIEW OBJECT
|
||||
=======================
|
||||
==================== */
|
||||
|
||||
view = {
|
||||
transTime: 250,
|
||||
title: document.querySelector('title').textContent,
|
||||
url: document.querySelector('title').dataset.url,
|
||||
description: document.querySelector('meta[description]').getAttribute('description'),
|
||||
device: '',
|
||||
state: 'grid',
|
||||
scrollPos: 0,
|
||||
prevState: {
|
||||
type: 'none',
|
||||
url: '',
|
||||
title: ''
|
||||
},
|
||||
header: {
|
||||
container: document.querySelector('.header'),
|
||||
logo: document.querySelector('.header__logo'),
|
||||
logoOriginSize: parseInt(window.getComputedStyle(document.querySelector('.header__logo')).getPropertyValue('font-size')),
|
||||
logoBtn: document.querySelector('.logoBtn'),
|
||||
size: 'big',
|
||||
btns: {
|
||||
enable: true,
|
||||
container: document.querySelector('.header__views'),
|
||||
size: document.querySelectorAll('.views__btn--smaller, .views__btn--bigger'),
|
||||
smaller: document.querySelector('.views__btn--smaller'),
|
||||
bigger: document.querySelector('.views__btn--bigger'),
|
||||
close: document.querySelector('.views__btn--close'),
|
||||
list: document.querySelector('.views__btn--mobile'),
|
||||
toClose: function toClose() {
|
||||
if (window.innerWidth > 800) {
|
||||
view.header.btns.size.forEach(function (btn) {
|
||||
btn.classList.add('hide');
|
||||
setTimeout(function () {
|
||||
btn.style.display = 'none';
|
||||
}, view.transTime);
|
||||
});
|
||||
} else {
|
||||
view.header.btns.list.classList.add('hide');
|
||||
setTimeout(function () {
|
||||
view.header.btns.list.style.display = 'none';
|
||||
}, view.transTime);
|
||||
}
|
||||
|
||||
setTimeout(function () {
|
||||
view.header.btns.close.style.display = 'block';
|
||||
view.header.btns.close.classList.remove('hide');
|
||||
}, view.transTime);
|
||||
},
|
||||
toSize: function toSize() {
|
||||
view.header.btns.close.classList.remove('hide');
|
||||
setTimeout(function () {
|
||||
view.header.btns.close.style.display = 'none';
|
||||
view.header.btns.size.forEach(function (btn) {
|
||||
btn.style.display = 'block';
|
||||
setTimeout(function () {
|
||||
btn.classList.remove('hide');
|
||||
}, 50);
|
||||
});
|
||||
}, view.transTime);
|
||||
},
|
||||
toMobileSize: function toMobileSize() {
|
||||
view.header.btns.close.classList.remove('hide');
|
||||
setTimeout(function () {
|
||||
view.header.btns.close.style.display = 'none';
|
||||
view.header.btns.list.style.display = 'block';
|
||||
|
||||
if (view.scrollPos !== 0) {
|
||||
setTimeout(function () {
|
||||
view.header.btns.list.classList.remove('hide');
|
||||
}, 50);
|
||||
}
|
||||
}, view.transTime);
|
||||
}
|
||||
},
|
||||
reduce: function reduce() {
|
||||
if (view.header.size === 'big') {
|
||||
view.header.size = 'normal';
|
||||
view.header.logo.classList.remove('header__logo--big');
|
||||
view.header.container.classList.remove('header--big');
|
||||
setTimeout(function () {
|
||||
view.grid.container.classList.remove('grid--distant');
|
||||
}, 100);
|
||||
setTimeout(function () {
|
||||
view.header.btns.container.classList.remove('header__views--unvisible');
|
||||
view.header.size = 'normal';
|
||||
}, view.transTime);
|
||||
}
|
||||
},
|
||||
toInfo: function toInfo() {
|
||||
view.header.logo.textContent = 'INFO';
|
||||
},
|
||||
toName: function toName() {
|
||||
view.header.logo.textContent = 'DATA';
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
container: document.querySelector('.grid'),
|
||||
blocks: document.querySelectorAll('.block'),
|
||||
images: document.querySelectorAll('.block__image'),
|
||||
showBlocks: function showBlocks(block) {
|
||||
var image = block.querySelector('.block__image');
|
||||
|
||||
if (image.complete) {
|
||||
setTimeout(function () {
|
||||
block.parentNode.classList.remove('toProject--wait');
|
||||
setTimeout(function () {
|
||||
block.classList.remove('hide');
|
||||
}, view.transTime);
|
||||
}, 100);
|
||||
} else {
|
||||
image.addEventListener('load', function () {
|
||||
block.parentNode.classList.remove('toProject--wait');
|
||||
setTimeout(function () {
|
||||
block.classList.remove('hide');
|
||||
}, view.transTime);
|
||||
});
|
||||
}
|
||||
},
|
||||
smaller: function smaller() {
|
||||
if (view.state === 'grid' && view.header.btns.enable === true) {
|
||||
if (view.grid.container.classList.contains('grid--0')) {
|
||||
view.grid.container.classList.remove('grid--full');
|
||||
view.grid.blocks.forEach(function (block) {
|
||||
block.querySelector('.block__image').classList.remove('block__image--full');
|
||||
});
|
||||
view.grid.container.classList.remove('grid--0');
|
||||
view.grid.container.classList.add('grid--1');
|
||||
} else if (view.grid.container.classList.contains('grid--1')) {
|
||||
view.grid.container.classList.remove('grid--1');
|
||||
view.grid.container.classList.add('grid--2');
|
||||
} else if (view.grid.container.classList.contains('grid--2')) {
|
||||
view.grid.container.classList.remove('grid--2');
|
||||
view.grid.container.classList.add('grid--3');
|
||||
} else if (view.grid.container.classList.contains('grid--3')) {
|
||||
view.grid.container.classList.remove('grid--3');
|
||||
view.grid.container.classList.add('grid--4');
|
||||
} else if (view.grid.container.classList.contains('grid--4')) {
|
||||
view.grid.container.classList.remove('grid--4');
|
||||
view.grid.container.classList.add('grid--5');
|
||||
} else if (view.grid.container.classList.contains('grid--5')) {
|
||||
view.grid.container.classList.remove('grid--5');
|
||||
view.grid.container.classList.add('list');
|
||||
view.list.init();
|
||||
}
|
||||
}
|
||||
},
|
||||
bigger: function bigger() {
|
||||
if (view.state !== 'project' && view.header.btns.enable === true) {
|
||||
view.header.btns.enable = false; // if (view.grid.container.classList.contains('grid--0') !== true) {
|
||||
// view.grid.container.classList.add('hide')
|
||||
// view.list.container.classList.add('hide')
|
||||
// }
|
||||
|
||||
if (view.grid.container.classList.contains('list')) {
|
||||
view.list.toGrid();
|
||||
} else if (view.grid.container.classList.contains('grid--5')) {
|
||||
view.grid.container.classList.remove('grid--5');
|
||||
view.grid.container.classList.add('grid--4');
|
||||
} else if (view.grid.container.classList.contains('grid--4')) {
|
||||
view.grid.container.classList.remove('grid--4');
|
||||
view.grid.container.classList.add('grid--3');
|
||||
} else if (view.grid.container.classList.contains('grid--3')) {
|
||||
view.grid.container.classList.remove('grid--3');
|
||||
view.grid.container.classList.add('grid--2');
|
||||
} else if (view.grid.container.classList.contains('grid--2')) {
|
||||
view.grid.container.classList.remove('grid--2');
|
||||
view.grid.container.classList.add('grid--1');
|
||||
} else if (view.grid.container.classList.contains('grid--1')) {
|
||||
view.grid.container.classList.remove('grid--1');
|
||||
view.grid.container.classList.add('grid--0');
|
||||
view.grid.blocks.forEach(function (block) {
|
||||
view.grid.container.classList.add('grid--full');
|
||||
block.querySelector('.block__image').classList.add('block__image--full');
|
||||
});
|
||||
}
|
||||
|
||||
setTimeout(function () {
|
||||
view.grid.container.classList.remove('hide');
|
||||
view.header.btns.enable = true;
|
||||
}, 100);
|
||||
}
|
||||
},
|
||||
projects: document.querySelectorAll('.toProject')
|
||||
},
|
||||
project: {
|
||||
container: document.querySelector('.project'),
|
||||
init: function init(link, title, toHide, toFill) {
|
||||
view.prevState.type = view.state;
|
||||
view.prevState.url = '';
|
||||
view.prevState.title = '';
|
||||
view.state = 'project';
|
||||
history.pushState(null, title, link);
|
||||
toHide.classList.add('hide');
|
||||
fetch(link).then(function (res) {
|
||||
return res.text();
|
||||
}).then(function (html) {
|
||||
var domElement = document.createElement('div');
|
||||
domElement.classList.add('test-container');
|
||||
domElement.innerHTML = html;
|
||||
var projectContent = domElement.querySelector('.projectContainer').innerHTML;
|
||||
toFill.innerHTML = projectContent;
|
||||
view.project.swiper.init();
|
||||
}).then(function () {
|
||||
document.querySelector('.toProjectDesc').addEventListener('click', function () {
|
||||
console.log(document.querySelectorAll('.swiper-slide').length - 2);
|
||||
mySwiper.slideTo(document.querySelectorAll('.swiper-slide').length - 2);
|
||||
});
|
||||
setTimeout(function () {
|
||||
toFill.style.display = 'block';
|
||||
setTimeout(function () {
|
||||
view.project.fadeIn(toHide, toFill);
|
||||
}, 50);
|
||||
}, view.transTime);
|
||||
});
|
||||
},
|
||||
fadeIn: function fadeIn(toHide, toFill) {
|
||||
toHide.style.display = 'none';
|
||||
toFill.style.display = 'block';
|
||||
toFill.classList.remove('hide');
|
||||
toHide.removeEventListener('transitionend', view.project.fadeIn());
|
||||
},
|
||||
close: function close() {
|
||||
history.pushState(null, view.title, view.url);
|
||||
console.log("view.state : ".concat(view.state));
|
||||
console.log("prevState : ".concat(view.prevState.type));
|
||||
view.project.container.classList.add('hide');
|
||||
setTimeout(function () {
|
||||
view.project.container.style.display = 'none';
|
||||
|
||||
if (view.prevState.type === 'list') {
|
||||
var toShow = window.innerWidth > 800 ? view.list.container : view.list.mobileContainer;
|
||||
toShow.style.display = 'block';
|
||||
setTimeout(function () {
|
||||
toShow.classList.remove('hide');
|
||||
view.state = 'list';
|
||||
}, 50);
|
||||
} else if (view.prevState.type === 'grid' || view.prevState.type === 'agency') {
|
||||
if (view.grid.container.classList.contains('list')) {
|
||||
window.innerWidth > 800 ? view.list.container.style.display = 'block' : view.list.mobileContainer.style.display = 'block';
|
||||
setTimeout(function () {
|
||||
window.innerWidth > 800 ? view.list.container.classList.remove('hide') : view.list.mobileContainer.classList.remove('hide');
|
||||
view.state = 'list';
|
||||
}, 50);
|
||||
} else {
|
||||
window.innerWidth > 800 ? view.grid.container.style.display = 'grid' : view.grid.container.style.display = 'block';
|
||||
setTimeout(function () {
|
||||
view.grid.container.classList.remove('hide');
|
||||
view.state = 'grid';
|
||||
}, 50);
|
||||
}
|
||||
} else if (view.prevState.type === 'project') {
|
||||
view.project.swiper.destroy();
|
||||
view.project.init(view.prevState.url, view.prevState.title, document.querySelector('.project'), document.querySelector('.project'));
|
||||
}
|
||||
}, view.transTime);
|
||||
},
|
||||
swiper: {
|
||||
init: function init() {
|
||||
mySwiper = new Swiper('.swiper-container', {
|
||||
// Optional parameters
|
||||
direction: 'horizontal',
|
||||
loop: true,
|
||||
observer: true,
|
||||
observeSlideChildren: true,
|
||||
observeParents: true,
|
||||
speed: 300,
|
||||
autoplay: {
|
||||
delay: 2000
|
||||
},
|
||||
// Responsive
|
||||
breakpoints: {
|
||||
800: {
|
||||
speed: 500,
|
||||
autoplay: false
|
||||
}
|
||||
},
|
||||
// Navigation arrows
|
||||
navigation: {
|
||||
nextEl: '.swiper-button-next',
|
||||
prevEl: '.swiper-button-prev'
|
||||
},
|
||||
// Keyboard control
|
||||
keyboard: {
|
||||
enabled: true
|
||||
}
|
||||
});
|
||||
},
|
||||
destroy: function destroy() {
|
||||
mySwiper.destroy();
|
||||
}
|
||||
}
|
||||
},
|
||||
agency: {
|
||||
init: function init(link, title, toHide, toFill) {
|
||||
view.prevState.type = view.state;
|
||||
|
||||
if (view.state === 'grid' || view.state === 'list') {
|
||||
view.prevState.url = '';
|
||||
view.prevState.title = '';
|
||||
} else if (view.state === 'project') {
|
||||
view.prevState.url = window.location.href;
|
||||
view.prevState.title = title;
|
||||
}
|
||||
|
||||
view.state = 'agency';
|
||||
history.pushState(null, title, link);
|
||||
toHide.classList.add('hide');
|
||||
fetch(link).then(function (res) {
|
||||
return res.text();
|
||||
}).then(function (html) {
|
||||
var domElement = document.createElement('div');
|
||||
domElement.classList.add('test-container');
|
||||
domElement.innerHTML = html;
|
||||
var pageContent = domElement.querySelector('.wrapper').innerHTML;
|
||||
setTimeout(function () {
|
||||
toFill.innerHTML = pageContent;
|
||||
toFill.style.display = 'block';
|
||||
setTimeout(function () {
|
||||
view.project.fadeIn(toHide, toFill);
|
||||
}, 50);
|
||||
}, view.transTime);
|
||||
});
|
||||
}
|
||||
},
|
||||
list: {
|
||||
container: document.querySelector('.list'),
|
||||
mobileContainer: document.querySelector('.list--mobile'),
|
||||
init: function init() {
|
||||
var list = view.device === 'desktop' ? view.list.container : view.list.mobileContainer;
|
||||
view.prevState.type = view.state;
|
||||
view.prevState.url = '';
|
||||
view.prevState.title = '';
|
||||
view.state = 'list';
|
||||
view.grid.container.style.display = 'none';
|
||||
list.style.display = 'block';
|
||||
setTimeout(function () {
|
||||
list.classList.remove('hide');
|
||||
}, 50);
|
||||
},
|
||||
toGrid: function toGrid() {
|
||||
view.prevState.type = view.state;
|
||||
view.state = 'grid';
|
||||
view.grid.container.classList.remove('list');
|
||||
view.grid.container.classList.add('grid--5');
|
||||
window.innerWidth > 800 ? view.list.container.style.display = 'none' : view.list.mobileContainer.style.display = 'none';
|
||||
view.grid.container.style.display = '';
|
||||
}
|
||||
}
|
||||
};
|
||||
/* ====================
|
||||
=======================
|
||||
INTERACTIONS
|
||||
=======================
|
||||
==================== */
|
||||
// =========================================== BLOCK FADE IN ON LOAD
|
||||
|
||||
if (window.innerWidth > 800) {
|
||||
view.device = 'desktop';
|
||||
} else {
|
||||
view.device = 'mobile';
|
||||
}
|
||||
|
||||
view.grid.blocks.forEach(function (block) {
|
||||
view.grid.showBlocks(block);
|
||||
}); // =========================================== LOGO STRETCHING
|
||||
|
||||
view.header.logo.style.fontSize = view.header.logoOriginSize;
|
||||
var prevScrollPos = 0;
|
||||
window.addEventListener('scroll', function (event) {
|
||||
if (window.scrollY * -1.007 + view.header.logoOriginSize >= 40 && view.state !== 'agency' && view.state !== 'project') {
|
||||
view.header.logo.style.fontSize = "".concat(window.scrollY * -1.007 + view.header.logoOriginSize, "px");
|
||||
|
||||
if (!view.header.btns.list.classList.contains('hide')) {
|
||||
view.header.btns.list.classList.add('hide');
|
||||
}
|
||||
} else {
|
||||
if (view.header.logo.style.fontSize !== '40 px') {
|
||||
view.header.logo.style.fontSize = '40px';
|
||||
view.header.btns.list.classList.remove('hide');
|
||||
}
|
||||
}
|
||||
}); // =========================================== VIEW BUTTON
|
||||
|
||||
view.header.btns.smaller.addEventListener('click', function () {
|
||||
view.grid.smaller();
|
||||
});
|
||||
view.header.btns.bigger.addEventListener('click', function () {
|
||||
view.grid.bigger();
|
||||
}); // =========================================== CLOSE BTN
|
||||
|
||||
view.header.btns.close.addEventListener('click', function () {
|
||||
if (view.header.btns.enable === true) {
|
||||
if (view.state === 'agency') {
|
||||
view.header.toName();
|
||||
}
|
||||
|
||||
if (view.state === 'project' || view.prevState.type === 'grid' || view.prevState.type === 'list') {
|
||||
if (view.scrollPos === 0) {
|
||||
view.header.logo.style.fontSize = view.header.logoOriginSize + 'px';
|
||||
setTimeout(function () {
|
||||
view.header.logo.style.transition = '';
|
||||
}, 300);
|
||||
} else {
|
||||
setTimeout(function () {
|
||||
window.scrollTo(0, view.scrollPos);
|
||||
setTimeout(function () {
|
||||
view.header.logo.style.transition = '';
|
||||
}, 300);
|
||||
}, 300);
|
||||
}
|
||||
}
|
||||
|
||||
view.project.close();
|
||||
|
||||
if (view.prevState.type !== 'project') {
|
||||
if (window.innerWidth > 800) {
|
||||
view.header.btns.toSize();
|
||||
} else {
|
||||
view.header.btns.toMobileSize();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
view.header.btns.list.addEventListener('click', function () {
|
||||
if (view.state === 'grid') {
|
||||
view.state === 'list';
|
||||
view.header.btns.list.querySelector('h1').textContent = 'images';
|
||||
view.grid.container.classList.add('list');
|
||||
view.list.init();
|
||||
} else {
|
||||
view.state === 'grid';
|
||||
view.header.btns.list.querySelector('h1').textContent = 'liste';
|
||||
view.grid.container.classList.remove('list');
|
||||
view.list.toGrid();
|
||||
}
|
||||
});
|
||||
document.addEventListener('keydown', function (event) {
|
||||
if (view.state === 'project' && view.header.btns.enable === true && event.code === 'Escape') {
|
||||
if (view.header.btns.enable === true) {
|
||||
if (view.state === 'agency') {
|
||||
view.header.toName();
|
||||
}
|
||||
|
||||
if (view.state === 'project' || view.prevState.type === 'grid' || view.prevState.type === 'list') {
|
||||
if (view.scrollPos === 0) {
|
||||
view.header.logo.style.fontSize = view.header.logoOriginSize + 'px';
|
||||
setTimeout(function () {
|
||||
view.header.logo.style.transition = '';
|
||||
}, 300);
|
||||
} else {
|
||||
setTimeout(function () {
|
||||
window.scrollTo(0, view.scrollPos);
|
||||
setTimeout(function () {
|
||||
view.header.logo.style.transition = '';
|
||||
}, 300);
|
||||
}, 300);
|
||||
}
|
||||
}
|
||||
|
||||
view.project.close();
|
||||
|
||||
if (view.prevState.type !== 'project') {
|
||||
if (window.innerWidth > 800) {
|
||||
view.header.btns.toSize();
|
||||
} else {
|
||||
view.header.btns.toMobileSize();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
document.querySelector('.grid, grid--mobile').addEventListener('click', function () {
|
||||
if (view.header.size === 'big') {
|
||||
view.header.reduce();
|
||||
}
|
||||
});
|
||||
view.header.logo.addEventListener('mouseenter', function () {
|
||||
if (view.state !== 'agency') {
|
||||
view.header.toInfo();
|
||||
}
|
||||
});
|
||||
view.header.logo.addEventListener('mouseleave', function () {
|
||||
if (view.state !== 'agency') {
|
||||
view.header.toName();
|
||||
}
|
||||
}); // /* ====================
|
||||
// =======================
|
||||
// --------- SPA ---------
|
||||
// =======================
|
||||
// ==================== */
|
||||
|
||||
document.querySelectorAll('.toProject, .list__project, .list__project--mobile').forEach(function (project) {
|
||||
project.addEventListener('click', function (e) {
|
||||
view.scrollPos = window.scrollY;
|
||||
e.preventDefault();
|
||||
view.header.logo.style.transition = 'font-size .3s ease-in-out';
|
||||
setTimeout(function () {
|
||||
view.header.logo.style.fontSize = '2.5rem';
|
||||
}, 10);
|
||||
view.header.btns.toClose();
|
||||
var link = project.getAttribute('href');
|
||||
var title = project.dataset.title;
|
||||
var description = project.dataset.description;
|
||||
|
||||
if (view.state === 'list') {
|
||||
window.innerWidth > 800 ? view.project.init(link, title, view.list.container, view.project.container) : view.project.init(link, title, view.list.mobileContainer, view.project.container);
|
||||
} else {
|
||||
view.project.init(link, title, view.grid.container, view.project.container);
|
||||
}
|
||||
});
|
||||
}); // =========================================== LOGO BTN AGENCE
|
||||
|
||||
view.header.logoBtn.addEventListener('click', function (e) {
|
||||
e.preventDefault();
|
||||
view.scrollPos = window.scrollY;
|
||||
view.header.logo.style.transition = 'font-size .3s ease-in-out';
|
||||
setTimeout(function () {
|
||||
view.header.logo.style.fontSize = '2.5rem';
|
||||
}, 10);
|
||||
view.header.btns.toClose();
|
||||
var link = view.header.logoBtn.getAttribute('href');
|
||||
var title = view.header.logoBtn.dataset.title;
|
||||
setTimeout(function () {
|
||||
window.scrollTo(0, 0);
|
||||
}, 300);
|
||||
|
||||
if (view.state === 'list') {
|
||||
window.innerWidth > 800 ? view.agency.init(link, title, view.list.container, view.project.container) : view.agency.init(link, title, view.list.mobileContainer, view.project.container);
|
||||
} else if (view.state === 'project') {
|
||||
view.agency.init(link, title, view.project.container, view.project.container);
|
||||
} else if (view.state === 'grid') {
|
||||
view.agency.init(link, title, view.grid.container, view.project.container);
|
||||
}
|
||||
});
|
||||
/* ====================
|
||||
=======================
|
||||
END
|
||||
=======================
|
||||
==================== */
|
||||
});
|
||||
538
private/assets/style.css
Normal file
|
|
@ -0,0 +1,538 @@
|
|||
:root {
|
||||
--transTime: 0.1s;
|
||||
}
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-decoration: none;
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
font-family: "nimbus_regular", Arial;
|
||||
color: #000;
|
||||
cursor: url(./images/circle-black.png) 10 20, auto !important;
|
||||
}
|
||||
:focus,
|
||||
:active {
|
||||
outline: 0;
|
||||
}
|
||||
body {
|
||||
padding: 0 2vw 0 2vw;
|
||||
}
|
||||
p:not(:last-child) {
|
||||
padding-bottom: 0.8rem;
|
||||
}
|
||||
h1 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "nimbus_regular";
|
||||
src: url("fonts/nimbussans-reg.woff2") format("woff2"),
|
||||
url("fonts/nimbussans-reg.woff") format("woff");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "nimbus_bold";
|
||||
src: url("fonts/nimbussans-bol.woff2") format("woff2"),
|
||||
url("fonts/nimbussans-bol.woff") format("woff");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
.hide {
|
||||
opacity: 0 !important;
|
||||
}
|
||||
.header {
|
||||
position: fixed;
|
||||
z-index: 2;
|
||||
top: 0;
|
||||
left: 2vw;
|
||||
width: 96vw;
|
||||
padding: 1rem 0;
|
||||
background-color: transparent;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
transition: all var(--transTime) ease-in-out;
|
||||
-webkit-transition: all var(--transTime) ease-in-out;
|
||||
-moz-transition: all var(--transTime) ease-in-out;
|
||||
-o-transition: all var(--transTime) ease-in-out;
|
||||
}
|
||||
.header--big {
|
||||
padding: 0;
|
||||
}
|
||||
.header__logo {
|
||||
font-size: 2.5rem;
|
||||
font-family: Arial;
|
||||
}
|
||||
.header__logo--big {
|
||||
font-size: 17rem;
|
||||
will-change: font-size;
|
||||
}
|
||||
.logoBtn {
|
||||
transform: translateX(-2px);
|
||||
}
|
||||
.views {
|
||||
width: 6rem;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
opacity: 1;
|
||||
position: fixed;
|
||||
right: 2vw;
|
||||
top: 1.4rem;
|
||||
transition: all var(--transTime) ease-in-out;
|
||||
-webkit-transition: all var(--transTime) ease-in-out;
|
||||
-moz-transition: all var(--transTime) ease-in-out;
|
||||
-o-transition: all var(--transTime) ease-in-out;
|
||||
}
|
||||
.header__views--unvisible {
|
||||
opacity: 0;
|
||||
}
|
||||
.views__btn {
|
||||
width: 2.5rem;
|
||||
transition: all var(--transTime) ease;
|
||||
-webkit-transition: all var(--transTime) ease;
|
||||
-moz-transition: all var(--transTime) ease;
|
||||
-o-transition: all var(--transTime) ease;
|
||||
}
|
||||
.views__btn--mobile {
|
||||
display: none;
|
||||
opacity: 1;
|
||||
transition: all var(--transTime) ease;
|
||||
-webkit-transition: all var(--transTime) ease;
|
||||
-moz-transition: all var(--transTime) ease;
|
||||
-o-transition: all var(--transTime) ease;
|
||||
}
|
||||
.views__btn--smaller {
|
||||
transform: translateX(-1rem);
|
||||
}
|
||||
.views__btn--close {
|
||||
display: none;
|
||||
width: 2.5rem;
|
||||
}
|
||||
.views__btn img {
|
||||
width: 80%;
|
||||
}
|
||||
.grid {
|
||||
display: grid;
|
||||
width: 100%;
|
||||
padding: 22rem 0 8rem;
|
||||
grid-auto-rows: 20vw;
|
||||
gap: 4.5vw;
|
||||
opacity: 1;
|
||||
transition: opacity var(--transTime) ease-in-out,
|
||||
transform var(--transTime) ease-in-out;
|
||||
-webkit-transition: opacity var(--transTime) ease-in-out,
|
||||
transform var(--transTime) ease-in-out;
|
||||
-moz-transition: opacity var(--transTime) ease-in-out,
|
||||
transform var(--transTime) ease-in-out;
|
||||
-o-transition: opacity var(--transTime) ease-in-out,
|
||||
transform var(--transTime) ease-in-out;
|
||||
}
|
||||
.grid--full {
|
||||
grid-template-columns: 1fr;
|
||||
grid-auto-rows: auto;
|
||||
}
|
||||
.grid--0 {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.grid--1 {
|
||||
grid-template-columns: 1fr;
|
||||
grid-auto-rows: 50vw;
|
||||
}
|
||||
.grid--2 {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
grid-auto-rows: 45.3vw;
|
||||
}
|
||||
.grid--3 {
|
||||
grid-template-columns: 1fr 1fr 1fr;
|
||||
grid-auto-rows: 28.7vw;
|
||||
}
|
||||
.grid--4 {
|
||||
grid-template-columns: 1fr 1fr 1fr 1fr;
|
||||
grid-auto-rows: 20.5vw;
|
||||
}
|
||||
.grid--5 {
|
||||
grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
|
||||
grid-auto-rows: 16vw;
|
||||
}
|
||||
.toProject {
|
||||
opacity: 1;
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
transition: all var(--transTime) ease-in-out;
|
||||
-webkit-transition: all var(--transTime) ease-in-out;
|
||||
-moz-transition: all var(--transTime) ease-in-out;
|
||||
-o-transition: all var(--transTime) ease-in-out;
|
||||
}
|
||||
.toProject--wait {
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.block__image:hover {
|
||||
-moz-filter: grayscale(100%);
|
||||
-ms-filter: grayscale(100%);
|
||||
-o-filter: grayscale(100%);
|
||||
filter: grayscale(100%);
|
||||
}
|
||||
.block__image--full .block__image:hover {
|
||||
-moz-filter: grayscale(0);
|
||||
-ms-filter: grayscale(0);
|
||||
-o-filter: grayscale(0);
|
||||
filter: grayscale(0);
|
||||
}
|
||||
.block {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-end;
|
||||
transition: all var(--transTime) ease;
|
||||
-webkit-transition: all var(--transTime) ease;
|
||||
-moz-transition: all var(--transTime) ease;
|
||||
-o-transition: all var(--transTime) ease;
|
||||
}
|
||||
.block__image {
|
||||
max-width: 100%;
|
||||
max-height: 92%;
|
||||
align-self: baseline;
|
||||
filter: grayscale(0);
|
||||
opacity: 1;
|
||||
-webkit-transition: all var(--transTime) ease;
|
||||
-moz-transition: all var(--transTime) ease;
|
||||
-o-transition: all var(--transTime) ease;
|
||||
}
|
||||
.block__caption {
|
||||
font-size: 0.85rem;
|
||||
padding-top: 0.6rem;
|
||||
}
|
||||
.block__ref {
|
||||
text-transform: uppercase;
|
||||
font-size: 0.65rem;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
.block__image--full {
|
||||
max-width: none !important;
|
||||
max-height: none;
|
||||
width: 100% !important;
|
||||
height: auto;
|
||||
}
|
||||
.list {
|
||||
padding: 22rem 0 8rem;
|
||||
opacity: 1;
|
||||
transition: all var(--transTime) ease;
|
||||
-webkit-transition: all var(--transTime) ease;
|
||||
-moz-transition: all var(--transTime) ease;
|
||||
-o-transition: all var(--transTime) ease;
|
||||
}
|
||||
.list__project {
|
||||
display: grid;
|
||||
grid-template-columns: 0.7fr 1.6fr 0.8fr 1fr 1.2fr 1fr 0.6fr 0.6fr;
|
||||
background-color: rgba(0, 0, 0, 0);
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0);
|
||||
border-top: 1px solid rgba(0, 0, 0, 0);
|
||||
padding: 1rem 0 1rem 0;
|
||||
transition: all var(--transTime) ease;
|
||||
-webkit-transition: all var(--transTime) ease;
|
||||
-moz-transition: all var(--transTime) ease;
|
||||
-o-transition: all var(--transTime) ease;
|
||||
}
|
||||
.list__project:hover {
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 1);
|
||||
border-top: 1px solid rgba(0, 0, 0, 1);
|
||||
}
|
||||
.cell {
|
||||
height: 5rem;
|
||||
}
|
||||
.cell:not(:first-child) {
|
||||
padding-left: 2rem;
|
||||
}
|
||||
.cell__image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
-o-object-fit: contain;
|
||||
object-fit: contain;
|
||||
-o-object-position: top left;
|
||||
object-position: top left;
|
||||
}
|
||||
.cell__text--place,
|
||||
.cell__text--dates,
|
||||
.cell__text--architects,
|
||||
.cell__text--mo,
|
||||
.cell__text--size,
|
||||
.cell__text--budget,
|
||||
.cell__text--state {
|
||||
text-transform: uppercase;
|
||||
font-size: 0.7rem;
|
||||
letter-spacing: 0.02rem;
|
||||
}
|
||||
.cell__text--ref {
|
||||
font-size: 0.6rem;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
.cell__text--title {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
.project {
|
||||
padding-top: 4rem;
|
||||
opacity: 1;
|
||||
transition: opacity var(--transTime) ease;
|
||||
-webkit-transition: opacity var(--transTime) ease;
|
||||
-moz-transition: opacity var(--transTime) ease;
|
||||
-o-transition: opacity var(--transTime) ease;
|
||||
}
|
||||
.toProjectDesc {
|
||||
z-index: 3;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
padding: 1rem 1rem 1rem 0;
|
||||
}
|
||||
.project__title {
|
||||
font-weight: 500;
|
||||
}
|
||||
.project__title--ref {
|
||||
text-transform: uppercase;
|
||||
margin-right: 1rem;
|
||||
font-size: 0.8rem;
|
||||
letter-spacing: 0.1rem;
|
||||
}
|
||||
.swiper-container {
|
||||
height: 83vh;
|
||||
}
|
||||
.swiper-slide__intro {
|
||||
padding-top: 1rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
}
|
||||
.intro__recap {
|
||||
transform: translateY(-2rem);
|
||||
max-width: 20rem;
|
||||
text-transform: uppercase;
|
||||
font-size: 0.85rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
.recap__item:first-child {
|
||||
border-top: 1px solid #000;
|
||||
padding-top: 0.5rem;
|
||||
}
|
||||
.recap__item {
|
||||
border-bottom: 1px solid #000;
|
||||
margin-bottom: 0.5rem;
|
||||
width: 100%;
|
||||
display: inline-block;
|
||||
padding-bottom: 0.2rem;
|
||||
}
|
||||
.swiper-slide__image {
|
||||
-o-object-fit: contain;
|
||||
object-fit: contain;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.swiper-button-next,
|
||||
.swiper-button-prev {
|
||||
position: fixed !important;
|
||||
top: 6rem !important;
|
||||
height: 100% !important;
|
||||
width: 50% !important;
|
||||
}
|
||||
.swiper-button-next::after,
|
||||
.swiper-button-prev::after {
|
||||
content: "" !important;
|
||||
}
|
||||
.swiper-button-prev:hover {
|
||||
cursor: url(./images/prev.svg) 25 25, auto !important;
|
||||
}
|
||||
.swiper-button-next:hover {
|
||||
cursor: url(./images/next.svg) 25 25, auto !important;
|
||||
}
|
||||
.swiper-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
.wrapper {
|
||||
padding-top: 4rem;
|
||||
}
|
||||
.agency {
|
||||
padding-top: 2rem;
|
||||
padding-bottom: 2rem;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
}
|
||||
.agency__projects p {
|
||||
line-height: 1.35;
|
||||
}
|
||||
.agency__presentation,
|
||||
.agency__projects {
|
||||
width: 45%;
|
||||
max-width: 660px;
|
||||
}
|
||||
.agency__projects {
|
||||
margin-left: 15vw;
|
||||
line-height: 1.4rem;
|
||||
}
|
||||
.agency h1 {
|
||||
font-size: 0.95rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05rem;
|
||||
margin: 1.2rem 0 0.7rem 0;
|
||||
}
|
||||
.majorProjects {
|
||||
margin: 0 0 0.7rem 0 !important;
|
||||
}
|
||||
@media screen and (min-width: 1500px) {
|
||||
.list__project {
|
||||
grid-template-columns: 0.7fr 1.5fr 0.8fr 1fr 1.2fr 1fr 0.7fr 0.6fr;
|
||||
}
|
||||
.cell__text--ref {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
.cell__text--title {
|
||||
font-size: 1rem;
|
||||
}
|
||||
.cell__text--place,
|
||||
.cell__text--dates,
|
||||
.cell__text--architects,
|
||||
.cell__text--mo,
|
||||
.cell__text--size,
|
||||
.cell__text--budget,
|
||||
.cell__text--state {
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
.cell__text {
|
||||
font-size: 0.95rem !important;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 800px) {
|
||||
.grid--1 {
|
||||
grid-auto-rows: 40rem;
|
||||
}
|
||||
.grid--2 {
|
||||
grid-auto-rows: 30rem;
|
||||
}
|
||||
.grid--3 {
|
||||
grid-auto-rows: 20rem;
|
||||
}
|
||||
a,
|
||||
button {
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
.swiper-button-next,
|
||||
.swiper-button-prev {
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
body {
|
||||
padding: 0 5vw 0 5vw;
|
||||
}
|
||||
p {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
.header {
|
||||
left: 5vw;
|
||||
width: 90vw;
|
||||
background-color: #fff;
|
||||
}
|
||||
.views {
|
||||
width: auto;
|
||||
top: 1rem;
|
||||
right: 5vw;
|
||||
}
|
||||
.views__btn {
|
||||
display: none;
|
||||
}
|
||||
.views__btn--mobile {
|
||||
display: block;
|
||||
}
|
||||
.header__logo,
|
||||
.views__btn--mobile h1 {
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 2rem;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.header__logo--big {
|
||||
font-size: 34vw;
|
||||
}
|
||||
.views__btn img {
|
||||
width: 60%;
|
||||
}
|
||||
.grid {
|
||||
display: block;
|
||||
padding: 13rem 0 8rem;
|
||||
}
|
||||
.grid--distant {
|
||||
transform: translateY(5rem);
|
||||
}
|
||||
.toProject {
|
||||
display: block;
|
||||
margin-bottom: 3rem;
|
||||
height: 55vw;
|
||||
}
|
||||
.block__image:hover {
|
||||
-moz-filter: none;
|
||||
-ms-filter: none;
|
||||
-o-filter: none;
|
||||
filter: none;
|
||||
}
|
||||
.block__image {
|
||||
align-self: center;
|
||||
}
|
||||
.block__caption {
|
||||
text-align: center;
|
||||
}
|
||||
.list--mobile {
|
||||
margin-top: 11.5rem;
|
||||
opacity: 1;
|
||||
transition: opacity var(--transTime) ease;
|
||||
-webkit-transition: opacity var(--transTime) ease;
|
||||
-moz-transition: opacity var(--transTime) ease;
|
||||
-o-transition: opacity var(--transTime) ease;
|
||||
}
|
||||
.projectLine--mobile {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 2fr;
|
||||
padding-bottom: 2.5rem;
|
||||
}
|
||||
.projectLine__cell--summary--mobile {
|
||||
margin-left: 1rem;
|
||||
}
|
||||
.cell__image--mobile {
|
||||
width: 100%;
|
||||
}
|
||||
.cell__text--ref--mobile {
|
||||
font-size: 0.6rem;
|
||||
}
|
||||
.project {
|
||||
height: 90vh;
|
||||
}
|
||||
.swiper-slide__intro {
|
||||
width: 100%;
|
||||
}
|
||||
.toProjectDesc {
|
||||
width: 100vw;
|
||||
left: 0;
|
||||
padding: 0.5rem 5vw 0.5rem 5vw;
|
||||
right: 0;
|
||||
text-align: left;
|
||||
background-color: #fff;
|
||||
}
|
||||
.wrapper {
|
||||
padding-top: 4rem;
|
||||
}
|
||||
.agency {
|
||||
display: block;
|
||||
}
|
||||
.agency__presentation,
|
||||
.agency__projects {
|
||||
width: 100%;
|
||||
}
|
||||
.agency__projects {
|
||||
margin-left: 0;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
}
|
||||
1
private/assets/svg/bigger.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 130 130" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><g><rect x="0" y="54.167" width="129.167" height="20.833"/><path d="M54.167,0l-0,129.167l20.833,-0l-0,-129.167l-20.833,0Z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 576 B |
1
private/assets/svg/close.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 130 130" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><g><path d="M113.432,-0l-113.432,113.432l14.731,14.731l113.432,-113.432l-14.731,-14.731Z"/><path d="M-0,14.731l113.432,113.432l14.731,-14.731l-113.432,-113.432l-14.731,14.731Z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 630 B |
1
private/assets/svg/smaller.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 130 130" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect x="0" y="54.167" width="129.167" height="20.833"/></svg>
|
||||
|
After Width: | Height: | Size: 504 B |
27
private/composer.json
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"name": "getkirby/plainkit",
|
||||
"description": "Kirby Plainkit",
|
||||
"type": "project",
|
||||
"keywords": ["kirby", "cms", "starterkit"],
|
||||
"homepage": "https://getkirby.com",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Bastian Allgeier",
|
||||
"email": "bastian@getkirby.com",
|
||||
"homepage": "https://getkirby.com"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"email": "support@getkirby.com",
|
||||
"issues": "https://github.com/getkirby/starterkit/issues",
|
||||
"forum": "https://forum.getkirby.com",
|
||||
"source": "https://github.com/getkirby/starterkit"
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1.0",
|
||||
"getkirby/cms": "^3.0"
|
||||
},
|
||||
"config": {
|
||||
"optimize-autoloader": true
|
||||
}
|
||||
}
|
||||
5
private/index.php
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<?php
|
||||
|
||||
require 'kirby/bootstrap.php';
|
||||
|
||||
echo (new Kirby)->render();
|
||||
15
private/kirby/.editorconfig
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# This file is for unifying the coding style for different editors and IDEs
|
||||
# editorconfig.org
|
||||
|
||||
# PHP PSR-2 Coding Standards
|
||||
# http://www.php-fig.org/psr/psr-2/
|
||||
|
||||
root = true
|
||||
|
||||
[*.php]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
58
private/kirby/.php_cs
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
|
||||
$finder = PhpCsFixer\Finder::create()
|
||||
->exclude('dependencies')
|
||||
->in(__DIR__);
|
||||
|
||||
return PhpCsFixer\Config::create()
|
||||
->setRules([
|
||||
'@PSR1' => true,
|
||||
'@PSR2' => true,
|
||||
'align_multiline_comment' => ['comment_type' => 'phpdocs_like'],
|
||||
'array_indentation' => true,
|
||||
'array_syntax' => ['syntax' => 'short'],
|
||||
'cast_spaces' => ['space' => 'none'],
|
||||
// 'class_keyword_remove' => true, // replaces static::class with 'static' (won't work)
|
||||
'combine_consecutive_issets' => true,
|
||||
'combine_consecutive_unsets' => true,
|
||||
'combine_nested_dirname' => true,
|
||||
'concat_space' => ['spacing' => 'one'],
|
||||
'declare_equal_normalize' => ['space' => 'single'],
|
||||
'dir_constant' => true,
|
||||
'function_typehint_space' => true,
|
||||
'include' => true,
|
||||
'logical_operators' => true,
|
||||
'lowercase_cast' => true,
|
||||
'lowercase_static_reference' => true,
|
||||
'magic_constant_casing' => true,
|
||||
'magic_method_casing' => true,
|
||||
'method_chaining_indentation' => true,
|
||||
'modernize_types_casting' => true,
|
||||
'multiline_comment_opening_closing' => true,
|
||||
'native_function_casing' => true,
|
||||
'native_function_type_declaration_casing' => true,
|
||||
'new_with_braces' => true,
|
||||
'no_blank_lines_after_class_opening' => true,
|
||||
'no_blank_lines_after_phpdoc' => true,
|
||||
'no_empty_comment' => true,
|
||||
'no_empty_phpdoc' => true,
|
||||
'no_empty_statement' => true,
|
||||
'no_leading_namespace_whitespace' => true,
|
||||
'no_mixed_echo_print' => ['use' => 'echo'],
|
||||
'no_unneeded_control_parentheses' => true,
|
||||
'no_unused_imports' => true,
|
||||
'no_useless_return' => true,
|
||||
'ordered_imports' => ['sort_algorithm' => 'alpha'],
|
||||
// 'phpdoc_add_missing_param_annotation' => ['only_untyped' => false], // adds params in the wrong order
|
||||
'phpdoc_align' => ['align' => 'left'],
|
||||
'phpdoc_indent' => true,
|
||||
'phpdoc_scalar' => true,
|
||||
'phpdoc_trim' => true,
|
||||
'short_scalar_cast' => true,
|
||||
'single_line_comment_style' => true,
|
||||
'single_quote' => true,
|
||||
'ternary_to_null_coalescing' => true,
|
||||
'whitespace_after_comma_in_array' => true
|
||||
])
|
||||
->setRiskyAllowed(true)
|
||||
->setFinder($finder);
|
||||
3
private/kirby/SECURITY.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Security Policy
|
||||
|
||||
Please see the [Security Policy on the Kirby website](https://getkirby.com/security) for a list of the currently supported Kirby versions and of past security incidents as well as for information on how to report security vulnerabilities in the Kirby core or in the Panel.
|
||||
83
private/kirby/assets/whoops.css
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
body {
|
||||
background: #efefef;
|
||||
font: normal normal 400 12px/1.5 -apple-system, BlinkMacSystemFont, Segoe UI,
|
||||
Roboto, Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
.left-panel {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
header {
|
||||
background-color: #313740;
|
||||
}
|
||||
|
||||
.exc-title-primary {
|
||||
color: hsl(0, 71%, 55%);
|
||||
}
|
||||
|
||||
.frame.active {
|
||||
color: hsl(0, 71%, 55%);
|
||||
box-shadow: inset -5px 0 0 0 #d16464;
|
||||
}
|
||||
|
||||
.frame:not(.active):hover {
|
||||
background: rgba(203, 215, 229, 0.5);
|
||||
}
|
||||
|
||||
.rightButton {
|
||||
color: #999;
|
||||
box-shadow: inset 0 0 0 1px #777;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.rightButton:hover {
|
||||
box-shadow: inset 0 0 0 1px #555;
|
||||
color: #777;
|
||||
}
|
||||
|
||||
.details-heading {
|
||||
color: #7e9abf;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.frame-code {
|
||||
background: #000;
|
||||
}
|
||||
|
||||
pre.code-block,
|
||||
code.code-block,
|
||||
.frame-args.code-block,
|
||||
.frame-args.code-block samp {
|
||||
background: #16171a;
|
||||
}
|
||||
|
||||
.linenums li.current {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.linenums li.current.active {
|
||||
background: rgba(209, 100, 100, 0.3);
|
||||
}
|
||||
|
||||
pre .atv,
|
||||
code .atv,
|
||||
pre .str,
|
||||
code .str {
|
||||
color: #a7bd68;
|
||||
}
|
||||
|
||||
pre .tag,
|
||||
code .tag {
|
||||
color: #d16464;
|
||||
}
|
||||
|
||||
pre .kwd,
|
||||
code .kwd {
|
||||
color: #8abeb7;
|
||||
}
|
||||
|
||||
pre .atn,
|
||||
code .atn {
|
||||
color: #de935f;
|
||||
}
|
||||
35
private/kirby/bootstrap.php
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Validate the PHP version to already
|
||||
* stop at older or too recent versions
|
||||
*/
|
||||
if (
|
||||
version_compare(PHP_VERSION, '7.2.0', '>=') === false ||
|
||||
version_compare(PHP_VERSION, '7.5.0', '<') === false
|
||||
) {
|
||||
die(include __DIR__ . '/views/php.php');
|
||||
}
|
||||
|
||||
if (is_file($autoloader = dirname(__DIR__) . '/vendor/autoload.php')) {
|
||||
|
||||
/**
|
||||
* Always prefer a site-wide Composer autoloader
|
||||
* if it exists, it means that the user has probably
|
||||
* installed additional packages
|
||||
*/
|
||||
include $autoloader;
|
||||
} elseif (is_file($autoloader = __DIR__ . '/vendor/autoload.php')) {
|
||||
|
||||
/**
|
||||
* Fall back to the local autoloader if that exists
|
||||
*/
|
||||
include $autoloader;
|
||||
} else {
|
||||
|
||||
/**
|
||||
* If neither one exists, don't bother searching;
|
||||
* it's a custom directory setup and the users need to
|
||||
* load the autoloader themselves
|
||||
*/
|
||||
}
|
||||
3466
private/kirby/cacert.pem
Normal file
53
private/kirby/composer.json
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
{
|
||||
"name": "getkirby/cms",
|
||||
"description": "The Kirby 3 core",
|
||||
"version": "3.4.0",
|
||||
"license": "proprietary",
|
||||
"keywords": ["kirby", "cms", "core"],
|
||||
"homepage": "https://getkirby.com",
|
||||
"type": "kirby-cms",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Kirby Team",
|
||||
"email": "support@getkirby.com",
|
||||
"homepage": "https://getkirby.com"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"email": "support@getkirby.com",
|
||||
"issues": "https://github.com/getkirby/kirby/issues",
|
||||
"forum": "https://forum.getkirby.com",
|
||||
"source": "https://github.com/getkirby/kirby"
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.0 <7.5.0",
|
||||
"ext-mbstring": "*",
|
||||
"ext-ctype": "*",
|
||||
"getkirby/composer-installer": "^1.0",
|
||||
"mustangostang/spyc": "0.6.3",
|
||||
"michelf/php-smartypants": "1.8.1",
|
||||
"claviska/simpleimage": "3.3.4",
|
||||
"phpmailer/phpmailer": "6.1.6",
|
||||
"filp/whoops": "2.7.2",
|
||||
"true/punycode": "2.1.1",
|
||||
"laminas/laminas-escaper": "2.6.1"
|
||||
},
|
||||
"autoload": {
|
||||
"files": ["config/setup.php"],
|
||||
"classmap": ["dependencies/"],
|
||||
"psr-4": {
|
||||
"Kirby\\": "src/"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"analyze": "phpstan analyse",
|
||||
"build": "./scripts/build",
|
||||
"fix": "php-cs-fixer fix --config .php_cs",
|
||||
"post-update-cmd": "curl -o cacert.pem https://curl.haxx.se/ca/cacert.pem",
|
||||
"test": "phpunit --stderr --coverage-html=tests/coverage",
|
||||
"zip": "composer archive --format=zip --file=dist"
|
||||
},
|
||||
"config": {
|
||||
"optimize-autoloader": true
|
||||
}
|
||||
}
|
||||
633
private/kirby/composer.lock
generated
Normal file
|
|
@ -0,0 +1,633 @@
|
|||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "8ec61411e7f3b3a717572d0847654a96",
|
||||
"packages": [
|
||||
{
|
||||
"name": "claviska/simpleimage",
|
||||
"version": "3.3.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/claviska/SimpleImage.git",
|
||||
"reference": "3786d80af8e6d05e5e42f0350e5e5da5b92041a0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/claviska/SimpleImage/zipball/3786d80af8e6d05e5e42f0350e5e5da5b92041a0",
|
||||
"reference": "3786d80af8e6d05e5e42f0350e5e5da5b92041a0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-gd": "*",
|
||||
"league/color-extractor": "0.3.*",
|
||||
"php": ">=5.6.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"claviska": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Cory LaViska",
|
||||
"homepage": "http://www.abeautifulsite.net/",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "A PHP class that makes working with images as simple as possible.",
|
||||
"time": "2019-09-26T01:22:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "filp/whoops",
|
||||
"version": "2.7.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/filp/whoops.git",
|
||||
"reference": "17d0d3f266c8f925ebd035cd36f83cf802b47d4a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/filp/whoops/zipball/17d0d3f266c8f925ebd035cd36f83cf802b47d4a",
|
||||
"reference": "17d0d3f266c8f925ebd035cd36f83cf802b47d4a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.5.9 || ^7.0",
|
||||
"psr/log": "^1.0.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "^0.9 || ^1.0",
|
||||
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0",
|
||||
"symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/var-dumper": "Pretty print complex values better with var-dumper available",
|
||||
"whoops/soap": "Formats errors as SOAP responses"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.6-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Whoops\\": "src/Whoops/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Filipe Dobreira",
|
||||
"homepage": "https://github.com/filp",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "php error handling for cool kids",
|
||||
"homepage": "https://filp.github.io/whoops/",
|
||||
"keywords": [
|
||||
"error",
|
||||
"exception",
|
||||
"handling",
|
||||
"library",
|
||||
"throwable",
|
||||
"whoops"
|
||||
],
|
||||
"time": "2020-05-05T12:28:07+00:00"
|
||||
},
|
||||
{
|
||||
"name": "getkirby/composer-installer",
|
||||
"version": "1.1.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/getkirby/composer-installer.git",
|
||||
"reference": "2d6b8f5601a31caeeea45623e1643fbb437eb94e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/getkirby/composer-installer/zipball/2d6b8f5601a31caeeea45623e1643fbb437eb94e",
|
||||
"reference": "2d6b8f5601a31caeeea45623e1643fbb437eb94e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer-plugin-api": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"composer/composer": "^1.8",
|
||||
"phpunit/phpunit": "^7.0"
|
||||
},
|
||||
"type": "composer-plugin",
|
||||
"extra": {
|
||||
"class": "Kirby\\ComposerInstaller\\Plugin"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Kirby\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Kirby's custom Composer installer for the Kirby CMS and for Kirby plugins",
|
||||
"homepage": "https://getkirby.com",
|
||||
"time": "2019-02-11T20:27:36+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laminas/laminas-escaper",
|
||||
"version": "2.6.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laminas/laminas-escaper.git",
|
||||
"reference": "25f2a053eadfa92ddacb609dcbbc39362610da70"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/25f2a053eadfa92ddacb609dcbbc39362610da70",
|
||||
"reference": "25f2a053eadfa92ddacb609dcbbc39362610da70",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"laminas/laminas-zendframework-bridge": "^1.0",
|
||||
"php": "^5.6 || ^7.0"
|
||||
},
|
||||
"replace": {
|
||||
"zendframework/zend-escaper": "self.version"
|
||||
},
|
||||
"require-dev": {
|
||||
"laminas/laminas-coding-standard": "~1.0.0",
|
||||
"phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.6.x-dev",
|
||||
"dev-develop": "2.7.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Laminas\\Escaper\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs",
|
||||
"homepage": "https://laminas.dev",
|
||||
"keywords": [
|
||||
"escaper",
|
||||
"laminas"
|
||||
],
|
||||
"time": "2019-12-31T16:43:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laminas/laminas-zendframework-bridge",
|
||||
"version": "1.0.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laminas/laminas-zendframework-bridge.git",
|
||||
"reference": "fcd87520e4943d968557803919523772475e8ea3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/fcd87520e4943d968557803919523772475e8ea3",
|
||||
"reference": "fcd87520e4943d968557803919523772475e8ea3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.6 || ^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1",
|
||||
"squizlabs/php_codesniffer": "^3.5"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev",
|
||||
"dev-develop": "1.1.x-dev"
|
||||
},
|
||||
"laminas": {
|
||||
"module": "Laminas\\ZendFrameworkBridge"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/autoload.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Laminas\\ZendFrameworkBridge\\": "src//"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"description": "Alias legacy ZF class names to Laminas Project equivalents.",
|
||||
"keywords": [
|
||||
"ZendFramework",
|
||||
"autoloading",
|
||||
"laminas",
|
||||
"zf"
|
||||
],
|
||||
"time": "2020-05-20T16:45:56+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/color-extractor",
|
||||
"version": "0.3.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/color-extractor.git",
|
||||
"reference": "837086ec60f50c84c611c613963e4ad2e2aec806"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/color-extractor/zipball/837086ec60f50c84c611c613963e4ad2e2aec806",
|
||||
"reference": "837086ec60f50c84c611c613963e4ad2e2aec806",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-gd": "*",
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"replace": {
|
||||
"matthecat/colorextractor": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "~2",
|
||||
"phpunit/phpunit": "~5"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Mathieu Lechat",
|
||||
"email": "math.lechat@gmail.com",
|
||||
"homepage": "http://matthecat.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Extract colors from an image as a human would do.",
|
||||
"homepage": "https://github.com/thephpleague/color-extractor",
|
||||
"keywords": [
|
||||
"color",
|
||||
"extract",
|
||||
"human",
|
||||
"image",
|
||||
"palette"
|
||||
],
|
||||
"time": "2016-12-15T09:30:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "michelf/php-smartypants",
|
||||
"version": "1.8.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/michelf/php-smartypants.git",
|
||||
"reference": "47d17c90a4dfd0ccf1f87e25c65e6c8012415aad"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/michelf/php-smartypants/zipball/47d17c90a4dfd0ccf1f87e25c65e6c8012415aad",
|
||||
"reference": "47d17c90a4dfd0ccf1f87e25c65e6c8012415aad",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Michelf": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Michel Fortin",
|
||||
"email": "michel.fortin@michelf.ca",
|
||||
"homepage": "https://michelf.ca/",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "John Gruber",
|
||||
"homepage": "https://daringfireball.net/"
|
||||
}
|
||||
],
|
||||
"description": "PHP SmartyPants",
|
||||
"homepage": "https://michelf.ca/projects/php-smartypants/",
|
||||
"keywords": [
|
||||
"dashes",
|
||||
"quotes",
|
||||
"spaces",
|
||||
"typographer",
|
||||
"typography"
|
||||
],
|
||||
"time": "2016-12-13T01:01:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "mustangostang/spyc",
|
||||
"version": "0.6.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "git@github.com:mustangostang/spyc.git",
|
||||
"reference": "4627c838b16550b666d15aeae1e5289dd5b77da0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/mustangostang/spyc/zipball/4627c838b16550b666d15aeae1e5289dd5b77da0",
|
||||
"reference": "4627c838b16550b666d15aeae1e5289dd5b77da0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "4.3.*@dev"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.5.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"Spyc.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "mustangostang",
|
||||
"email": "vlad.andersen@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "A simple YAML loader/dumper class for PHP",
|
||||
"homepage": "https://github.com/mustangostang/spyc/",
|
||||
"keywords": [
|
||||
"spyc",
|
||||
"yaml",
|
||||
"yml"
|
||||
],
|
||||
"time": "2019-09-10T13:16:29+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpmailer/phpmailer",
|
||||
"version": "v6.1.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHPMailer/PHPMailer.git",
|
||||
"reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3",
|
||||
"reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-ctype": "*",
|
||||
"ext-filter": "*",
|
||||
"php": ">=5.5.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/annotations": "^1.2",
|
||||
"friendsofphp/php-cs-fixer": "^2.2",
|
||||
"phpunit/phpunit": "^4.8 || ^5.7"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-mbstring": "Needed to send email in multibyte encoding charset",
|
||||
"hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
|
||||
"league/oauth2-google": "Needed for Google XOAUTH2 authentication",
|
||||
"psr/log": "For optional PSR-3 debug logging",
|
||||
"stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
|
||||
"symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"PHPMailer\\PHPMailer\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-2.1-only"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Marcus Bointon",
|
||||
"email": "phpmailer@synchromedia.co.uk"
|
||||
},
|
||||
{
|
||||
"name": "Jim Jagielski",
|
||||
"email": "jimjag@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Andy Prevost",
|
||||
"email": "codeworxtech@users.sourceforge.net"
|
||||
},
|
||||
{
|
||||
"name": "Brent R. Matzelle"
|
||||
}
|
||||
],
|
||||
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
|
||||
"time": "2020-05-27T12:24:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/log",
|
||||
"version": "1.1.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/log.git",
|
||||
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
|
||||
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.1.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Log\\": "Psr/Log/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "http://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interface for logging libraries",
|
||||
"homepage": "https://github.com/php-fig/log",
|
||||
"keywords": [
|
||||
"log",
|
||||
"psr",
|
||||
"psr-3"
|
||||
],
|
||||
"time": "2020-03-23T09:12:05+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
"version": "v1.17.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||
"reference": "7110338d81ce1cbc3e273136e4574663627037a7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7110338d81ce1cbc3e273136e4574663627037a7",
|
||||
"reference": "7110338d81ce1cbc3e273136e4574663627037a7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-mbstring": "For best performance"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.17-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Mbstring\\": ""
|
||||
},
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony polyfill for the Mbstring extension",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"mbstring",
|
||||
"polyfill",
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2020-06-06T08:46:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "true/punycode",
|
||||
"version": "v2.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/true/php-punycode.git",
|
||||
"reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/true/php-punycode/zipball/a4d0c11a36dd7f4e7cd7096076cab6d3378a071e",
|
||||
"reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0",
|
||||
"symfony/polyfill-mbstring": "^1.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.7",
|
||||
"squizlabs/php_codesniffer": "~2.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"TrueBV\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Renan Gonçalves",
|
||||
"email": "renan.saddam@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)",
|
||||
"homepage": "https://github.com/true/php-punycode",
|
||||
"keywords": [
|
||||
"idna",
|
||||
"punycode"
|
||||
],
|
||||
"time": "2016-11-16T10:37:54+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [],
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
"php": ">=7.2.0 <7.5.0",
|
||||
"ext-mbstring": "*",
|
||||
"ext-ctype": "*"
|
||||
},
|
||||
"platform-dev": []
|
||||
}
|
||||
60
private/kirby/config/aliases.php
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
// cms classes
|
||||
'asset' => 'Kirby\Cms\Asset',
|
||||
'collection' => 'Kirby\Cms\Collection',
|
||||
'dir' => 'Kirby\Cms\Dir',
|
||||
'field' => 'Kirby\Cms\Field',
|
||||
'file' => 'Kirby\Cms\File',
|
||||
'files' => 'Kirby\Cms\Files',
|
||||
'html' => 'Kirby\Cms\Html',
|
||||
'kirby' => 'Kirby\Cms\App',
|
||||
'page' => 'Kirby\Cms\Page',
|
||||
'pages' => 'Kirby\Cms\Pages',
|
||||
'pagination' => 'Kirby\Cms\Pagination',
|
||||
'r' => 'Kirby\Cms\R',
|
||||
'response' => 'Kirby\Cms\Response',
|
||||
's' => 'Kirby\Cms\S',
|
||||
'site' => 'Kirby\Cms\Site',
|
||||
'structure' => 'Kirby\Cms\Structure',
|
||||
'url' => 'Kirby\Cms\Url',
|
||||
'user' => 'Kirby\Cms\User',
|
||||
'users' => 'Kirby\Cms\Users',
|
||||
'visitor' => 'Kirby\Cms\Visitor',
|
||||
|
||||
// data handler
|
||||
'data' => 'Kirby\Data\Data',
|
||||
'json' => 'Kirby\Data\Json',
|
||||
'yaml' => 'Kirby\Data\Yaml',
|
||||
|
||||
// data classes
|
||||
'database' => 'Kirby\Database\Database',
|
||||
'db' => 'Kirby\Database\Db',
|
||||
|
||||
// exceptions
|
||||
'errorpageexception' => 'Kirby\Exception\ErrorPageException',
|
||||
|
||||
// http classes
|
||||
'cookie' => 'Kirby\Http\Cookie',
|
||||
'header' => 'Kirby\Http\Header',
|
||||
'remote' => 'Kirby\Http\Remote',
|
||||
'server' => 'Kirby\Http\Server',
|
||||
|
||||
// image classes
|
||||
'dimensions' => 'Kirby\Image\Dimensions',
|
||||
|
||||
// toolkit classes
|
||||
'a' => 'Kirby\Toolkit\A',
|
||||
'c' => 'Kirby\Toolkit\Config',
|
||||
'config' => 'Kirby\Toolkit\Config',
|
||||
'escape' => 'Kirby\Toolkit\Escape',
|
||||
'f' => 'Kirby\Toolkit\F',
|
||||
'i18n' => 'Kirby\Toolkit\I18n',
|
||||
'mime' => 'Kirby\Toolkit\Mime',
|
||||
'obj' => 'Kirby\Toolkit\Obj',
|
||||
'str' => 'Kirby\Toolkit\Str',
|
||||
'tpl' => 'Kirby\Toolkit\Tpl',
|
||||
'v' => 'Kirby\Toolkit\V',
|
||||
'xml' => 'Kirby\Toolkit\Xml'
|
||||
];
|
||||
24
private/kirby/config/api/authentication.php
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Exception\PermissionException;
|
||||
|
||||
return function () {
|
||||
$auth = $this->kirby()->auth();
|
||||
$allowImpersonation = $this->kirby()->option('api.allowImpersonation') ?? false;
|
||||
|
||||
// csrf token check
|
||||
if ($auth->type($allowImpersonation) === 'session' && $auth->csrf() === false) {
|
||||
throw new PermissionException('Unauthenticated');
|
||||
}
|
||||
|
||||
// get user from session or basic auth
|
||||
if ($user = $auth->user(null, $allowImpersonation)) {
|
||||
if ($user->role()->permissions()->for('access', 'panel') === false) {
|
||||
throw new PermissionException(['key' => 'access.panel']);
|
||||
}
|
||||
|
||||
return $user;
|
||||
}
|
||||
|
||||
throw new PermissionException('Unauthenticated');
|
||||
};
|
||||
72
private/kirby/config/api/collections.php
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Api Collection Definitions
|
||||
*/
|
||||
return [
|
||||
|
||||
/**
|
||||
* Children
|
||||
*/
|
||||
'children' => [
|
||||
'model' => 'page',
|
||||
'type' => 'Kirby\Cms\Pages',
|
||||
'view' => 'compact'
|
||||
],
|
||||
|
||||
/**
|
||||
* Files
|
||||
*/
|
||||
'files' => [
|
||||
'model' => 'file',
|
||||
'type' => 'Kirby\Cms\Files'
|
||||
],
|
||||
|
||||
/**
|
||||
* Languages
|
||||
*/
|
||||
'languages' => [
|
||||
'model' => 'language',
|
||||
'type' => 'Kirby\Cms\Languages'
|
||||
],
|
||||
|
||||
/**
|
||||
* Pages
|
||||
*/
|
||||
'pages' => [
|
||||
'model' => 'page',
|
||||
'type' => 'Kirby\Cms\Pages',
|
||||
'view' => 'compact'
|
||||
],
|
||||
|
||||
/**
|
||||
* Roles
|
||||
*/
|
||||
'roles' => [
|
||||
'model' => 'role',
|
||||
'type' => 'Kirby\Cms\Roles',
|
||||
'view' => 'compact'
|
||||
],
|
||||
|
||||
/**
|
||||
* Translations
|
||||
*/
|
||||
'translations' => [
|
||||
'model' => 'translation',
|
||||
'type' => 'Kirby\Cms\Translations',
|
||||
'view' => 'compact'
|
||||
],
|
||||
|
||||
/**
|
||||
* Users
|
||||
*/
|
||||
'users' => [
|
||||
'default' => function () {
|
||||
return $this->users();
|
||||
},
|
||||
'model' => 'user',
|
||||
'type' => 'Kirby\Cms\Users',
|
||||
'view' => 'compact'
|
||||
]
|
||||
|
||||
];
|
||||
20
private/kirby/config/api/models.php
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Api Model Definitions
|
||||
*/
|
||||
return [
|
||||
'File' => include __DIR__ . '/models/File.php',
|
||||
'FileBlueprint' => include __DIR__ . '/models/FileBlueprint.php',
|
||||
'FileVersion' => include __DIR__ . '/models/FileVersion.php',
|
||||
'Language' => include __DIR__ . '/models/Language.php',
|
||||
'Page' => include __DIR__ . '/models/Page.php',
|
||||
'PageBlueprint' => include __DIR__ . '/models/PageBlueprint.php',
|
||||
'Role' => include __DIR__ . '/models/Role.php',
|
||||
'Site' => include __DIR__ . '/models/Site.php',
|
||||
'SiteBlueprint' => include __DIR__ . '/models/SiteBlueprint.php',
|
||||
'System' => include __DIR__ . '/models/System.php',
|
||||
'Translation' => include __DIR__ . '/models/Translation.php',
|
||||
'User' => include __DIR__ . '/models/User.php',
|
||||
'UserBlueprint' => include __DIR__ . '/models/UserBlueprint.php',
|
||||
];
|
||||
166
private/kirby/config/api/models/File.php
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Cms\File;
|
||||
use Kirby\Cms\Form;
|
||||
|
||||
/**
|
||||
* File
|
||||
*/
|
||||
return [
|
||||
'fields' => [
|
||||
'blueprint' => function (File $file) {
|
||||
return $file->blueprint();
|
||||
},
|
||||
'content' => function (File $file) {
|
||||
return Form::for($file)->values();
|
||||
},
|
||||
'dimensions' => function (File $file) {
|
||||
return $file->dimensions()->toArray();
|
||||
},
|
||||
'dragText' => function (File $file) {
|
||||
return $file->dragText();
|
||||
},
|
||||
'exists' => function (File $file) {
|
||||
return $file->exists();
|
||||
},
|
||||
'extension' => function (File $file) {
|
||||
return $file->extension();
|
||||
},
|
||||
'filename' => function (File $file) {
|
||||
return $file->filename();
|
||||
},
|
||||
'id' => function (File $file) {
|
||||
return $file->id();
|
||||
},
|
||||
'link' => function (File $file) {
|
||||
return $file->panelUrl(true);
|
||||
},
|
||||
'mime' => function (File $file) {
|
||||
return $file->mime();
|
||||
},
|
||||
'modified' => function (File $file) {
|
||||
return $file->modified('c');
|
||||
},
|
||||
'name' => function (File $file) {
|
||||
return $file->name();
|
||||
},
|
||||
'next' => function (File $file) {
|
||||
return $file->next();
|
||||
},
|
||||
'nextWithTemplate' => function (File $file) {
|
||||
$files = $file->templateSiblings()->sortBy('sort', 'asc', 'filename', 'asc');
|
||||
$index = $files->indexOf($file);
|
||||
|
||||
return $files->nth($index + 1);
|
||||
},
|
||||
'niceSize' => function (File $file) {
|
||||
return $file->niceSize();
|
||||
},
|
||||
'options' => function (File $file) {
|
||||
return $file->panelOptions();
|
||||
},
|
||||
'panelIcon' => function (File $file) {
|
||||
return $file->panelIcon();
|
||||
},
|
||||
'panelImage' => function (File $file) {
|
||||
return $file->panelImage();
|
||||
},
|
||||
'panelUrl' => function (File $file) {
|
||||
return $file->panelUrl(true);
|
||||
},
|
||||
'prev' => function (File $file) {
|
||||
return $file->prev();
|
||||
},
|
||||
'prevWithTemplate' => function (File $file) {
|
||||
$files = $file->templateSiblings()->sortBy('sort', 'asc', 'filename', 'asc');
|
||||
$index = $files->indexOf($file);
|
||||
|
||||
return $files->nth($index - 1);
|
||||
},
|
||||
'parent' => function (File $file) {
|
||||
return $file->parent();
|
||||
},
|
||||
'parents' => function (File $file) {
|
||||
return $file->parents()->flip();
|
||||
},
|
||||
'size' => function (File $file) {
|
||||
return $file->size();
|
||||
},
|
||||
'template' => function (File $file) {
|
||||
return $file->template();
|
||||
},
|
||||
'thumbs' => function ($file) {
|
||||
if ($file->isResizable() === false) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return [
|
||||
'tiny' => $file->resize(128)->url(),
|
||||
'small' => $file->resize(256)->url(),
|
||||
'medium' => $file->resize(512)->url(),
|
||||
'large' => $file->resize(768)->url(),
|
||||
'huge' => $file->resize(1024)->url(),
|
||||
];
|
||||
},
|
||||
'type' => function (File $file) {
|
||||
return $file->type();
|
||||
},
|
||||
'url' => function (File $file) {
|
||||
return $file->url(true);
|
||||
},
|
||||
],
|
||||
'type' => 'Kirby\Cms\File',
|
||||
'views' => [
|
||||
'default' => [
|
||||
'content',
|
||||
'dimensions',
|
||||
'exists',
|
||||
'extension',
|
||||
'filename',
|
||||
'id',
|
||||
'link',
|
||||
'mime',
|
||||
'modified',
|
||||
'name',
|
||||
'next' => 'compact',
|
||||
'niceSize',
|
||||
'parent' => 'compact',
|
||||
'options',
|
||||
'prev' => 'compact',
|
||||
'size',
|
||||
'template',
|
||||
'type',
|
||||
'url'
|
||||
],
|
||||
'compact' => [
|
||||
'filename',
|
||||
'id',
|
||||
'link',
|
||||
'type',
|
||||
'url',
|
||||
],
|
||||
'panel' => [
|
||||
'blueprint',
|
||||
'content',
|
||||
'dimensions',
|
||||
'extension',
|
||||
'filename',
|
||||
'id',
|
||||
'link',
|
||||
'mime',
|
||||
'modified',
|
||||
'name',
|
||||
'nextWithTemplate' => 'compact',
|
||||
'niceSize',
|
||||
'options',
|
||||
'panelIcon',
|
||||
'panelImage',
|
||||
'parent' => 'compact',
|
||||
'parents' => ['id', 'slug', 'title'],
|
||||
'prevWithTemplate' => 'compact',
|
||||
'template',
|
||||
'type',
|
||||
'url'
|
||||
]
|
||||
],
|
||||
];
|
||||
26
private/kirby/config/api/models/FileBlueprint.php
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Cms\FileBlueprint;
|
||||
|
||||
/**
|
||||
* FileBlueprint
|
||||
*/
|
||||
return [
|
||||
'fields' => [
|
||||
'name' => function (FileBlueprint $blueprint) {
|
||||
return $blueprint->name();
|
||||
},
|
||||
'options' => function (FileBlueprint $blueprint) {
|
||||
return $blueprint->options();
|
||||
},
|
||||
'tabs' => function (FileBlueprint $blueprint) {
|
||||
return $blueprint->tabs();
|
||||
},
|
||||
'title' => function (FileBlueprint $blueprint) {
|
||||
return $blueprint->title();
|
||||
},
|
||||
],
|
||||
'type' => 'Kirby\Cms\FileBlueprint',
|
||||
'views' => [
|
||||
],
|
||||
];
|
||||
83
private/kirby/config/api/models/FileVersion.php
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Cms\FileVersion;
|
||||
|
||||
/**
|
||||
* FileVersion
|
||||
*/
|
||||
return [
|
||||
'fields' => [
|
||||
'dimensions' => function (FileVersion $file) {
|
||||
return $file->dimensions()->toArray();
|
||||
},
|
||||
'exists' => function (FileVersion $file) {
|
||||
return $file->exists();
|
||||
},
|
||||
'extension' => function (FileVersion $file) {
|
||||
return $file->extension();
|
||||
},
|
||||
'filename' => function (FileVersion $file) {
|
||||
return $file->filename();
|
||||
},
|
||||
'id' => function (FileVersion $file) {
|
||||
return $file->id();
|
||||
},
|
||||
'mime' => function (FileVersion $file) {
|
||||
return $file->mime();
|
||||
},
|
||||
'modified' => function (FileVersion $file) {
|
||||
return $file->modified('c');
|
||||
},
|
||||
'name' => function (FileVersion $file) {
|
||||
return $file->name();
|
||||
},
|
||||
'niceSize' => function (FileVersion $file) {
|
||||
return $file->niceSize();
|
||||
},
|
||||
'size' => function (FileVersion $file) {
|
||||
return $file->size();
|
||||
},
|
||||
'type' => function (FileVersion $file) {
|
||||
return $file->type();
|
||||
},
|
||||
'url' => function (FileVersion $file) {
|
||||
return $file->url(true);
|
||||
},
|
||||
],
|
||||
'type' => 'Kirby\Cms\FileVersion',
|
||||
'views' => [
|
||||
'default' => [
|
||||
'dimensions',
|
||||
'exists',
|
||||
'extension',
|
||||
'filename',
|
||||
'id',
|
||||
'mime',
|
||||
'modified',
|
||||
'name',
|
||||
'niceSize',
|
||||
'size',
|
||||
'type',
|
||||
'url'
|
||||
],
|
||||
'compact' => [
|
||||
'filename',
|
||||
'id',
|
||||
'type',
|
||||
'url',
|
||||
],
|
||||
'panel' => [
|
||||
'dimensions',
|
||||
'extension',
|
||||
'filename',
|
||||
'id',
|
||||
'mime',
|
||||
'modified',
|
||||
'name',
|
||||
'niceSize',
|
||||
'template',
|
||||
'type',
|
||||
'url'
|
||||
]
|
||||
],
|
||||
];
|
||||
44
private/kirby/config/api/models/Language.php
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Cms\Language;
|
||||
|
||||
/**
|
||||
* Language
|
||||
*/
|
||||
return [
|
||||
'fields' => [
|
||||
'code' => function (Language $language) {
|
||||
return $language->code();
|
||||
},
|
||||
'default' => function (Language $language) {
|
||||
return $language->isDefault();
|
||||
},
|
||||
'direction' => function (Language $language) {
|
||||
return $language->direction();
|
||||
},
|
||||
'locale' => function (Language $language) {
|
||||
return $language->locale();
|
||||
},
|
||||
'name' => function (Language $language) {
|
||||
return $language->name();
|
||||
},
|
||||
'rules' => function (Language $language) {
|
||||
return $language->rules();
|
||||
},
|
||||
'url' => function (Language $language) {
|
||||
return $language->url();
|
||||
},
|
||||
],
|
||||
'type' => 'Kirby\Cms\Language',
|
||||
'views' => [
|
||||
'default' => [
|
||||
'code',
|
||||
'default',
|
||||
'direction',
|
||||
'locale',
|
||||
'name',
|
||||
'rules',
|
||||
'url'
|
||||
]
|
||||
]
|
||||
];
|
||||
157
private/kirby/config/api/models/Page.php
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Cms\Form;
|
||||
use Kirby\Cms\Page;
|
||||
|
||||
/**
|
||||
* Page
|
||||
*/
|
||||
return [
|
||||
'fields' => [
|
||||
'blueprint' => function (Page $page) {
|
||||
return $page->blueprint();
|
||||
},
|
||||
'blueprints' => function (Page $page) {
|
||||
return $page->blueprints();
|
||||
},
|
||||
'children' => function (Page $page) {
|
||||
return $page->children();
|
||||
},
|
||||
'content' => function (Page $page) {
|
||||
return Form::for($page)->values();
|
||||
},
|
||||
'drafts' => function (Page $page) {
|
||||
return $page->drafts();
|
||||
},
|
||||
'errors' => function (Page $page) {
|
||||
return $page->errors();
|
||||
},
|
||||
'files' => function (Page $page) {
|
||||
return $page->files()->sortBy('sort', 'asc', 'filename', 'asc');
|
||||
},
|
||||
'hasChildren' => function (Page $page) {
|
||||
return $page->hasChildren();
|
||||
},
|
||||
'hasDrafts' => function (Page $page) {
|
||||
return $page->hasDrafts();
|
||||
},
|
||||
'hasFiles' => function (Page $page) {
|
||||
return $page->hasFiles();
|
||||
},
|
||||
'id' => function (Page $page) {
|
||||
return $page->id();
|
||||
},
|
||||
'isSortable' => function (Page $page) {
|
||||
return $page->isSortable();
|
||||
},
|
||||
'next' => function (Page $page) {
|
||||
return $page
|
||||
->nextAll()
|
||||
->filterBy('intendedTemplate', $page->intendedTemplate())
|
||||
->filterBy('status', $page->status())
|
||||
->filterBy('isReadable', true)
|
||||
->first();
|
||||
},
|
||||
'num' => function (Page $page) {
|
||||
return $page->num();
|
||||
},
|
||||
'options' => function (Page $page) {
|
||||
return $page->panelOptions(['preview']);
|
||||
},
|
||||
'panelIcon' => function (Page $page) {
|
||||
return $page->panelIcon();
|
||||
},
|
||||
'panelImage' => function (Page $page) {
|
||||
return $page->panelImage();
|
||||
},
|
||||
'parent' => function (Page $page) {
|
||||
return $page->parent();
|
||||
},
|
||||
'parents' => function (Page $page) {
|
||||
return $page->parents()->flip();
|
||||
},
|
||||
'prev' => function (Page $page) {
|
||||
return $page
|
||||
->prevAll()
|
||||
->filterBy('intendedTemplate', $page->intendedTemplate())
|
||||
->filterBy('status', $page->status())
|
||||
->filterBy('isReadable', true)
|
||||
->last();
|
||||
},
|
||||
'previewUrl' => function (Page $page) {
|
||||
return $page->previewUrl();
|
||||
},
|
||||
'siblings' => function (Page $page) {
|
||||
if ($page->isDraft() === true) {
|
||||
return $page->parentModel()->children()->not($page);
|
||||
} else {
|
||||
return $page->siblings();
|
||||
}
|
||||
},
|
||||
'slug' => function (Page $page) {
|
||||
return $page->slug();
|
||||
},
|
||||
'status' => function (Page $page) {
|
||||
return $page->status();
|
||||
},
|
||||
'template' => function (Page $page) {
|
||||
return $page->intendedTemplate()->name();
|
||||
},
|
||||
'title' => function (Page $page) {
|
||||
return $page->title()->value();
|
||||
},
|
||||
'url' => function (Page $page) {
|
||||
return $page->url();
|
||||
},
|
||||
],
|
||||
'type' => 'Kirby\Cms\Page',
|
||||
'views' => [
|
||||
'compact' => [
|
||||
'id',
|
||||
'title',
|
||||
'url',
|
||||
'num'
|
||||
],
|
||||
'default' => [
|
||||
'content',
|
||||
'id',
|
||||
'status',
|
||||
'num',
|
||||
'options',
|
||||
'parent' => 'compact',
|
||||
'slug',
|
||||
'template',
|
||||
'title',
|
||||
'url'
|
||||
],
|
||||
'panel' => [
|
||||
'id',
|
||||
'blueprint',
|
||||
'content',
|
||||
'status',
|
||||
'options',
|
||||
'next' => ['id', 'slug', 'title'],
|
||||
'parents' => ['id', 'slug', 'title'],
|
||||
'prev' => ['id', 'slug', 'title'],
|
||||
'previewUrl',
|
||||
'slug',
|
||||
'title',
|
||||
'url'
|
||||
],
|
||||
'selector' => [
|
||||
'id',
|
||||
'title',
|
||||
'parent' => [
|
||||
'id',
|
||||
'title'
|
||||
],
|
||||
'children' => [
|
||||
'hasChildren',
|
||||
'id',
|
||||
'panelIcon',
|
||||
'panelImage',
|
||||
'title',
|
||||
],
|
||||
]
|
||||
],
|
||||
];
|
||||
35
private/kirby/config/api/models/PageBlueprint.php
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Cms\PageBlueprint;
|
||||
|
||||
/**
|
||||
* PageBlueprint
|
||||
*/
|
||||
return [
|
||||
'fields' => [
|
||||
'name' => function (PageBlueprint $blueprint) {
|
||||
return $blueprint->name();
|
||||
},
|
||||
'num' => function (PageBlueprint $blueprint) {
|
||||
return $blueprint->num();
|
||||
},
|
||||
'options' => function (PageBlueprint $blueprint) {
|
||||
return $blueprint->options();
|
||||
},
|
||||
'preview' => function (PageBlueprint $blueprint) {
|
||||
return $blueprint->preview();
|
||||
},
|
||||
'status' => function (PageBlueprint $blueprint) {
|
||||
return $blueprint->status();
|
||||
},
|
||||
'tabs' => function (PageBlueprint $blueprint) {
|
||||
return $blueprint->tabs();
|
||||
},
|
||||
'title' => function (PageBlueprint $blueprint) {
|
||||
return $blueprint->title();
|
||||
},
|
||||
],
|
||||
'type' => 'Kirby\Cms\PageBlueprint',
|
||||
'views' => [
|
||||
],
|
||||
];
|
||||
31
private/kirby/config/api/models/Role.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Cms\Role;
|
||||
|
||||
/**
|
||||
* Role
|
||||
*/
|
||||
return [
|
||||
'fields' => [
|
||||
'description' => function (Role $role) {
|
||||
return $role->description();
|
||||
},
|
||||
'name' => function (Role $role) {
|
||||
return $role->name();
|
||||
},
|
||||
'permissions' => function (Role $role) {
|
||||
return $role->permissions()->toArray();
|
||||
},
|
||||
'title' => function (Role $role) {
|
||||
return $role->title();
|
||||
},
|
||||
],
|
||||
'type' => 'Kirby\Cms\Role',
|
||||
'views' => [
|
||||
'compact' => [
|
||||
'description',
|
||||
'name',
|
||||
'title'
|
||||
]
|
||||
]
|
||||
];
|
||||
72
private/kirby/config/api/models/Site.php
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Cms\Form;
|
||||
use Kirby\Cms\Site;
|
||||
|
||||
/**
|
||||
* Site
|
||||
*/
|
||||
return [
|
||||
'default' => function () {
|
||||
return $this->site();
|
||||
},
|
||||
'fields' => [
|
||||
'blueprint' => function (Site $site) {
|
||||
return $site->blueprint();
|
||||
},
|
||||
'children' => function (Site $site) {
|
||||
return $site->children();
|
||||
},
|
||||
'content' => function (Site $site) {
|
||||
return Form::for($site)->values();
|
||||
},
|
||||
'drafts' => function (Site $site) {
|
||||
return $site->drafts();
|
||||
},
|
||||
'files' => function (Site $site) {
|
||||
return $site->files()->sortBy('sort', 'asc', 'filename', 'asc');
|
||||
},
|
||||
'options' => function (Site $site) {
|
||||
return $site->permissions()->toArray();
|
||||
},
|
||||
'previewUrl' => function (Site $site) {
|
||||
return $site->previewUrl();
|
||||
},
|
||||
'title' => function (Site $site) {
|
||||
return $site->title()->value();
|
||||
},
|
||||
'url' => function (Site $site) {
|
||||
return $site->url();
|
||||
},
|
||||
],
|
||||
'type' => 'Kirby\Cms\Site',
|
||||
'views' => [
|
||||
'compact' => [
|
||||
'title',
|
||||
'url'
|
||||
],
|
||||
'default' => [
|
||||
'content',
|
||||
'options',
|
||||
'title',
|
||||
'url'
|
||||
],
|
||||
'panel' => [
|
||||
'title',
|
||||
'blueprint',
|
||||
'content',
|
||||
'options',
|
||||
'previewUrl',
|
||||
'url'
|
||||
],
|
||||
'selector' => [
|
||||
'title',
|
||||
'children' => [
|
||||
'id',
|
||||
'title',
|
||||
'panelIcon',
|
||||
'hasChildren'
|
||||
],
|
||||
]
|
||||
]
|
||||
];
|
||||
26
private/kirby/config/api/models/SiteBlueprint.php
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Cms\SiteBlueprint;
|
||||
|
||||
/**
|
||||
* SiteBlueprint
|
||||
*/
|
||||
return [
|
||||
'fields' => [
|
||||
'name' => function (SiteBlueprint $blueprint) {
|
||||
return $blueprint->name();
|
||||
},
|
||||
'options' => function (SiteBlueprint $blueprint) {
|
||||
return $blueprint->options();
|
||||
},
|
||||
'tabs' => function (SiteBlueprint $blueprint) {
|
||||
return $blueprint->tabs();
|
||||
},
|
||||
'title' => function (SiteBlueprint $blueprint) {
|
||||
return $blueprint->title();
|
||||
},
|
||||
],
|
||||
'type' => 'Kirby\Cms\SiteBlueprint',
|
||||
'views' => [
|
||||
],
|
||||
];
|
||||
119
private/kirby/config/api/models/System.php
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Cms\System;
|
||||
use Kirby\Toolkit\Str;
|
||||
|
||||
/**
|
||||
* System
|
||||
*/
|
||||
return [
|
||||
'fields' => [
|
||||
'ascii' => function () {
|
||||
return Str::$ascii;
|
||||
},
|
||||
'defaultLanguage' => function () {
|
||||
return $this->kirby()->option('panel.language', 'en');
|
||||
},
|
||||
'isOk' => function (System $system) {
|
||||
return $system->isOk();
|
||||
},
|
||||
'isInstallable' => function (System $system) {
|
||||
return $system->isInstallable();
|
||||
},
|
||||
'isInstalled' => function (System $system) {
|
||||
return $system->isInstalled();
|
||||
},
|
||||
'isLocal' => function (System $system) {
|
||||
return $system->isLocal();
|
||||
},
|
||||
'multilang' => function () {
|
||||
return $this->kirby()->option('languages', false) !== false;
|
||||
},
|
||||
'languages' => function () {
|
||||
return $this->kirby()->languages();
|
||||
},
|
||||
'license' => function (System $system) {
|
||||
return $system->license();
|
||||
},
|
||||
'requirements' => function (System $system) {
|
||||
return $system->toArray();
|
||||
},
|
||||
'site' => function () {
|
||||
try {
|
||||
return $this->site()->blueprint()->title();
|
||||
} catch (Throwable $e) {
|
||||
return $this->site()->title()->value();
|
||||
}
|
||||
},
|
||||
'slugs' => function () {
|
||||
return Str::$language;
|
||||
},
|
||||
'title' => function () {
|
||||
return $this->site()->title()->value();
|
||||
},
|
||||
'translation' => function () {
|
||||
if ($user = $this->user()) {
|
||||
$translationCode = $user->language();
|
||||
} else {
|
||||
$translationCode = $this->kirby()->option('panel.language', 'en');
|
||||
}
|
||||
|
||||
if ($translation = $this->kirby()->translation($translationCode)) {
|
||||
return $translation;
|
||||
} else {
|
||||
return $this->kirby()->translation('en');
|
||||
}
|
||||
},
|
||||
'kirbytext' => function () {
|
||||
return $this->kirby()->option('panel.kirbytext') ?? true;
|
||||
},
|
||||
'user' => function () {
|
||||
return $this->user();
|
||||
},
|
||||
'version' => function () {
|
||||
$user = $this->user();
|
||||
|
||||
if ($user && $user->role()->permissions()->for('access', 'settings') === true) {
|
||||
return $this->kirby()->version();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
],
|
||||
'type' => 'Kirby\Cms\System',
|
||||
'views' => [
|
||||
'login' => [
|
||||
'isOk',
|
||||
'isInstallable',
|
||||
'isInstalled',
|
||||
'title',
|
||||
'translation'
|
||||
],
|
||||
'troubleshooting' => [
|
||||
'isOk',
|
||||
'isInstallable',
|
||||
'isInstalled',
|
||||
'title',
|
||||
'translation',
|
||||
'requirements'
|
||||
],
|
||||
'panel' => [
|
||||
'ascii',
|
||||
'defaultLanguage',
|
||||
'isOk',
|
||||
'isInstalled',
|
||||
'isLocal',
|
||||
'kirbytext',
|
||||
'languages',
|
||||
'license',
|
||||
'multilang',
|
||||
'requirements',
|
||||
'site',
|
||||
'slugs',
|
||||
'title',
|
||||
'translation',
|
||||
'user' => 'auth',
|
||||
'version'
|
||||
]
|
||||
],
|
||||
];
|
||||
34
private/kirby/config/api/models/Translation.php
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Cms\Translation;
|
||||
|
||||
/**
|
||||
* Translation
|
||||
*/
|
||||
return [
|
||||
'fields' => [
|
||||
'author' => function (Translation $translation) {
|
||||
return $translation->author();
|
||||
},
|
||||
'data' => function (Translation $translation) {
|
||||
return $translation->dataWithFallback();
|
||||
},
|
||||
'direction' => function (Translation $translation) {
|
||||
return $translation->direction();
|
||||
},
|
||||
'id' => function (Translation $translation) {
|
||||
return $translation->id();
|
||||
},
|
||||
'name' => function (Translation $translation) {
|
||||
return $translation->name();
|
||||
},
|
||||
],
|
||||
'type' => 'Kirby\Cms\Translation',
|
||||
'views' => [
|
||||
'compact' => [
|
||||
'direction',
|
||||
'id',
|
||||
'name'
|
||||
]
|
||||
]
|
||||
];
|
||||
108
private/kirby/config/api/models/User.php
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Cms\Form;
|
||||
use Kirby\Cms\User;
|
||||
|
||||
/**
|
||||
* User
|
||||
*/
|
||||
return [
|
||||
'default' => function () {
|
||||
return $this->user();
|
||||
},
|
||||
'fields' => [
|
||||
'avatar' => function (User $user) {
|
||||
return $user->avatar() ? $user->avatar()->crop(512) : null;
|
||||
},
|
||||
'blueprint' => function (User $user) {
|
||||
return $user->blueprint();
|
||||
},
|
||||
'content' => function (User $user) {
|
||||
return Form::for($user)->values();
|
||||
},
|
||||
'email' => function (User $user) {
|
||||
return $user->email();
|
||||
},
|
||||
'files' => function (User $user) {
|
||||
return $user->files()->sortBy('sort', 'asc', 'filename', 'asc');
|
||||
},
|
||||
'id' => function (User $user) {
|
||||
return $user->id();
|
||||
},
|
||||
'language' => function (User $user) {
|
||||
return $user->language();
|
||||
},
|
||||
'name' => function (User $user) {
|
||||
return $user->name()->value();
|
||||
},
|
||||
'next' => function (User $user) {
|
||||
return $user->next();
|
||||
},
|
||||
'options' => function (User $user) {
|
||||
return $user->panelOptions();
|
||||
},
|
||||
'permissions' => function (User $user) {
|
||||
return $user->role()->permissions()->toArray();
|
||||
},
|
||||
'prev' => function (User $user) {
|
||||
return $user->prev();
|
||||
},
|
||||
'role' => function (User $user) {
|
||||
return $user->role();
|
||||
},
|
||||
'roles' => function (User $user) {
|
||||
return $user->roles();
|
||||
},
|
||||
'username' => function (User $user) {
|
||||
return $user->username();
|
||||
}
|
||||
],
|
||||
'type' => 'Kirby\Cms\User',
|
||||
'views' => [
|
||||
'default' => [
|
||||
'avatar',
|
||||
'content',
|
||||
'email',
|
||||
'id',
|
||||
'language',
|
||||
'name',
|
||||
'next' => 'compact',
|
||||
'options',
|
||||
'prev' => 'compact',
|
||||
'role',
|
||||
'username'
|
||||
],
|
||||
'compact' => [
|
||||
'avatar' => 'compact',
|
||||
'id',
|
||||
'email',
|
||||
'language',
|
||||
'name',
|
||||
'role' => 'compact',
|
||||
'username'
|
||||
],
|
||||
'auth' => [
|
||||
'avatar' => 'compact',
|
||||
'permissions',
|
||||
'email',
|
||||
'id',
|
||||
'name',
|
||||
'role',
|
||||
'language'
|
||||
],
|
||||
'panel' => [
|
||||
'avatar' => 'compact',
|
||||
'blueprint',
|
||||
'content',
|
||||
'email',
|
||||
'id',
|
||||
'language',
|
||||
'name',
|
||||
'next' => ['id', 'name'],
|
||||
'options',
|
||||
'prev' => ['id', 'name'],
|
||||
'role',
|
||||
'username',
|
||||
],
|
||||
]
|
||||
];
|
||||
26
private/kirby/config/api/models/UserBlueprint.php
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Cms\UserBlueprint;
|
||||
|
||||
/**
|
||||
* UserBlueprint
|
||||
*/
|
||||
return [
|
||||
'fields' => [
|
||||
'name' => function (UserBlueprint $blueprint) {
|
||||
return $blueprint->name();
|
||||
},
|
||||
'options' => function (UserBlueprint $blueprint) {
|
||||
return $blueprint->options();
|
||||
},
|
||||
'tabs' => function (UserBlueprint $blueprint) {
|
||||
return $blueprint->tabs();
|
||||
},
|
||||
'title' => function (UserBlueprint $blueprint) {
|
||||
return $blueprint->title();
|
||||
},
|
||||
],
|
||||
'type' => 'Kirby\Cms\UserBlueprint',
|
||||
'views' => [
|
||||
],
|
||||
];
|
||||
26
private/kirby/config/api/routes.php
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Api Routes Definitions
|
||||
*/
|
||||
return function ($kirby) {
|
||||
$routes = array_merge(
|
||||
include __DIR__ . '/routes/auth.php',
|
||||
include __DIR__ . '/routes/pages.php',
|
||||
include __DIR__ . '/routes/roles.php',
|
||||
include __DIR__ . '/routes/site.php',
|
||||
include __DIR__ . '/routes/users.php',
|
||||
include __DIR__ . '/routes/files.php',
|
||||
include __DIR__ . '/routes/lock.php',
|
||||
include __DIR__ . '/routes/system.php',
|
||||
include __DIR__ . '/routes/translations.php'
|
||||
);
|
||||
|
||||
// only add the language routes if the
|
||||
// multi language setup is activated
|
||||
if ($kirby->option('languages', false) !== false) {
|
||||
$routes = array_merge($routes, include __DIR__ . '/routes/languages.php');
|
||||
}
|
||||
|
||||
return $routes;
|
||||
};
|
||||
55
private/kirby/config/api/routes/auth.php
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
<?php
|
||||
|
||||
use Kirby\Exception\InvalidArgumentException;
|
||||
use Kirby\Exception\NotFoundException;
|
||||
|
||||
/**
|
||||
* Authentication
|
||||
*/
|
||||
return [
|
||||
[
|
||||
'pattern' => 'auth',
|
||||
'method' => 'GET',
|
||||
'action' => function () {
|
||||
if ($user = $this->kirby()->auth()->user()) {
|
||||
return $this->resolve($user)->view('auth');
|
||||
}
|
||||
|
||||
throw new NotFoundException('The user cannot be found');
|
||||
}
|
||||
],
|
||||
[
|
||||
'pattern' => 'auth/login',
|
||||
'method' => 'POST',
|
||||
'auth' => false,
|
||||
'action' => function () {
|
||||
$auth = $this->kirby()->auth();
|
||||
|
||||
// csrf token check
|
||||
if ($auth->type() === 'session' && $auth->csrf() === false) {
|
||||
throw new InvalidArgumentException('Invalid CSRF token');
|
||||
}
|
||||
|
||||
$email = $this->requestBody('email');
|
||||
$long = $this->requestBody('long');
|
||||
$password = $this->requestBody('password');
|
||||
|
||||
$user = $this->kirby()->auth()->login($email, $password, $long);
|
||||
|
||||
return [
|
||||
'code' => 200,
|
||||
'status' => 'ok',
|
||||
'user' => $this->resolve($user)->view('auth')->toArray()
|
||||
];
|
||||
}
|
||||
],
|
||||
[
|
||||
'pattern' => 'auth/logout',
|
||||
'method' => 'POST',
|
||||
'auth' => false,
|
||||
'action' => function () {
|
||||
$this->kirby()->auth()->logout();
|
||||
return true;
|
||||
}
|
||||
],
|
||||
];
|
||||
123
private/kirby/config/api/routes/files.php
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Files Routes
|
||||
*/
|
||||
return [
|
||||
|
||||
[
|
||||
'pattern' => '(:all)/files/(:any)/sections/(:any)',
|
||||
'method' => 'GET',
|
||||
'action' => function (string $path, string $filename, string $sectionName) {
|
||||
if ($section = $this->file($path, $filename)->blueprint()->section($sectionName)) {
|
||||
return $section->toResponse();
|
||||
}
|
||||
}
|
||||
],
|
||||
[
|
||||
'pattern' => '(:all)/files/(:any)/fields/(:any)/(:all?)',
|
||||
'method' => 'ALL',
|
||||
'action' => function (string $parent, string $filename, string $fieldName, string $path = null) {
|
||||
if ($file = $this->file($parent, $filename)) {
|
||||
return $this->fieldApi($file, $fieldName, $path);
|
||||
}
|
||||
}
|
||||
],
|
||||
[
|
||||
'pattern' => '(:all)/files',
|
||||
'method' => 'GET',
|
||||
'action' => function (string $path) {
|
||||
return $this->parent($path)->files()->sortBy('sort', 'asc', 'filename', 'asc');
|
||||
}
|
||||
],
|
||||
[
|
||||
'pattern' => '(:all)/files',
|
||||
'method' => 'POST',
|
||||
'action' => function (string $path) {
|
||||
return $this->upload(function ($source, $filename) use ($path) {
|
||||
return $this->parent($path)->createFile([
|
||||
'source' => $source,
|
||||
'template' => $this->requestBody('template'),
|
||||
'filename' => $filename
|
||||
]);
|
||||
});
|
||||
}
|
||||
],
|
||||
[
|
||||
'pattern' => '(:all)/files/search',
|
||||
'method' => 'GET|POST',
|
||||
'action' => function (string $path) {
|
||||
$files = $this->parent($path)->files();
|
||||
|
||||
if ($this->requestMethod() === 'GET') {
|
||||
return $files->search($this->requestQuery('q'));
|
||||
} else {
|
||||
return $files->query($this->requestBody());
|
||||
}
|
||||
}
|
||||
],
|
||||
[
|
||||
'pattern' => '(:all)/files/sort',
|
||||
'method' => 'PATCH',
|
||||
'action' => function (string $path) {
|
||||
return $this->parent($path)->files()->changeSort(
|
||||
$this->requestBody('files'),
|
||||
$this->requestBody('index')
|
||||
);
|
||||
}
|
||||
],
|
||||
[
|
||||
'pattern' => '(:all)/files/(:any)',
|
||||
'method' => 'GET',
|
||||
'action' => function (string $path, string $filename) {
|
||||
return $this->file($path, $filename);
|
||||
}
|
||||
],
|
||||
[
|
||||
'pattern' => '(:all)/files/(:any)',
|
||||
'method' => 'PATCH',
|
||||
'action' => function (string $path, string $filename) {
|
||||
return $this->file($path, $filename)->update($this->requestBody(), $this->language(), true);
|
||||
}
|
||||
],
|
||||
[
|
||||
'pattern' => '(:all)/files/(:any)',
|
||||
'method' => 'POST',
|
||||
'action' => function (string $path, string $filename) {
|
||||
return $this->upload(function ($source) use ($path, $filename) {
|
||||
return $this->file($path, $filename)->replace($source);
|
||||
});
|
||||
}
|
||||
],
|
||||
[
|
||||
'pattern' => '(:all)/files/(:any)',
|
||||
'method' => 'DELETE',
|
||||
'action' => function (string $path, string $filename) {
|
||||
return $this->file($path, $filename)->delete();
|
||||
}
|
||||
],
|
||||
[
|
||||
'pattern' => '(:all)/files/(:any)/name',
|
||||
'method' => 'PATCH',
|
||||
'action' => function (string $path, string $filename) {
|
||||
return $this->file($path, $filename)->changeName($this->requestBody('name'));
|
||||
}
|
||||
],
|
||||
[
|
||||
'pattern' => 'files/search',
|
||||
'method' => 'GET|POST',
|
||||
'action' => function () {
|
||||
$files = $this
|
||||
->site()
|
||||
->index(true)
|
||||
->filterBy('isReadable', true)
|
||||
->files();
|
||||
|
||||
if ($this->requestMethod() === 'GET') {
|
||||
return $files->search($this->requestQuery('q'));
|
||||
} else {
|
||||
return $files->query($this->requestBody());
|
||||
}
|
||||
}
|
||||
],
|
||||
];
|
||||