1 Commits

Author SHA1 Message Date
f8910af744 import .drone.yml from master
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-25 16:50:36 +02:00
21 changed files with 546 additions and 828 deletions

101
.drone.yml Normal file
View File

@@ -0,0 +1,101 @@
---
kind: pipeline
name: Opytex Main
type: docker
trigger:
branch:
- master
steps:
- name: Build Opytex base
image: python:3.8-alpine
volumes:
- name: pelican-output
path: /output
commands:
- apk add --no-cache git imagemagick-dev imagemagick
- git submodule init
- git submodule update
- pip install --no-cache-dir -r requirements.txt
- export MAGICK_HOME=/usr
- pelican ./content/ -o /output -s publishconf.py --relative-urls
- ls /output
- name: Push to bucket opytex.org
image: plugins/s3
volumes:
- name: pelican-output
path: /output
settings:
bucket: opytex.org
endpoint: https://storage.opytex.org
access_key:
from_secret: minio_access_key
secret_key:
from_secret: minio_secret_key
source: /output/**/*
target: /
path_style: true
strip_prefix: /output
volumes:
- name: pelican-output
temp: {}
---
kind: pipeline
name: Opytex Year
type: docker
trigger:
branch:
- 2022-2023
- 2021-2022
- 2020-2021
- 2019-2020
- 2018-2019
- 2017-2018
- 2016-2017
- 2015-2016
steps:
- name: Build Opytex ${DRONE_BRANCH}
image: python:3.8-alpine
volumes:
- name: pelican-output
path: /output
commands:
- apk add --no-cache git imagemagick-dev imagemagick
- git submodule init
- git submodule update
- git clone https://git.opytex.org/lafrite/${DRONE_BRANCH}.git content
- pip install --no-cache-dir -r requirements.txt
- apk add --no-cache git imagemagick-dev imagemagick
- pip install --no-cache-dir -r requirements.txt
- export MAGICK_HOME=/usr
- pelican ./content/ -o /output -s publishconf.py --relative-urls
- ls /output
- name: Push to bucket opytex.org
image: plugins/s3-sync:1
volumes:
- name: pelican-output
path: /drone/src/output
settings:
bucket: opytex.org
endpoint: https://storage.opytex.org
access_key:
from_secret: minio_access_key
secret_key:
from_secret: minio_secret_key
source: /output
target: /enseignements/${DRONE_BRANCH}
path_style: true
delete: true
volumes:
- name: pelican-output
temp: {}

View File

