Changeset 104114 in spip-zone for _plugins_/centre_image/trunk


Ignore:
Timestamp:
Apr 27, 2017, 10:42:43 PM (23 months ago)
Author:
marcimat@…
Message:

On tente de se rendre compatible avec la présence du plugin Accès Restreint.
Ce dernier

  • utilise des URLs absolues sur les documents dans l'espace privé,
  • ajoute un token à ces URLs (inutile pour l'utilisation par Centre Image)

On essaie de prendre ces 2 problèmes en charge.

Cependant il y a un autre souci dans le core actuellement avec url_de_base() depuis r23077 qui fait que ça ne fonctionne pas parfaitement encore partout, mais tout est prêt. Un revert du commit en question et ça fonctionne :)

Location:
_plugins_/centre_image/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/centre_image/trunk/action/centre_image_forcer.php

    r97747 r104114  
    66function action_centre_image_forcer() {
    77        $fichier = $_GET["url"];
     8
     9        include_spip('centre_image_fonctions');
     10        $fichier = centre_image_preparer_fichier($fichier);
     11        // pas de ../
     12        $fichier = str_replace('../', '', $fichier);
     13
    814        // image uniquement présente dans _DIR_IMG
    915        if (strpos(_DIR_RACINE . $fichier, _DIR_IMG) === 0) {
     
    2127                }
    2228        }
    23 
    24 
    2529}
  • _plugins_/centre_image/trunk/centre_image_fonctions.php

    r94378 r104114  
    3636
    3737/**
     38 * Calcule le chemin correct théorique du fichier
     39 *
     40 * - extrait l'URL d'une éventuel attribut 'src' d'une balise
     41 * - passe en url relative si c'était en absolu
     42 * - enlève un timestamp ou un token éventuel (accès restreint)
     43 *
     44 * @param string $fichier
     45 * return string
     46 */
     47function centre_image_preparer_fichier($fichier) {
     48        // nettoyer le fichier (qui peut être dans un <img>)
     49        if (preg_match("/src\=/", $fichier)) {
     50                $fichier = extraire_attribut($fichier, "src");
     51        }
     52
     53        // Enlever timestamp ou token
     54        $fichier = array_shift(explode('?', $fichier, 2));
     55
     56        // si URL absolue de l'image, on passe en relatif
     57        if (tester_url_absolue($fichier)) {
     58                $url_site = url_de_base();
     59                if (strpos($fichier, $url_site) === 0) {
     60                        $fichier = substr($fichier, strlen($url_site));
     61                }
     62        }
     63
     64        return $fichier;
     65}
     66
     67/**
    3868 * Retourne les coordonnées du point d'intérêt de l'image transmise
    3969 *
     
    5080        static $spip_centre_image = array();
    5181
    52         // nettoyer le fichier (qui peut être dans un <img> ou qui peut être daté)
    53         if (preg_match("/src\=/", $fichier)) $fichier = extraire_attribut($fichier, "src");
    54         $fichier = preg_replace(",\?[0-9]*$,", "", $fichier);
     82        $fichier = centre_image_preparer_fichier($fichier);
    5583
    5684        // on mémorise le résultat -> don
     
    159187function centre_image_visage($fichier) {
    160188        static $spip_centre_image_visage = array();
    161         if (preg_match("/src\=/", $fichier)) {
    162                 $fichier = extraire_attribut($fichier, "src");
    163         }
    164         $fichier = preg_replace(",\?[0-9]*$,", "", $fichier);
     189
     190        $fichier = centre_image_preparer_fichier($fichier);
    165191
    166192        // on mémorise le résultat -> don
  • _plugins_/centre_image/trunk/centre_image_gestion.js

    r103169 r104114  
    1212                        stop: function(event, ui) {
    1313                                var lien = el.attr("href");
    14                                 var url = lien.replace(/^\.\.\//, '')
     14                                var url = lien.replace(/^\.\.\//, '');
     15                                url = url.split('?').shift();
    1516
    1617                                var x = ui.position.left / el.find("img.img_source").width();
     
    4041
    4142jQuery.fn.centre_images = function() {
    42         $(this).find("a[href$=jpg].hasbox, a[href$=png].hasbox, a[href$=gif].hasbox").each(function () {
     43        var images = $(this).find("a[href$=jpg].hasbox, a[href$=png].hasbox, a[href$=gif].hasbox, a[type='image/jpeg'].hasbox, a[type='image/png'].hasbox, a[type='image/gif'].hasbox");
     44        images.each(function () {
    4345                // recuperer l'URL sans les ../
    4446                var lien = $(this).attr("href");
    45                 var url = lien.replace(/^\.\.\//, '')
     47                var url = lien.replace(/^\.\.\//, '');
     48                url = url.split('?').shift();
    4649
    4750                if ($(this).parents(".spip_documents").length == 0) {
     
    5053
    5154                $.getJSON("../index.php?page=centre_image_json&url=" + url,
    52                         {lien: lien},
    5355                        function (data) {
    5456                                var el = $("a[data-href='" + url + "']");
     
    6264
    6365jQuery.fn.centre_images_rafraichir = function() {
    64         $(this).find("a[href$=jpg].hasbox, a[href$=png].hasbox, a[href$=gif].hasbox").each(function () {
     66        var images = $(this).find("a[href$=jpg].hasbox, a[href$=png].hasbox, a[href$=gif].hasbox, a[type='image/jpeg'].hasbox, a[type='image/png'].hasbox, a[type='image/gif'].hasbox");
     67        images.each(function () {
    6568                centre_image_calculer_croix($(this));
    6669        });
  • _plugins_/centre_image/trunk/paquet.xml

    r103714 r104114  
    22        prefix="centre_image"
    33        categorie="multimedia"
    4         version="0.9.2"
     4        version="0.10.0"
    55        etat="dev"
    66        compatibilite="[3.0.19;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.