source: spip-zone/_plugins_/albums/trunk/modeles/album.html @ 88161

Last change on this file since 88161 was 88161, checked in by tcharlss@…, 4 years ago

bugfix des modèles.

  • Ne pas se reposer sur #ENV{args} pour savoir si un paramètre a été passé explicitement au modèle : cette valeur est bien présente quand on appelle le modèle depuis le texte d'un article : <albumx>, mais pas depuis un squelette : #MODELE{album..}.

C'est bien pénible, car dans la v1 on utilise les 2 paramètres id_article et id pour chopper les documents, mais selon le contexte ces 2 paramètres peuvent se trouver dans l'environnement même s'ils n'ont pas été transmis explicitement au modèle.
Il faut donc trouver d'autres moyens pour savoir si on récupère les documents d'un album, d'un article ou depuis une liste d'identifiants.

  • Séparer les squelettes en 2 était superflu. Suppression de inc-album.html et inc-album_liste.html
  • Ajout de l'option 'ratio' au yaml.
File size: 9.0 KB
Line 
1[(#REM)
2
3        Modèle «album» par défaut : vue sous forme de vignettes.
4
5        Cf. http://tinytypo.tetue.net/tinytypo.html#album
6        Ce modèle est plutôt destiné aux albums contenant des images.
7        Par défaut, l'affichage est volontairement minimaliste et les vignettes sont retaillées en hauteur.
8        Les paramètres permettent d'afficher des éléments supplémentaires (titre, descriptif, labels), de retailler et recadrer les vignettes,
9        de changer la position et le contenu de la légende, de changer la pagination, le tri, etc.
10        Des constantes de personnalisation permettent de définir des paramètres par défaut,
11        consulter le fichier `albums_options.php` pour la liste complète.
12
13        Utilisation :
14        - Dans un squelette : #MODELE{album, id_album=x}      docs de l'album n°x
15                              #MODELE{album, id_article=x}    docs de l'article n°x
16                              #MODELE{album, id=x-y-z-N}    docs identifiés
17        - Dans un texte :     <albumX>
18                              <album|id_article=x>
19                              <album|id=x,y,z,N>
20
21        Notes techniques diverses :
22        - Le squelette a l'air bien chevelu, mais à la base, le markup d'un album est hyper simple (cf. lien plus haut).
23        Comme il faut prendre en compte tous les paramètres possibles, assurer la rétrocompatibilité,
24        et gérer les petites incohérences des modèles, ça donne un truc bien dense.
25        - Attention, dans la v1 le paramètre `id` sert à sélectionner des documents,
26        mais #ENV{id} peut renvoyer l'identifiant d'un album avec <albumx>.
27        Si on peut décomposer #ENV{id} en tableau, on considère qu'il s'agit du premier cas.
28   
29
30][(#REM)
31
32        Paramètres :
33                id_album          Identifiant d'un album.
34                titre             Pour afficher le titre de l'album ou un titre personnalisé
35                                  valeurs : «oui» ou «true» pour le "vrai" titre de l'album.
36                                            n'importe quelle autre chaîne pour un titre personnalisé.
37                                  défaut  : ''
38                balise_titre      Balise dans laquelle encapsuler le titre, sans les chevrons.
39                                  ex.     : «h3», «strong»...
40                                  défaut  : _ALBUMS_BALISE_TITRE_VIGNETTES > _ALBUMS_BALISE_TITRE > strong
41                descriptif        Pour afficher le descriptif de l'album
42                                  valeurs : «oui» ou «true»
43                                  défaut  : ''
44                label             Pour afficher le label de chaque document
45                                  valeurs : n'importe quelle chaîne (oui, true...)
46                                  défaut  : ''
47                                  Attention, les noms de fichiers longs peuvent perturber l'agencement, prévoir des styles CSS supplémentaires.
48                largeur           Largeur maximale des images (filtre image_reduire).
49                                  défaut  : _ALBUMS_TAILLE_PREVIEW > taille des miniatures dans les options avancées > 0
50                hauteur           Hauteur maximale des images (filtre image_reduire).
51                                  défaut  : _ALBUMS_TAILLE_PREVIEW > taille des miniatures dans les options avancées > 150
52                recadrer          Pour recadrer les images (filtre image_passe_partout + image_recadre).
53                                  valeurs : n'importe quelle chaîne (oui, true...)
54                                  défaut  : _ALBUMS_RECADRER > ''
55                ratio             Ratio utilisé pour recadrer
56                                  valeurs : 16/9, 2:21, 4-3 etc.
57                                  défaut  : 1
58                par               Tri des documents.
59                                  valeurs : id_document | titre | fichier | media | mode | extension | taille
60                                  défaut  : media, fichier, titre
61                align             Alignement du bloc conteneur (.album)
62                                  valeurs : left | right | center
63                                  défaut  : ''
64                classe            Classe(s) CSS supplémentaire(s) du bloc conteneur (.album)
65                pagination        Pagination pour le nombre de documents affichés.
66                                  défaut  : _ALBUMS_PAGINATION_VIGNETTES > _ALBUMS_PAGINATION > 20
67                pagination_type   Type de pagination
68                                  valeurs : page | precedent_suivant | page_precedent_suivant
69                                  défaut  : page
70                position_legende  Emplacement de la légende (titre & descriptif) : en haut ou en bas de la liste.
71                                  valeurs : top | bottom
72                                  défaut  : bottom
73
74                Dépréciés, pour rétro compatibilité avec les versions antérieures :
75                id                sélection prédéfinie de documents, séparés par un caractère non alphanumérique.
76                id_article        identifiant d'un article pour sélectionner ses documents.
77                balise_titraille  = balise_titre
78                media             pour restreindre à un type de document
79
80][(#SET{titre_album,    #ENV{titre}|in_array{#LISTE{oui,true}}|?{#INFO_TITRE{album,#ENV{id_album}},#ENV{titre}|trim}})][
81(#SET{descriptif_album, #ENV{descriptif}|in_array{#LISTE{oui,true}}|?{#INFO_DESCRIPTIF{album,#ENV{id_album}}}})][
82(#SET{pagination,       #ENV{pagination}|intval|sinon{#EVAL{_ALBUMS_PAGINATION_VIGNETTES}|intval}|sinon{#EVAL{_ALBUMS_PAGINATION}|intval}|sinon{20}})][
83(#SET{balise_titre,     #ENV*{balise_titre}|sinon{#ENV*{balise_titraille}}|sinon{#EVAL{_ALBUMS_BALISE_TITRE_VIGNETTES}}|sinon{#EVAL{_ALBUMS_BALISE_TITRE}}|sinon{strong}|trim|replace{^<|>$}})][
84(#SET{position_legende, #ENV{position_legende}|sinon{#EVAL{_ALBUMS_POSITION_LEGENDE_VIGNETTES}}|sinon{#EVAL{_ALBUMS_POSITION_LEGENDE}}|trim})][
85(#SET{position_legende, #GET{position_legende}|in_array{#LISTE{top,bottom}}|?{#GET{position_legende},bottom}})][
86(#SET{caption,          #GET{titre_album}|?{#GET{titre_album}|wrap{#VAL{'<'}|concat{#GET{balise_titre},' class="titre_album">'}}}
87                        |concat{#GET{#GET{descriptif_album}}|?{#GET{descriptif_album}|wrap{<div class="descriptif_album">}}}
88                        |wrap{#VAL{'<'}|concat{#HTML5|?{figcaption,div},' class="caption ',#GET{position_legende},'">'}}}|trim)][
89(#SET{taille_preview,   #CONFIG{taille_preview}|intval|sinon{#EVAL{_ALBUMS_TAILLE_PREVIEW}|intval}|sinon{150}})][
90(#SET{recadrer,         #ENV{recadrer}|?{true,#EVAL{_ALBUMS_RECADRER}}})][
91(#SET{ids_documents,    #ARRAY})][
92(#SET{source_docs,      #ENV{id_album}|intval|?{album,
93                        #VAL{/\W/}|preg_split{#ENV*{id}}|array_filter|count|>{1}?{id,
94                        #ENV{id_article}|intval|?{article}}}})][
95
96
97(#REM) 1. ID DOCUMENTS
98
99
100][
101(#REM) «id_album»
102]<BOUCLE_album(ALBUMS){id_album}><BOUCLE_docs(DOCUMENTS){id_album}{par #ENV{par,media},titre}{tout}{media?}{si #GET{source_docs}|=={album}}
103>#SET{ids_documents,#GET{ids_documents}|push{#ID_DOCUMENT}}</BOUCLE_docs></BOUCLE_album>[
104(#REM) sinon «id_article»
105]<BOUCLE_article(DOCUMENTS){id_article}{par #ENV{par,media},titre}{tout}{media?}{si #GET{source_docs}|=={article}}
106>#SET{ids_documents,#GET{ids_documents}|push{#ID_DOCUMENT}}</BOUCLE_article>[
107(#REM) sinon «id»
108]<BOUCLE_id(CONDITION){si #GET{source_docs}|=={id}}
109>#SET{ids_documents,#VAL{/\W/}|preg_split{#ENV*{id}}}</BOUCLE_id>[
110
111
112(#REM) 2. ALBUM
113
114
115]<B_documents_album>
116[<(#HTML5|?{figure,div}) class="album vignettes figure[ (#ENV{align})][ (#ENV{classe})]">]
117        #ANCRE_PAGINATION
118        [(#GET{position_legende}|=={top}|oui)[(#GET{caption})]]
119        <ul[ (#PLUGIN{bootstrap}|oui)class='thumbnails'][ (#CONFIG{foundation/variante}|intval|>={4}|?{class='small-block-grid-2 medium-block-grid-3 large-block-grid-4',class='block-grid 4-up mobile-two-up'})]>
120                <BOUCLE_documents_album(DOCUMENTS){id_document IN #GET{ids_documents}}{tout}{pagination #GET{pagination} #VAL{album}|concat{#VAL|uniqid}}>[
121                (#SET{titre_document,      #TITRE|sinon{#FICHIER|basename}})][
122                (#SET{titre_document_long, #GET{titre_document}|concat{' - ',#TYPE_DOCUMENT,' - ',#VAL{#TAILLE|taille_en_octets},#MEDIA|=={image}|?{#VAL{' - '}|concat{#LARGEUR,'&times;',#HAUTEUR,' px'}}}})][
123                (#SET{ratio,               #VAL{/\W/}|preg_split{#ENV*{ratio,#GET{recadrer}|?{1}}}})][
124                (#SET{ratio,               #GET{ratio}|count|>{1}|?{#GET{ratio/0}|div{#GET{ratio/1}},#GET{ratio/0}}|floatval})][
125                (#SET{ratio,               #GET{ratio}|sinon{#LARGEUR|div{#HAUTEUR}}|floatval})][
126                (#SET{largeur,             #ENV{largeur}|sinon{#ENV{hauteur}|mult{#GET{ratio}}}|sinon{#GET{taille_preview}}|intval})][
127                (#SET{hauteur,             #ENV{hauteur,#GET{largeur}|div{#GET{ratio}}}|intval})][
128                (#SET{src,                 #MEDIA|=={image}|?{
129                        #GET{recadrer}|?{
130                                #FICHIER|image_passe_partout{#GET{largeur},#GET{hauteur}}|image_recadre{#GET{largeur},#GET{hauteur},center},
131                                #FICHIER|image_reduire{#GET{largeur},#GET{hauteur}}},
132                        #LOGO_DOCUMENT{icone}}
133                |extraire_attribut{src}})]
134                <li[ (#PLUGIN{bootstrap}|oui)class='thumbnail']>
135                        <a href="#FICHIER" type="#MIME_TYPE" rel="album#ID_ALBUM" class="[(#EXTENSION)][ (#PLUGIN{foundation}|oui)th]" title="[(#GET{titre_document_long}|attribut_html)]" role="button" aria-label="Vignette">
136                                [(#GET{src}|balise_img{#GET{titre_document_long},vignette}|inserer_attribut{aria-hidden,true})]
137                        </a>
138                        [(#ENV{label}|oui)[<span class="label">(#GET{titre_document})</span>]]
139                </li>
140                </BOUCLE_documents_album>
141        </ul>
142        [<div class='pagination'>(#PAGINATION{#ENV{pagination_type,page}})</div>]
143        [(#GET{position_legende}|=={bottom}|oui)[(#GET{caption})]]
144[</(#HTML5|?{figure,div})>]<!-- .album.vignettes -->
145</B_documents_album>
Note: See TracBrowser for help on using the repository browser.