@@ -1,107 +0,0 @@
name: Build and Deploy to MinIO
on:
push:
branches:
# - master
- 2025-2026
jobs:
build:
runs-on: ubuntu-latest
outputs:
branch-type: ${{ steps.branch-info.outputs.branch-type }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- name: Set branch type
id: branch-info
run: |
if [ "${{ gitea.ref }}" = "refs/heads/master" ]; then
echo "branch-type=master" >> $GITEA_OUTPUT
else
echo "branch-type=year" >> $GITEA_OUTPUT
fi
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.13"
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y imagemagick libmagickwand-dev ghostscript
- name: Install Python dependencies
run: |
pip install --no-cache-dir -r requirements.txt
- name: Setup content directory for year branches
env:
BRANCH_NAME: ${{ gitea.ref_name }}
if: gitea.ref != 'refs/heads/master'
run: |
echo "Branch name: $BRANCH_NAME"
echo "Testing URL: https://git.opytex.org/Cours/${BRANCH_NAME}.git"
curl -I "https://git.opytex.org/Cours/${BRANCH_NAME}.git" || echo "URL not accessible"
rm -rf content
git clone https://git.opytex.org/Cours/${BRANCH_NAME}.git content
- name: Build site
run: |
export MAGICK_HOME=/usr
pelican ./content/ -o ./output -s publishconf.py --relative-urls
- name: Upload build artifact
uses: actions/upload-artifact@v3
with:
name: site-build
path: output/
retention-days: 1
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: Download build artifact
uses: actions/download-artifact@v3
with:
name: site-build
path: output/
- name: Install MinIO client
run: |
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
- name: Configure MinIO client
env:
MINIO_REPOSITORY: ${{ secrets.MINIO_REPOSITORY }}
MINIO_ACCESS_KEY: ${{ secrets.MINIO_ACCESS_KEY }}
MINIO_SECRET_KEY: ${{ secrets.MINIO_SECRET_KEY }}
run: |
mc alias set storage $MINIO_REPOSITORY $MINIO_ACCESS_KEY $MINIO_SECRET_KEY
- name: Deploy to MinIO - Master branch
env:
MINIO_BUCKET: ${{ secrets.MINIO_BUCKET }}
if: needs.build.outputs.branch-type == 'master'
run: |
mc mirror --overwrite --exclude "enseignements/*" ./output/ storage/$MINIO_BUCKET
- name: Deploy to MinIO - Year branches
env:
MINIO_BUCKET: ${{ secrets.MINIO_BUCKET }}
BRANCH_NAME: ${{ gitea.ref_name }}
if: needs.build.outputs.branch-type == 'year'
run: |
mc mirror --overwrite --remove ./output/ storage/$MINIO_BUCKET/enseignements/${BRANCH_NAME}/

View File

@@ -1,15 +0,0 @@
---
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/psf/black
rev: 22.6.0
hooks:
- id: black

View File

@@ -49,10 +49,8 @@ help:
@echo 'Set the RELATIVE variable to 1 to enable relative urls ' @echo 'Set the RELATIVE variable to 1 to enable relative urls '
@echo ' ' @echo ' '
css: html:
lessc $(BASEDIR)/theme/static/stylesheet/style.less $(BASEDIR)/theme/static/stylesheet/style.min.css -x lessc $(BASEDIR)/theme/static/stylesheet/style.less $(BASEDIR)/theme/static/stylesheet/style.min.css -x
html: css
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
clean: clean:

View File

View File

@@ -3,36 +3,34 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import os import os
import sys import sys
sys.path.append(os.curdir) sys.path.append(os.curdir)
from globalconf import * from globalconf import *
YEAR = "2025-2026" AUTHOR = 'Benjamin Bertrand'
AUTHOR = "Benjamin Bertrand" SITENAME = 'OpyTex'
SITENAME = "OpyTex" SITETITLE = 'OpyTex'
SITETITLE = "OpyTex" SITESUBTITLE = "2021-2022"
SITESUBTITLE = YEAR SITEURL = ''
SITEURL = ""
CC_LICENSE_COMMERCIAL = True CC_LICENSE_COMMERCIAL = True
CC_LICENSE = True CC_LICENSE = True
PATH = "./content" PATH = './content'
TIMEZONE = "Europe/Paris" TIMEZONE = 'Europe/Paris'
DEFAULT_LANG = "fr" DEFAULT_LANG = 'fr'
# Uncomment following line if you want document-relative URLs when developing # Uncomment following line if you want document-relative URLs when developing
#RELATIVE_URLS = True #RELATIVE_URLS = True
# Files places # Files places
IGNORE_FILES = ["venv", ".git", "tools"] IGNORE_FILES = ['venv', '.git', 'tools']
# Pages, articles and static # Pages, articles and static
#PAGE_PATHS = ['pages'] #PAGE_PATHS = ['pages']
ARTICLE_PATHS = ["."] ARTICLE_PATHS = ['.']
STATIC_PATHS = ["."] STATIC_PATHS = ['.']
INDEX_SAVE_AS = "blog_index.html" INDEX_SAVE_AS = 'blog_index.html'
# #
USE_FOLDER_AS_CATEGORY = False USE_FOLDER_AS_CATEGORY = False
@@ -40,19 +38,17 @@ USE_FOLDER_AS_CATEGORY = False
# Plugins # Plugins
PLUGIN_PATHS = ["plugins"] PLUGIN_PATHS = ["plugins"]
PLUGINS = [ PLUGINS = [
"i18n_subsites", 'i18n_subsites',
"always_modified", "always_modified",
"tag_cloud", "tag_cloud",
"pdf-img", 'pdf-img',
"big-button",
"source-link",
] ]
ALWAYS_MODIFIED = True ALWAYS_MODIFIED = True
# Mirror source structure # Mirror source structure
PATH_METADATA = r"(?P<path_no_ext>.*)\..*" PATH_METADATA = '(?P<path_no_ext>.*)\..*'
ARTICLE_URL = ARTICLE_SAVE_AS = PAGE_URL = PAGE_SAVE_AS = "{path_no_ext}.html" ARTICLE_URL = ARTICLE_SAVE_AS = PAGE_URL = PAGE_SAVE_AS = '{path_no_ext}.html'
# USE_FOLDER_AS_CATEGORY = True # USE_FOLDER_AS_CATEGORY = True
# DEFAULT_CATEGORY = "Autre" # DEFAULT_CATEGORY = "Autre"
@@ -60,7 +56,7 @@ ARTICLE_URL = ARTICLE_SAVE_AS = PAGE_URL = PAGE_SAVE_AS = "{path_no_ext}.html"
# Readers # Readers
READERS = {"html": None} READERS = {"html": None}
# Everythings in french # Everythings in french
JINJA_ENVIRONMENT = {"extensions": ["jinja2.ext.i18n"]} JINJA_ENVIRONMENT = {'extensions': ['jinja2.ext.i18n']}
# Default theme language. # Default theme language.
I18N_TEMPLATES_LANG = "en" I18N_TEMPLATES_LANG = "en"
# Your language. # Your language.
@@ -92,7 +88,3 @@ CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None AUTHOR_FEED_RSS = None
# SOURCE LINK
GIT_SOURCE_BASE_URL = f"https://git.opytex.org/Cours/{YEAR}/src/branch/main"
SOURCE_ICON_URL = "https://git.opytex.org/assets/img/logo.svg"

View File

@@ -5,18 +5,16 @@ If "modified" date/time is not defined in article metadata, fall back to the "cr
from pelican import signals from pelican import signals
from pelican.contents import Content, Article from pelican.contents import Content, Article
def add_modified(content): def add_modified(content):
if not isinstance(content, Article): if not isinstance(content, Article):
return return
if not content.settings.get("ALWAYS_MODIFIED", False): if not content.settings.get('ALWAYS_MODIFIED', False):
return return
if hasattr(content, "date") and not hasattr(content, "modified"): if hasattr(content, 'date') and not hasattr(content, 'modified'):
content.modified = content.date content.modified = content.date
content.locale_modified = content.locale_date content.locale_modified = content.locale_date
def register(): def register():
signals.content_object_init.connect(add_modified) signals.content_object_init.connect(add_modified)

View File

@@ -1 +0,0 @@
from .big_button import *

View File

@@ -1,66 +0,0 @@
# -*- coding: utf-8 -*-
"""
big_button tags for reStructuredText
==============================
This plugin allows you to use big_button tags from within reST documents.
.. big_button::
:title: Title
:link: ""
:color: default
Description
"""
from __future__ import unicode_literals
from docutils import nodes
from docutils.parsers.rst import directives, Directive
class BigButton(Directive):
optional_arguments = 0
final_argument_whitespace = True
has_content = True
required_arguments = 0
optional_arguments = 0
final_argument_whitespace = False
option_spec = {
"title": directives.unicode_code,
"link": directives.path,
}
def settings(self):
self.options['content'] = '\n'.join(self.content)
if not self.options.get('title'):
self.options['title'] = 0
if not self.options.get('link'):
self.options['link'] = 0
def html(self):
html = "<div class='button'>\n"
if self.options["link"]:
html += f"<a href={self.options['link']}>"
else:
html += f"<div class='nolink'>"
if self.options["title"]:
html += f"<h3> {self.options['title']}</h3>"
if self.content:
html += "<div class='content'>"
html += f"{self.options['content']}"
html += "</div>"
if self.options["link"]:
html += "</a>"
else:
html += "</div>"
html += "</div>"
return html
def run(self):
self.settings()
return [nodes.raw('', self.html(), format='html')]
def register():
directives.register_directive("big_button", BigButton)

View File

@@ -1,31 +0,0 @@
# Pelican source link plugin
This plugin for [Pelican](https://github.com/getpelican/pelican/) generate two attributes for articles:
- `source_link`: link to the source of the article from your forge
- `path_source_link`: link to the path of the article from your forge
## Installation
Then, add the plugin to your pelicanconf.py file:
```python
PLUGINS = [
# other plugins...
"source_link",
]
```
## Usage
To use the plugin, define a constant named `GIT_SOURCE` in your pelicanconf.py file:
```python
GIT_SOURCE_BASE_URLL = "https://github.com/your-username/your-repo"
```
This constant should contain the base URL of your Git repository where your source code is stored.
Once the constant is defined, the plugin will generate a `source_link` and a `path_source_link` attributes for each article in your Pelican project.
Those links are generated based on the article's source path relative to the root directory of your Pelican project. If the constant PATH is defined in pelicanconf.py, the plugin will use this value as the root directory. Otherwise, it will use the default value of "", which assumes that your Pelican project is located in the same directory as your pelicanconf.py file.

View File

@@ -1 +0,0 @@
from .source_link import *

View File

@@ -1,37 +0,0 @@
from pelican import signals
import logging
import os
logger = logging.getLogger(__name__)
from pelican.settings import DEFAULT_CONFIG
def set_default_settings(settings):
settings.setdefault("GIT_SOURCE_BASE_URL", None)
def init_default_config(pelican):
set_default_settings(DEFAULT_CONFIG)
if pelican:
set_default_settings(pelican.settings)
def source_link_generator(article_generator):
git_source = article_generator.settings.get(
"GIT_SOURCE_BASE_URL", DEFAULT_CONFIG["GIT_SOURCE_BASE_URL"]
)
root_path = article_generator.settings.get("PATH", DEFAULT_CONFIG.get("PATH", ""))
for article in article_generator.articles:
article_path = os.path.abspath(os.path.join(root_path, article.source_path))
relative_path = os.path.relpath(article_path, root_path)
if git_source.endswith("/"):
article.source_link = f"{git_source}{relative_path}"
else:
article.source_link = f"{git_source}/{relative_path}"
article.path_source_link = "/".join(article.source_link.split("/")[:-1])
def register():
signals.initialized.connect(init_default_config)
signals.article_generator_finalized.connect(source_link_generator)

View File

@@ -7,17 +7,15 @@ from __future__ import unicode_literals
import os import os
import sys import sys
sys.path.append(os.curdir) sys.path.append(os.curdir)
from pelicanconf import * from pelicanconf import *
# If your site is available via HTTPS, make sure SITEURL begins with https:// # If your site is available via HTTPS, make sure SITEURL begins with https://
SITEURL = "https://opytex.org/enseignements/2025-2026/" SITEURL = 'https://opytex.org/enseignements/2021-2022/'
RELATIVE_URLS = False RELATIVE_URLS = False
FEED_ALL_ATOM = "feeds/all.atom.xml" FEED_ALL_ATOM = 'feeds/all.atom.xml'
CATEGORY_FEED_ATOM = "feeds/{slug}.atom.xml" CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml'
DELETE_OUTPUT_DIRECTORY = True DELETE_OUTPUT_DIRECTORY = True

View File

@@ -1,23 +1,15 @@
anyio==4.10.0
beautifulsoup4==4.9.1 beautifulsoup4==4.9.1
blinker==1.9.0 blinker==1.4
bs4==0.0.1 bs4==0.0.1
docutils==0.22 docutils==0.16
feedgenerator==2.2.1 feedgenerator==1.9.1
idna==3.10 Jinja2==2.11.2
Jinja2==3.1.6 MarkupSafe==1.1.1
markdown-it-py==4.0.0 pelican==4.2.0
MarkupSafe==3.0.2 Pygments==2.6.1
mdurl==0.1.2 python-dateutil==2.8.1
ordered-set==4.1.0
pelican==4.11.0
Pygments==2.18.0
python-dateutil==2.9.0.post0
pytz==2020.1 pytz==2020.1
rich==14.1.0 six==1.15.0
six==1.17.0
sniffio==1.3.1
soupsieve==2.0.1 soupsieve==2.0.1
Unidecode==1.4.0 Unidecode==1.1.1
Wand==0.6.2 Wand==0.6.2
watchfiles==1.1.0

View File

@@ -71,41 +71,6 @@ hr {
img { img {
max-width: 100%; max-width: 100%;
border: 2px solid @med-light-grey;
box-shadow: 0px 0px 10px @light-grey;
}
.button {
margin: 20px;
border: 3px solid @orange;
width: 250px;
height: 150px;
border-radius: 25px;
display: inline-flex;
vertical-align: top;
padding: 5px 15px;
* {
display: flex;
justify-content: center;
flex-direction: column;
gap: 10px;
}
a {
width:100%;
height:100%;
}
.nolink {
width:100%;
height:100%;
}
h3 {
margin: 0px;
}
}
.button:hover {
background-color: @light-grey;
} }
aside { aside {
@@ -124,8 +89,8 @@ aside {
.title { .title {
text-align: center; text-align: center;
//padding-bottom: 20px; margin-bottom: 50px;
padding-top: 20px; margin-top: 50px;
img { img {
padding: 20px; padding: 20px;
@@ -143,38 +108,16 @@ aside {
font-size: .92em; font-size: .92em;
} }
} }
nav { nav {
.toctree {
display: none;
}
#toggle {
display: none;
}
#toggle:checked + .toctree {
display: block;
}
label {
display: flex;
justify-content: center;
align-items: center;
font-size: 40px;
cursor: pointer;
}
ul.toctree {
display: none;
padding-inline-start: 0px;
h2 {
background-color: @navbar-bg;
margin-bottom: 0;
}
ul { ul {
padding-inline-start: 0px; padding-inline-start: 0px;
display: block; display: block;
li {
padding: 0;
display: block;
} }
ul.toctree {
li {
a { a {
background-color: @navbar-bg;
color: @navbar-text-color; color: @navbar-text-color;
border: none; border: none;
} }
@@ -184,16 +127,14 @@ aside {
background-color: @navbar-toctree-l2-sel-bg; background-color: @navbar-toctree-l2-sel-bg;
color: @navbar-toctree-l2-sel-txt; color: @navbar-toctree-l2-sel-txt;
padding: 10px; padding: 10px;
border-left: solid 5px @orange;
} }
} }
li.current{ li.current{
a { a {
background-color: @navbar-toctree-l1-sel-bg; background-color: @navbar-toctree-l1-sel-bg;
color: @navbar-toctree-l1-sel-txt;
border-top: solid 1px @light-grey;
border-bottom: solid 1px @light-grey; border-bottom: solid 1px @light-grey;
border-left: solid 2px @orange; border-left: solid 2px @grey;
color: @navbar-toctree-l1-sel-txt;
} }
a:hover { a:hover {
color: @orange; color: @orange;
@@ -222,17 +163,84 @@ aside {
} }
} }
} }
.tagcloud { .tagcloud {
display: none; h2 {
background-color: @sidebar-bg;
margin-bottom: 0;
} }
ul {
list-style: none;
padding: 0;
}
ul li {
display: inline-block;
}
li.tag-0 {
font-size: 170%;
}
li.tag-1 {
font-size: 150%;
}
li.tag-2 {
font-size: 120%;
}
li.tag-3 {
font-size: 100%;
}
li.tag-4 {
font-size: 80%;
}
}
} }
main { main {
nav { nav {
display: none; text-align: center;
text-transform: uppercase;
font-size: .72em;
padding: 14px 0 14px 0;
border-bottom: @nav-border-color 1px solid;
} }
nav, .translations {
a {
padding: 0 4px 0 4px;
border-left: @nav-border-color 1px solid;
border-right: @nav-border-color 1px solid;
}
:first-child {
border-left: none;
}
:last-child {
border-right: none;
}
}
.neighbors {
margin: 4% 0% 4% 0%;
height: 20px;
}
.pagination {
margin: 4% 8% 4% 8%;
height: 20px;
}
.social-share {
p {
font-size: .8em;
}
}
article { article {
margin: 0 8% 2% 8%; margin: 0 8% 2% 8%;
@@ -350,33 +358,6 @@ main {
padding-top: 1em; padding-top: 1em;
} }
.source {
text-align: center;
padding-top: 1em;
img {
border: 0;
box-shadow: none;
}
a {
background-color: @tag-bg;
padding: .2em .6em .2em;
font-size: .74em;
line-height: 1;
color: @tag-text-color;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: .25em;
}
a:hover {
background-color: @tag-hover-color;
}
}
.tag-cloud { .tag-cloud {
text-align: center; text-align: center;
a { a {
@@ -538,60 +519,18 @@ ul.social {
left: 0; left: 0;
overflow-y: auto; overflow-y: auto;
.title { div {
padding-bottom: 50px;
padding-top: 50px;
}
nav { nav {
background-color: @navbar-bg;
label, #toggle
{
display: none;
}
ul { ul {
padding-inline-start: 0px; li {
display: block;
}
ul.toctree {
display: block;
}
}
.tagcloud {
display: block;
h2 {
margin-bottom: 0;
background-color: @sidebar-bg;
}
ul {
list-style: none;
padding: 0; padding: 0;
margin: 10px; display: block;
}
}
} }
ul li { ul.social {
display: inline-block; padding-top: 32px;
}
li.tag-0 {
font-size: 170%;
}
li.tag-1 {
font-size: 150%;
}
li.tag-2 {
font-size: 120%;
}
li.tag-3 {
font-size: 100%;
}
li.tag-4 {
font-size: 80%;
} }
} }
} }
@@ -603,31 +542,6 @@ ul.social {
top: 0; top: 0;
right: 2.5%; right: 2.5%;
nav {
display: block;
text-align: center;
text-transform: uppercase;
font-size: .72em;
padding: 14px 0 14px 0;
border-bottom: @nav-border-color 1px solid;
}
nav, .translations {
a {
padding: 0 4px 0 4px;
border-left: @nav-border-color 1px solid;
border-right: @nav-border-color 1px solid;
}
:first-child {
border-left: none;
}
:last-child {
border-right: none;
}
}
article { article {
&.single { &.single {

File diff suppressed because one or more lines are too long

View File

@@ -4,7 +4,6 @@
@white: #ffffff; @white: #ffffff;
@grey: #333333; @grey: #333333;
@light-grey: #eeeeee; @light-grey: #eeeeee;
@med-light-grey: #d9d8d8;
@med-grey: #999999; @med-grey: #999999;
@dark-grey: #242121; @dark-grey: #242121;
@@ -21,7 +20,7 @@
@link-hover-color: @light-orange; @link-hover-color: @light-orange;
// Sidebar (aside) // Sidebar (aside)
@sidebar-bg: @dark-grey; @sidebar-bg: @grey;
@sidebar-text-color: @white; @sidebar-text-color: @white;
@sidebar-link-color: @white; @sidebar-link-color: @white;
@sidebar-link-hover-color: @light-grey; @sidebar-link-hover-color: @light-grey;
@@ -29,10 +28,8 @@
// NavBar // NavBar
@navbar-bg: @dark-grey; @navbar-bg: @dark-grey;
@navbar-text-color: @white; @navbar-text-color: @white;
@navbar-toctree-l1-sel-bg: @dark-grey;
@navbar-toctree-l1-sel-bg: @med-light-grey; @navbar-toctree-l1-sel-txt: @light-grey;
@navbar-toctree-l1-sel-txt: @grey;
@navbar-toctree-l2-bg: @med-grey; @navbar-toctree-l2-bg: @med-grey;
@navbar-toctree-l2-txt: @grey; @navbar-toctree-l2-txt: @grey;
@navbar-toctree-l2-sel-bg: @light-grey; @navbar-toctree-l2-sel-bg: @light-grey;

View File

@@ -48,16 +48,6 @@
mod=article.locale_modified, mod=article.locale_modified,
category='<a href="%s/%s">%s</a>'|format(SITEURL, article.category.url, article.category)|safe) }} category='<a href="%s/%s">%s</a>'|format(SITEURL, article.category.url, article.category)|safe) }}
</div> </div>
{% if 'GIT_SOURCE_BASE_URL' %}
<div class="source">
<a href="{{ article.path_source_link}}">
<img src={{ SOURCE_ICON_URL }} alt="source icon" ario>
source et documents
</a>
</div>
{% endif %}
<div class="tag-cloud"> <div class="tag-cloud">
<p> <p>
{% if 'post_stats' in PLUGINS %} {% if 'post_stats' in PLUGINS %}

View File

@@ -86,9 +86,6 @@
</div> </div>
<nav> <nav>
<label for="toggle"></label>
<input type="checkbox" id="toggle">
{% if TOCTREE %} {% if TOCTREE %}
{% include "partial/toctree.html" %} {% include "partial/toctree.html" %}
{% endif %} {% endif %}

View File

@@ -1,5 +1,4 @@
<ul class="toctree"> <ul class="toctree">
<h2>Niveaux</h2>
{% for cat, articles in categories|sort %} {% for cat, articles in categories|sort %}
{% if (article and article.category == cat) or category == cat %} {% if (article and article.category == cat) or category == cat %}
<li class="toctree-l1 current"><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat | upper }}</a> <li class="toctree-l1 current"><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat | upper }}</a>