Changeset 88161 in spip-zone for _plugins_/albums


Ignore:
Timestamp:
Mar 23, 2015, 7:04:09 PM (6 years ago)
Author:
tcharlss@…
Message:

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.
Location:
_plugins_/albums/trunk
Files:
2 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/albums/trunk/lang/album_fr.php

    r88157 r88161  
    9393        'label_modele_placeholder_dimension' => 'Taille en px, sans l’unité',
    9494        'label_modele_recadrer_images' => 'Recadrer les images',
     95        'label_modele_ratio' => 'Ratio des images recadrées',
     96        'label_modele_ratio_placeholder' => '16/9, 2:21, 4-3 etc.',
    9597        'label_modele_titre' => 'Afficher le titre',
    9698        'label_modele_titre_perso' => 'Titre personnalisé',
  • _plugins_/albums/trunk/modeles/album.html

    r87048 r88161  
    88        Les paramètres permettent d'afficher des éléments supplémentaires (titre, descriptif, labels), de retailler et recadrer les vignettes,
    99        de changer la position et le contenu de la légende, de changer la pagination, le tri, etc.
    10         Voir la liste complète des paramètres plus bas, et consulter le fichier `albums_options.php` pour voir les constantes de personnalisation.
    11 
    12         Comme on ne peut pas prendre en compte tous les cas de figure avec une seule boucle (pour rétro compatibilité v1), on a recours à 2 squelettes :
    13         - ce squelette sert juste à sélectionner les documents correspondants aux critères demandés (id_album, id ou id_article).
    14         - le squelette inclus est l'album à proprement parler.
     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.
    1512
    1613        Utilisation :
    17         - Dans un squelette : #MODELE{album, id_album=X}        docs de l'album n°X
    18                               #MODELE{album, id_article=X}      docs de l'article n°X
    19                               #MODELE{album, id='X,Y,Z,N'}      docs identifiés
    20         - Dans un texte     : <albumX>
    21                               <album|id_article=X>
    22                               <album|id=X,Y,Z,N>
     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>
    2320
    24 ][(#REM)
    25 
    26         Utilise :
    27                 modeles/inc-album.html
     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   
    2829
    2930][(#REM)
     
    3233                id_album          Identifiant d'un album.
    3334                titre             Pour afficher le titre de l'album ou un titre personnalisé
    34                                   valeurs : «oui» ou «true» pour le titre de l'album.
     35                                  valeurs : «oui» ou «true» pour le "vrai" titre de l'album.
    3536                                            n'importe quelle autre chaîne pour un titre personnalisé.
    3637                                  défaut  : ''
     
    3940                                  défaut  : _ALBUMS_BALISE_TITRE_VIGNETTES > _ALBUMS_BALISE_TITRE > strong
    4041                descriptif        Pour afficher le descriptif de l'album
    41                                   valeurs : n'importe quelle chaîne (oui, true...)
     42                                  valeurs : «oui» ou «true»
    4243                                  défaut  : ''
    4344                label             Pour afficher le label de chaque document
     
    5253                                  valeurs : n'importe quelle chaîne (oui, true...)
    5354                                  défaut  : _ALBUMS_RECADRER > ''
     55                ratio             Ratio utilisé pour recadrer
     56                                  valeurs : 16/9, 2:21, 4-3 etc.
     57                                  défaut  : 1
    5458                par               Tri des documents.
    5559                                  valeurs : id_document | titre | fichier | media | mode | extension | taille
     
    6973
    7074                Dépréciés, pour rétro compatibilité avec les versions antérieures :
    71                 id                sélection prédéfinie de documents, séparés par une virgule.
     75                id                sélection prédéfinie de documents, séparés par un caractère non alphanumérique.
    7276                id_article        identifiant d'un article pour sélectionner ses documents.
    7377                balise_titraille  = balise_titre
    7478                media             pour restreindre à un type de document
    7579
    76 ]#SET{ids_documents,#ARRAY}[
     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}}}})][
    7795
    78 (#REM) 1. «id_album» présent dans l'environnement
    7996
    80 ]<BOUCLE_album(ALBUMS){id_album}><BOUCLE_docs(DOCUMENTS){id_album}{par #ENV{par,media},titre}{tout}{media?}
     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}}
    81103>#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>[
    82110
    83 (#REM) 2. «id_article» donné explicitement
    84111
    85 ]<BOUCLE_article(DOCUMENTS){id_article=#ENV{args/id_article}}{par #ENV{par,media},titre}{tout}{media?}
    86 >#SET{ids_documents,#GET{ids_documents}|push{#ID_DOCUMENT}}</BOUCLE_article>[
     112(#REM) 2. ALBUM
    87113
    88 (#REM) 3. «id» donné explicitement
    89114
    90 ]<BOUCLE_id(DOCUMENTS){id_document IN (#ENV{args/id}|explode{','})}{par #ENV{par,media},titre}{tout}
    91 >#SET{ids_documents,#GET{ids_documents}|push{#ID_DOCUMENT}}</BOUCLE_id><//B_article><//B_album>[
    92 
    93 (#REM) squelette de l'album
    94 
    95 ][(#INCLURE{fond=modeles/inc-album, ids_documents=#GET{ids_documents}, env, ajax})]
     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>
  • _plugins_/albums/trunk/modeles/album.yaml

    r87043 r88161  
    9191      valeur_oui: 'oui'
    9292  -
     93    saisie: 'input'
     94    options:
     95      nom: 'ratio'
     96      label: <:album:label_modele_ratio:>
     97      placeholder: <:album:label_modele_ratio_placeholder:>
     98      afficher_si: '@recadrer@=="oui"'
     99  -
    93100    saisie: 'case'
    94101    options:
  • _plugins_/albums/trunk/modeles/album_liste.html

    r87043 r88161  
    66        Les paramètres permettent d'afficher des éléments supplémentaires (titre, descriptif, informations sur les fichiers),
    77        de changer la position et le contenu de la légende, de changer la pagination, le tri, etc.
    8         Voir la liste complète des paramètres plus bas, et consulter le fichier `albums_options.php` pour voir les constantes de personnalisation.
    9 
    10         Comme on ne peut pas prendre en compte tous les cas de figure avec une seule boucle (pour rétro compatibilité v1),
    11         on a recours à 2 squelettes :
    12         - ce squelette sert juste à sélectionner les documents correspondants aux critères demandés (id_album, id ou id_article).
    13         - le squelette inclus est le squelette de l'album à proprement parler.
     8        Des constantes de personnalisation permettent de définir des paramètres par défaut,
     9        consulter le fichier `albums_options.php` pour la liste complète.
    1410
    1511        Utilisation :
    16         - Dans un squelette : #MODELE{album_liste, id_album=X}        docs de l'album n°X
    17                               #MODELE{album_liste, id_article=X}      docs de l'article n°X
    18                               #MODELE{album_liste, id='X,Y,Z,N'}      docs identifiés
    19         - Dans un texte     : <albumX|liste>
    20                               <album|liste|id_article=X>
    21                               <album|liste|id=X,Y,Z,N>
     12        - Dans un squelette : #MODELE{album_liste, id_album=x}      docs de l'album n°x
     13                              #MODELE{album_liste, id_article=x}    docs de l'article n°x
     14                              #MODELE{album_liste, id=x-y-z-N}    docs identifiés
     15        - Dans un texte :    <albumX|liste>
     16                              <album|liste|id_article=x>
     17                              <album|liste|id=x,y,z,N>
    2218
    2319][(#REM)
     
    3834                                  défaut  : _ALBUMS_BALISE_TITRE_VIGNETTES > _ALBUMS_BALISE_TITRE > strong
    3935                descriptif        Pour afficher le descriptif de l'album
    40                                   valeurs : n'importe quelle chaîne (oui, true...)
     36                                  valeurs : valeurs : «oui» ou «true»
    4137                                  défaut  : ''
    4238                metas             Liste des infos complémentaires à afficher, séparées par un caractère non alphanumérique (virgule, tiret...)
     
    6763                media             pour restreindre à un type de document
    6864
    69 ]#SET{ids_documents,#ARRAY}[
     65][(#SET{titre_album,    #ENV{titre}|in_array{#LISTE{oui,true}}|?{#INFO_TITRE{album,#ENV{id_album}},#ENV{titre}}})][
     66(#SET{descriptif_album, #ENV{descriptif}|?{#INFO_DESCRIPTIF{album,#ENV{id_album}}}})][
     67(#SET{pagination,       #ENV{pagination}|intval|sinon{#EVAL{_ALBUMS_PAGINATION_LISTE}|intval}|sinon{#EVAL{_ALBUMS_PAGINATION}|intval}|sinon{20}})][
     68(#SET{balise_titre,     #ENV*{balise_titre}|sinon{#ENV*{balise_titraille}}|sinon{#EVAL{_ALBUMS_BALISE_TITRE_LISTE}}|sinon{#EVAL{_ALBUMS_BALISE_TITRE}}|sinon{strong}|trim|replace{^<|>$}})][
     69(#SET{position_legende, #ENV{position_legende}|sinon{#EVAL{_ALBUMS_POSITION_LEGENDE_LISTE}}|sinon{#EVAL{_ALBUMS_POSITION_LEGENDE}}|trim})][
     70(#SET{position_legende, #GET{position_legende}|in_array{#LISTE{top,bottom}}|?{#GET{position_legende},bottom}})][
     71(#SET{caption,          #GET{titre_album}|?{#GET{titre_album}|wrap{#VAL{'<'}|concat{#GET{balise_titre},' class="titre_album">'}}}
     72                        |concat{#GET{#GET{descriptif_album}}|?{#GET{descriptif_album}|wrap{<div class="descriptif_album">}}}
     73                        |wrap{#VAL{'<'}|concat{#HTML5|?{figcaption,div},' class="caption ',#GET{position_legende},'">'}}}|trim)][
     74(#SET{metas,            #LISTE{metas,infos}|array_intersect{#ENV{args,#ARRAY}|array_keys}|count|?{#ENV{metas,#ENV{infos}},#EVAL{_ALBUMS_LISTE_METAS}}})][
     75(#SET{metas,            #VAL{'/\[\W\]/'}|preg_split{#GET{metas}|in_array{#LISTE{oui,true}}|?{extension-taille-dimensions,#GET{metas}}}})][
     76(#SET{ids_documents,    #ARRAY})][
     77(#SET{source_docs,      #ENV{id_album}|intval|?{album,
     78                        #VAL{/\W/}|preg_split{#ENV*{id}}|array_filter|count|>{1}?{id,
     79                        #ENV{id_article}|intval|?{article}}}})][
    7080
    71 (#REM) 1. «id_album» présent dans l'environnement
    7281
    73 ]<BOUCLE_album(ALBUMS){id_album}><BOUCLE_docs(DOCUMENTS){id_album}{par #ENV{par,media},titre}{tout}{media?}
     82(#REM) 1. ID DOCUMENTS
     83
     84
     85][
     86(#REM) «id_album»
     87]<BOUCLE_album(ALBUMS){id_album}><BOUCLE_docs(DOCUMENTS){id_album}{par #ENV{par,media},titre}{tout}{media?}{si #GET{source_docs}|=={album}}
    7488>#SET{ids_documents,#GET{ids_documents}|push{#ID_DOCUMENT}}</BOUCLE_docs></BOUCLE_album>[
     89(#REM) sinon «id_article»
     90]<BOUCLE_article(DOCUMENTS){id_article}{par #ENV{par,media},titre}{tout}{media?}{si #GET{source_docs}|=={article}}
     91>#SET{ids_documents,#GET{ids_documents}|push{#ID_DOCUMENT}}</BOUCLE_article>[
     92(#REM) sinon «id»
     93]<BOUCLE_id(CONDITION){si #GET{source_docs}|=={id}}
     94>#SET{ids_documents,#VAL{/\W/}|preg_split{#ENV{id}}}</BOUCLE_id>[
    7595
    76 (#REM) 2. «id_article» donné explicitement
    7796
    78 ]<BOUCLE_article(DOCUMENTS){id_article=#ENV{args/id_article}}{par #ENV{par,media},titre}{tout}{media?}
    79 >#SET{ids_documents,#GET{ids_documents}|push{#ID_DOCUMENT}}</BOUCLE_article>[
     97(#REM) 2. ALBUM
    8098
    81 (#REM) 3. «id» donné explicitement
    8299
    83 ]<BOUCLE_id(DOCUMENTS){id_document IN (#ENV{args/id}|explode{','})}{par #ENV{par,media},titre}{tout}
    84 >#SET{ids_documents,#GET{ids_documents}|push{#ID_DOCUMENT}}</BOUCLE_id><//B_article><//B_album>[
    85 
    86 (#REM) squelette de l'album
    87 
    88 ][(#INCLURE{fond=modeles/inc-album_liste, ids_documents=#GET{ids_documents}, env, ajax})]
     100]<B_documents_album>
     101<div class="album liste[ (#ENV{align})][ (#ENV{classe})]">
     102        #ANCRE_PAGINATION
     103        [(#GET{position_legende}|=={top}|oui)[(#GET{caption})]]
     104        <ul class="spip">
     105                <BOUCLE_documents_album(DOCUMENTS){id_document IN #GET{ids_documents}}{tout}{pagination #GET{pagination} #VAL{album}|concat{#VAL|uniqid}}>[
     106                (#SET{extension,           #EXTENSION|strtoupper|wrap{<abbr class="extension">}|inserer_attribut{title,#VAL{medias:info_document}|_T|concat{' ',#TYPE_DOCUMENT}}})][
     107                (#SET{taille,              #TAILLE|taille_en_octets|wrap{<span class="taille">}})][
     108                (#SET{dimensions,          #MEDIA|=={image}|?{#LARGEUR|concat{' &times; ',#HAUTEUR,' px'}|wrap{<span class="dimensions">}}})][
     109                (#SET{titre_document,      #TITRE|sinon{#FICHIER|basename}})][
     110                (#SET{titre_document_long, #GET{titre_document}|concat{' - ',#TYPE_DOCUMENT,' - ',#TAILLE|taille_en_octets}})]<li>
     111                        <a href="#FICHIER" type="#MIME_TYPE" rel="album#ID_ALBUM" class="spip_doc[ (#EXTENSION|attribut_html)]" title="[(#GET{titre_document_long}|attribut_html)]">
     112                                [<span class="titre_album[ (#TITRE|non)fichier]">(#GET{titre_document})</span>] [
     113                                (#REM)]<B_metas>(<BOUCLE_metas(DATA){source table, #GET{metas}}{' <span class="sep">-</span> '}{si #GET{metas}}>[(#GET{#VALEUR})]</BOUCLE_metas>)</B_metas>
     114                        </a>
     115                </li>
     116                </BOUCLE_documents_album>
     117        </ul>
     118        [<div class='pagination'>(#PAGINATION{#ENV{pagination_type,page}})</div>]
     119        [(#GET{position_legende}|=={bottom}|oui)[(#GET{caption})]]
     120</div><!-- .album.vignette -->
     121</B_documents_album>
  • _plugins_/albums/trunk/paquet.xml

    r88152 r88161  
    22        prefix="albums"
    33        categorie="multimedia"
    4         version="3.3.0"
     4        version="3.3.1"
    55        schema="1.0.0"
    66        etat="stable"
Note: See TracChangeset for help on using the changeset viewer.