MkDocs plugin for automatic Creative Commons license management
Project description
MkDocs Creative Commons License Plugin
Un plugin MkDocs qui ajoute automatiquement les icônes et liens de licence Creative Commons basés sur la propriété license dans les métadonnées des pages.
Fonctionnalités
- ✅ Lecture automatique de la propriété
licensedans l'en-tête YAML - ✅ Génération automatique des icônes Creative Commons SVG
- ✅ Création de liens vers les pages officielles Creative Commons
- ✅ Support de toutes les licences CC 4.0
- ✅ Affichage sous forme de badge élégant en haut à droite des pages
- ✅ Configuration flexible
- ✅ Intégration facile avec les templates Jinja2
- ✅ Compatible avec le thème Material for MkDocs
Installation
Installation depuis les sources
git clone <repository-url>
cd mkdocs_cc_license_plugin
pip install -e .
Installation depuis PyPI (quand publié)
pip install mkdocs-cc-license-plugin
Configuration rapide
- Ajoutez le plugin à votre
mkdocs.yml - Créez un dossier
theme_overrides(optionnel) - Ajoutez
license: "by-sa"dans vos pages markdown - Lancez
mkdocs servepour voir le résultat
Configuration
Ajoutez le plugin à votre fichier mkdocs.yml :
plugins:
- cc-license:
default_license: "by-sa" # Licence par défaut si non spécifiée
language: "fr" # Langue pour les liens CC (fr, en, etc.)
target_blank: true # Ouvrir les liens dans un nouvel onglet
show_icons: true # Afficher les icônes SVG
# Thème (pour Material avec template personnalisé)
theme:
name: material
custom_dir: theme_overrides # Optionnel pour personnaliser l'affichage
Utilisation
Dans les métadonnées de page
---
title: Mon exercice
author: John Doe
license: "by-nc-sa" # Attribution-NonCommercial-ShareAlike
tags:
- python
- exercice
---
Dans les templates
Le plugin expose automatiquement des fonctions Jinja2 pour les templates :
<!-- Affichage complet avec icônes et lien -->
{{ cc_license(page.meta) }}
<!-- Ou la fonction complète -->
{{ build_license_html(page.meta) }}
<!-- Pour obtenir juste les informations de licence -->
{% set license_info = get_license_info(page.meta) %}
<p>Licence: {{ license_info.full_name }}</p>
<p>URL: {{ license_info.url }}</p>
Template personnalisé (recommandé)
Pour un affichage optimal, créez un template personnalisé theme_overrides/main.html :
{% extends "base.html" %}
{% block content %}
<article class="md-content__inner md-typeset">
<!-- Badge de licence en haut à droite -->
{% if page.meta.license %}
<div class="cc-license-container" style="float: right; margin-left: 1em; margin-bottom: 1em; padding: 0.8em; background: linear-gradient(135deg, #f8f9fa, #e9ecef); border: 1px solid #dee2e6; border-radius: 15px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
{{ cc_license(page.meta) | safe }}
</div>
{% endif %}
{{ page.content }}
</article>
{% endblock %}
Rendu visuel
Le plugin affiche les licences Creative Commons sous forme de badge élégant en haut à droite de chaque page contenant une propriété license. Le badge inclut :
- 🎨 Design moderne : Dégradé de couleur et ombres subtiles
- 🔗 Icônes SVG officielles : Directement depuis les serveurs Creative Commons
- 🎯 Positionnement intelligent : En haut à droite, n'interfère pas avec le contenu
- 📱 Responsive : S'adapte à tous les écrans
- 🖱️ Interactif : Lien cliquable vers la page officielle de la licence
Exemple d'affichage
Pour une page avec license: "by-nc-sa", vous verrez apparaître un badge contenant les icônes CC, BY, NC et SA qui pointe vers https://creativecommons.org/licenses/by-nc-sa/4.0/deed.fr.
Licences supportées
by- Attributionby-sa- Attribution-ShareAlikeby-nc- Attribution-NonCommercialby-nc-sa- Attribution-NonCommercial-ShareAlikeby-nd- Attribution-NoDerivativesby-nc-nd- Attribution-NonCommercial-NoDerivativescc0- CC0 Public Domain Dedication
Exemple de sortie HTML
Pour license: "by-nc-sa", le plugin génère :
<a class="cc-license-link" href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.fr" target="_blank" rel="license noopener noreferrer">
<img src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1" alt="Creative Commons" style="height:22px!important;margin-left:3px;vertical-align:text-bottom;">
<img src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1" alt="Attribution" style="height:22px!important;margin-left:3px;vertical-align:text-bottom;">
<img src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1" alt="NonCommercial" style="height:22px!important;margin-left:3px;vertical-align:text-bottom;">
<img src="https://mirrors.creativecommons.org/presskit/icons/sa.svg?ref=chooser-v1" alt="ShareAlike" style="height:22px!important;margin-left:3px;vertical-align:text-bottom;">
</a>
Configuration avancée
Options disponibles
| Option | Type | Défaut | Description |
|---|---|---|---|
default_license |
string | "by-sa" |
Licence utilisée si non spécifiée |
language |
string | "fr" |
Langue pour les liens CC |
target_blank |
boolean | true |
Ouvrir les liens dans un nouvel onglet |
show_icons |
boolean | true |
Afficher les icônes SVG |
custom_template |
string | None |
Template personnalisé (futur) |
Exemple de configuration complète
plugins:
- cc-license:
default_license: "by-sa"
language: "en"
target_blank: false
show_icons: true
Développement
Structure du projet
mkdocs_cc_license_plugin/
├── mkdocs_cc_license_plugin/ # Package Python
│ ├── __init__.py
│ └── plugin.py # Plugin principal
├── examples/ # Exemples d'utilisation
│ ├── mkdocs.yml
│ ├── theme_overrides/ # Template personnalisé
│ │ └── main.html
│ └── docs/
│ ├── index.md
│ ├── with-license.md
│ └── no-license.md
├── tests/ # Tests unitaires
├── setup.py # Configuration d'installation
├── pyproject.toml # Configuration moderne
└── README.md # Documentation
Tests
# Tests unitaires
python -m pytest tests/
# Test manuel avec l'exemple
cd examples
mkdocs serve
# Ouvrir http://127.0.0.1:8000/with-license/
Dépannage
Le plugin ne se charge pas
- Vérifiez que le package est bien installé :
pip list | grep mkdocs-cc-license - Vérifiez la structure : les fichiers doivent être dans
mkdocs_cc_license_plugin/
Les icônes n'apparaissent pas
- Vérifiez que la propriété
licenseest bien définie dans l'en-tête YAML - Utilisez un template personnalisé pour Material (voir section Template)
- Vérifiez les logs :
[CC License Plugin] build_license_html called with: ...
Style non appliqué
- Redémarrez
mkdocs serveaprès modification du template - Vérifiez que
custom_dir: theme_overridesest configuré
Licence
Ce plugin est distribué sous licence MIT.
Contribution
Les contributions sont les bienvenues ! Veuillez :
- Fork le projet
- Créer une branche pour votre fonctionnalité
- Commiter vos changements
- Pousser vers la branche
- Ouvrir une Pull Request
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mkdocs_cc_license_plugin-1.0.0.tar.gz.
File metadata
- Download URL: mkdocs_cc_license_plugin-1.0.0.tar.gz
- Upload date:
- Size: 21.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cecd38421f91d80d1a1518254a0e5fa5b26a00f89647d5289fe1aa5c95f0609
|
|
| MD5 |
d05a5a6f5c77bbc7b910726a94abec46
|
|
| BLAKE2b-256 |
2e9e7be4d7b5c8e13c66bf0e759a01f9be27e35f4d556308d8bda91e408ac1af
|
File details
Details for the file mkdocs_cc_license_plugin-1.0.0-py3-none-any.whl.
File metadata
- Download URL: mkdocs_cc_license_plugin-1.0.0-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a639b064c42bc8c7570ec859eb487748cdd4dd8e91a9975d42906a3a30a0efa
|
|
| MD5 |
2f14f8a655063fb2acb0baf6ee733c6e
|
|
| BLAKE2b-256 |
1e8fd53e79cedd7ad951c5b257e29ada434b08d1efe1a9f034a818835a938103
|