premier commit

This commit is contained in:
tierce 2021-08-22 20:40:02 +02:00
commit d3a81473f7
28 changed files with 911 additions and 0 deletions

89
Makefile Normal file
View File

@ -0,0 +1,89 @@
PY?=python3
PELICAN?=pelican
PELICANOPTS=
BASEDIR=$(CURDIR)
INPUTDIR=$(BASEDIR)/content
OUTPUTDIR=$(BASEDIR)/output
CONFFILE=$(BASEDIR)/pelicanconf.py
PUBLISHCONF=$(BASEDIR)/publishconf.py
SSH_HOST=gnuragist.es
SSH_PORT=22
SSH_USER=admin
SSH_TARGET_DIR=/var/www/my_webapp/www
DEBUG ?= 0
ifeq ($(DEBUG), 1)
PELICANOPTS += -D
endif
RELATIVE ?= 0
ifeq ($(RELATIVE), 1)
PELICANOPTS += --relative-urls
endif
SERVER ?= "0.0.0.0"
PORT ?= 0
ifneq ($(PORT), 0)
PELICANOPTS += -p $(PORT)
endif
help:
@echo 'Makefile for a pelican Web site '
@echo ' '
@echo 'Usage: '
@echo ' make localhtml (re)generate the web site for local'
@echo ' make html (re)generate the web site '
@echo ' make clean remove the generated files '
@echo ' make regenerate regenerate files upon modification '
@echo ' make publish generate using production settings '
@echo ' make serve [PORT=8000] serve site at http://localhost:8000'
@echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
@echo ' make devserver [PORT=8000] serve and regenerate together '
@echo ' make devserver-global regenerate and serve on 0.0.0.0 '
@echo ' make ssh_upload upload the web site via SSH '
@echo ' make rsync_upload upload the web site via rsync+ssh '
@echo ' '
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
@echo 'Set the RELATIVE variable to 1 to enable relative urls '
@echo ' '
localhtml:
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) --relative-urls
html:
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
clean:
[ ! -d "$(OUTPUTDIR)" ] || rm -rf "$(OUTPUTDIR)"
regenerate:
"$(PELICAN)" -r "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
serve:
"$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
serve-global:
"$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) -b $(SERVER)
devserver:
"$(PELICAN)" -lr "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
devserver-global:
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -b 0.0.0.0
publish:
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(PUBLISHCONF)" $(PELICANOPTS)
ssh_upload: publish
scp -P $(SSH_PORT) -r "$(OUTPUTDIR)"/* "$(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)"
rsync_upload: publish
rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --include tags --cvs-exclude --delete "$(OUTPUTDIR)"/ "$(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)"
.PHONY: html help clean regenerate serve serve-global devserver publish ssh_upload rsync_upload

62
README.md Normal file
View File

@ -0,0 +1,62 @@
# Gnuragistes
## Ressources
* [ForkAwsome cheatsheet](https://forkaweso.me/Fork-Awesome/cheatsheet/)
* [Cool and responsive buttons](https://fdossena.com/?p=html5cool/buttons/i.frag)
* [Jinja](https://jinja.palletsprojects.com/en/3.0.x/templates/)
* [Pelican - templates and variables](https://docs.getpelican.com/en/latest/themes.html#templates-and-variables)
## Contenu
Sur le site …
- une page d'acceuil
- des articles
- des auteurs - qui sont potentiellement les gnuragistes
- des mots clés
- de quoi nous contacter
## Menu
Sous forme de boutons, sans sous-menu, qui se mettent les uns à côté des autres.
### Links (dans le pelicanconf.py)
Les liens « statiques » sont définit dans `pelicanconf.py`.
### Catégories (comme Faimaison)
À découvrir : les mécanismes de Pelican.
## Zone de titre(s)
- Un logo pour retourner sur la home page
- Un titre
- Un sous-titre
## Contenu
## Fork-Awsome
Puisque c'est un repo git qui se trouve dans `template/gnuragistes/static/css/Fork-Awesome`.
Pour éviter les problèmes, dans un premier temps le `.gitignore` contient ce chemin et le `pelicanconf.py` ignore aussi ce dossier grâce à `IGNORE_FILES = ['.git']`.
Il faudrait éventuellement approfondir le sujet en utilisant la notion de submodule ou subtree.
Voir : https://delicious-insights.com/fr/articles/git-submodules/
### Base
Se retrouve sur toutes les pages.
### Page d'acceuil
C'est pricipallement le fichier `template/gnuragistes/index.html` dont le contenu est pricipalement fait dans le template, mis à part quelques variables.
### Articles
C'est

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 25 KiB

BIN
content/images/home/map.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

10
content/pages/contact.md Normal file
View File

@ -0,0 +1,10 @@
---
Title: Contact
ShortTitle: Contact
Date: 2019-10-10
Modified: 2021-07-04
---
# Contact
help@guragist.es

34
content/pages/gnu.md Normal file
View File

@ -0,0 +1,34 @@
---
pagename: GNU is Not Unix
title: GNU
subtitle: GNU N'est pas Unix
description: Mais c'est quoi un <a href="https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27exploitation" target="_blank">système d'exploitation</a> ?
date: 2021-07-01
modified: 2021-07-04
---
<img src="/images/gnu/heckert_gnu_pink.svg" class="right" alt="Le dessin du gnou du projet GNU">
La [Tête de GNU](https://www.gnu.org/graphics/agnuhead.fr.html)<br />
une image avec une longue histoire,<br />
dessinée par Étienne Suvasa.
Depuis 1996,<br />
elle accompagne la horde,<br />
celles des gens qui font du libre,<br />
une aventure, une passion,<br />
un projet de société,<br />
des logiciels émancipateurs,<br />
du code source aux utilisateur·ice·s.
Les gnuragistes la voient en rose,<br />
pour poursuivre avec vous,<br />
son chemin, sa route, sa destinée,<br />
vers une informatique plus juste et équitable.
<hr>
GNU est un [sigle récursif](https://fr.wikipedia.org/wiki/Sigle_r%C3%A9cursif) qui veut dire <i>GNU is Not Unix</i> et c'est un projet né en 1983.
En 2021, nous sommes heureux·ses et fière d'articuler notre activité « digitale » autour des valeurs qui accompagnent ce projet.
N'hésitez pas à flâner sur les pages Wikipédia du [projet GNU](https://fr.wikipedia.org/wiki/Projet_GNU) pour explorer une autre façon de faire de l'informatique.
Nous en parlons volontiers avec vous et si vous avez besoin de nous, vous trouverez notre adresse mail et notre téléphone sur [la page d'accueil](.).

54
content/pages/home.md Normal file
View File

@ -0,0 +1,54 @@
---
pagename: Home
title: GNUragistes !
subtitle: Support Gnu/Linux - Réanimistes d'ordinateurs libres
description: help@gnuragist.es - 0466/47.25.33
date: 2019-10-10
modified: 2021-07-04
save_as: index.html
---
<img src="/images/home/zebras-sans-G-blanc.png" class="right" alt="Logo en tête de zèbre"></a>
gnuragistes,coucou<br />
les gentil·le·s desrangé·e·s,<br />
enragé·e·s du logiciel Libre,<br />
dédient quelques moments<br />
<br />
à vous pointer<br />
sur les dangers<br />
des mafias gafam,<br />
<br />
à prendre des résolutions,<br />
à chercher des vraies solutions,<br />
en plus, sans trop dépenser.<br />
<br />
juste de questionner,<br />
pourquoi autant de fortuné·e·s,<br />
sollicitent avec passion,<br />
votre temps et vos données.<br />
<br />
<hr>
Un soucis, des questions, besoin daide avec votre [GNU](/gnu.html)/[Linux](/linux.html) ? Nous pouvons vous aider vous ou votre association. Mises à jour, sauvegardes, imprimantes, carte didentité électronique, installation de votre serveur personnel ou associatif sur base de [Yunohost](https://yunohost.org) (Mail, [Nextcloud](https://fr.wikipedia.org/wiki/Nextcloud), Agendas, Contacts, [Dokuwiki](https://fr.wikipedia.org/wiki/DokuWiki)…)
<hr>
<a href="https://www.openstreetmap.org/way/228420463" target="_blank">
<img src="/images/home/map.png" class="right" alt="Carte de Schaerbeek">
</a>
Au [Hacklab](https://hacklab.brussels/)<br />
Avenue Princesse Elisabeth 46 <br />
1030 Schaerbeek
<p class="white">
Devenez membres à prix libre.<br />
Versement mensuel souhaité.<br />
IBAN: BE63 5230 8118 2308<br />
BIC: TRIOBEBB
</p>
En semaine, la journée, le soir ou le week-end. et si vous avez envie de lire un truc, pourquoi pas la [biographie de RMS](/fichiers/Richard Stallman et la révolution du logiciel libre.pdf) ?
C'est maGNUfique!

38
content/pages/linux.md Normal file
View File

@ -0,0 +1,38 @@
---
pagename: Linux
title: Linux
subtitle: un noyau libre pour des logiciels libres
description: Mais c'est quoi un <a href="https://fr.wikipedia.org/wiki/Noyau_de_syst%C3%A8me_d%27exploitation" target="_blank">noyau</a> ?
date: 2021-07-01
modified: 2021-07-04
---
<img src="/images/linux/ewing-tux.png" class="right" alt="TUX, la mascote de linux, mais en rose"></a>
La mascotte de Linux,<br />
c'est [Tux](https://fr.wikipedia.org/wiki/Tux),<br />
un manchot mignon,<br />
pour représenter un noyau costaud.</p>
[Linux](https://fr.wikipedia.org/wiki/Noyau_Linux) est dans vos ordiphones,<br />
dans vos boxes Internet,<br />
dans vos ordinateurs libres,<br />
dans les serveurs du monde entier,<br />
et même jusque Mars, dans le drône Ingenuity.
Un noyau de code,<br />
qui fait germer des envies de liberté,<br />
au cœur de tant de systèmes informatiques,<br />
trop souvent ignoré, il vous invite à explorer.
Les [gnuragistes](.) le voient en rose,<br />
pour poursuivre avec vous,<br />
son chemin, sa route, sa destinée,<br />
vers une informatique plus juste et équitable.
<hr>
Des milliers de contributeurs, trop peu de contributrices qui jonglent aves du code pour rendre possible le fonctionnement du matériel.
Parce que oui, le rôle principal d'un noyau c'est de piloter l'électronique que vous avez entre le mains.
[Depuis 1991](https://en.wikipedia.org/wiki/Linux_kernel_version_history), des individus, des constructeurs, des fondeurs, des organisations allant de l'entreprise capitaliste à l'association sans but lucratif, en passant par les fondations, [pondent des lignes de codes](https://git.kernel.org/).
Pour eux, pour elles, pour nous, pour vous, sans se soucier de ce que vous en ferez. Il faut juste que ça fonctionne et que ce soit fiable.

View File

@ -0,0 +1,10 @@
---
Title: Un projet collectif
ShortTitle: Collectif
Date: 2021-07-01
Modified: 2021-07-04
---
C'est ensemble, ou ce n'est pas.
Sieste, recherche et développement.

View File

@ -0,0 +1,6 @@
Title: Le projet GNUragistes
ShortTitle: Projet
Date: 2021-07-01
Modified: 2021-07-04
Le plus chouette projet de tout les temps !

58
pelicanconf.py Normal file
View File

@ -0,0 +1,58 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
TOOLBOX = False # Displays some variables from toolbox.html
AUTHOR = 'Gnuragistes'
SITENAME = 'Gnuragist.es'
SITEURL = 'https://gnuragist.es'
PATH = 'content'
STATIC_PATHS = ['images','fichiers']
PAGE_PATHS = ['pages']
TIMEZONE = 'Europe/Brussels'
DEFAULT_LANG = u'fr'
# Les fichiers produits sont mis dans des dossiers
ARTICLE_URL = '/{category}/{slug}.html'
ARTICLE_SAVE_AS = '{category}/{slug}.html'
PAGE_SAVE_AS = '{slug}.html'
# Feed generation is usually not desired when developing
FEED_ALL_ATOM = None
CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None
# Liens statiques utilisés dans le menu.
# ('texte affiché','url','icone ForkAwsome')
# Pour les icones ForkAwsome voir https://forkaweso.me/Fork-Awesome/cheatsheet/
MENUITEMS = (('Home', './', 'fa-home'),
('Wiki', 'https://wiki.gnuragist.es', 'fa-book'),
('Git Sources', 'https://git.gnuragist.es/git/wildebeest/website','fa-gitea'),
('Webmail', 'https://mamifere.gnuragist.es','fa-envelope'),
('Pads', 'https://doc.gnuragist.es','fa-file-text'),
('Forum', 'https://ps.zoethical.org/c/ps/gnuragistes/130','fa-activitypub'),)
# Social widget
SOCIAL = (('You can add links in your config file', '#'),
('Another social link', '#'),)
DEFAULT_PAGINATION = True
THEME = 'template/gnuragistes'
# Exclure des éléments inutiles… mais ça fonctionne pas ??
#STATIC_EXCLUDES = ['template/gnuragistes/static/css/Fork-Awesome/.github', 'template/gnuragistes/static/css/Fork-Awesome/*']
# Uncomment following line if you want document-relative URLs when developing
#RELATIVE_URLS = True
DISPLAY_PAGES_ON_MENU = True
# Pour ignorer le contenu de template/gnuragistes/static/css/Fork-Awesome/.git et tout ce qui est .git
IGNORE_FILES = ['.git']

24
publishconf.py Normal file
View File

@ -0,0 +1,24 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
# This file is only used if you use `make publish` or
# explicitly specify it as your config file.
import os
import sys
sys.path.append(os.curdir)
from pelicanconf import *
# If your site is available via HTTPS, make sure SITEURL begins with https://
SITEURL = 'https://gnuragist.es'
RELATIVE_URLS = False
FEED_ALL_ATOM = 'feeds/all.atom.xml'
CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml'
DELETE_OUTPUT_DIRECTORY = True
# Following items are often useful when publishing
#DISQUS_SITENAME = ""
#GOOGLE_ANALYTICS = ""

131
tasks.py Normal file
View File

@ -0,0 +1,131 @@
# -*- coding: utf-8 -*-
import os
import shlex
import shutil
import sys
import datetime
from invoke import task
from invoke.main import program
from invoke.util import cd
from pelican import main as pelican_main
from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
from pelican.settings import DEFAULT_CONFIG, get_settings_from_file
SETTINGS_FILE_BASE = 'pelicanconf.py'
SETTINGS = {}
SETTINGS.update(DEFAULT_CONFIG)
LOCAL_SETTINGS = get_settings_from_file(SETTINGS_FILE_BASE)
SETTINGS.update(LOCAL_SETTINGS)
CONFIG = {
'settings_base': SETTINGS_FILE_BASE,
'settings_publish': 'publishconf.py',
# Output path. Can be absolute or relative to tasks.py. Default: 'output'
'deploy_path': SETTINGS['OUTPUT_PATH'],
# Remote server configuration
'ssh_user': 'admin',
'ssh_host': 'gnuragist.es',
'ssh_port': '22',
'ssh_path': '/var/www/my_webapp/www',
# Host and port for `serve`
'host': 'localhost',
'port': 8000,
}
@task
def clean(c):
"""Remove generated files"""
if os.path.isdir(CONFIG['deploy_path']):
shutil.rmtree(CONFIG['deploy_path'])
os.makedirs(CONFIG['deploy_path'])
@task
def build(c):
"""Build local version of site"""
pelican_run('-s {settings_base}'.format(**CONFIG))
@task
def rebuild(c):
"""`build` with the delete switch"""
pelican_run('-d -s {settings_base}'.format(**CONFIG))
@task
def regenerate(c):
"""Automatically regenerate site upon file modification"""
pelican_run('-r -s {settings_base}'.format(**CONFIG))
@task
def serve(c):
"""Serve site at http://$HOST:$PORT/ (default is localhost:8000)"""
class AddressReuseTCPServer(RootedHTTPServer):
allow_reuse_address = True
server = AddressReuseTCPServer(
CONFIG['deploy_path'],
(CONFIG['host'], CONFIG['port']),
ComplexHTTPRequestHandler)
sys.stderr.write('Serving at {host}:{port} ...\n'.format(**CONFIG))
server.serve_forever()
@task
def reserve(c):
"""`build`, then `serve`"""
build(c)
serve(c)
@task
def preview(c):
"""Build production version of site"""
pelican_run('-s {settings_publish}'.format(**CONFIG))
@task
def livereload(c):
"""Automatically reload browser tab upon file modification."""
from livereload import Server
def cached_build():
cmd = '-s {settings_base} -e CACHE_CONTENT=True LOAD_CONTENT_CACHE=True'
pelican_run(cmd.format(**CONFIG))
cached_build()
server = Server()
theme_path = SETTINGS['THEME']
watched_globs = [
CONFIG['settings_base'],
'{}/templates/**/*.html'.format(theme_path),
]
content_file_extensions = ['.md', '.rst']
for extension in content_file_extensions:
content_glob = '{0}/**/*{1}'.format(SETTINGS['PATH'], extension)
watched_globs.append(content_glob)
static_file_extensions = ['.css', '.js']
for extension in static_file_extensions:
static_file_glob = '{0}/static/**/*{1}'.format(theme_path, extension)
watched_globs.append(static_file_glob)
for glob in watched_globs:
server.watch(glob, cached_build)
server.serve(host=CONFIG['host'], port=CONFIG['port'], root=CONFIG['deploy_path'])
@task
def publish(c):
"""Publish to production via rsync"""
pelican_run('-s {settings_publish}'.format(**CONFIG))
c.run(
'rsync --delete --exclude ".DS_Store" -pthrvz -c '
'-e "ssh -p {ssh_port}" '
'{} {ssh_user}@{ssh_host}:{ssh_path}'.format(
CONFIG['deploy_path'].rstrip('/') + '/',
**CONFIG))
def pelican_run(cmd):
cmd += ' ' + program.core.remainder # allows to pass-through args to pelican
pelican_main(shlex.split(cmd))

