generated from SeaCMS/modele-depot
Compare commits
No commits in common. "4e7cfeaa6ecb0c87a45dac59eb90ef9d5e584ff8" and "cbca0cb81a8618529dd3da2e82e6fc976bbf8348" have entirely different histories.
4e7cfeaa6e
...
cbca0cb81a
4
.github/CONTRIBUTING.md
vendored
4
.github/CONTRIBUTING.md
vendored
@ -1,6 +1,6 @@
|
||||
# Contributing rules for the repository
|
||||
|
||||
To contribute into the current repository <TODO complete url>, you should follow these rules.
|
||||
To contribute into the current repository <https://git.accolades.coop/SeaCMS/modele-depot>, you should follow these rules.
|
||||
|
||||
## Languages
|
||||
|
||||
@ -14,7 +14,7 @@ To contribute into the current repository <TODO complete url>, you should follow
|
||||
## Maintainers
|
||||
|
||||
Current maintainers of this repository are :
|
||||
- to complete
|
||||
- https://git.accolades.coop/jeremy
|
||||
|
||||
## Commits
|
||||
|
||||
|
16
.gitignore
vendored
16
.gitignore
vendored
@ -4,22 +4,6 @@
|
||||
# logs
|
||||
*.log
|
||||
|
||||
# database and main config
|
||||
/database.php
|
||||
/main-config.json
|
||||
|
||||
# Folder except required
|
||||
*/
|
||||
!public/
|
||||
!sites/
|
||||
sites/*
|
||||
!sites/default/
|
||||
!sites/default/**
|
||||
!content/
|
||||
!content/**
|
||||
!docs/
|
||||
!docs/**
|
||||
|
||||
# Composer
|
||||
vendor/*
|
||||
|
||||
|
82
.htaccess
82
.htaccess
@ -1,82 +0,0 @@
|
||||
# File inspired from getgrav/grav
|
||||
# SPDX-License-Identifier: MIT (Copyright 2021 Grav)
|
||||
|
||||
<IfModule mod_rewrite.c>
|
||||
|
||||
RewriteEngine On
|
||||
|
||||
## Begin - Exploits
|
||||
# If you experience problems on your site block out the operations listed below
|
||||
# This attempts to block the most common type of exploit `attempts`
|
||||
#
|
||||
# Block out any script trying to use twig tags in URL.
|
||||
RewriteCond %{REQUEST_URI} ({{|}}|{%|%}) [OR]
|
||||
RewriteCond %{QUERY_STRING} ({{|}}|{%25|%25}) [OR]
|
||||
# Block out any script trying to base64_encode data within the URL.
|
||||
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
|
||||
# Block out any script that includes a <script> tag in URL.
|
||||
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
|
||||
# Block out any script trying to set a PHP GLOBALS variable via URL.
|
||||
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
|
||||
# Block out any script trying to modify a _REQUEST variable via URL.
|
||||
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
|
||||
# Return 403 Forbidden header and show the content of the root homepage
|
||||
RewriteRule .* index.php [F]
|
||||
#
|
||||
## End - Exploits
|
||||
|
||||
## Begin - Index
|
||||
# If the requested path and file is not /index.php and the request
|
||||
# has not already been internally rewritten to the index.php script
|
||||
RewriteCond %{REQUEST_URI} !^/index\.php
|
||||
# and the requested path and file doesn't directly match a physical file
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
# and the requested path and file doesn't directly match a physical folder
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
# internally rewrite the request to the index.php script
|
||||
RewriteRule .* index.php [L]
|
||||
## End - Index
|
||||
|
||||
## Begin - Security
|
||||
# Block all direct access for these folders
|
||||
RewriteRule ^(\.git|.github|bin|archives)/(.*) error [F]
|
||||
# Block access to specific file types for these system folders
|
||||
RewriteRule ^(system|vendor)/(.*)\.(txt|xml|md|html|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F]
|
||||
# Block all direct access to .md files:
|
||||
RewriteRule \.md$ error [F]
|
||||
# Block all direct access to files and folders beginning with a dot
|
||||
RewriteRule (^|/)\.(?!well-known) - [F]
|
||||
# Block access to specific files in the root folder
|
||||
RewriteRule ^(LICENSE\.txt|composer\.lock|composer\.json|\.htaccess)$ error [F]
|
||||
## End - Security
|
||||
|
||||
</IfModule>
|
||||
|
||||
# Begin - Prevent Browsing and Set Default Resources
|
||||
Options -Indexes
|
||||
DirectoryIndex index.php index.html index.htm
|
||||
# End - Prevent Browsing and Set Default Resources
|
||||
|
||||
# Begin - LICENCE from Grav for THIS FILE ONLY
|
||||
# The MIT License (MIT)
|
||||
#
|
||||
# Copyright (c) 2021 Grav
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in all
|
||||
# copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
# End - LICENCE from Grav for THIS FILE ONLY
|
@ -1,130 +0,0 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
[Version française](CODE_OF_CONDUCT_FR.md)
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
<TODO complete email>.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||
enforcement ladder](https://github.com/mozilla/diversity).
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
https://www.contributor-covenant.org/faq. Translations are available at
|
||||
https://www.contributor-covenant.org/translations.
|
@ -1,134 +0,0 @@
|
||||
# Code de conduite _Contributor Covenant_
|
||||
|
||||
[English revision](CODE_OF_CONDUCT.md)
|
||||
|
||||
## Notre engagement
|
||||
|
||||
En tant que membres, contributeur·trice·s et dirigeant·e·s, nous nous
|
||||
engageons à faire de la participation à notre communauté
|
||||
une expérience sans harcèlement, quel que soit l'âge,
|
||||
la taille corporelle, le handicap visible ou invisible, l'appartenance ethnique,
|
||||
les caractéristiques sexuelles, l'identité et l'expression de genre,
|
||||
le niveau d'expérience, l'éducation, le statut socio-économique,
|
||||
la nationalité, l'apparence personnelle, la race, la religion,
|
||||
ou l'identité et l'orientation sexuelle.
|
||||
|
||||
Nous nous engageons à agir et interagir de manière à contribuer à une communauté
|
||||
ouverte, accueillante, diversifiée, inclusive et saine.
|
||||
|
||||
## Nos critères
|
||||
|
||||
Exemples de comportements qui contribuent à créer un environnement positif :
|
||||
|
||||
* Faire preuve d'empathie et de bienveillance envers les autres
|
||||
* Être respectueux des opinions, points de vue et expériences divergents
|
||||
* Donner et recevoir avec grâce les critiques constructives
|
||||
* Assumer ses responsabilités et s'excuser auprès des personnes affectées par nos erreurs et apprendre de ces expériences
|
||||
* Se concentrer sur ce qui est le meilleur non pas uniquement pour nous en tant qu'individu, mais aussi pour l'ensemble de la communauté
|
||||
|
||||
Exemples de comportements inacceptables :
|
||||
|
||||
* L'utilisation de langage ou d'images sexualisés et d'attentions ou d'avances sexuelles de toute nature
|
||||
* Le _trolling_, les commentaires insultants ou désobligeants et les attaques
|
||||
personnelles ou d'ordre politique
|
||||
* Le harcèlement en public ou en privé
|
||||
* La publication d'informations privées d'autrui, telle qu'une
|
||||
adresse postale ou une adresse électronique, sans leur autorisation explicite
|
||||
* Toute autre conduite qui pourrait raisonnablement être considérée comme inappropriée
|
||||
dans un cadre professionnel
|
||||
|
||||
## Responsabilités d'application
|
||||
|
||||
Les dirigeant·e·s de la communauté sont chargé·e·s de clarifier et de faire respecter nos normes de
|
||||
comportements acceptables et prendront des mesures correctives appropriées et équitables en
|
||||
réponse à tout comportement qu'ils ou elles jugent inapproprié, menaçant, offensant ou nuisible.
|
||||
|
||||
Les dirigeant·e·s de la communauté ont le droit et la responsabilité de supprimer, modifier ou rejeter
|
||||
les commentaires, les contributions, le code, les modifications de wikis, les rapports d'incidents ou de bogues et autres contributions qui
|
||||
ne sont pas alignés sur ce code de conduite, et communiqueront les raisons des décisions de modération
|
||||
le cas échéant.
|
||||
|
||||
## Portée d'application
|
||||
|
||||
Ce code de conduite s'applique à la fois au sein des espaces du projet ainsi que
|
||||
dans les espaces publics lorsqu'un individu représente officiellement le projet ou sa
|
||||
communauté. Font parties des exemples de représentation d'un projet ou d'une
|
||||
communauté l'utilisation d'une adresse électronique officielle, la publication sur
|
||||
les réseaux sociaux à l'aide d'un compte officiel ou le fait d'agir en tant que représentant·e désigné·e
|
||||
lors d'un événement en ligne ou hors-ligne.
|
||||
|
||||
## Application
|
||||
|
||||
Les cas de comportements abusifs, harcelants ou tout autre comportement
|
||||
inacceptables peuvent être signalés aux dirigeant·e·s de la communauté responsables de l'application du code de conduite à
|
||||
<TODO complete email>.
|
||||
Toutes les plaintes seront examinées et feront l'objet d'une enquête rapide et équitable.
|
||||
|
||||
Tou·te·s les dirigeant·e·s de la communauté sont tenu·e·s de respecter la vie privée et la sécurité des
|
||||
personnes ayant signalé un incident.
|
||||
|
||||
## Directives d'application
|
||||
|
||||
Les dirigeant·e·s de communauté suivront ces directives d'application sur l'impact communautaire afin de déterminer
|
||||
les conséquences de toute action qu'ils jugent contraire au présent code de conduite :
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Impact communautaire** : utilisation d'un langage inapproprié ou tout autre comportement jugé
|
||||
non professionnel ou indésirable dans la communauté.
|
||||
|
||||
**Conséquence** : un avertissement écrit et privé de la part des dirigeant·e·s de la communauté, clarifiant
|
||||
la nature du non-respect et expliquant pourquoi
|
||||
le comportement était inapproprié. Des excuses publiques peuvent être demandées.
|
||||
|
||||
### 2. Avertissement
|
||||
|
||||
**Impact communautaire** : un non-respect par un seul incident ou une série d'actions.
|
||||
|
||||
**Conséquence** : un avertissement avec des conséquences dû à la poursuite du comportement.
|
||||
Aucune interaction avec les personnes concernées, y compris l'interaction non sollicitée avec
|
||||
celles et ceux qui sont chargé·e·s de l'application de ce code de conduite, pendant une période déterminée.
|
||||
Cela comprend le fait d'éviter les interactions dans les espaces communautaires ainsi que sur les canaux externes
|
||||
comme les médias sociaux. Le non-respect de ces conditions peut entraîner
|
||||
un bannissement temporaire ou permanent.
|
||||
|
||||
### 3. Bannissement temporaire
|
||||
|
||||
**Impact communautaire** : un non-respect grave des normes communautaires, notamment
|
||||
un comportement inapproprié soutenu.
|
||||
|
||||
**Conséquence** : un bannissement temporaire de toutes formes d'interactions ou de
|
||||
communications avec la communauté pendant une période déterminée. Aucune interaction publique ou
|
||||
privée avec les personnes concernées, y compris les interactions non sollicitées
|
||||
avec celles et ceux qui appliquent ce code de conduite, n'est autorisée pendant cette période.
|
||||
Le non-respect de ces conditions peut entraîner un bannissement permanent.
|
||||
|
||||
### 4. Bannissement permanent
|
||||
|
||||
**Impact communautaire** : démontrer un schéma récurrent de non-respect des normes de la
|
||||
communauté y compris un comportement inapproprié soutenu, le harcèlement d'un individu
|
||||
ainsi que l'agression ou le dénigrement de catégories d'individus.
|
||||
|
||||
**Conséquence** : un bannissement permanent de toutes formes d'interactions publiques au sein de
|
||||
la communauté.
|
||||
|
||||
## Attributions
|
||||
|
||||
Ce code de conduite est adapté du
|
||||
[Contributor Covenant](https://www.contributor-covenant.org), version 2.0,
|
||||
disponible à
|
||||
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
|
||||
|
||||
Les Directives d'application ont été inspirées par le
|
||||
[Code of conduct enforcement ladder][Mozilla CoC] de Mozilla.
|
||||
|
||||
Pour obtenir des réponses aux questions courantes sur ce code de conduite, consultez la FAQ à
|
||||
[https://www.contributor-covenant.org/faq][FAQ]. Les traductions sont disponibles
|
||||
sur [https://www.contributor-covenant.org/translations][translations].
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
|
||||
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[translations]: https://www.contributor-covenant.org/translations
|
||||
|
21
LISEZMOI.md
Normal file
21
LISEZMOI.md
Normal file
@ -0,0 +1,21 @@
|
||||
# SeaCMS/modele-depot
|
||||
|
||||
_Read this file in [English](./README.md)_
|
||||
|
||||
Modèle de dépôt pour [SeaCMS](https://git.accolades.coop/SeaCMS).
|
||||
|
||||
### Auteurs
|
||||
|
||||
- [Jérémy Dufraisse](https://git.accolades.coop/jeremy) (2023)
|
||||
- [Association Accolades](https://accolades.coop/) (2023)
|
||||
|
||||
### Licence et garanties
|
||||
|
||||
Voir le fichier [LICENCE](./LICENCE) (et sa traduction française [LICENCE_FR](./LICENCE_FR))
|
||||
|
||||
**IMPORTANT**: Le fichier LICENCE file ne couvre pas le contenu des dossiers `vendor`. Voir le fichier LICENCE fournis dans chaque sous-dossier concerné par la bibliothèque importée.
|
||||
|
||||
## Installation
|
||||
|
||||
...
|
||||
|
51
README.md
51
README.md
@ -1,52 +1,21 @@
|
||||
# SeaCMS
|
||||
# SeaCMS/modele-depot
|
||||
|
||||
- [Français](#Fran%C3%A7ais)
|
||||
- [English](#English)
|
||||
_Lire ce fichier en [Français](./LISEZMOI.md)_
|
||||
|
||||
## Français
|
||||
Repository tempalte for for [SeaCMS](https://git.accolades.coop/SeaCMS).
|
||||
|
||||
Ce paquet est le paquet principal de SeaCMS.
|
||||
## Authors
|
||||
|
||||
Son objectif est de proposer un système de gestion de contenu simple, écologique et accessible pour la création de sites internet.
|
||||
- [Jérémy Dufraisse](https://git.accolades.coop/jeremy) (2023)
|
||||
- [Association Accolades](https://accolades.coop/) (2023)
|
||||
|
||||
**Attention : le nom SeaCMS va changer car il semble déjà tulisé dans d'autres pays**
|
||||
|
||||
### Auteurs
|
||||
|
||||
- Jérémy Dufraisse (2022)
|
||||
- Nathanaël Leprette (2022)
|
||||
- Association Defis (2022)
|
||||
|
||||
### Licence et garanties
|
||||
|
||||
Voir le fichier [LICENCE](./LICENCE) (et sa traduction française [LICENCE_FR](./LICENCE_FR))
|
||||
|
||||
**IMPORTANT**: Le fichier LICENCE file ne couvre pas le contenu des dossiers `vendor`. Voir le fichier LICENCE fournis dans chaque sous-dossier concerné par la bibliothèque importée.
|
||||
|
||||
### Documentation
|
||||
|
||||
Tout la documentation est disponible dans les fichiers sources : [docs/fr/README.md](docs/fr/README.md).
|
||||
|
||||
## English
|
||||
|
||||
This package is the main package of SeaCMS.
|
||||
|
||||
Its aim is to propose a Content-Management-System Simple, Ecological and accessible for creation of websites.
|
||||
|
||||
**Warning : the name SeaCMS will change because it seems already uses in other countries**
|
||||
|
||||
### Authors
|
||||
|
||||
- Jérémy Dufraisse (2022)
|
||||
- Nathanaël Leprette (2022)
|
||||
- Association Defis (2022)
|
||||
|
||||
### Licence and warranty
|
||||
## Licence and warranty
|
||||
|
||||
See [LICENCE](./LICENCE) file (and french translation [LICENCE_FR](./LICENCE_FR))
|
||||
|
||||
**IMPORTANT**: LICENCE file does not cover content of folders `vendor`. See dedicated LICENCE file for each subfolder concerning the imported library.
|
||||
|
||||
### Documentation
|
||||
## Installation
|
||||
|
||||
...
|
||||
|
||||
All documentation is available in sources from file : [docs/en/README.md](docs/en/README.md).
|
110
composer.json
110
composer.json
@ -1,75 +1,41 @@
|
||||
{
|
||||
"name": "seacms/seacms",
|
||||
"readme": "README.md",
|
||||
"license": "EUPL-1.2",
|
||||
"prefer-stable": true,
|
||||
"minimum-stability": "dev",
|
||||
"require": {
|
||||
"php": "^7.2.5||^8.0",
|
||||
"picocms/pico": "dev-fix-compatibility-php8 as v3.0.0-alpha.2",
|
||||
"seacms/app": "dev-master",
|
||||
"seacms/seacms-theme": "dev-master"
|
||||
},
|
||||
"config": {
|
||||
"optimize-autoloader": true,
|
||||
"platform": {
|
||||
"php": "7.2.5"
|
||||
},
|
||||
"platform-check": true,
|
||||
"sort-packages": true,
|
||||
"allow-plugins": {
|
||||
"picocms/composer-installer": true,
|
||||
"topfloor/composer-cleanup-vcs-dirs": false,
|
||||
"seacms/composer-plugin": true
|
||||
}
|
||||
},
|
||||
"extra": {
|
||||
"pico-plugin-dir": "vendor/picocms/plugins/",
|
||||
"pico-theme-dir": "vendor/picocms/themes/"
|
||||
},
|
||||
"scripts": {
|
||||
"post-autoload-dump": [
|
||||
"picocms\\ComposerInstaller\\Installer::postAutoloadDump"
|
||||
],
|
||||
"auto-archive": [
|
||||
"@composer install --no-dev",
|
||||
"@composer archive --format=zip --dir=archives"
|
||||
]
|
||||
},
|
||||
"archive": {
|
||||
"exclude": ["node_modules","/archives","/*.zip","/*.gz","/*.bz2","vendor/seacms/*/tests/","vendor/picocms/plugins/*/tests/"]
|
||||
},
|
||||
"repositories": {
|
||||
"picocms/pico": {
|
||||
"type": "vcs",
|
||||
"url": "https://git.defis.info/SeaCMS/pico"
|
||||
},
|
||||
"seacms/seacms-api": {
|
||||
"type": "vcs",
|
||||
"url": "https://git.defis.info/SeaCMS/seacms-api"
|
||||
},
|
||||
"seacms/seacms-app": {
|
||||
"type": "vcs",
|
||||
"url": "https://git.defis.info/SeaCMS/seacms-app"
|
||||
},
|
||||
"seacms/seacms-auth": {
|
||||
"type": "vcs",
|
||||
"url": "https://git.defis.info/SeaCMS/seacms-auth"
|
||||
},
|
||||
"seacms/composer-plugin": {
|
||||
"type": "vcs",
|
||||
"url": "https://git.defis.info/SeaCMS/composer-plugin"
|
||||
},
|
||||
"seacms/pico-content-editor": {
|
||||
"type": "vcs",
|
||||
"url": "https://git.defis.info/SeaCMS/pico-content-editor"
|
||||
},
|
||||
"seacms/seacms-theme": {
|
||||
"type": "vcs",
|
||||
"url": "https://git.defis.info/SeaCMS/seacms-theme"
|
||||
}
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.5"
|
||||
"name": "seacms/modele-depot",
|
||||
"description": "Repository template for SeaCMS",
|
||||
"keywords": ["seacms"],
|
||||
"homepage": "https://git.accolades.coop/SeaCMS/modele-depot",
|
||||
"license": "EUPL-1.2",
|
||||
"readme": "README.md",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jérémy Dufraisse",
|
||||
"homepage": "https://git.accolades.coop/jeremy",
|
||||
"role": "SeaCMS developer"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"docs": "https://git.accolades.coop/SeaCMS/modele-depot/src/branch/master/README.md",
|
||||
"issues": "https://git.accolades.coop/SeaCMS/modele-depot/issues",
|
||||
"source": "https://git.accolades.coop/SeaCMS/modele-depot"
|
||||
},
|
||||
"require": {
|
||||
},
|
||||
"replace": {
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Seacms\\Modeledpeot\\": "src/"
|
||||
}
|
||||
},
|
||||
"extra": {
|
||||
},
|
||||
"config": {
|
||||
"platform": {
|
||||
"php": "8.2"
|
||||
},
|
||||
"platform-check": true,
|
||||
"allow-plugins": {
|
||||
}
|
||||
},
|
||||
"require-dev": {
|
||||
}
|
||||
}
|
||||
|
2500
composer.lock
generated
2500
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -1,9 +0,0 @@
|
||||
---
|
||||
Title: Error 404
|
||||
Robots: noindex,nofollow
|
||||
---
|
||||
|
||||
Error 404
|
||||
=========
|
||||
|
||||
Woops. Looks like this page doesn't exist.
|
@ -1,60 +0,0 @@
|
||||
# SPDX-License-Identifier: EUPL-1.2
|
||||
##
|
||||
# Basic
|
||||
#
|
||||
site_title: Pico # The title of your website
|
||||
base_url: ~ # Pico will try to guess its base URL, if this fails, override it here;
|
||||
# Example: https://example.com/pico/
|
||||
debug: ~ # Set this to true to enable Pico's debug mode
|
||||
timezone: ~ # Your PHP installation might require you to manually specify a timezone
|
||||
locale: ~ # Your PHP installation might require you to manually specify a locale to use
|
||||
|
||||
##
|
||||
# Theme
|
||||
#
|
||||
theme: seacms # The name of your custom theme
|
||||
themes_url: ~ # Pico will try to guess the URL to the themes dir of your installation;
|
||||
# If this fails, override it here. Example: https://example.com/pico/themes/
|
||||
theme_config: # Additional theme-specific config
|
||||
widescreen: false # Default theme: Use more horizontal space (i.e. make the site container wider)
|
||||
twig_config: # Twig template engine config
|
||||
autoescape: html # Let Twig escape variables by default
|
||||
strict_variables: false # If set to true, Twig will bail out when unset variables are being used
|
||||
charset: utf-8 # The charset used by Twig templates
|
||||
debug: ~ # Enable Twig's debug mode
|
||||
cache: false # Enable Twig template caching by specifying a path to a writable directory
|
||||
auto_reload: ~ # Recompile Twig templates whenever the source code changes
|
||||
|
||||
##
|
||||
# Content
|
||||
#
|
||||
date_format: "%D %T" # Pico's default date format;
|
||||
# See https://php.net/manual/en/function.strftime.php for more info
|
||||
pages_order_by_meta: author # Sort pages by meta value "author" (set "pages_order_by" to "meta")
|
||||
pages_order_by: alpha # Change how Pico sorts pages ("alpha" for alphabetical order, "date", or "meta")
|
||||
pages_order: asc # Sort pages in ascending ("asc") or descending ("desc") order
|
||||
content_dir: content/ # The path to Pico's content directory
|
||||
content_ext: .md # The file extension of your Markdown files
|
||||
content_config: # Parsedown Markdown parser config
|
||||
extra: true # Use the Parsedown Extra parser to support extended markup;
|
||||
# See https://michelf.ca/projects/php-markdown/extra/ for more info
|
||||
breaks: false # A boolean indicating whether breaks in the markup should be reflected in the
|
||||
# parsed contents of the page
|
||||
escape: false # Escape HTML markup in your content files; don't confuse this with some sort of
|
||||
# safe mode, enabling this doesn't allow you to process untrusted user input!
|
||||
auto_urls: true # Automatically link URLs found in your markup
|
||||
assets_dir: assets/ # The path to Pico's assets directory
|
||||
assets_url: ~ # Pico will try to guess the URL to the assets dir of your installation;
|
||||
# If this fails, override it here. Example: https://example.com/pico/assets/
|
||||
|
||||
##
|
||||
# Plugins
|
||||
#
|
||||
plugins_url: ~ # Pico will try to guess the URL to the plugins dir of your installation;
|
||||
# If this fails, override it here. Example: https://example.com/pico/plugins/
|
||||
DummyPlugin.enabled: false # Force the plugin "DummyPlugin" to be disabled
|
||||
|
||||
##
|
||||
# Custom
|
||||
#
|
||||
my_custom_setting: Hello World! # You can access custom settings in themes using {{ config.my_custom_setting }}
|
@ -1,8 +0,0 @@
|
||||
---
|
||||
Title: Contact
|
||||
Description: Formulaire de contact de SeaCMS.
|
||||
template: contact
|
||||
titlecard: Titre contact
|
||||
---
|
||||
|
||||
# Page 2 de contact de SeaCMS
|
@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-License-Identifier: EUPL-1.2
|
||||
* Authors: see /README.md
|
||||
*/
|
||||
chdir(dirname(__DIR__,2));
|
||||
include 'index.php';
|
@ -1,8 +0,0 @@
|
||||
---
|
||||
footer_desc: footer description
|
||||
demo_link: 'https://eupl.eu/1.2/fr'
|
||||
img_footer: '%theme_url%/img/drop.jpg'
|
||||
img_footer_alt: alt de l'image
|
||||
footer_title: footer title
|
||||
footer_content: footer content
|
||||
---
|
@ -1,6 +0,0 @@
|
||||
---
|
||||
logo: '%theme_url%/img/logo.svg'
|
||||
iconGit: github
|
||||
iconGit_txt: Our Git repo
|
||||
---
|
||||
|
@ -1,29 +0,0 @@
|
||||
---
|
||||
Title: Welcome
|
||||
Description: SeaCMS is a stupidly simple, blazing fast, flat file CMS.
|
||||
template: home
|
||||
icon1: printer
|
||||
button:
|
||||
- icon: upload
|
||||
image1:
|
||||
url: '%theme_url%/img/drop.jpg'
|
||||
alt: Image alternative
|
||||
title: Editable title
|
||||
txt: Editable texte
|
||||
module:
|
||||
- id: 0
|
||||
url: '%theme_url%/img/drop.jpg'
|
||||
title: Visit us on GitHub
|
||||
txt: octocat
|
||||
- id: 1
|
||||
url: '%theme_url%/img/drop.jpg'
|
||||
title: Join us on Freenode IRC Webchat
|
||||
txt: chat
|
||||
- id: 2
|
||||
url: '%theme_url%/img/drop.jpg'
|
||||
title: Help us by creating/collecting bounties and pledging to fundraisers
|
||||
txt: dollar
|
||||
|
||||
---
|
||||
|
||||
# Page d'accueil SeaCMS
|
@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-License-Identifier: EUPL-1.2
|
||||
* Authors: see /README.md
|
||||
*/
|
||||
chdir(dirname(__DIR__,1));
|
||||
include 'index.php';
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
Title: Page 2
|
||||
Description: Page 22 de SeaCMS.
|
||||
template: page2
|
||||
---
|
||||
|
||||
|
||||
# Page 2 de test SeaCMS
|
||||
|
||||
kfgkyufytfvsdqjmbmckljnCKJBEBKCJNZLK=CJKB JKAÙZEHJFMIHUIVMH JHCVKAZEMHJIONB VEAHIOMHJBCEB fjemnbqvu hvemajinveanjkmnjmaehmn vekrzhjomih jveaioùhoù vaiomhiovkfgkyufytfvsdqjmbmckljnCKJBEBKCJNZLKkfgkyufytfvsdqjmbmckljnCKJBEBKCJNZLK=CJKB JKAÙZEHJFMIHUIVMH JHCVKAZEMHJIONB VEAHIOMHJBCEB fjemnbqvu hvemajinveanjkmnjmaehmn vekrzhjomih jveaioùhoù vaiomhiovkfgkyufytfvsdqjmbmckljnCKJBEBKCJNZLKkfgkyufytfvsdqjmbmckljnCKJBEBKCJNZLK=CJKB JKAÙZEHJFMIHUIVMH JHCVKAZEMHJIONB VEAHIOMHJBCEB fjemnbqvu hvemajinveanjkmnjmaehmn vekrzhjomih jveaioùhoù vaiomhiovkfgkyufytfvsdqjmbmckljnCKJBEBKCJNZLKkfgkyufytfvsdqjmbmckljnCKJBEBKCJNZLK=CJKB JKAÙZEHJFMIHUIVMH JHCVKAZEMHJIONB VEAHIOMHJBCEB fjemnbqvu hvemajinveanjkmnjmaehmn vekrzhjomih jveaioùhoù vaiomhiovkfgkyufytfvsdqjmbmckljnCKJBEBKCJNZLKkfgkyufytfvsdqjmbmckljnCKJBEBKCJNZLK=CJKB JKAÙZEHJFMIHUIVMH JHCVKAZEMHJIONB VEAHIOMHJBCEB fjemnbqvu hvemajinveanjkmnjmaehmn vekrzhjomih jveaioùhoù vaiomhiovkfgkyufytfvsdqjmbmckljnCKJBEBKCJNZLK
|
||||
|
@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-License-Identifier: EUPL-1.2
|
||||
* Authors: see /README.md
|
||||
*/
|
||||
chdir(dirname(__DIR__,2));
|
||||
include 'index.php';
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
Title: Sub Page Index
|
||||
---
|
||||
|
||||
## This is a Sub Page Index
|
||||
|
||||
This is `index.md` in the `sub` folder.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis. Phasellus id massa eget nisl congue blandit sit amet id ligula. Praesent et nulla eu augue tempus sagittis. Mauris faucibus nibh et nibh cursus in vestibulum sapien egestas. Curabitur ut lectus tortor. Sed ipsum eros, egestas ut eleifend non, elementum vitae eros. Mauris felis diam, pellentesque vel lacinia ac, dictum a nunc. Mauris mattis nunc sed mi sagittis et facilisis tortor volutpat. Etiam tincidunt urna mattis erat placerat placerat ac eu tellus. Ut nec velit id nisl tincidunt vehicula id a metus. Pellentesque erat neque, faucibus id ultricies vel, mattis in ante. Donec lobortis, mauris id congue scelerisque, diam nisl accumsan orci, condimentum porta est magna vel arcu. Curabitur varius ante dui. Vivamus sit amet ante ac diam ullamcorper sodales sed a odio.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis. Phasellus id massa eget nisl congue blandit sit amet id ligula. Praesent et nulla eu augue tempus sagittis. Mauris faucibus nibh et nibh cursus in vestibulum sapien egestas. Curabitur ut lectus tortor. Sed ipsum eros, egestas ut eleifend non, elementum vitae eros. Mauris felis diam, pellentesque vel lacinia ac, dictum a nunc. Mauris mattis nunc sed mi sagittis et facilisis tortor volutpat. Etiam tincidunt urna mattis erat placerat placerat ac eu tellus. Ut nec velit id nisl tincidunt vehicula id a metus. Pellentesque erat neque, faucibus id ultricies vel, mattis in ante. Donec lobortis, mauris id congue scelerisque, diam nisl accumsan orci, condimentum porta est magna vel arcu. Curabitur varius ante dui. Vivamus sit amet ante ac diam ullamcorper sodales sed a odio.
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
Title: Sub Page
|
||||
---
|
||||
|
||||
## This is a Sub Page
|
||||
|
||||
This is `page.md` in the `sub` folder.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis. Phasellus id massa eget nisl congue blandit sit amet id ligula. Praesent et nulla eu augue tempus sagittis. Mauris faucibus nibh et nibh cursus in vestibulum sapien egestas. Curabitur ut lectus tortor. Sed ipsum eros, egestas ut eleifend non, elementum vitae eros. Mauris felis diam, pellentesque vel lacinia ac, dictum a nunc. Mauris mattis nunc sed mi sagittis et facilisis tortor volutpat. Etiam tincidunt urna mattis erat placerat placerat ac eu tellus. Ut nec velit id nisl tincidunt vehicula id a metus. Pellentesque erat neque, faucibus id ultricies vel, mattis in ante. Donec lobortis, mauris id congue scelerisque, diam nisl accumsan orci, condimentum porta est magna vel arcu. Curabitur varius ante dui. Vivamus sit amet ante ac diam ullamcorper sodales sed a odio.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis. Phasellus id massa eget nisl congue blandit sit amet id ligula. Praesent et nulla eu augue tempus sagittis. Mauris faucibus nibh et nibh cursus in vestibulum sapien egestas. Curabitur ut lectus tortor. Sed ipsum eros, egestas ut eleifend non, elementum vitae eros. Mauris felis diam, pellentesque vel lacinia ac, dictum a nunc. Mauris mattis nunc sed mi sagittis et facilisis tortor volutpat. Etiam tincidunt urna mattis erat placerat placerat ac eu tellus. Ut nec velit id nisl tincidunt vehicula id a metus. Pellentesque erat neque, faucibus id ultricies vel, mattis in ante. Donec lobortis, mauris id congue scelerisque, diam nisl accumsan orci, condimentum porta est magna vel arcu. Curabitur varius ante dui. Vivamus sit amet ante ac diam ullamcorper sodales sed a odio.
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
Title: Sub Page Index
|
||||
---
|
||||
|
||||
## This is a Sub Page Index
|
||||
|
||||
This is `index.md` in the `sub` folder.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis. Phasellus id massa eget nisl congue blandit sit amet id ligula. Praesent et nulla eu augue tempus sagittis. Mauris faucibus nibh et nibh cursus in vestibulum sapien egestas. Curabitur ut lectus tortor. Sed ipsum eros, egestas ut eleifend non, elementum vitae eros. Mauris felis diam, pellentesque vel lacinia ac, dictum a nunc. Mauris mattis nunc sed mi sagittis et facilisis tortor volutpat. Etiam tincidunt urna mattis erat placerat placerat ac eu tellus. Ut nec velit id nisl tincidunt vehicula id a metus. Pellentesque erat neque, faucibus id ultricies vel, mattis in ante. Donec lobortis, mauris id congue scelerisque, diam nisl accumsan orci, condimentum porta est magna vel arcu. Curabitur varius ante dui. Vivamus sit amet ante ac diam ullamcorper sodales sed a odio.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis. Phasellus id massa eget nisl congue blandit sit amet id ligula. Praesent et nulla eu augue tempus sagittis. Mauris faucibus nibh et nibh cursus in vestibulum sapien egestas. Curabitur ut lectus tortor. Sed ipsum eros, egestas ut eleifend non, elementum vitae eros. Mauris felis diam, pellentesque vel lacinia ac, dictum a nunc. Mauris mattis nunc sed mi sagittis et facilisis tortor volutpat. Etiam tincidunt urna mattis erat placerat placerat ac eu tellus. Ut nec velit id nisl tincidunt vehicula id a metus. Pellentesque erat neque, faucibus id ultricies vel, mattis in ante. Donec lobortis, mauris id congue scelerisque, diam nisl accumsan orci, condimentum porta est magna vel arcu. Curabitur varius ante dui. Vivamus sit amet ante ac diam ullamcorper sodales sed a odio.
|
@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-License-Identifier: EUPL-1.2
|
||||
* Authors: see /README.md
|
||||
*/
|
||||
chdir(dirname(__DIR__,2));
|
||||
include 'index.php';
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
Title: Sub Page
|
||||
---
|
||||
|
||||
## This is a Sub Page
|
||||
|
||||
This is `page.md` in the `sub` folder.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis. Phasellus id massa eget nisl congue blandit sit amet id ligula. Praesent et nulla eu augue tempus sagittis. Mauris faucibus nibh et nibh cursus in vestibulum sapien egestas. Curabitur ut lectus tortor. Sed ipsum eros, egestas ut eleifend non, elementum vitae eros. Mauris felis diam, pellentesque vel lacinia ac, dictum a nunc. Mauris mattis nunc sed mi sagittis et facilisis tortor volutpat. Etiam tincidunt urna mattis erat placerat placerat ac eu tellus. Ut nec velit id nisl tincidunt vehicula id a metus. Pellentesque erat neque, faucibus id ultricies vel, mattis in ante. Donec lobortis, mauris id congue scelerisque, diam nisl accumsan orci, condimentum porta est magna vel arcu. Curabitur varius ante dui. Vivamus sit amet ante ac diam ullamcorper sodales sed a odio.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis. Phasellus id massa eget nisl congue blandit sit amet id ligula. Praesent et nulla eu augue tempus sagittis. Mauris faucibus nibh et nibh cursus in vestibulum sapien egestas. Curabitur ut lectus tortor. Sed ipsum eros, egestas ut eleifend non, elementum vitae eros. Mauris felis diam, pellentesque vel lacinia ac, dictum a nunc. Mauris mattis nunc sed mi sagittis et facilisis tortor volutpat. Etiam tincidunt urna mattis erat placerat placerat ac eu tellus. Ut nec velit id nisl tincidunt vehicula id a metus. Pellentesque erat neque, faucibus id ultricies vel, mattis in ante. Donec lobortis, mauris id congue scelerisque, diam nisl accumsan orci, condimentum porta est magna vel arcu. Curabitur varius ante dui. Vivamus sit amet ante ac diam ullamcorper sodales sed a odio.
|
@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-License-Identifier: EUPL-1.2
|
||||
* Authors: see /README.md
|
||||
*/
|
||||
chdir(dirname(__DIR__,3));
|
||||
include 'index.php';
|
195
content/theme.md
195
content/theme.md
@ -1,195 +0,0 @@
|
||||
---
|
||||
title: Theme Styling Test
|
||||
hidden: true
|
||||
---
|
||||
|
||||
Theme Styling Test
|
||||
==================
|
||||
|
||||
This is `theme.md` in Pico's content directory. This page doesn't show up in the website's menu due to `hidden: true` in the page's YAML header. The purpose of this page is to aid theme development - below you'll find basically every format that is possible with Markdown. If you develop a theme, you should make sure that all examples below show decent.
|
||||
|
||||
Text
|
||||
----
|
||||
|
||||
**Lorem ipsum dolor sit amet,** consectetur adipisici elit, *sed eiusmod tempor* incidunt ut labore et dolore magna aliqua.[^1] ~~Ut enim ad minim veniam,~~ quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat.[^2] [Quis aute iure reprehenderit][Link] in voluptate velit esse cillum dolore eu fugiat nulla pariatur. `Excepteur` sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
[](%base_url% "Pico Logo") {.image .small .float-right}
|
||||
|
||||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
|
||||
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
|
||||
|
||||
Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. [Ut wisi enim ad minim veniam](#btnTest){.btn .btn--small .hero-btn .bg-glaz .border-rounded .no-decoration #btnTest}, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
|
||||
Headings
|
||||
--------
|
||||
|
||||
# h1 {.my-class-for-tests #header1}
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
## h2
|
||||
|
||||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
|
||||
### h3
|
||||
|
||||
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
|
||||
|
||||
#### h4
|
||||
|
||||
Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
|
||||
##### h5
|
||||
|
||||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.
|
||||
|
||||
###### h6
|
||||
|
||||
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
|
||||
|
||||
Horizontal line
|
||||
---------------
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
---
|
||||
|
||||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
|
||||
List
|
||||
----
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
* Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
|
||||
1. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
2. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
3. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
|
||||
* Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.
|
||||
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
- Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
1. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.
|
||||
2. At vero eos et accusam et justo duo dolores et ea rebum.
|
||||
1. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet
|
||||
2. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
|
||||
3. At vero eos et accusam et justo duo dolores et ea rebum.
|
||||
|
||||
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.
|
||||
|
||||
Definition list
|
||||
---------------
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
Duis autem
|
||||
: Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
|
||||
|
||||
Lorem ipsum dolor sit amet
|
||||
: Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
|
||||
Ut wisi enim ad minim veniam
|
||||
: Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
: Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
|
||||
|
||||
Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
|
||||
Blockquote
|
||||
----------
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
> Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse
|
||||
> molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero
|
||||
> eros et accumsan et iusto odio dignissim qui blandit praesent luptatum
|
||||
> zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum
|
||||
> dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
|
||||
> tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
>
|
||||
> > Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit
|
||||
> > lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure
|
||||
> > dolor in hendrerit in vulputate velit esse molestie consequat, vel illum
|
||||
> > dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio
|
||||
> > dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te
|
||||
> > feugait nulla facilisi.
|
||||
>
|
||||
> Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet
|
||||
> doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet,
|
||||
> consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut
|
||||
> laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam,
|
||||
> quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex
|
||||
> ea commodo consequat.
|
||||
|
||||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.
|
||||
|
||||
Code block
|
||||
----------
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
```
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>This is a title</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Hello world!</p>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
|
||||
Table
|
||||
-----
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
Lorem ipsum | Duis autem vel eum | Ut wisi enim ad minim veniam
|
||||
----------- | ------------------ | ----------------------------
|
||||
**Duis autem vel eum iriure dolor** in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. | *Lorem ipsum dolor sit amet,* consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. | ~~Ut wisi enim ad minim veniam,~~ quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
[Duis autem vel eum iriure dolor][Link] in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. | `Nam liber tempor` cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. | Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. | | Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.
|
||||
|
||||
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
|
||||
|
||||
Forms
|
||||
-----
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
<fieldset>
|
||||
<legend>Legend</legend>
|
||||
<label>Label</label>
|
||||
<input type="checkbox"/>
|
||||
<input type="checkbox" checked="checked"/>
|
||||
<input type="radio"/>
|
||||
<input type="radio" checked="checked"/><br/>
|
||||
<input type="text" value="Lorem ipsum"/>
|
||||
<input type="password" value="Ut enim"/><br/>
|
||||
<input type="submit" value="Submit"/>
|
||||
<input type="reset" value="Reset"/>
|
||||
<input type="button" value="Button (Input)"/>
|
||||
<button>Button</button><br/>
|
||||
<textarea>Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua<br/>.</textarea><br/>
|
||||
<select>
|
||||
<option>Lorem ipsum</option>
|
||||
<option>Ut enim</option>
|
||||
</select><br/>
|
||||
<select multiple="multiple">
|
||||
<option>Lorem ipsum</option>
|
||||
<option selected="selected">Ut enim</option>
|
||||
<option>Quis aute iure</option>
|
||||
<option>Excepteur sint</option>
|
||||
</select>
|
||||
</fieldset>
|
||||
|
||||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
|
||||
*[Lorem ipsum]: Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua.
|
||||
|
||||
[Link]: %base_url% "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat."
|
||||
|
||||
[^1]: Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
|
||||
[^2]: Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-License-Identifier: EUPL-1.2
|
||||
* Authors: see /README.md
|
||||
*/
|
||||
chdir(dirname(__DIR__,2));
|
||||
include 'index.php';
|
@ -1,510 +0,0 @@
|
||||
---
|
||||
Title: Welcome
|
||||
Description: Pico is a stupidly simple, blazing fast, flat file CMS.
|
||||
hidden: true
|
||||
---
|
||||
|
||||
## Welcome to Pico
|
||||
|
||||
Congratulations, you have successfully installed [Pico][] %version%.
|
||||
%meta.description% <!-- replaced by the above Description header -->
|
||||
|
||||
## Creating Content
|
||||
|
||||
Pico is a flat file CMS. This means there is no administration backend or
|
||||
database to deal with. You simply create `.md` files in the `content` folder
|
||||
and those files become your pages. For example, this file is called `index.md`
|
||||
and is shown as the main landing page.
|
||||
|
||||
When you install Pico, it comes with some sample contents that will display
|
||||
until you add your own content. Simply add some `.md` files to your `content`
|
||||
folder in Pico's root directory. No configuration is required, Pico will
|
||||
automatically use the `content` folder as soon as you create your own
|
||||
`index.md`. Just check out [Pico's sample contents][SampleContents] for an
|
||||
example!
|
||||
|
||||
If you create a folder within the content directory (e.g. `content/sub`) and
|
||||
put an `index.md` inside it, you can access that folder at the URL
|
||||
`%base_url%?sub`. If you want another page within the sub folder, simply create
|
||||
a text file with the corresponding name and you will be able to access it
|
||||
(e.g. `content/sub/page.md` is accessible from the URL `%base_url%?sub/page`).
|
||||
Below we've shown some examples of locations and their corresponding URLs:
|
||||
|
||||
<table style="width: 100%; max-width: 40em;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 50%;">Physical Location</th>
|
||||
<th style="width: 50%;">URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>content/index.md</td>
|
||||
<td><a href="%base_url%">/</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>content/sub.md</td>
|
||||
<td><del>?sub</del> (not accessible, see below)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>content/sub/index.md</td>
|
||||
<td><a href="%base_url%?sub">?sub</a> (same as above)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>content/sub/page.md</td>
|
||||
<td><a href="%base_url%?sub/page">?sub/page</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>content/theme.md</td>
|
||||
<td><a href="%base_url%?theme">?theme</a> (hidden in menu)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>content/a/very/long/url.md</td>
|
||||
<td>
|
||||
<a href="%base_url%?a/very/long/url">?a/very/long/url</a>
|
||||
(doesn't exist)
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
If a file cannot be found, the file `content/404.md` will be shown. You can add
|
||||
`404.md` files to any directory. So, for example, if you wanted to use a special
|
||||
error page for your blog, you could simply create `content/blog/404.md`.
|
||||
|
||||
Pico strictly separates contents of your website (the Markdown files in your
|
||||
`content` directory) and how these contents should be displayed (the Twig
|
||||
templates in your `themes` directory). However, not every file in your `content`
|
||||
directory might actually be a distinct page. For example, some themes (including
|
||||
Pico's default theme) use some special "hidden" file to manage meta data (like
|
||||
`_meta.md` in Pico's sample contents). Some other themes use a `_footer.md` to
|
||||
represent the contents of the website's footer. The common point is the `_`: all
|
||||
files and directories prefixed by a `_` in your `content` directory are hidden.
|
||||
These pages can't be accessed from a web browser, Pico will show a 404 error
|
||||
page instead.
|
||||
|
||||
As a common practice, we recommend you to separate your contents and assets
|
||||
(like images, downloads, etc.). We even deny access to your `content` directory
|
||||
by default. If you want to use some assets (e.g. a image) in one of your content
|
||||
files, use Pico's `assets` folder. You can then access them in your Markdown
|
||||
using the <code>%assets_url%</code> placeholder, for example:
|
||||
<code>!\[Image Title\](%assets_url%/image.png)</code>
|
||||
|
||||
### Text File Markup
|
||||
|
||||
Text files are marked up using [Markdown][] and [Markdown Extra][MarkdownExtra].
|
||||
They can also contain regular HTML.
|
||||
|
||||
At the top of text files you can place a block comment and specify certain meta
|
||||
attributes of the page using [YAML][] (the "YAML header"). For example:
|
||||
|
||||
---
|
||||
Title: Welcome
|
||||
Description: This description will go in the meta description tag
|
||||
Author: Joe Bloggs
|
||||
Date: 2001-04-25
|
||||
Robots: noindex,nofollow
|
||||
Template: index
|
||||
---
|
||||
|
||||
These values will be contained in the `{{ meta }}` variable in themes (see
|
||||
below). Meta headers sometimes have a special meaning: For instance, Pico not
|
||||
only passes through the `Date` meta header, but rather evaluates it to really
|
||||
"understand" when this page was created. This comes into play when you want to
|
||||
sort your pages not just alphabetically, but by date. Another example is the
|
||||
`Template` meta header: It controls what Twig template Pico uses to display
|
||||
this page (e.g. if you add `Template: blog`, Pico uses `blog.twig`).
|
||||
|
||||
In an attempt to separate contents and styling, we recommend you to not use
|
||||
inline CSS in your Markdown files. You should rather add appropriate CSS
|
||||
classes to your theme. For example, you might want to add some CSS classes to
|
||||
your theme to rule how much of the available space a image should use (e.g.
|
||||
`img.small { width: 80%; }`). You can then use these CSS classes in your
|
||||
Markdown files, for example:
|
||||
<code>!\[Image Title\](%assets_url%/image.png) {.small}</code>
|
||||
|
||||
There are also certain variables that you can use in your text files:
|
||||
|
||||
* <code>%site_title%</code> - The title of your Pico site
|
||||
* <code>%base_url%</code> - The URL to your Pico site; internal links
|
||||
can be specified using <code>%base_url%?sub/page</code>
|
||||
* <code>%theme_url%</code> - The URL to the currently used theme
|
||||
* <code>%assets_url%</code> - The URL to Pico's `assets` directory
|
||||
* <code>%themes_url%</code> - The URL to Pico's `themes` directory;
|
||||
don't confuse this with <code>%theme_url%</code>
|
||||
* <code>%plugins_url%</code> - The URL to Pico's `plugins` directory
|
||||
* <code>%version%</code> - Pico's current version string (e.g. `2.0.0`)
|
||||
* <code>%meta.*%</code> - Access any meta variable of the current
|
||||
page, e.g. <code>%meta.author%</code> is replaced with `Joe Bloggs`
|
||||
* <code>%config.*%</code> - Access any scalar config variable,
|
||||
e.g. <code>%config.theme%</code> is replaced with `default`
|
||||
|
||||
### Blogging
|
||||
|
||||
Pico is not blogging software - but makes it very easy for you to use it as a
|
||||
blog. You can find many plugins out there implementing typical blogging
|
||||
features like authentication, tagging, pagination and social plugins. See the
|
||||
below Plugins section for details.
|
||||
|
||||
If you want to use Pico as a blogging software, you probably want to do
|
||||
something like the following:
|
||||
|
||||
1. Put all your blog articles in a separate `blog` folder in your `content`
|
||||
directory. All these articles should have a `Date` meta header.
|
||||
2. Create a `blog.md` or `blog/index.md` in your `content` directory. Add
|
||||
`Template: blog-index` to the YAML header of this page. It will later show a
|
||||
list of all your blog articles (see step 3).
|
||||
3. Create the new Twig template `blog-index.twig` (the file name must match the
|
||||
`Template` meta header from Step 2) in your theme directory. This template
|
||||
probably isn't very different from your default `index.twig` (i.e. copy
|
||||
`index.twig`), it will create a list of all your blog articles. Add the
|
||||
following Twig snippet to `blog-index.twig` near `{{ content }}`:
|
||||
```
|
||||
{% for page in pages("blog")|sort_by("time")|reverse if not page.hidden %}
|
||||
<div class="post">
|
||||
<h3><a href="{{ page.url }}">{{ page.title }}</a></h3>
|
||||
<p class="date">{{ page.date_formatted }}</p>
|
||||
<p class="excerpt">{{ page.description }}</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
```
|
||||
|
||||
## Customization
|
||||
|
||||
Pico is highly customizable in two different ways: On the one hand you can
|
||||
change Pico's appearance by using themes, on the other hand you can add new
|
||||
functionality by using plugins. Doing the former includes changing Pico's HTML,
|
||||
CSS and JavaScript, the latter mostly consists of PHP programming.
|
||||
|
||||
This is all Greek to you? Don't worry, you don't have to spend time on these
|
||||
techie talk - it's very easy to use one of the great themes or plugins others
|
||||
developed and released to the public. Please refer to the next sections for
|
||||
details.
|
||||
|
||||
### Themes
|
||||
|
||||
You can create themes for your Pico installation in the `themes` folder. Pico
|
||||
uses [Twig][] for template rendering. You can select your theme by setting the
|
||||
`theme` option in `config/config.yml` to the name of your theme folder.
|
||||
|
||||
[Pico's default theme][PicoTheme] isn't really intended to be used for a
|
||||
productive website, it's rather a starting point for creating your own theme.
|
||||
If the default theme isn't sufficient for you, and you don't want to create
|
||||
your own theme, you can use one of the great themes third-party developers and
|
||||
designers created in the past. As with plugins, you can find themes in
|
||||
[our Wiki][WikiThemes] and on [our website][OfficialThemes].
|
||||
|
||||
All themes must include an `index.twig` file to define the HTML structure of
|
||||
the theme, and a `pico-theme.yml` to set the necessary config parameters. Just
|
||||
refer to Pico's default theme as an example. You can use different templates
|
||||
for different content files by specifying the `Template` meta header. Simply
|
||||
add e.g. `Template: blog` to the YAML header of a content file and Pico will
|
||||
use the `blog.twig` template in your theme folder to display the page.
|
||||
|
||||
Below are the Twig variables that are available to use in themes. Please note
|
||||
that URLs (e.g. `{{ base_url }}`) never include a trailing slash.
|
||||
|
||||
* `{{ site_title }}` - Shortcut to the site title (see `config/config.yml`)
|
||||
* `{{ config }}` - Contains the values you set in `config/config.yml`
|
||||
(e.g. `{{ config.theme }}` becomes `default`)
|
||||
* `{{ base_url }}` - The URL to your Pico site; use Twig's `link` filter to
|
||||
specify internal links (e.g. `{{ "sub/page"|link }}`),
|
||||
this guarantees that your link works whether URL rewriting
|
||||
is enabled or not
|
||||
* `{{ theme_url }}` - The URL to the currently active theme
|
||||
* `{{ assets_url }}` - The URL to Pico's `assets` directory
|
||||
* `{{ themes_url }}` - The URL to Pico's `themes` directory; don't confuse this
|
||||
with `{{ theme_url }}`
|
||||
* `{{ plugins_url }}` - The URL to Pico's `plugins` directory
|
||||
* `{{ version }}` - Pico's current version string (e.g. `%version%`)
|
||||
* `{{ meta }}` - Contains the meta values of the current page
|
||||
* `{{ meta.title }}` - The `Title` YAML header
|
||||
* `{{ meta.description }}` - The `Description` YAML header
|
||||
* `{{ meta.author }}` - The `Author` YAML header
|
||||
* `{{ meta.date }}` - The `Date` YAML header
|
||||
* `{{ meta.date_formatted }}` - The formatted date of the page as specified
|
||||
by the `date_format` parameter in your
|
||||
`config/config.yml`
|
||||
* `{{ meta.time }}` - The [Unix timestamp][UnixTimestamp] derived from the
|
||||
`Date` YAML header
|
||||
* `{{ meta.robots }}` - The `Robots` YAML header
|
||||
* ...
|
||||
* `{{ content }}` - The content of the current page after it has been processed
|
||||
through Markdown
|
||||
* `{{ previous_page }}` - The data of the previous page, relative to
|
||||
`current_page`
|
||||
* `{{ current_page }}` - The data of the current page; refer to the "Pages"
|
||||
section below for details
|
||||
* `{{ next_page }}` - The data of the next page, relative to `current_page`
|
||||
|
||||
To call assets from your theme, use `{{ theme_url }}`. For instance, to include
|
||||
the CSS file `themes/my_theme/example.css`, add
|
||||
`<link rel="stylesheet" href="{{ theme_url }}/example.css" type="text/css" />`
|
||||
to your `index.twig`. This works for arbitrary files in your theme's folder,
|
||||
including images and JavaScript files.
|
||||
|
||||
Please note that Twig escapes HTML in all strings before outputting them. So
|
||||
for example, if you add `headline: My <strong>favorite</strong> color` to the
|
||||
YAML header of a page and output it using `{{ meta.headline }}`, you'll end up
|
||||
seeing `My <strong>favorite</strong> color` - yes, including the markup! To
|
||||
actually get it parsed, you must use `{{ meta.headline|raw }}` (resulting in
|
||||
the expected <code>My **favorite** color</code>). Notable exceptions to this
|
||||
are Pico's `content` variable (e.g. `{{ content }}`), Pico's `content` filter
|
||||
(e.g. `{{ "sub/page"|content }}`), and Pico's `markdown` filter, they all are
|
||||
marked as HTML safe.
|
||||
|
||||
#### Dealing with pages
|
||||
|
||||
There are several ways to access Pico's pages list. You can access the current
|
||||
page's data using the `current_page` variable, or use the `prev_page` and/or
|
||||
`next_page` variables to access the respective previous/next page in Pico's
|
||||
pages list. But more importantly there's the `pages()` function. No matter how
|
||||
you access a page, it will always consist of the following data:
|
||||
|
||||
* `{{ id }}` - The relative path to the content file (unique ID)
|
||||
* `{{ url }}` - The URL to the page
|
||||
* `{{ title }}` - The title of the page (`Title` YAML header)
|
||||
* `{{ description }}` - The description of the page (`Description` YAML header)
|
||||
* `{{ author }}` - The author of the page (`Author` YAML header)
|
||||
* `{{ date }}` - The date of the page (`Date` YAML header)
|
||||
* `{{ date_formatted }}` - The formatted date of the page as specified by the
|
||||
`date_format` parameter in your `config/config.yml`
|
||||
* `{{ time }}` - The [Unix timestamp][UnixTimestamp] derived from the page's
|
||||
date
|
||||
* `{{ raw_content }}` - The raw, not yet parsed contents of the page; use the
|
||||
filter to get the parsed contents of a page by passing
|
||||
its unique ID (e.g. `{{ "sub/page"|content }}`)
|
||||
* `{{ meta }}` - The meta values of the page (see global `{{ meta }}` above)
|
||||
* `{{ prev_page }}` - The data of the respective previous page
|
||||
* `{{ next_page }}` - The data of the respective next page
|
||||
* `{{ tree_node }}` - The page's node in Pico's page tree; check out Pico's
|
||||
[page tree documentation][FeaturesPageTree] for details
|
||||
|
||||
Pico's `pages()` function is the best way to access all of your site's pages.
|
||||
It uses Pico's page tree to easily traverse a subset of Pico's pages list. It
|
||||
allows you to filter pages and to build recursive menus (like dropdowns). By
|
||||
default, `pages()` returns a list of all main pages (e.g. `content/page.md` and
|
||||
`content/sub/index.md`, but not `content/sub/page.md` or `content/index.md`).
|
||||
If you want to return all pages below a specific folder (e.g. `content/blog/`),
|
||||
pass the folder name as first parameter to the function (e.g. `pages("blog")`).
|
||||
Naturally you can also pass variables to the function. For example, to return a
|
||||
list of all child pages of the current page, use `pages(current_page.id)`.
|
||||
Check out the following code snippet:
|
||||
|
||||
<section class="articles">
|
||||
{% for page in pages(current_page.id) if not page.hidden %}
|
||||
<article>
|
||||
<h2><a href="{{ page.url }}">{{ page.title }}</a></h2>
|
||||
{{ page.id|content }}
|
||||
</article>
|
||||
{% endfor %}
|
||||
</section>
|
||||
|
||||
The `pages()` function is very powerful and also allows you to return not just
|
||||
a page's child pages by passing the `depth` and `depthOffset` params. For
|
||||
example, if you pass `pages(depthOffset=-1)`, the list will also include Pico's
|
||||
main index page (i.e. `content/index.md`). This one is commonly used to create
|
||||
a theme's main navigation. If you want to learn more, head over to Pico's
|
||||
complete [`pages()` function documentation][FeaturesPagesFunction].
|
||||
|
||||
If you want to access the data of a particular page, use Pico's `pages`
|
||||
variable. Just take `content/_meta.md` in Pico's sample contents for an
|
||||
example: `content/_meta.md` contains some meta data you might want to use in
|
||||
your theme. If you want to output the page's `tagline` meta value, use
|
||||
`{{ pages["_meta"].meta.logo }}`. Don't ever try to use Pico's `pages` variable
|
||||
as an replacement for Pico's `pages()` function. Its usage looks very similar,
|
||||
it will kinda work and you might even see it being used in old themes, but be
|
||||
warned: It slows down Pico. Always use Pico's `pages()` function when iterating
|
||||
Pico's page list (e.g. `{% for page in pages() %}…{% endfor %}`).
|
||||
|
||||
#### Twig filters and functions
|
||||
|
||||
Additional to [Twig][]'s extensive list of filters, functions and tags, Pico
|
||||
also provides some useful additional filters and functions to make theming
|
||||
even easier.
|
||||
|
||||
* Pass the unique ID of a page to the `link` filter to return the page's URL
|
||||
(e.g. `{{ "sub/page"|link }}` gets `%base_url%?sub/page`).
|
||||
* You can replace URL placeholders (like <code>%base_url%</code>) in
|
||||
arbitrary strings using the `url` filter. This is helpful together with meta
|
||||
variables, e.g. if you add <code>image: %assets_url%/stock.jpg</code>
|
||||
to the YAML header of a page, `{{ meta.image|url }}` will return
|
||||
`%assets_url%/stock.jpg`.
|
||||
* To get the parsed contents of a page, pass its unique ID to the `content`
|
||||
filter (e.g. `{{ "sub/page"|content }}`).
|
||||
* You can parse any Markdown string using the `markdown` filter. For example,
|
||||
you might use Markdown in the `description` meta variable and later parse it
|
||||
in your theme using `{{ meta.description|markdown }}`. You can also pass meta
|
||||
data as parameter to replace <code>%meta.*%</code> placeholders
|
||||
(e.g. `{{ "Written by *%meta.author%*"|markdown(meta) }}` yields "Written by
|
||||
*John Doe*"). However, please note that all contents will be wrapped inside
|
||||
HTML paragraph elements (i.e. `<p>…</p>`). If you want to parse just a single
|
||||
line of Markdown markup, pass the `singleLine` param to the `markdown` filter
|
||||
(e.g. `{{ "This really is a *single* line"|markdown(singleLine=true) }}`).
|
||||
* Arrays can be sorted by one of its keys using the `sort_by` filter
|
||||
(e.g. `{% for page in pages|sort_by([ 'meta', 'nav' ]) %}...{% endfor %}`
|
||||
iterates through all pages, ordered by the `nav` meta header; please note the
|
||||
`[ 'meta', 'nav' ]` part of the example, it instructs Pico to sort by
|
||||
`page.meta.nav`). Items which couldn't be sorted are moved to the bottom of
|
||||
the array; you can specify `bottom` (move items to bottom; default), `top`
|
||||
(move items to top), `keep` (keep original order) or `remove` (remove items)
|
||||
as second parameter to change this behavior.
|
||||
* You can return all values of a given array key using the `map` filter
|
||||
(e.g. `{{ pages|map("title") }}` returns all page titles).
|
||||
* Use the `url_param` and `form_param` Twig functions to access HTTP GET (i.e.
|
||||
a URL's query string like `?some-variable=my-value`) and HTTP POST (i.e. data
|
||||
of a submitted form) parameters. This allows you to implement things like
|
||||
pagination, tags and categories, dynamic pages, and even more - with pure
|
||||
Twig! Simply head over to our [introductory page for accessing HTTP
|
||||
parameters][FeaturesHttpParams] for details.
|
||||
|
||||
### Plugins
|
||||
|
||||
#### Plugins for users
|
||||
|
||||
Officially tested plugins can be found at http://picocms.org/plugins/, but
|
||||
there are many awesome third-party plugins out there! A good start point for
|
||||
discovery is [our Wiki][WikiPlugins].
|
||||
|
||||
Pico makes it very easy for you to add new features to your website using
|
||||
plugins. Just like Pico, you can install plugins either using [Composer][]
|
||||
(e.g. `composer require phrozenbyte/pico-file-prefixes`), or manually by
|
||||
uploading the plugin's file (just for small plugins consisting of a single file,
|
||||
e.g. `PicoFilePrefixes.php`) or directory (e.g. `PicoFilePrefixes`) to your
|
||||
`plugins` directory. We always recommend you to use Composer whenever possible,
|
||||
because it makes updating both Pico and your plugins way easier. Anyway,
|
||||
depending on the plugin you want to install, you may have to go through some
|
||||
more steps (e.g. specifying config variables) to make the plugin work. Thus you
|
||||
should always check out the plugin's docs or `README.md` file to learn the
|
||||
necessary steps.
|
||||
|
||||
Plugins which were written to work with Pico 1.0 and later can be enabled and
|
||||
disabled through your `config/config.yml`. If you want to e.g. disable the
|
||||
`PicoDeprecated` plugin, add the following line to your `config/config.yml`:
|
||||
`PicoDeprecated.enabled: false`. To force the plugin to be enabled, replace
|
||||
`false` by `true`.
|
||||
|
||||
#### Plugins for developers
|
||||
|
||||
You're a plugin developer? We love you guys! You can find tons of information
|
||||
about how to develop plugins at http://picocms.org/development/. If you've
|
||||
developed a plugin before and want to upgrade it to Pico 2.0, refer to the
|
||||
[upgrade section of the docs][PluginUpgrade].
|
||||
|
||||
## Config
|
||||
|
||||
Configuring Pico really is stupidly simple: Just create a `config/config.yml`
|
||||
to override the default Pico settings (and add your own custom settings). Take
|
||||
a look at the `config/config.yml.template` for a brief overview of the
|
||||
available settings and their defaults. To override a setting, simply copy the
|
||||
line from `config/config.yml.template` to `config/config.yml` and set your
|
||||
custom value.
|
||||
|
||||
But we didn't stop there. Rather than having just a single config file, you can
|
||||
use a arbitrary number of config files. Simply create a `.yml` file in Pico's
|
||||
`config` dir and you're good to go. This allows you to add some structure to
|
||||
your config, like a separate config file for your theme (`config/my_theme.yml`).
|
||||
|
||||
Please note that Pico loads config files in a special way you should be aware
|
||||
of. First of all it loads the main config file `config/config.yml`, and then
|
||||
any other `*.yml` file in Pico's `config` dir in alphabetical order. The file
|
||||
order is crucial: Config values which have been set already, cannot be
|
||||
overwritten by a succeeding file. For example, if you set `site_title: Pico` in
|
||||
`config/a.yml` and `site_title: My awesome site!` in `config/b.yml`, your site
|
||||
title will be "Pico".
|
||||
|
||||
Since YAML files are plain text files, users might read your Pico config by
|
||||
navigating to `%base_url%/config/config.yml`. This is no problem in the first
|
||||
place, but might get a problem if you use plugins that require you to store
|
||||
security-relevant data in the config (like credentials). Thus you should
|
||||
*always* make sure to configure your webserver to deny access to Pico's
|
||||
`config` dir. Just refer to the "URL Rewriting" section below. By following the
|
||||
instructions, you will not just enable URL rewriting, but also deny access to
|
||||
Pico's `config` dir.
|
||||
|
||||
### URL Rewriting
|
||||
|
||||
Pico's default URLs (e.g. %base_url%/?sub/page) already are very user-friendly.
|
||||
Additionally, Pico offers you a URL rewrite feature to make URLs even more
|
||||
user-friendly (e.g. %base_url%/sub/page). Below you'll find some basic info
|
||||
about how to configure your webserver proberly to enable URL rewriting.
|
||||
|
||||
#### Apache
|
||||
|
||||
If you're using the Apache web server, URL rewriting probably already is
|
||||
enabled - try it yourself, click on the [second URL](%base_url%/sub/page). If
|
||||
URL rewriting doesn't work (you're getting `404 Not Found` error messages from
|
||||
Apache), please make sure to enable the [`mod_rewrite` module][ModRewrite] and
|
||||
to enable `.htaccess` overrides. You might have to set the
|
||||
[`AllowOverride` directive][AllowOverride] to `AllowOverride All` in your
|
||||
virtual host config file or global `httpd.conf`/`apache.conf`. Assuming
|
||||
rewritten URLs work, but Pico still shows no rewritten URLs, force URL
|
||||
rewriting by setting `rewrite_url: true` in your `config/config.yml`. If you
|
||||
rather get a `500 Internal Server Error` no matter what you do, try removing
|
||||
the `Options` directive from Pico's `.htaccess` file (it's the last line).
|
||||
|
||||
#### Nginx
|
||||
|
||||
If you're using Nginx, you can use the following config to enable URL rewriting
|
||||
(lines `5` to `8`) and denying access to Pico's internal files (lines `1` to
|
||||
`3`). You'll need to adjust the path (`/pico` on lines `1`, `2`, `5` and `7`)
|
||||
to match your installation directory. Additionally, you'll need to enable URL
|
||||
rewriting by setting `rewrite_url: true` in your `config/config.yml`. The Nginx
|
||||
config should provide the *bare minimum* you need for Pico. Nginx is a very
|
||||
extensive subject. If you have any trouble, please read through our
|
||||
[Nginx config docs][NginxConfig].
|
||||
|
||||
```
|
||||
location ~ ^/pico/((config|content|vendor|composer\.(json|lock|phar))(/|$)|(.+/)?\.(?!well-known(/|$))) {
|
||||
try_files /pico/index.php$is_args$args =404;
|
||||
}
|
||||
|
||||
location /pico/ {
|
||||
index index.php;
|
||||
try_files $uri $uri/ /pico/index.php$is_args$args;
|
||||
}
|
||||
```
|
||||
|
||||
#### Lighttpd
|
||||
|
||||
Pico runs smoothly on Lighttpd. You can use the following config to enable URL
|
||||
rewriting (lines `6` to `9`) and denying access to Pico's internal files (lines
|
||||
`1` to `4`). Make sure to adjust the path (`/pico` on lines `2`, `3` and `7`)
|
||||
to match your installation directory, and let Pico know about available URL
|
||||
rewriting by setting `rewrite_url: true` in your `config/config.yml`. The
|
||||
config below should provide the *bare minimum* you need for Pico.
|
||||
|
||||
```
|
||||
url.rewrite-once = (
|
||||
"^/pico/(config|content|vendor|composer\.(json|lock|phar))(/|$)" => "/pico/index.php",
|
||||
"^/pico/(.+/)?\.(?!well-known(/|$))" => "/pico/index.php"
|
||||
)
|
||||
|
||||
url.rewrite-if-not-file = (
|
||||
"^/pico(/|$)" => "/pico/index.php"
|
||||
)
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
For more help have a look at the Pico documentation at http://picocms.org/docs.
|
||||
|
||||
[Pico]: http://picocms.org/
|
||||
[PicoTheme]: https://github.com/picocms/pico-theme
|
||||
[SampleContents]: https://github.com/picocms/Pico/tree/master/content-sample
|
||||
[Markdown]: http://daringfireball.net/projects/markdown/syntax
|
||||
[MarkdownExtra]: https://michelf.ca/projects/php-markdown/extra/
|
||||
[YAML]: https://en.wikipedia.org/wiki/YAML
|
||||
[Twig]: http://twig.sensiolabs.org/documentation
|
||||
[UnixTimestamp]: https://en.wikipedia.org/wiki/Unix_timestamp
|
||||
[Composer]: https://getcomposer.org/
|
||||
[FeaturesHttpParams]: http://picocms.org/in-depth/features/http-params/
|
||||
[FeaturesPageTree]: http://picocms.org/in-depth/features/page-tree/
|
||||
[FeaturesPagesFunction]: http://picocms.org/in-depth/features/pages-function/
|
||||
[WikiThemes]: https://github.com/picocms/Pico/wiki/Pico-Themes
|
||||
[WikiPlugins]: https://github.com/picocms/Pico/wiki/Pico-Plugins
|
||||
[OfficialThemes]: http://picocms.org/themes/
|
||||
[PluginUpgrade]: http://picocms.org/development/#upgrade
|
||||
[ModRewrite]: https://httpd.apache.org/docs/current/mod/mod_rewrite.html
|
||||
[AllowOverride]: https://httpd.apache.org/docs/current/mod/core.html#allowoverride
|
||||
[NginxConfig]: http://picocms.org/in-depth/nginx/
|
@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-License-Identifier: EUPL-1.2
|
||||
* Authors: see /README.md
|
||||
*/
|
||||
chdir(dirname(__DIR__,2));
|
||||
include 'index.php';
|
@ -1,3 +0,0 @@
|
||||
# Documentation about SeaCMS
|
||||
|
||||
- [Developper documentation](dev.md)
|
124
docs/en/dev.md
124
docs/en/dev.md
@ -1,124 +0,0 @@
|
||||
# Documentation for developpers
|
||||
|
||||
This package is the the main SeaCMS package.
|
||||
|
||||
## Installation
|
||||
|
||||
- install [`git`](https://git-scm.com/downloads)
|
||||
- install [`composer`](https://getcomposer.org/download/)
|
||||
- clone repository
|
||||
```bash
|
||||
git clone https://git.defis.info/SeaCMS/seacms.git seacms
|
||||
```
|
||||
- choose the folder name by replacing `seacms` in the command line by the wanted path
|
||||
or (equivalent to `git clone`)
|
||||
```bash
|
||||
mkdir seacms
|
||||
cd seacms
|
||||
git init
|
||||
git remote add origin https://git.defis.info/SeaCMS/seacms.git
|
||||
git fetch --all
|
||||
git checkout master
|
||||
```
|
||||
- then start `composer install`
|
||||
|
||||
### If you want use one dependency in local
|
||||
|
||||
- create the file `main-config.json` in root folder
|
||||
- keep on branch `master`
|
||||
- put this This will use symlink to these folders only if existing
|
||||
```
|
||||
{
|
||||
"local-repositories": {
|
||||
"composer-plugin": "seacms/composer-plugin",
|
||||
"pico-content-editor": "seacms/pico-content-editor",
|
||||
"pico": {
|
||||
"packageName": "picocms/pico",
|
||||
"version": "dev-fix-compatibility-php8"
|
||||
},
|
||||
"seacms-app": "seacms/seacms-app",
|
||||
"seacms-api": "seacms/seacms-api",
|
||||
"seacms-auth": "seacms/seacms-auth",
|
||||
"seacms-theme": "seacms/seacms-theme"
|
||||
}
|
||||
}
|
||||
```
|
||||
- type `composer update` in command line
|
||||
- be careful not to push `composer.lock` to main repo if you don't know what you are doing
|
||||
|
||||
If trouble during `composer update`, you can:
|
||||
1. clear cache `composer cc`
|
||||
2. delete folder `vendor` before `composer update`
|
||||
|
||||
## TODO
|
||||
|
||||
- [ ] set contact addresses into `CODE_OF_CONDUCT.md` files
|
||||
- [ ] update `composer.json` file as described below
|
||||
- [ ] create a `SUPPORT.md` file at the root
|
||||
- [ ] update content of `.github/CONTRIBUTING.md`
|
||||
- [ ] check content of `.github/PULL_REQUEST_TEMPLATE.md`
|
||||
- [ ] update docs (French + English) for installation
|
||||
|
||||
## `composer.json` file
|
||||
|
||||
This files needs to be updated.
|
||||
Currently, it uses `"minimum-stability": "dev",` to allow usage of `alpha` revisions of packages.
|
||||
|
||||
### TODO
|
||||
|
||||
add these fields :
|
||||
|
||||
```json
|
||||
"name": "TODO To be defined",
|
||||
"description": "TODO to complete",
|
||||
"homepage": "TODO To set",
|
||||
"authors": [
|
||||
{
|
||||
"name": "xxx",
|
||||
"email": "TODO complete",
|
||||
"homepage": "TODO complete",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "xxx",
|
||||
"email": "TODO complete",
|
||||
"homepage": "TODO complete",
|
||||
"role": "Developer"
|
||||
},
|
||||
],
|
||||
"support": {
|
||||
"email": "support@example.org",
|
||||
"issues": "url",
|
||||
"source": "url",
|
||||
"docs": "url",
|
||||
"chat": "url",
|
||||
"rss": "url",
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/phpdoctrine"
|
||||
},
|
||||
{
|
||||
"type": "tidelift",
|
||||
"url": "https://tidelift.com/subscription/pkg/packagist-doctrine_doctrine-bundle"
|
||||
},
|
||||
{
|
||||
"type": "other",
|
||||
"url": "https://www.doctrine-project.org/sponsorship.html"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
## `.github` folder
|
||||
|
||||
It was choosen to name the folder as `.github` to allow compatibility for forks on GitHUb even if the folder could be named `.gitea`.
|
||||
|
||||
## reserved folders' name
|
||||
|
||||
- `vendor` for composer
|
||||
- `node_modules` for `npm` and `yarn`
|
||||
- `archives` for archives' creation
|
||||
- `sites` for subsites on a farm
|
||||
- `public` for assets `public/img` `public/js` `public/css` , ....
|
||||
- `p` for main content path
|
@ -1,3 +0,0 @@
|
||||
# Documentation pour SeaCMS
|
||||
|
||||
- [Documentation des développeurs en Anglais](../en/dev.md)
|
12
index.php
12
index.php
@ -1,12 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-License-Identifier: EUPL-1.2
|
||||
* Authors: see /README.md
|
||||
*/
|
||||
|
||||
if (is_file(__DIR__ . '/vendor/autoload.php')) {
|
||||
include_once(__DIR__ . '/vendor/autoload.php');
|
||||
}
|
||||
|
||||
\SeaCMS\App::run('content');
|
@ -1,3 +0,0 @@
|
||||
# public folder for assets
|
||||
|
||||
For images `public/img` by example.
|
@ -1,3 +0,0 @@
|
||||
# Folder for sub websites
|
||||
|
||||
This folder will be used to put sub websites.
|
@ -1,9 +0,0 @@
|
||||
---
|
||||
Title: Error 404
|
||||
Robots: noindex,nofollow
|
||||
---
|
||||
|
||||
Error 404
|
||||
=========
|
||||
|
||||
Woops. Looks like this page doesn't exist.
|
@ -1,14 +0,0 @@
|
||||
---
|
||||
Logo: '%theme_url%/img/pico-white.svg'
|
||||
Tagline: Making the web easy.
|
||||
Social:
|
||||
- title: Visit us on GitHub
|
||||
url: https://github.com/picocms/Pico
|
||||
icon: octocat
|
||||
- title: Join us on Freenode IRC Webchat
|
||||
url: https://webchat.freenode.net/?channels=%23picocms
|
||||
icon: chat
|
||||
- title: Help us by creating/collecting bounties and pledging to fundraisers
|
||||
url: https://www.bountysource.com/teams/picocms
|
||||
icon: dollar
|
||||
---
|
@ -1,61 +0,0 @@
|
||||
# SPDX-License-Identifier: EUPL-1.2
|
||||
##
|
||||
# Basic
|
||||
#
|
||||
site_title: Pico # The title of your website
|
||||
base_url: ~ # Pico will try to guess its base URL, if this fails, override it here;
|
||||
# Example: https://example.com/pico/
|
||||
rewrite_url: false # A boolean (true or false) indicating whether URL rewriting is forced
|
||||
debug: ~ # Set this to true to enable Pico's debug mode
|
||||
timezone: ~ # Your PHP installation might require you to manually specify a timezone
|
||||
locale: ~ # Your PHP installation might require you to manually specify a locale to use
|
||||
|
||||
##
|
||||
# Theme
|
||||
#
|
||||
theme: seacms # The name of your custom theme
|
||||
themes_url: ../../vendor/picocms/themes # Pico will try to guess the URL to the themes dir of your installation;
|
||||
# If this fails, override it here. Example: https://example.com/pico/themes/
|
||||
theme_config: # Additional theme-specific config
|
||||
widescreen: false # Default theme: Use more horizontal space (i.e. make the site container wider)
|
||||
twig_config: # Twig template engine config
|
||||
autoescape: html # Let Twig escape variables by default
|
||||
strict_variables: false # If set to true, Twig will bail out when unset variables are being used
|
||||
charset: utf-8 # The charset used by Twig templates
|
||||
debug: ~ # Enable Twig's debug mode
|
||||
cache: false # Enable Twig template caching by specifying a path to a writable directory
|
||||
auto_reload: ~ # Recompile Twig templates whenever the source code changes
|
||||
|
||||
##
|
||||
# Content
|
||||
#
|
||||
date_format: "%D %T" # Pico's default date format;
|
||||
# See https://php.net/manual/en/function.strftime.php for more info
|
||||
pages_order_by_meta: author # Sort pages by meta value "author" (set "pages_order_by" to "meta")
|
||||
pages_order_by: alpha # Change how Pico sorts pages ("alpha" for alphabetical order, "date", or "meta")
|
||||
pages_order: asc # Sort pages in ascending ("asc") or descending ("desc") order
|
||||
content_dir: content/ # The path to Pico's content directory
|
||||
content_ext: .md # The file extension of your Markdown files
|
||||
content_config: # Parsedown Markdown parser config
|
||||
extra: true # Use the Parsedown Extra parser to support extended markup;
|
||||
# See https://michelf.ca/projects/php-markdown/extra/ for more info
|
||||
breaks: false # A boolean indicating whether breaks in the markup should be reflected in the
|
||||
# parsed contents of the page
|
||||
escape: false # Escape HTML markup in your content files; don't confuse this with some sort of
|
||||
# safe mode, enabling this doesn't allow you to process untrusted user input!
|
||||
auto_urls: true # Automatically link URLs found in your markup
|
||||
assets_dir: assets/ # The path to Pico's assets directory
|
||||
assets_url: ~ # Pico will try to guess the URL to the assets dir of your installation;
|
||||
# If this fails, override it here. Example: https://example.com/pico/assets/
|
||||
|
||||
##
|
||||
# Plugins
|
||||
#
|
||||
plugins_url: ../../vendor/picocms/plugins # Pico will try to guess the URL to the plugins dir of your installation;
|
||||
# If this fails, override it here. Example: https://example.com/pico/plugins/
|
||||
DummyPlugin.enabled: false # Force the plugin "DummyPlugin" to be disabled
|
||||
|
||||
##
|
||||
# Custom
|
||||
#
|
||||
my_custom_setting: Hello World! # You can access custom settings in themes using {{ config.my_custom_setting }}
|
@ -1,509 +0,0 @@
|
||||
---
|
||||
Title: Welcome
|
||||
Description: Pico is a stupidly simple, blazing fast, flat file CMS.
|
||||
---
|
||||
|
||||
## Welcome to Pico
|
||||
|
||||
Congratulations, you have successfully installed [Pico][] %version%.
|
||||
%meta.description% <!-- replaced by the above Description header -->
|
||||
|
||||
## Creating Content
|
||||
|
||||
Pico is a flat file CMS. This means there is no administration backend or
|
||||
database to deal with. You simply create `.md` files in the `content` folder
|
||||
and those files become your pages. For example, this file is called `index.md`
|
||||
and is shown as the main landing page.
|
||||
|
||||
When you install Pico, it comes with some sample contents that will display
|
||||
until you add your own content. Simply add some `.md` files to your `content`
|
||||
folder in Pico's root directory. No configuration is required, Pico will
|
||||
automatically use the `content` folder as soon as you create your own
|
||||
`index.md`. Just check out [Pico's sample contents][SampleContents] for an
|
||||
example!
|
||||
|
||||
If you create a folder within the content directory (e.g. `content/sub`) and
|
||||
put an `index.md` inside it, you can access that folder at the URL
|
||||
`%base_url%?sub`. If you want another page within the sub folder, simply create
|
||||
a text file with the corresponding name and you will be able to access it
|
||||
(e.g. `content/sub/page.md` is accessible from the URL `%base_url%?sub/page`).
|
||||
Below we've shown some examples of locations and their corresponding URLs:
|
||||
|
||||
<table style="width: 100%; max-width: 40em;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 50%;">Physical Location</th>
|
||||
<th style="width: 50%;">URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>content/index.md</td>
|
||||
<td><a href="%base_url%">/</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>content/sub.md</td>
|
||||
<td><del>?sub</del> (not accessible, see below)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>content/sub/index.md</td>
|
||||
<td><a href="%base_url%?sub">?sub</a> (same as above)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>content/sub/page.md</td>
|
||||
<td><a href="%base_url%?sub/page">?sub/page</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>content/theme.md</td>
|
||||
<td><a href="%base_url%?theme">?theme</a> (hidden in menu)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>content/a/very/long/url.md</td>
|
||||
<td>
|
||||
<a href="%base_url%?a/very/long/url">?a/very/long/url</a>
|
||||
(doesn't exist)
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
If a file cannot be found, the file `content/404.md` will be shown. You can add
|
||||
`404.md` files to any directory. So, for example, if you wanted to use a special
|
||||
error page for your blog, you could simply create `content/blog/404.md`.
|
||||
|
||||
Pico strictly separates contents of your website (the Markdown files in your
|
||||
`content` directory) and how these contents should be displayed (the Twig
|
||||
templates in your `themes` directory). However, not every file in your `content`
|
||||
directory might actually be a distinct page. For example, some themes (including
|
||||
Pico's default theme) use some special "hidden" file to manage meta data (like
|
||||
`_meta.md` in Pico's sample contents). Some other themes use a `_footer.md` to
|
||||
represent the contents of the website's footer. The common point is the `_`: all
|
||||
files and directories prefixed by a `_` in your `content` directory are hidden.
|
||||
These pages can't be accessed from a web browser, Pico will show a 404 error
|
||||
page instead.
|
||||
|
||||
As a common practice, we recommend you to separate your contents and assets
|
||||
(like images, downloads, etc.). We even deny access to your `content` directory
|
||||
by default. If you want to use some assets (e.g. a image) in one of your content
|
||||
files, use Pico's `assets` folder. You can then access them in your Markdown
|
||||
using the <code>%assets_url%</code> placeholder, for example:
|
||||
<code>!\[Image Title\](%assets_url%/image.png)</code>
|
||||
|
||||
### Text File Markup
|
||||
|
||||
Text files are marked up using [Markdown][] and [Markdown Extra][MarkdownExtra].
|
||||
They can also contain regular HTML.
|
||||
|
||||
At the top of text files you can place a block comment and specify certain meta
|
||||
attributes of the page using [YAML][] (the "YAML header"). For example:
|
||||
|
||||
---
|
||||
Title: Welcome
|
||||
Description: This description will go in the meta description tag
|
||||
Author: Joe Bloggs
|
||||
Date: 2001-04-25
|
||||
Robots: noindex,nofollow
|
||||
Template: index
|
||||
---
|
||||
|
||||
These values will be contained in the `{{ meta }}` variable in themes (see
|
||||
below). Meta headers sometimes have a special meaning: For instance, Pico not
|
||||
only passes through the `Date` meta header, but rather evaluates it to really
|
||||
"understand" when this page was created. This comes into play when you want to
|
||||
sort your pages not just alphabetically, but by date. Another example is the
|
||||
`Template` meta header: It controls what Twig template Pico uses to display
|
||||
this page (e.g. if you add `Template: blog`, Pico uses `blog.twig`).
|
||||
|
||||
In an attempt to separate contents and styling, we recommend you to not use
|
||||
inline CSS in your Markdown files. You should rather add appropriate CSS
|
||||
classes to your theme. For example, you might want to add some CSS classes to
|
||||
your theme to rule how much of the available space a image should use (e.g.
|
||||
`img.small { width: 80%; }`). You can then use these CSS classes in your
|
||||
Markdown files, for example:
|
||||
<code>!\[Image Title\](%assets_url%/image.png) {.small}</code>
|
||||
|
||||
There are also certain variables that you can use in your text files:
|
||||
|
||||
* <code>%site_title%</code> - The title of your Pico site
|
||||
* <code>%base_url%</code> - The URL to your Pico site; internal links
|
||||
can be specified using <code>%base_url%?sub/page</code>
|
||||
* <code>%theme_url%</code> - The URL to the currently used theme
|
||||
* <code>%assets_url%</code> - The URL to Pico's `assets` directory
|
||||
* <code>%themes_url%</code> - The URL to Pico's `themes` directory;
|
||||
don't confuse this with <code>%theme_url%</code>
|
||||
* <code>%plugins_url%</code> - The URL to Pico's `plugins` directory
|
||||
* <code>%version%</code> - Pico's current version string (e.g. `2.0.0`)
|
||||
* <code>%meta.*%</code> - Access any meta variable of the current
|
||||
page, e.g. <code>%meta.author%</code> is replaced with `Joe Bloggs`
|
||||
* <code>%config.*%</code> - Access any scalar config variable,
|
||||
e.g. <code>%config.theme%</code> is replaced with `default`
|
||||
|
||||
### Blogging
|
||||
|
||||
Pico is not blogging software - but makes it very easy for you to use it as a
|
||||
blog. You can find many plugins out there implementing typical blogging
|
||||
features like authentication, tagging, pagination and social plugins. See the
|
||||
below Plugins section for details.
|
||||
|
||||
If you want to use Pico as a blogging software, you probably want to do
|
||||
something like the following:
|
||||
|
||||
1. Put all your blog articles in a separate `blog` folder in your `content`
|
||||
directory. All these articles should have a `Date` meta header.
|
||||
2. Create a `blog.md` or `blog/index.md` in your `content` directory. Add
|
||||
`Template: blog-index` to the YAML header of this page. It will later show a
|
||||
list of all your blog articles (see step 3).
|
||||
3. Create the new Twig template `blog-index.twig` (the file name must match the
|
||||
`Template` meta header from Step 2) in your theme directory. This template
|
||||
probably isn't very different from your default `index.twig` (i.e. copy
|
||||
`index.twig`), it will create a list of all your blog articles. Add the
|
||||
following Twig snippet to `blog-index.twig` near `{{ content }}`:
|
||||
```
|
||||
{% for page in pages("blog")|sort_by("time")|reverse if not page.hidden %}
|
||||
<div class="post">
|
||||
<h3><a href="{{ page.url }}">{{ page.title }}</a></h3>
|
||||
<p class="date">{{ page.date_formatted }}</p>
|
||||
<p class="excerpt">{{ page.description }}</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
```
|
||||
|
||||
## Customization
|
||||
|
||||
Pico is highly customizable in two different ways: On the one hand you can
|
||||
change Pico's appearance by using themes, on the other hand you can add new
|
||||
functionality by using plugins. Doing the former includes changing Pico's HTML,
|
||||
CSS and JavaScript, the latter mostly consists of PHP programming.
|
||||
|
||||
This is all Greek to you? Don't worry, you don't have to spend time on these
|
||||
techie talk - it's very easy to use one of the great themes or plugins others
|
||||
developed and released to the public. Please refer to the next sections for
|
||||
details.
|
||||
|
||||
### Themes
|
||||
|
||||
You can create themes for your Pico installation in the `themes` folder. Pico
|
||||
uses [Twig][] for template rendering. You can select your theme by setting the
|
||||
`theme` option in `config/config.yml` to the name of your theme folder.
|
||||
|
||||
[Pico's default theme][PicoTheme] isn't really intended to be used for a
|
||||
productive website, it's rather a starting point for creating your own theme.
|
||||
If the default theme isn't sufficient for you, and you don't want to create
|
||||
your own theme, you can use one of the great themes third-party developers and
|
||||
designers created in the past. As with plugins, you can find themes in
|
||||
[our Wiki][WikiThemes] and on [our website][OfficialThemes].
|
||||
|
||||
All themes must include an `index.twig` file to define the HTML structure of
|
||||
the theme, and a `pico-theme.yml` to set the necessary config parameters. Just
|
||||
refer to Pico's default theme as an example. You can use different templates
|
||||
for different content files by specifying the `Template` meta header. Simply
|
||||
add e.g. `Template: blog` to the YAML header of a content file and Pico will
|
||||
use the `blog.twig` template in your theme folder to display the page.
|
||||
|
||||
Below are the Twig variables that are available to use in themes. Please note
|
||||
that URLs (e.g. `{{ base_url }}`) never include a trailing slash.
|
||||
|
||||
* `{{ site_title }}` - Shortcut to the site title (see `config/config.yml`)
|
||||
* `{{ config }}` - Contains the values you set in `config/config.yml`
|
||||
(e.g. `{{ config.theme }}` becomes `default`)
|
||||
* `{{ base_url }}` - The URL to your Pico site; use Twig's `link` filter to
|
||||
specify internal links (e.g. `{{ "sub/page"|link }}`),
|
||||
this guarantees that your link works whether URL rewriting
|
||||
is enabled or not
|
||||
* `{{ theme_url }}` - The URL to the currently active theme
|
||||
* `{{ assets_url }}` - The URL to Pico's `assets` directory
|
||||
* `{{ themes_url }}` - The URL to Pico's `themes` directory; don't confuse this
|
||||
with `{{ theme_url }}`
|
||||
* `{{ plugins_url }}` - The URL to Pico's `plugins` directory
|
||||
* `{{ version }}` - Pico's current version string (e.g. `%version%`)
|
||||
* `{{ meta }}` - Contains the meta values of the current page
|
||||
* `{{ meta.title }}` - The `Title` YAML header
|
||||
* `{{ meta.description }}` - The `Description` YAML header
|
||||
* `{{ meta.author }}` - The `Author` YAML header
|
||||
* `{{ meta.date }}` - The `Date` YAML header
|
||||
* `{{ meta.date_formatted }}` - The formatted date of the page as specified
|
||||
by the `date_format` parameter in your
|
||||
`config/config.yml`
|
||||
* `{{ meta.time }}` - The [Unix timestamp][UnixTimestamp] derived from the
|
||||
`Date` YAML header
|
||||
* `{{ meta.robots }}` - The `Robots` YAML header
|
||||
* ...
|
||||
* `{{ content }}` - The content of the current page after it has been processed
|
||||
through Markdown
|
||||
* `{{ previous_page }}` - The data of the previous page, relative to
|
||||
`current_page`
|
||||
* `{{ current_page }}` - The data of the current page; refer to the "Pages"
|
||||
section below for details
|
||||
* `{{ next_page }}` - The data of the next page, relative to `current_page`
|
||||
|
||||
To call assets from your theme, use `{{ theme_url }}`. For instance, to include
|
||||
the CSS file `themes/my_theme/example.css`, add
|
||||
`<link rel="stylesheet" href="{{ theme_url }}/example.css" type="text/css" />`
|
||||
to your `index.twig`. This works for arbitrary files in your theme's folder,
|
||||
including images and JavaScript files.
|
||||
|
||||
Please note that Twig escapes HTML in all strings before outputting them. So
|
||||
for example, if you add `headline: My <strong>favorite</strong> color` to the
|
||||
YAML header of a page and output it using `{{ meta.headline }}`, you'll end up
|
||||
seeing `My <strong>favorite</strong> color` - yes, including the markup! To
|
||||
actually get it parsed, you must use `{{ meta.headline|raw }}` (resulting in
|
||||
the expected <code>My **favorite** color</code>). Notable exceptions to this
|
||||
are Pico's `content` variable (e.g. `{{ content }}`), Pico's `content` filter
|
||||
(e.g. `{{ "sub/page"|content }}`), and Pico's `markdown` filter, they all are
|
||||
marked as HTML safe.
|
||||
|
||||
#### Dealing with pages
|
||||
|
||||
There are several ways to access Pico's pages list. You can access the current
|
||||
page's data using the `current_page` variable, or use the `prev_page` and/or
|
||||
`next_page` variables to access the respective previous/next page in Pico's
|
||||
pages list. But more importantly there's the `pages()` function. No matter how
|
||||
you access a page, it will always consist of the following data:
|
||||
|
||||
* `{{ id }}` - The relative path to the content file (unique ID)
|
||||
* `{{ url }}` - The URL to the page
|
||||
* `{{ title }}` - The title of the page (`Title` YAML header)
|
||||
* `{{ description }}` - The description of the page (`Description` YAML header)
|
||||
* `{{ author }}` - The author of the page (`Author` YAML header)
|
||||
* `{{ date }}` - The date of the page (`Date` YAML header)
|
||||
* `{{ date_formatted }}` - The formatted date of the page as specified by the
|
||||
`date_format` parameter in your `config/config.yml`
|
||||
* `{{ time }}` - The [Unix timestamp][UnixTimestamp] derived from the page's
|
||||
date
|
||||
* `{{ raw_content }}` - The raw, not yet parsed contents of the page; use the
|
||||
filter to get the parsed contents of a page by passing
|
||||
its unique ID (e.g. `{{ "sub/page"|content }}`)
|
||||
* `{{ meta }}` - The meta values of the page (see global `{{ meta }}` above)
|
||||
* `{{ prev_page }}` - The data of the respective previous page
|
||||
* `{{ next_page }}` - The data of the respective next page
|
||||
* `{{ tree_node }}` - The page's node in Pico's page tree; check out Pico's
|
||||
[page tree documentation][FeaturesPageTree] for details
|
||||
|
||||
Pico's `pages()` function is the best way to access all of your site's pages.
|
||||
It uses Pico's page tree to easily traverse a subset of Pico's pages list. It
|
||||
allows you to filter pages and to build recursive menus (like dropdowns). By
|
||||
default, `pages()` returns a list of all main pages (e.g. `content/page.md` and
|
||||
`content/sub/index.md`, but not `content/sub/page.md` or `content/index.md`).
|
||||
If you want to return all pages below a specific folder (e.g. `content/blog/`),
|
||||
pass the folder name as first parameter to the function (e.g. `pages("blog")`).
|
||||
Naturally you can also pass variables to the function. For example, to return a
|
||||
list of all child pages of the current page, use `pages(current_page.id)`.
|
||||
Check out the following code snippet:
|
||||
|
||||
<section class="articles">
|
||||
{% for page in pages(current_page.id) if not page.hidden %}
|
||||
<article>
|
||||
<h2><a href="{{ page.url }}">{{ page.title }}</a></h2>
|
||||
{{ page.id|content }}
|
||||
</article>
|
||||
{% endfor %}
|
||||
</section>
|
||||
|
||||
The `pages()` function is very powerful and also allows you to return not just
|
||||
a page's child pages by passing the `depth` and `depthOffset` params. For
|
||||
example, if you pass `pages(depthOffset=-1)`, the list will also include Pico's
|
||||
main index page (i.e. `content/index.md`). This one is commonly used to create
|
||||
a theme's main navigation. If you want to learn more, head over to Pico's
|
||||
complete [`pages()` function documentation][FeaturesPagesFunction].
|
||||
|
||||
If you want to access the data of a particular page, use Pico's `pages`
|
||||
variable. Just take `content/_meta.md` in Pico's sample contents for an
|
||||
example: `content/_meta.md` contains some meta data you might want to use in
|
||||
your theme. If you want to output the page's `tagline` meta value, use
|
||||
`{{ pages["_meta"].meta.logo }}`. Don't ever try to use Pico's `pages` variable
|
||||
as an replacement for Pico's `pages()` function. Its usage looks very similar,
|
||||
it will kinda work and you might even see it being used in old themes, but be
|
||||
warned: It slows down Pico. Always use Pico's `pages()` function when iterating
|
||||
Pico's page list (e.g. `{% for page in pages() %}…{% endfor %}`).
|
||||
|
||||
#### Twig filters and functions
|
||||
|
||||
Additional to [Twig][]'s extensive list of filters, functions and tags, Pico
|
||||
also provides some useful additional filters and functions to make theming
|
||||
even easier.
|
||||
|
||||
* Pass the unique ID of a page to the `link` filter to return the page's URL
|
||||
(e.g. `{{ "sub/page"|link }}` gets `%base_url%?sub/page`).
|
||||
* You can replace URL placeholders (like <code>%base_url%</code>) in
|
||||
arbitrary strings using the `url` filter. This is helpful together with meta
|
||||
variables, e.g. if you add <code>image: %assets_url%/stock.jpg</code>
|
||||
to the YAML header of a page, `{{ meta.image|url }}` will return
|
||||
`%assets_url%/stock.jpg`.
|
||||
* To get the parsed contents of a page, pass its unique ID to the `content`
|
||||
filter (e.g. `{{ "sub/page"|content }}`).
|
||||
* You can parse any Markdown string using the `markdown` filter. For example,
|
||||
you might use Markdown in the `description` meta variable and later parse it
|
||||
in your theme using `{{ meta.description|markdown }}`. You can also pass meta
|
||||
data as parameter to replace <code>%meta.*%</code> placeholders
|
||||
(e.g. `{{ "Written by *%meta.author%*"|markdown(meta) }}` yields "Written by
|
||||
*John Doe*"). However, please note that all contents will be wrapped inside
|
||||
HTML paragraph elements (i.e. `<p>…</p>`). If you want to parse just a single
|
||||
line of Markdown markup, pass the `singleLine` param to the `markdown` filter
|
||||
(e.g. `{{ "This really is a *single* line"|markdown(singleLine=true) }}`).
|
||||
* Arrays can be sorted by one of its keys using the `sort_by` filter
|
||||
(e.g. `{% for page in pages|sort_by([ 'meta', 'nav' ]) %}...{% endfor %}`
|
||||
iterates through all pages, ordered by the `nav` meta header; please note the
|
||||
`[ 'meta', 'nav' ]` part of the example, it instructs Pico to sort by
|
||||
`page.meta.nav`). Items which couldn't be sorted are moved to the bottom of
|
||||
the array; you can specify `bottom` (move items to bottom; default), `top`
|
||||
(move items to top), `keep` (keep original order) or `remove` (remove items)
|
||||
as second parameter to change this behavior.
|
||||
* You can return all values of a given array key using the `map` filter
|
||||
(e.g. `{{ pages|map("title") }}` returns all page titles).
|
||||
* Use the `url_param` and `form_param` Twig functions to access HTTP GET (i.e.
|
||||
a URL's query string like `?some-variable=my-value`) and HTTP POST (i.e. data
|
||||
of a submitted form) parameters. This allows you to implement things like
|
||||
pagination, tags and categories, dynamic pages, and even more - with pure
|
||||
Twig! Simply head over to our [introductory page for accessing HTTP
|
||||
parameters][FeaturesHttpParams] for details.
|
||||
|
||||
### Plugins
|
||||
|
||||
#### Plugins for users
|
||||
|
||||
Officially tested plugins can be found at http://picocms.org/plugins/, but
|
||||
there are many awesome third-party plugins out there! A good start point for
|
||||
discovery is [our Wiki][WikiPlugins].
|
||||
|
||||
Pico makes it very easy for you to add new features to your website using
|
||||
plugins. Just like Pico, you can install plugins either using [Composer][]
|
||||
(e.g. `composer require phrozenbyte/pico-file-prefixes`), or manually by
|
||||
uploading the plugin's file (just for small plugins consisting of a single file,
|
||||
e.g. `PicoFilePrefixes.php`) or directory (e.g. `PicoFilePrefixes`) to your
|
||||
`plugins` directory. We always recommend you to use Composer whenever possible,
|
||||
because it makes updating both Pico and your plugins way easier. Anyway,
|
||||
depending on the plugin you want to install, you may have to go through some
|
||||
more steps (e.g. specifying config variables) to make the plugin work. Thus you
|
||||
should always check out the plugin's docs or `README.md` file to learn the
|
||||
necessary steps.
|
||||
|
||||
Plugins which were written to work with Pico 1.0 and later can be enabled and
|
||||
disabled through your `config/config.yml`. If you want to e.g. disable the
|
||||
`PicoDeprecated` plugin, add the following line to your `config/config.yml`:
|
||||
`PicoDeprecated.enabled: false`. To force the plugin to be enabled, replace
|
||||
`false` by `true`.
|
||||
|
||||
#### Plugins for developers
|
||||
|
||||
You're a plugin developer? We love you guys! You can find tons of information
|
||||
about how to develop plugins at http://picocms.org/development/. If you've
|
||||
developed a plugin before and want to upgrade it to Pico 2.0, refer to the
|
||||
[upgrade section of the docs][PluginUpgrade].
|
||||
|
||||
## Config
|
||||
|
||||
Configuring Pico really is stupidly simple: Just create a `config/config.yml`
|
||||
to override the default Pico settings (and add your own custom settings). Take
|
||||
a look at the `config/config.yml.template` for a brief overview of the
|
||||
available settings and their defaults. To override a setting, simply copy the
|
||||
line from `config/config.yml.template` to `config/config.yml` and set your
|
||||
custom value.
|
||||
|
||||
But we didn't stop there. Rather than having just a single config file, you can
|
||||
use a arbitrary number of config files. Simply create a `.yml` file in Pico's
|
||||
`config` dir and you're good to go. This allows you to add some structure to
|
||||
your config, like a separate config file for your theme (`config/my_theme.yml`).
|
||||
|
||||
Please note that Pico loads config files in a special way you should be aware
|
||||
of. First of all it loads the main config file `config/config.yml`, and then
|
||||
any other `*.yml` file in Pico's `config` dir in alphabetical order. The file
|
||||
order is crucial: Config values which have been set already, cannot be
|
||||
overwritten by a succeeding file. For example, if you set `site_title: Pico` in
|
||||
`config/a.yml` and `site_title: My awesome site!` in `config/b.yml`, your site
|
||||
title will be "Pico".
|
||||
|
||||
Since YAML files are plain text files, users might read your Pico config by
|
||||
navigating to `%base_url%/config/config.yml`. This is no problem in the first
|
||||
place, but might get a problem if you use plugins that require you to store
|
||||
security-relevant data in the config (like credentials). Thus you should
|
||||
*always* make sure to configure your webserver to deny access to Pico's
|
||||
`config` dir. Just refer to the "URL Rewriting" section below. By following the
|
||||
instructions, you will not just enable URL rewriting, but also deny access to
|
||||
Pico's `config` dir.
|
||||
|
||||
### URL Rewriting
|
||||
|
||||
Pico's default URLs (e.g. %base_url%/?sub/page) already are very user-friendly.
|
||||
Additionally, Pico offers you a URL rewrite feature to make URLs even more
|
||||
user-friendly (e.g. %base_url%/sub/page). Below you'll find some basic info
|
||||
about how to configure your webserver proberly to enable URL rewriting.
|
||||
|
||||
#### Apache
|
||||
|
||||
If you're using the Apache web server, URL rewriting probably already is
|
||||
enabled - try it yourself, click on the [second URL](%base_url%/sub/page). If
|
||||
URL rewriting doesn't work (you're getting `404 Not Found` error messages from
|
||||
Apache), please make sure to enable the [`mod_rewrite` module][ModRewrite] and
|
||||
to enable `.htaccess` overrides. You might have to set the
|
||||
[`AllowOverride` directive][AllowOverride] to `AllowOverride All` in your
|
||||
virtual host config file or global `httpd.conf`/`apache.conf`. Assuming
|
||||
rewritten URLs work, but Pico still shows no rewritten URLs, force URL
|
||||
rewriting by setting `rewrite_url: true` in your `config/config.yml`. If you
|
||||
rather get a `500 Internal Server Error` no matter what you do, try removing
|
||||
the `Options` directive from Pico's `.htaccess` file (it's the last line).
|
||||
|
||||
#### Nginx
|
||||
|
||||
If you're using Nginx, you can use the following config to enable URL rewriting
|
||||
(lines `5` to `8`) and denying access to Pico's internal files (lines `1` to
|
||||
`3`). You'll need to adjust the path (`/pico` on lines `1`, `2`, `5` and `7`)
|
||||
to match your installation directory. Additionally, you'll need to enable URL
|
||||
rewriting by setting `rewrite_url: true` in your `config/config.yml`. The Nginx
|
||||
config should provide the *bare minimum* you need for Pico. Nginx is a very
|
||||
extensive subject. If you have any trouble, please read through our
|
||||
[Nginx config docs][NginxConfig].
|
||||
|
||||
```
|
||||
location ~ ^/pico/((config|content|vendor|composer\.(json|lock|phar))(/|$)|(.+/)?\.(?!well-known(/|$))) {
|
||||
try_files /pico/index.php$is_args$args =404;
|
||||
}
|
||||
|
||||
location /pico/ {
|
||||
index index.php;
|
||||
try_files $uri $uri/ /pico/index.php$is_args$args;
|
||||
}
|
||||
```
|
||||
|
||||
#### Lighttpd
|
||||
|
||||
Pico runs smoothly on Lighttpd. You can use the following config to enable URL
|
||||
rewriting (lines `6` to `9`) and denying access to Pico's internal files (lines
|
||||
`1` to `4`). Make sure to adjust the path (`/pico` on lines `2`, `3` and `7`)
|
||||
to match your installation directory, and let Pico know about available URL
|
||||
rewriting by setting `rewrite_url: true` in your `config/config.yml`. The
|
||||
config below should provide the *bare minimum* you need for Pico.
|
||||
|
||||
```
|
||||
url.rewrite-once = (
|
||||
"^/pico/(config|content|vendor|composer\.(json|lock|phar))(/|$)" => "/pico/index.php",
|
||||
"^/pico/(.+/)?\.(?!well-known(/|$))" => "/pico/index.php"
|
||||
)
|
||||
|
||||
url.rewrite-if-not-file = (
|
||||
"^/pico(/|$)" => "/pico/index.php"
|
||||
)
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
For more help have a look at the Pico documentation at http://picocms.org/docs.
|
||||
|
||||
[Pico]: http://picocms.org/
|
||||
[PicoTheme]: https://github.com/picocms/pico-theme
|
||||
[SampleContents]: https://github.com/picocms/Pico/tree/master/content-sample
|
||||
[Markdown]: http://daringfireball.net/projects/markdown/syntax
|
||||
[MarkdownExtra]: https://michelf.ca/projects/php-markdown/extra/
|
||||
[YAML]: https://en.wikipedia.org/wiki/YAML
|
||||
[Twig]: http://twig.sensiolabs.org/documentation
|
||||
[UnixTimestamp]: https://en.wikipedia.org/wiki/Unix_timestamp
|
||||
[Composer]: https://getcomposer.org/
|
||||
[FeaturesHttpParams]: http://picocms.org/in-depth/features/http-params/
|
||||
[FeaturesPageTree]: http://picocms.org/in-depth/features/page-tree/
|
||||
[FeaturesPagesFunction]: http://picocms.org/in-depth/features/pages-function/
|
||||
[WikiThemes]: https://github.com/picocms/Pico/wiki/Pico-Themes
|
||||
[WikiPlugins]: https://github.com/picocms/Pico/wiki/Pico-Plugins
|
||||
[OfficialThemes]: http://picocms.org/themes/
|
||||
[PluginUpgrade]: http://picocms.org/development/#upgrade
|
||||
[ModRewrite]: https://httpd.apache.org/docs/current/mod/mod_rewrite.html
|
||||
[AllowOverride]: https://httpd.apache.org/docs/current/mod/core.html#allowoverride
|
||||
[NginxConfig]: http://picocms.org/in-depth/nginx/
|
@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-License-Identifier: EUPL-1.2
|
||||
* Authors: see /README.md
|
||||
*/
|
||||
|
||||
chdir(dirname(__DIR__,2));
|
||||
if (is_file('vendor/autoload.php')) {
|
||||
include_once('vendor/autoload.php');
|
||||
}
|
||||
|
||||
\SeaCMS\App::run('sites/default');
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
Title: Sub Page Index
|
||||
---
|
||||
|
||||
## This is a Sub Page Index
|
||||
|
||||
This is `index.md` in the `sub` folder.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis. Phasellus id massa eget nisl congue blandit sit amet id ligula. Praesent et nulla eu augue tempus sagittis. Mauris faucibus nibh et nibh cursus in vestibulum sapien egestas. Curabitur ut lectus tortor. Sed ipsum eros, egestas ut eleifend non, elementum vitae eros. Mauris felis diam, pellentesque vel lacinia ac, dictum a nunc. Mauris mattis nunc sed mi sagittis et facilisis tortor volutpat. Etiam tincidunt urna mattis erat placerat placerat ac eu tellus. Ut nec velit id nisl tincidunt vehicula id a metus. Pellentesque erat neque, faucibus id ultricies vel, mattis in ante. Donec lobortis, mauris id congue scelerisque, diam nisl accumsan orci, condimentum porta est magna vel arcu. Curabitur varius ante dui. Vivamus sit amet ante ac diam ullamcorper sodales sed a odio.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis. Phasellus id massa eget nisl congue blandit sit amet id ligula. Praesent et nulla eu augue tempus sagittis. Mauris faucibus nibh et nibh cursus in vestibulum sapien egestas. Curabitur ut lectus tortor. Sed ipsum eros, egestas ut eleifend non, elementum vitae eros. Mauris felis diam, pellentesque vel lacinia ac, dictum a nunc. Mauris mattis nunc sed mi sagittis et facilisis tortor volutpat. Etiam tincidunt urna mattis erat placerat placerat ac eu tellus. Ut nec velit id nisl tincidunt vehicula id a metus. Pellentesque erat neque, faucibus id ultricies vel, mattis in ante. Donec lobortis, mauris id congue scelerisque, diam nisl accumsan orci, condimentum porta est magna vel arcu. Curabitur varius ante dui. Vivamus sit amet ante ac diam ullamcorper sodales sed a odio.
|
@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-License-Identifier: EUPL-1.2
|
||||
* Authors: see /README.md
|
||||
*/
|
||||
chdir(dirname(__DIR__));
|
||||
include 'index.php';
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
Title: Sub Page
|
||||
---
|
||||
|
||||
## This is a Sub Page
|
||||
|
||||
This is `page.md` in the `sub` folder.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis. Phasellus id massa eget nisl congue blandit sit amet id ligula. Praesent et nulla eu augue tempus sagittis. Mauris faucibus nibh et nibh cursus in vestibulum sapien egestas. Curabitur ut lectus tortor. Sed ipsum eros, egestas ut eleifend non, elementum vitae eros. Mauris felis diam, pellentesque vel lacinia ac, dictum a nunc. Mauris mattis nunc sed mi sagittis et facilisis tortor volutpat. Etiam tincidunt urna mattis erat placerat placerat ac eu tellus. Ut nec velit id nisl tincidunt vehicula id a metus. Pellentesque erat neque, faucibus id ultricies vel, mattis in ante. Donec lobortis, mauris id congue scelerisque, diam nisl accumsan orci, condimentum porta est magna vel arcu. Curabitur varius ante dui. Vivamus sit amet ante ac diam ullamcorper sodales sed a odio.
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ultricies tristique nulla et mattis. Phasellus id massa eget nisl congue blandit sit amet id ligula. Praesent et nulla eu augue tempus sagittis. Mauris faucibus nibh et nibh cursus in vestibulum sapien egestas. Curabitur ut lectus tortor. Sed ipsum eros, egestas ut eleifend non, elementum vitae eros. Mauris felis diam, pellentesque vel lacinia ac, dictum a nunc. Mauris mattis nunc sed mi sagittis et facilisis tortor volutpat. Etiam tincidunt urna mattis erat placerat placerat ac eu tellus. Ut nec velit id nisl tincidunt vehicula id a metus. Pellentesque erat neque, faucibus id ultricies vel, mattis in ante. Donec lobortis, mauris id congue scelerisque, diam nisl accumsan orci, condimentum porta est magna vel arcu. Curabitur varius ante dui. Vivamus sit amet ante ac diam ullamcorper sodales sed a odio.
|
@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-License-Identifier: EUPL-1.2
|
||||
* Authors: see /README.md
|
||||
*/
|
||||
chdir(dirname(__DIR__,1));
|
||||
include 'index.php';
|
@ -1,195 +0,0 @@
|
||||
---
|
||||
title: Theme Styling Test
|
||||
hidden: true
|
||||
---
|
||||
|
||||
Theme Styling Test
|
||||
==================
|
||||
|
||||
This is `theme.md` in Pico's content directory. This page doesn't show up in the website's menu due to `hidden: true` in the page's YAML header. The purpose of this page is to aid theme development - below you'll find basically every format that is possible with Markdown. If you develop a theme, you should make sure that all examples below show decent.
|
||||
|
||||
Text
|
||||
----
|
||||
|
||||
**Lorem ipsum dolor sit amet,** consectetur adipisici elit, *sed eiusmod tempor* incidunt ut labore et dolore magna aliqua.[^1] ~~Ut enim ad minim veniam,~~ quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat.[^2] [Quis aute iure reprehenderit][Link] in voluptate velit esse cillum dolore eu fugiat nulla pariatur. `Excepteur` sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
[](%base_url% "Pico Logo") {.image .small .float-right}
|
||||
|
||||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
|
||||
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
|
||||
|
||||
Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
|
||||
Headings
|
||||
--------
|
||||
|
||||
# h1
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
## h2
|
||||
|
||||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
|
||||
### h3
|
||||
|
||||
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
|
||||
|
||||
#### h4
|
||||
|
||||
Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
|
||||
##### h5
|
||||
|
||||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.
|
||||
|
||||
###### h6
|
||||
|
||||
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
|
||||
|
||||
Horizontal line
|
||||
---------------
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
---
|
||||
|
||||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
|
||||
List
|
||||
----
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
* Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
|
||||
1. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
2. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
3. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
|
||||
* Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.
|
||||
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
- Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
1. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.
|
||||
2. At vero eos et accusam et justo duo dolores et ea rebum.
|
||||
1. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet
|
||||
2. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
|
||||
3. At vero eos et accusam et justo duo dolores et ea rebum.
|
||||
|
||||
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.
|
||||
|
||||
Definition list
|
||||
---------------
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
Duis autem
|
||||
: Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
|
||||
|
||||
Lorem ipsum dolor sit amet
|
||||
: Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
|
||||
Ut wisi enim ad minim veniam
|
||||
: Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
: Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
|
||||
|
||||
Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
|
||||
Blockquote
|
||||
----------
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
> Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse
|
||||
> molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero
|
||||
> eros et accumsan et iusto odio dignissim qui blandit praesent luptatum
|
||||
> zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum
|
||||
> dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
|
||||
> tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
>
|
||||
> > Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit
|
||||
> > lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure
|
||||
> > dolor in hendrerit in vulputate velit esse molestie consequat, vel illum
|
||||
> > dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio
|
||||
> > dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te
|
||||
> > feugait nulla facilisi.
|
||||
>
|
||||
> Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet
|
||||
> doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet,
|
||||
> consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut
|
||||
> laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam,
|
||||
> quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex
|
||||
> ea commodo consequat.
|
||||
|
||||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.
|
||||
|
||||
Code block
|
||||
----------
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
```
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>This is a title</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Hello world!</p>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
|
||||
Table
|
||||
-----
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
Lorem ipsum | Duis autem vel eum | Ut wisi enim ad minim veniam
|
||||
----------- | ------------------ | ----------------------------
|
||||
**Duis autem vel eum iriure dolor** in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. | *Lorem ipsum dolor sit amet,* consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. | ~~Ut wisi enim ad minim veniam,~~ quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
[Duis autem vel eum iriure dolor][Link] in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. | `Nam liber tempor` cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. | Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. | | Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.
|
||||
|
||||
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
|
||||
|
||||
Forms
|
||||
-----
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
|
||||
<fieldset>
|
||||
<legend>Legend</legend>
|
||||
<label>Label</label>
|
||||
<input type="checkbox"/>
|
||||
<input type="checkbox" checked="checked"/>
|
||||
<input type="radio"/>
|
||||
<input type="radio" checked="checked"/><br/>
|
||||
<input type="text" value="Lorem ipsum"/>
|
||||
<input type="password" value="Ut enim"/><br/>
|
||||
<input type="submit" value="Submit"/>
|
||||
<input type="reset" value="Reset"/>
|
||||
<input type="button" value="Button (Input)"/>
|
||||
<button>Button</button><br/>
|
||||
<textarea>Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua<br/>.</textarea><br/>
|
||||
<select>
|
||||
<option>Lorem ipsum</option>
|
||||
<option>Ut enim</option>
|
||||
</select><br/>
|
||||
<select multiple="multiple">
|
||||
<option>Lorem ipsum</option>
|
||||
<option selected="selected">Ut enim</option>
|
||||
<option>Quis aute iure</option>
|
||||
<option>Excepteur sint</option>
|
||||
</select>
|
||||
</fieldset>
|
||||
|
||||
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
|
||||
|
||||
*[Lorem ipsum]: Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua.
|
||||
|
||||
[Link]: %base_url% "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat."
|
||||
|
||||
[^1]: Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
|
||||
[^2]: Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-License-Identifier: EUPL-1.2
|
||||
* Authors: see /README.md
|
||||
*/
|
||||
chdir(dirname(__DIR__));
|
||||
include 'index.php';
|
Loading…
x
Reference in New Issue
Block a user