Changeset 108715 in spip-zone for _plugins_/photoswipe


Ignore:
Timestamp:
Jan 31, 2018, 3:47:55 PM (9 months ago)
Author:
slonska@…
Message:

ajout de la possibilité d'avoir plusieurs galeries en parallèle (sur la même page)

Location:
_plugins_/photoswipe/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/photoswipe/trunk/formulaires/configurer_photoswipe.html

    r98737 r108715  
    1313                                <input type="text" name="#GET{name}" value="[(#CONFIG{photoswipe/selecteur}|sinon{'img\[data-photo\], a\[type\]'}|attribut_html)]" class="text" />
    1414                        </li>
     15                        #SET{name,conteneur}#SET{erreurs,#ENV**{erreurs/#GET{name}}}
     16                        <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
     17                                <label>Classe du conteneur des galeries automomes</label>[
     18                                <span class='erreur_message'>(#GET{erreurs})</span>
     19                                ]
     20                                <input type="text" name="#GET{name}" value="[(#CONFIG{photoswipe/conteneur}|sinon{'.photoswipe-cont'}|attribut_html)]" class="text" />
     21                        </li>
    1522                </ul>
    1623                <p class='boutons'><input class='submit' type="submit" name="_cfg_ok" value="<:bouton_enregistrer:>" /></p>
  • _plugins_/photoswipe/trunk/photoswipe_insert.js

    r100333 r108715  
    1212    var a = photoshow_identify(this),
    1313        index = 0;
    14 
     14       
    1515    if (!a) return;
     16   
     17    //On regarde si c'est une galerie indépendante
     18    var galerie = $(this).parents( photoswipe.conteneur );
     19   
     20    if(galerie.length){
     21                //Si oui, on prend uniquement les éléments qui en font partie
     22                elsgalerie=galerie.find(photoswipe.selector);
     23        } else {
     24                //Sinon, on prends tous les éléments de galerie définis dans les paramètres du plugin, mais pas ceux faisant partie d'une galerie indépendante
     25                elsgalerie=$(photoswipe.selector).filter(function(){return $(this).parents(photoswipe.conteneur).length ? false : true;});
     26        }
     27   
     28    //Si on a aucun élément à afficher, on échappe   
     29    if(elsgalerie.length===0){return false;}
    1630   
    1731    // gallery
    1832    var idx = 0;
    1933    if (photoswipe.gallery) {
    20         $(photoswipe.selector)
     34                //On sélectionne uniquement les éléments présents dans la galerie demandée
     35                elsgalerie
    2136            .each(function (i, e) {
    2237                var b = photoshow_identify(e);
     
    3651        console.log(JSON.stringify(imgs));
    3752    }
    38 
    39     photoshow_gallery(imgs, index);
     53   
     54    //Si on veut une galerie particulière, on envoie son numéro
     55    photoshow_gallery(imgs, index, galerie.data( "pswp-uid"));
    4056    return false; // interdire l'action d'un <a> englobant
    4157}
     
    104120}
    105121
    106 function photoshow_gallery(items, index) {
     122function photoshow_gallery(items, index, galerie=1) {
    107123    var pswpElement = document.querySelectorAll('.pswp')[0];
    108124
     
    115131        fullscreenEl: false,
    116132        loop: false,
     133        galleryUID: galerie, //Si pas de galerie particulière, on demande la galerie 1
    117134        addCaptionHTMLFn: function (item, captionEl, isFake) {
    118135            // item      - slide object
     
    158175
    159176function photoswipe_init() {
    160 
    161177    $.ajaxSetup({ cache: true });
    162178    $('<div>')
     
    167183$(function() {
    168184    photoswipe_init();
     185    // loop through all gallery elements and bind events
     186        var galleryElements = document.querySelectorAll( photoswipe.conteneur );
     187    for(var i = 0, l = galleryElements.length; i < l; i++) {
     188        galleryElements[i].setAttribute('data-pswp-uid', i+2); //Le numéro de la galerie doit être toujours 2 au-dessus
     189    }
     190   
    169191    if (!!$.fn.on) {
    170192      $(document).on("mouseover", photoswipe.selector, photoshow_hover);
  • _plugins_/photoswipe/trunk/photoswipe_pipelines.php

    r100333 r108715  
    2222        }
    2323       
     24        if ((include_spip('inc/config') or function_exists('lire_config')) and lire_config('photoswipe/conteneur')) {
     25                $conteneurconf = addslashes(lire_config('photoswipe/conteneur'));
     26                /*On évite les erreurs les plus courantes (plusieurs classes entrées dans les options ou id au lieu de classe).
     27                La classe peut contenir des lettres, des chiffres et les caractères _ et -*/
     28                preg_match("/(\.[-_A-Za-z0-9]+)/i", $conteneurconf, $m);
     29                //On renvoie la première classe trouvée
     30                $conteneur = $m[1];
     31        }
     32        //Si rien ne correspond au schéma d'une classe ou qu'on a pas pu lire la config, classe par défaut
     33        if(!isset($conteneur)){
     34                $conteneur = '.photoswipe-cont';
     35        }
     36       
    2437        $flux = photoswipe_insert_head_css($flux); // au cas ou il n'est pas implemente
    2538
     
    3346  path: "' . find_in_path('lib/photoswipe/'). '/",
    3447  selector: "' . $selecteur . '",
     48  conteneur: "' . $conteneur . '",
    3549  gallery: true, // galerie
    3650  debug: false, // debug
Note: See TracChangeset for help on using the changeset viewer.