Browse Source

Premier jet du plugin de rétro-compatibilité des modèles de documents avec SPIP 3.2. close #4639

master
cy_altern 9 months ago
commit
ffb3ade118
  1. 6
      css/historique_spip32_documents.css
  2. 23
      historique_spip32_documents_options.php
  3. 12
      lang/historique_spip32_documents_fr.php
  4. 14
      lang/paquet-historique_spip32_documents_fr.php
  5. 48
      modeles/doc.html
  6. 59
      modeles/document_case_fonctions.php
  7. 3
      modeles/emb.html
  8. 30
      modeles/emb_fonctions.php
  9. 49
      modeles/image.html
  10. 53
      modeles/img.html
  11. 21
      paquet.xml
  12. 130
      prive/themes/spip/images/historique_spip32_documents-xx.svg

6
css/historique_spip32_documents.css

@ -0,0 +1,6 @@
/* les surcharges du squelettes-dist 3.3 pour avoir l'affichage des documents idem la 3.2 */
.spip_documents_left.spip_documents,
.spip_documents_right.spip_documents {
max-width: 100%;
}

23
historique_spip32_documents_options.php

@ -0,0 +1,23 @@
<?php
/**
* Options au chargement du plugin Modèles de documents 3.2
*
* @plugin Modèles de documents 3.2
* @copyright 2021
* @author spip team
* @licence GNU/GPL
* @package SPIP\Historique_spip32_documents\Options
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
if (!defined('_LEGACY_ACTIVE_IMG_DOC_EMB')) {
define ('_LEGACY_ACTIVE_IMG_DOC_EMB', 1);
}
function historique_spip32_documents_insert_head_css($flux){
$flux .= "\r\n".'<link rel="stylesheet" href="'.find_in_path('css/historique_spip32_documents.css').'" type="text/css" media="all" />'."\r\n";
return $flux;
}

12
lang/historique_spip32_documents_fr.php

@ -0,0 +1,12 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// H
'historique_spip32_documents_titre' => 'Modèles de documents 3.2',
);

14
lang/paquet-historique_spip32_documents_fr.php

@ -0,0 +1,14 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// H
'historique_spip32_documents_description' => 'Plugin de compatibilité : rétablir les modèles de documents de la version 3.2 de SPIP',
'historique_spip32_documents_nom' => 'Modèles de documents SPIP 3.2',
'historique_spip32_documents_slogan' => '',
);

48
modeles/doc.html

@ -0,0 +1,48 @@
<BOUCLE_doc (DOCUMENTS) {id_document} {tout}>
[<!--(#REM)
Modele pour <doc> en dl/dt/dd
cf. http://pompage.net/pompe/listesdefinitions/
La largeur de la legende est egale a la largeur de l'image
avec un minimum de 120px, et un maximum de 350px.
Dans le cas d'une simple image (mode=image), on affiche
le document lui-meme, sans lien de telechargement
-->]
[(#ENV{mode_force,#MODE}|=={image}|oui)
#SET{fichier,#URL_DOCUMENT}
#SET{width,#LARGEUR}
#SET{height,#HAUTEUR}
#SET{url,#ENV{lien}}
]
[(#ENV{mode_force,#MODE}|=={image}|non)
[(#SET{fichier,[(#LOGO_DOCUMENT|extraire_attribut{src})]})]
[(#SET{width,[(#LOGO_DOCUMENT|extraire_attribut{width})]})]
[(#SET{height,[(#LOGO_DOCUMENT|extraire_attribut{height})]})]
#SET{url,#ENV{lien,#URL_DOCUMENT}}
][<!--(#REM)
Si largeur ou hauteur fournit en parametre, redimensionner
-->][
(#ENV{largeur,0}|ou{#ENV{hauteur,0}})
#SET{fichier,#GET{fichier}|image_reduire{#ENV{largeur,0},#ENV{hauteur,0}}}
#SET{width,#GET{fichier}|largeur}
#SET{height,#GET{fichier}|hauteur}
#SET{fichier,#GET{fichier}|extraire_attribut{src}}
]
[(#SET{title,[(#TYPE_DOCUMENT) - [(#TAILLE|taille_en_octets)]]})]
[(#MEDIA|=={image}|oui) #SET{title,#TITRE|sinon{#GET{title}}]
<dl class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'[
style='float:(#ENV{align}|match{left|right});']>
<dt>[<a href="(#GET{url})"[
class="(#ENV{lien_class})"] title='[(#GET{title}|attribut_html)]'[
(#ENV{lien}|?{'',type="#MIME_TYPE"})]>]<img src='#GET{fichier}' width='#GET{width}' height='#GET{height}' alt='' />[(#GET{url}|?{</a>})]</dt>[
<dt class='#EDIT{titre} spip_doc_titre'[ style='width:(#GET{width}|min{350}|max{120})px;']><strong>(#TITRE)</strong></dt>][
<dd class='#EDIT{descriptif} spip_doc_descriptif'[ style='width:(#GET{width}|min{350}|max{120})px;']>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</dd>]
</dl>
</BOUCLE_doc>
#FILTRE{trim}

59
modeles/document_case_fonctions.php

@ -0,0 +1,59 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2020 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
if (!defined('_BOUTON_MODE_IMAGE')) {
define('_BOUTON_MODE_IMAGE', true);
}
include_spip('inc/documents'); // pour la fonction affiche_raccourci_doc
function medias_raccourcis_doc(
$id_document,
$titre,
$descriptif,
$inclus,
$largeur,
$hauteur,
$mode,
$vu,
$media = null
) {
$raccourci = '';
$doc = 'doc';
if ($mode == 'image' and (strlen($descriptif . $titre) == 0)) {
$doc = 'img';
}
// Affichage du raccourci <doc...> correspondant
$raccourci =
affiche_raccourci_doc($doc, $id_document, 'left')
. affiche_raccourci_doc($doc, $id_document, 'center')
. affiche_raccourci_doc($doc, $id_document, 'right');
if ($mode == 'document'
and ($inclus == 'embed' or $inclus == 'image')
and (($largeur > 0 and $hauteur > 0)
or in_array($media, array('video', 'audio')))
) {
$raccourci =
'<span>' . _T('medias:info_inclusion_vignette') . '</span>'
. $raccourci
. '<span>' . _T('medias:info_inclusion_directe') . '</span>'
. affiche_raccourci_doc('emb', $id_document, 'left')
. affiche_raccourci_doc('emb', $id_document, 'center')
. affiche_raccourci_doc('emb', $id_document, 'right');
}
return "<div class='raccourcis'>" . $raccourci . '</div>';
}

3
modeles/emb.html

@ -0,0 +1,3 @@
<BOUCLE_ext(DOCUMENTS types_documents) {id_document} {tout}>
<INCLURE{fond=modeles/#EXTENSION|trouver_modele_emb{#MIME_TYPE}}{id=#ID_DOCUMENT}{env}{emb=' '}/>
</BOUCLE_ext>

30
modeles/emb_fonctions.php

@ -0,0 +1,30 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Trouver le fond pour embarquer un document
* - avec une extension
* - avec un mime_type donne
*
* => modeles/emb_html.html si il existe
* => modeles/text_html.html si il existe,
* => modeles/text.html sinon
*
* @param $extension
* @param $mime_type
* @return mixed
*/
function trouver_modele_emb($extension, $mime_type) {
if ($extension and trouve_modele($fond = 'emb_' . $extension)) {
return $fond;
}
$fond = preg_replace(',\W,', '_', $mime_type);
if (trouve_modele($fond)) {
return $fond;
} else {
return preg_replace(',\W.*$,', '', $mime_type);
}
}