@ -0,0 +1 @@
Subproject commit 540fa1467f6381b6212635d9e7cc222cd1faa280

View File

@ -0,0 +1,82 @@
/* classes */
.toolbox
{
color:white;
background-color: grey;
position: fixed;
overflow: hidden;
z-index: 2400;
opacity: 0.70;
right: 0px;
top: 0px !important;
-webkit-transition: all 0.5s ease-in-out;
-moz-transition: all 0.5s ease-in-out;
-ms-transition: all 0.5s ease-in-out;
-o-transition: all 0.5s ease-in-out;
transition: all 0.5s ease-in-out;
padding: 2em;
}
.hide
{
visibility: hidden;
}
.right
{
float: right;
}
.left
{
float: left;
}
.white
{
color: white;
}
.footer
{
color:magenta;
}
a.button
{
display:inline-block;
padding:0.35em 1.2em;
/* border:0.1em solid magenta; */
margin:0 0.3em 0.3em 0;
border-radius:0.12em;
box-sizing: border-box;
text-decoration:none;
color: lightgreen;
text-align:center;
transition: all 0.2s;
}
a.button > i
{
padding-right: 0.5em;
color: yellow;
}
a.button:hover, a:hover
{
color:#0F0F0F;
background-color: lightgreen;
}
a.button:hover > i
{
padding-right: 0.5em;
color: #0F0F0F;
}
a.selected
{
/* border:0.1em solid lightgreen; */
}

