diff --git a/doc/source/back-end/contents.rst b/doc/source/back-end/contents.rst index c07305adc3..3398d69226 100644 --- a/doc/source/back-end/contents.rst +++ b/doc/source/back-end/contents.rst @@ -1,6 +1,6 @@ -======================================= -Les tutoriels et articles v2.0 (ZEP 12) -======================================= +========================= +Les tutoriels et articles +========================= Vocabulaire et définitions ========================== @@ -154,6 +154,12 @@ stocker (détails plus bas). Dès lors, cette spécification **impose** que ce *slug* soit unique au sein du conteneur parent, et que le *slug* du contenu soit unique au sein de tous les contenus de ZdS. +La taille des *slugs* ne peut dépasser une certaine limite, définie dans le code par +``ZDS_APP['content']['maximum_slug_size']`` (par défaut 150). Cette limite est due à +une contrainte sur la taille maximum d'un nom de fichier sur les différents systèmes +(généralement 255 octets sur la plupart des systèmes de fichier modernes, voir à ce sujet +`l'article Wikipedia correspondant (en) `_). + .. note:: À noter que l'*underscore* est conservé par compatibilité avec l'ancien diff --git a/doc/source/back-end/contents_manifest.rst b/doc/source/back-end/contents_manifest.rst index 76b34fa981..7b375a5000 100644 --- a/doc/source/back-end/contents_manifest.rst +++ b/doc/source/back-end/contents_manifest.rst @@ -31,15 +31,80 @@ Plus précisément : Sauf cas exceptionnel, la numérotation de X commence à 1, la numérotation de Y commence à 0, la numérotation de Z commence à 0. -La version du manifeste est donnée par le champ éponyme situé à la racine du manifeste ( ```{ version="2.0.0"}```). -L'absence du champ version est interprétée comme ``̀{version="1.0.0"}```. -Les 0 non significatifs sont optionnels ainsi ```{version="1"}``` est strictement équivalent à ```{version:"1.0"}``` lui-même strictement équivalent à ```{version:"1.0.0"}```. +La version du manifeste est donnée par le champ éponyme situé à la racine du manifeste ( ``{ version: "2.0.0"}``). +L'absence du champ version est interprétée comme ``{version: "1.0"}``. +Les 0 non significatifs sont optionnels ainsi ``{version: "1"}`` est strictement équivalent à ``{version: "1.0"}`` lui-même strictement équivalent à ``{version: "1.0.0"}``. + +Version 2.0 +----------- + +La version 2.0 est la version actuelement utilisée. + +.. sourcecode:: json + + { + "object": "container", + "slug": "un-tutoriel", + "title": "Un tutoriel", + "introduction": "introduction.md", + "conclusion": "conclusion.md", + "version": 2, + "description": "Une description", + "type": "TUTORIAL", + "licence": "Beerware", + "children": [ + { + "object": "container", + "slug": "titre-de-mon-chapitre", + "title": "Titre de mon chapitre", + "introduction": "titre-de-mon-chapitre/introduction.md", + "conclusion": "titre-de-mon-chapitre/conclusion.md", + "children": [ + { + "object": "extract", + "slug": "titre-de-mon-extrait", + "title": "Titre de mon extrait", + "text": "titre-de-mon-chapitre/titre-de-mon-extrait.md" + }, + (...) + ] + }, + (...) + ] + } + +1. ``type`` : Le type de contenu, vaut "TUTORIAL" ou "ARTICLE". *Si ce champ est absent ou invalide, le type vaudra par défaut "TUTORIAL".* +2. ``description`` : La description du contenu. Est affichée comme sous-titre dans la page finale. **Obligatoire** +3. ``title`` : Le titre du contenu. **Obligatoire** +4. ``slug`` : slug du contenu qui permet de faire une url SEO-friendly. Pour rappel, `certaines contraintes doivent être respectées dans le choix du slug `_. **Obligatoire**. ATENTION : si ce slug existe déjà dans notre base de données, il est possible qu'un nombre lui soit ajouté +5. ``introduction`` : le nom du fichier Mardown qui possède l'introduction. Il doit pointer vers le dossier courant. *Optionnel mais conseillé* +6. ``conclusion`` : le nom du fichier Mardown qui possède la conclusion. Il doit pointer vers le dossier courant. *Optionnel mais conseillé* +7. ``licence`` : nom complet de la license. *A priori* les licences "CC" et "Tous drois réservés" sont supportées. Le support de toute autre licence dépendra du site utilisant le code de ZdS (fork) que vous visez. **Obligatoire** +8. ``children`` : tableau contenant l'architecture du contenu. + 1. ``object`` : type d'enfant (*container* ou *extract*, selon qu'il s'agisse d'une section ou d'un texte). **Obligatoire** + 2. ``title`` : le titre de l'enfant. **Obligatoire** + 3. ``slug`` : le slug de l'enfant pour créer une url SEO-friendly, doit être unique dans le contenu, le slug est utilisé pour trouver le chemin vers l'enfant dans le système de fichier si c'est une section. Attention, `certaines contraintes doivent être respectées dans le choix du slug `_. **Obligatoire** + 4. ``introduction`` : nom du fichier contenant l'introduction quand l'enfant est de type *container*. *Optionnel mais conseillé* + 5. ``conclusion`` : nom du fichier contenant la conclusion quand l'enfant est de type *container*. *Optionnel mais conseillé* + 6. ``children`` : tableau vers les enfants de niveau inférieur si l'enfant est de type *container*. **Obligatoire** + 7. ``text`` : nom du fichier contenant le texte quand l'enfant est de type *extract*. Nous conseillons de garder la convention ``nom de fichier = slug.md`` mais rien n'est obligatoire à ce sujet. **Obligatoire** + + + Version 1.0 ----------- + +.. note:: + + La version 1.0 est dépréciée, et il est conseillé d'employer la version 2.0. Il est ceci dit toujours possible + `d'importer des contenus `_ dont le manifeste est toujours en version 1.0, mais à vos risques et périls. + + La version 1.0 définit trois types de manifeste selon que nous faisons face à un article, un mini tutoriel ou un big tutoriel. + MINI TUTO +++++++++ @@ -106,56 +171,3 @@ Article "type": "article", "text": "text.md" } - - -Version 2.0 ------------ - -.. sourcecode:: json - - { - "object": "container", - "slug": "un-tutoriel", - "title": "Un tutoriel", - "introduction": "introduction.md", - "conclusion": "conclusion.md", - "version": 2, - "description": "Une description", - "type": "TUTORIAL", - "licence": "Beerware", - "children": [ - { - "object": "container", - "slug": "titre-de-mon-chapitre", - "title": "Titre de mon chapitre", - "introduction": "titre-de-mon-chapitre/introduction.md", - "conclusion": "titre-de-mon-chapitre/conclusion.md", - "children": [ - { - "object": "extract", - "slug": "titre-de-mon-extrait", - "title": "Titre de mon extrait", - "text": "titre-de-mon-chapitre/titre-de-mon-extrait.md" - }, - (...) - ] - }, - (...) - ] - } - -1. ``type`` : Le type de contenu, vaut "TUTORIAL" ou "ARTICLE". **Obligatoire** -2. ``description`` : La description du contenu. Est affichée comme sous-titre dans la page finale. **Obligatoire** -3. ``title`` : Le titre du contenu. **Obligatoire** -4. ``slug`` : slug du contenu qui permet de faire une url SEO-friendly. **Obligatoire**. ATENTION : si ce slug existe déjà dans notre base de données, il est possible qu'un nombre lui soit ajouté -5. ``introduction`` : le nom du fichier Mardown qui possède l'introduction. Il doit pointer vers le dossier courant. *Optionnel mais conseillé* -6. ``conclusion`` : le nom du fichier Mardown qui possède la conclusion. Il doit pointer vers le dossier courant. *Optionnel mais conseillé* -7. ``licence`` : nom complet de la license. *A priori* les licences "CC" et "Tous drois réservés" sont supportées. Le support de toute autre licence dépendra du site utilisant le code de ZdS (fork) que vous visez. **Obligatoire** -8. ``children`` : tableau contenant l'architecture du contenu. **Obligatoire** - 1. ``object`` : type d'enfant (*container* ou *extract*, selon qu'il s'agisse d'une section ou d'un texte). **Obligatoire** - 2. ``title`` : le titre de l'enfant. **Obligatoire** - 3. ``slug`` : le slug de l'enfant pour créer une url SEO-friendly, doit être unique dans le contenu, le slug est utilisé pour trouver le chemin vers l'enfant dans le système de fichier si c'est une section. **obligatoire** - 4. ``introduction`` : nom du fichier contenant l'introduction quand l'enfant est de type *container*. *Optionnel mais conseillé* - 5. ``conclusion`` : nom du fichier contenant la conclusion quand l'enfant est de type *container*. *Optionnel mais conseillé* - 6. ``children`` : tableau vers les enfants de niveau inférieur si l'enfant est de type *container*. **Obligatoire** - 7. ``text`` : nom du fichier contenant le texte quand l'enfant est de type *extract*. Nous conseillons de garder la convention ``nom de fichier = slug.md`` mais rien n'est obligatoire à ce sujet. **Obligatoire** diff --git a/doc/source/install/backend-linux-install.rst b/doc/source/install/backend-linux-install.rst index aca0ef7a93..5ef2be01f9 100644 --- a/doc/source/install/backend-linux-install.rst +++ b/doc/source/install/backend-linux-install.rst @@ -25,13 +25,13 @@ Assurez vous que les dépendances suivantes soient résolues : - libz-dev (peut être libz1g-dev sur système 64bits) - python-sqlparse - libffi : ``apt-get install libffi-dev`` -- libjpeg8 libjpeg8-dev libfreetype6 libfreetype6-dev : ``apt-get install libjpeg8 libjpeg8-dev libfreetype6 libfreetype6-dev`` +- libjpeg62-turbo libjpeg62-turbo-dev libfreetype6 libfreetype6-dev : ``apt-get install libjpeg62-turbo libjpeg62-turbo-dev libfreetype6 libfreetype6-dev`` Ou, en une ligne, .. sourcecode:: bash - apt-get install git python-dev python-setuptools '^geoip(-bin)?$' libgeoip-dev libxml2-dev python-lxml libxslt-dev libz-dev python-sqlparse libjpeg8 libjpeg8-dev libfreetype6 libfreetype6-dev libffi-dev + apt-get install git python-dev python-setuptools '^geoip(-bin)?$' libgeoip-dev libxml2-dev python-lxml libxslt-dev libz-dev python-sqlparse libjpeg62-turbo libjpeg62-turbo-dev libfreetype6 libfreetype6-dev libffi-dev easy_install pip tox Installation et configuration de `virtualenv` diff --git a/requirements.txt b/requirements.txt index 84c7e03ed9..623ffcd24a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,7 +14,7 @@ python-memcached==1.54 lxml==3.4.4 factory-boy==2.4.1 pygeoip==0.3.2 -pillow==2.8.1 +pillow==2.9.0 gitpython==1.0.1 https://github.com/zestedesavoir/Python-ZMarkdown/archive/2.6.0-zds.7.zip easy-thumbnails==2.2 diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 7bf1dcde86..a2b8388bb4 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -49,7 +49,7 @@ git checkout -b $1 # Update application data source ../bin/activate -pip install --upgrade --use-mirrors -r requirements.txt +pip install --upgrade -r requirements.txt python manage.py migrate python manage.py compilemessages # Collect all staticfiles from dist/ and python packages to static/ diff --git a/templates/tutorialv2/includes/content_item_type_article.part.html b/templates/tutorialv2/includes/content_item_type_article.part.html index c4828a2eb6..0c7b85954d 100644 --- a/templates/tutorialv2/includes/content_item_type_article.part.html +++ b/templates/tutorialv2/includes/content_item_type_article.part.html @@ -19,6 +19,22 @@ {% endif %} {% endcaptureas %} +{% captureas content_title %} + {% if public_article and online %} + {{ public_article.title }} + {% else %} + {{ article.title }} + {% endif %} +{% endcaptureas %} + +{% captureas content_subtitle %} + {% if public_article and online %} + {{ public_article.description}} + {% else %} + {{ article.description }} + {% endif %} +{% endcaptureas %} + {# Authors (by X, Y and Z) ; can't have multiple whitespaces because of the title ! #} {% captureas authors_text %} {% for author in article.authors.all %}{% if forloop.first %}{% trans "par" %}{% elif forloop.last %} {% trans "et" %}{% else %},{% endif %} {% if author == user %}{% trans "vous" %}{% else %}{{ author.username }}{% endif %}{% endfor %} @@ -32,14 +48,14 @@