49
modeles/image.html

@ -0,0 +1,49 @@
<BOUCLE_tous (DOCUMENTS types_documents) {id_document=#ID} {tout}>[
(#REM) Cas <imageXX> : equivalent a <imgXX> pour une image en mode image
][(#INCLUS|=={image}|et{#ENV{emb,''}|non}|oui)
<span class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'[
style='float:(#ENV{align}|match{left|right});']>[
<a href="(#ENV{lien})"[
class="(#ENV{lien_class})"]>]<img src='#URL_DOCUMENT'[
width="(#LARGEUR|?{#LARGEUR})"][
height="(#HAUTEUR|?{#HAUTEUR})"][
title="(#TITRE|attribut_html)"]
alt="[(#TITRE|attribut_html)]" />[(#ENV{lien}|?{</a>})]</span>
][
(#REM) Cas <embXX> : on est appele ici avec emb=' ' : on veut la legende
equivalent a un <docXX> pour une image en mode image
][(#INCLUS|=={image}|et{#ENV{emb,''}|oui}|oui)
#SET{fichier,#URL_DOCUMENT}
#SET{width,#LARGEUR}
#SET{height,#HAUTEUR}
#SET{url,#ENV{lien}}
<dl class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'[
style='float:(#ENV{align}|match{left|right});[width:(#GET{width}|max{120})]px;']>
<dt>[<a href="(#GET{url})"[ class="(#ENV{lien_class})"] title='#TYPE_DOCUMENT - [(#TAILLE|taille_en_octets|texte_backend)]'[ type="(#ENV{lien}|?{#ENV{lien_mime},#MIME_TYPE})"]>]<img src='#GET{fichier}' width='#GET{width}' height='#GET{height}' alt='' />[(#GET{url}|?{</a>})]</dt>[
<dt class='#EDIT{titre} spip_doc_titre'[ style='width:(#GET{width}|min{350}|max{120})px;']><strong>(#TITRE)</strong></dt>][
<dd class='#EDIT{descriptif} spip_doc_descriptif'[ style='width:(#GET{width}|min{350}|max{120})px;']>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</dd>]
</dl>
][
(#REM) Cas des images qu'il faut embed (svg)
][
(#INCLUS|=={embed}|oui)
<div class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})]'[
style='[(#ENV{align}|match{^(left|right)$}|?{' '})float:#ENV{align};] (#ENV{align,center}|=={center}|?{'',' '})']>
<object data='#URL_DOCUMENT'
type='#MIME_TYPE'[
width='(#ENV{largeur}?{'', #LARGEUR})'][
height='(#ENV{hauteur}?{'', #HAUTEUR})']
[(#ENV*|env_to_attributs)] >
<param name='src' value='#URL_DOCUMENT' />
[(#ID_DOCUMENT|appliquer_filtre{#MIME_TYPE})]
</object>[
<div class='#EDIT{titre} spip_doc_titre'><strong>(#TITRE)</strong></div>
][
<div class='#EDIT{descriptif} spip_doc_descriptif'>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</div>
]</div>]
</BOUCLE_tous>

53
modeles/img.html

@ -0,0 +1,53 @@
<BOUCLE_document (DOCUMENTS) {id_document} {mode?} {tout}>
[(#REM)
Modele pour <img>
Si on est en mode "image" ou "vignette", ou appele avec embed=oui,
on affiche l'image complete ; sinon le logo
Si un lien est passe #ENV{lien} on ajoute le a href
ou on truque le #URL_DOCUMENT
Si une code de langue est passe #ENV{langue} ex: <img12|langue=en>
on ajoute l'attribut lang la balise img et eventuellement sur la balise a
Dans le cas mode "image ou vignette", le contenu de l'attribut
alt et title se construit selon le schema suivant :
- prend la valeur de alt passe en environnement par le biais
d'un parametre sur la balise ex: <img12|alt=xxx>
- sinon on prend le titre
- sinon si #ENV{lien} est passe on prend #ENV{lien} ou Document si lien vers #URL_DOCUMENT
- sinon alt vide
Dans le cas mode "document", le contenu de l'attribut
alt et title se construit selon le meme schema a ceci pres
qu'on ajoute #TYPE_DOCUMENT - #TAILLE
sauf si #ENV{lien} est passe
]
[(#SET{
image,
#ENV{mode_force,#MODE}|match{'image|vignette'}
|sinon{#ENV{embed}}
|oui
})][
(#REM) image complete ?
][(#GET{image})
<span class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'[
style='float:(#ENV{align}|match{left|right});']>
[<a href="(#ENV{lien})"[ class="(#ENV{lien_class})"]>]<img src='#URL_DOCUMENT'[ width="(#LARGEUR)"][ height="(#HAUTEUR)"] alt="[(#TITRE|texte_backend)]"[ title="(#TITRE|texte_backend)"] />[(#ENV{lien}|?{</a>})]</span>
][
(#REM) sinon logo document + lien + alt + title etc
][(#GET{image}|non)
[(#SET{fichier,[(#LOGO_DOCUMENT|extraire_attribut{src})]})]
[(#SET{width,[(#LOGO_DOCUMENT|extraire_attribut{width})]})]
[(#SET{height,[(#LOGO_DOCUMENT|extraire_attribut{height})]})]
<span class='spip_document_#ID_DOCUMENT spip_documents[ spip_documents_(#ENV{align})][ (#ENV{class})] spip_lien_ok'[
style='float:(#ENV{align}|match{left|right});[ width:(#GET{width})px;]']><a href="[(#ENV{lien}|sinon{#URL_DOCUMENT})]"[
(#ENV{lien}|?{'',type="#MIME_TYPE"})][ title="(#TITRE|texte_backend)"]><img src='#GET{fichier}' width='#GET{width}' height='#GET{height}' alt='[(#TITRE|strlen|?{#TITRE {#TYPE_DOCUMENT},#TYPE_DOCUMENT}|attribut_html)]' /></a></span>
]</BOUCLE_document>

21
paquet.xml

@ -0,0 +1,21 @@
<paquet
prefix="historique_spip32_documents"
categorie="outil"
version="1.0.1"
etat="dev"
compatibilite="[3.3.0-dev;3.3.*]"
logo="prive/themes/spip/images/historique_spip32_documents-xx.svg"
documentation=""
>
<nom>Modèles de documents SPIP 3.2</nom>
<auteur>spip team</auteur>
<credit lien="https://www.flaticon.com">Logo : Dave Gandy, Those Icons pour Flaticon</credit>
<licence>GNU/GPL</licence>
<necessite nom="medias" compatibilite="[2.30.0;]" />
<pipeline nom="insert_head_css" inclure="historique_spip32_documents_options.php" />
</paquet>

130
prive/themes/spip/images/historique_spip32_documents-xx.svg

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
width="632"
height="632"
viewBox="0 0 631.99997 631.99997"
xml:space="preserve"
sodipodi:docname="historique_documents_2.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"><metadata
id="metadata47"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs45">
</defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="640"
inkscape:window-height="480"
id="namedview43"
showgrid="false"
inkscape:zoom="0.67521728"
inkscape:cx="478.90454"
inkscape:cy="309.90771"
inkscape:current-layer="Capa_1"
inkscape:document-rotation="0"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<g
id="g12"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g14"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g16"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g18"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g20"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g22"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g24"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g26"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g28"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g30"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g32"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g34"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g36"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g38"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g40"
transform="translate(86.288567,35.8197)">
</g>
<g
id="g1147"
transform="translate(0,51.33765)"><path
d="m 525.53251,246.4767 c -15.229,0 -28.171,-5.327 -38.831,-15.987 -10.657,-10.66 -15.987,-23.601 -15.987,-38.826 0,-15.23 5.333,-28.171 15.987,-38.832 10.66,-10.656 23.603,-15.986 38.831,-15.986 15.227,0 28.168,5.33 38.828,15.986 10.656,10.66 15.986,23.601 15.986,38.832 0,15.225 -5.327,28.169 -15.986,38.826 -10.66,10.657 -23.601,15.987 -38.828,15.987 z"
id="path4" /><polygon
points="356.315,173.587 210.134,319.765 164.452,274.088 73.092,365.447 73.092,420.267 475.085,420.267 475.085,292.36 "
id="polygon6"
transform="translate(86.288567,53.8197)" /><path
style="fill:none;stroke:#000000;stroke-width:35.4618;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 337.95362,107.21412 H 614.24924 L 612.62397,511.5938 H 105.54024 l -1.62527,-222.72474"
id="path854" /><g
id="g857"
transform="matrix(2.631863,0,0,2.631863,-610.10724,-658.1557)"><g
id="g838"
transform="matrix(0.23909016,0,0,0.23909016,231.81573,242.36821)"><path
d="m 290,32.222 c -113.405,0 -207.262,84.222 -222.981,193.333 H 0 l 96.667,96.667 96.667,-96.667 H 132.146 C 147.118,152.111 212.202,96.666 290,96.666 c 88.832,0 161.111,72.28 161.111,161.111 0,88.831 -72.279,161.112 -161.111,161.112 -51.684,0 -100.6,-25.079 -130.84,-67.056 l -52.298,37.635 c 42.323,58.78 110.78,93.866 183.138,93.866 124.373,0 225.556,-101.198 225.556,-225.556 C 515.556,133.42 414.373,32.222 290,32.222 Z"
id="path2-9" /><path
d="M 257.778,161.111 V 292.14 l 96.195,57.711 33.166,-55.256 -64.917,-38.956 v -94.527 z"
id="path4-4" /></g></g></g></svg>
Loading…
Cancel
Save