View File

@ -0,0 +1,129 @@
/* includes */
@import "classes.css";
@import "Fork-Awesome/css/fork-awesome.min.css";
/* fonts */
@font-face
{
font-family: "OpenDyslexic";
src: url("../fonts/OpenDyslexic-Regular.eot");
src: url("../fonts/OpenDyslexic-Regular.woff") format("woff"),
url("../fonts/OpenDyslexic-Regular.ttf") format("truetype"),
url("../fonts/OpenDyslexic-Regular.svg") format("svg");
font-weight: normal;
font-style: normal;
}
/* common html tags */
body
{
background-color: #0F0F0F;
font-family: OpenDyslexic;
color: darkturquoise;
max-width: 85%;
margin-left: auto;
margin-right: auto;
margin-top: 1rem;
line-height: 3rem;
/*background: linear-gradient(to left top, #0F0F0F, #000) fixed;*/
}
ul
{
display: flex;
justify-content: space-around;
align-items: center;
min-height: 8vh;
font-weight: bold;
font-size: 2rem;
list-style: none;
padding-left: 1rem;
}
li a,
a
{
text-decoration: none;
color: lightgreen;
}
h1
{
font-size: 4rem;
color: white;
}
h2
{
font-size: 3rem;
color: white;
}
h3
{
font-size: 2rem;
color: white;
}
hr
{
border: 0.3rem solid grey;
border-radius: 0.5rem;
}
img
{
max-width: 50%;
height: auto;
}
p
{
font-size: 2rem;
/*text-transform: uppercase;*/
font-weight: bold;
}
/* for smaller screens transformations */
@media (max-width: 1024px)
{
/* common html tags */
body
{
line-height: 1.8;
}
div
{
font-size: 1.6rem;
}
h1
{
font-size: 4rem;
}
h2
{
font-size: 3rem;
}
h3
{
font-size: 2rem;
}
img
{
max-width: 90%;
height: auto;
}
p
{
font-size: 2rem;
text-transform: uppercase;
font-weight: bold;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

@ -0,0 +1,49 @@
<!DOCTYPE html>
<html lang="fr" dir="ltr">
<head>
<meta charset="utf-8">
<title>{% block pagename %}{%endblock%} | {{SITENAME}}</title>
<meta name="keywords" content="support gnu/linux, bruxelles, logiciels libres, collectif">
<meta name="description" content="Gnuragistes, support GNU/Linux et collectivité" />
<meta name="robots" content="archive,index,follow" />
<link href="./theme/css/gnuragistes.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="./theme/images/zebras-favicon.png" />
</head>
<body>
<div id=menu>
{% for text, link, icon in MENUITEMS %}
<a href="{{ link }}" class="button {% if text.lower() == page_name %}selected{% endif %}">
{% if icon != "none" %}<i class="fa {{icon}}"></i>{% endif %}
{{ text }}</a>
{% endfor %}
{% for menu_page in PAGES|sort(attribute='order')|rejectattr('hiddeninmenu') %}
<a href="/{{ menu_page.url }}" class="button {% if page and page.shorttitle == menu_page.shorttitle %}selected{% endif %}">
{{ menu_page.shorttitle }}</a>
{% endfor %}
</div>
<h1>{% block title %}{% endblock %}</h1>
<h2>{% block subtitle %}{% endblock %}</h2>
<hr>
<h3>{% block description%}{% endblock %}</h3>
<div id="main">
{% block content %}
{% endblock %}
</div>
<div id="footer" class="footer">
Copyleft 2021, les Gnuragistes.
</div>
{% if TOOLBOX %}
{% extends "toolbox.html" %}
{% endif %}
</body>
</html>

View File

@ -0,0 +1,9 @@
{% extends "base.html" %}
{% block pagename %}{{ page.pagename }}{% endblock %}
{% block title %}{{ page.title }}{% endblock %}
{% block subtitle %}{{ page.subtitle }}{% endblock %}
{% block description %}{{ page.description }}{% endblock %}
{% block date %}{{ page.date | strftime('%a, %d %B %Y') }}{% endblock %}
{% block author %}{{ page.author }}{% endblock %}
{% block content %}{{ page.content }}{% endblock %}

View File

@ -0,0 +1,22 @@
{% extends "base.html" %}
{% block title %}{{ article.shorttitle }}{% endblock %}
{% block content %}
<div class="node node-full node-page node-page--services">
<h1>{{ article.title }}</h1>
{{ article.content }}
<footer>
<p class="services-common">
Afin de bénéficier de ce service, il est nécessaire d'être <a href="/ressources/adherer.html">membre de l'association</a>,<br />
puis de <a href="/pages/contact.html">contacter le bureau</a> pour demander l'abonnement à un service.
</p>
<p class="services-return">
<a href="/pages/services.html">
<i class="fa fa-caret-left"></i>&nbsp;Tous les services proposés par FAImaison
</a>
</p>
</footer>
</div>
{% endblock %}

View File

@ -0,0 +1,6 @@
<div id="toolbox" class="toolbox">
<b>Toolbox…</b><br />
page_name = {{ page_name }}<br />
output_file = {{ output_file }}<br />
slug = {{ slug }}<br />
</div>