Annonce

#1 2012-03-20 17:58:49

websigns
Membre
Montpellier
2010-05-27
66

alternative à Autosize

Bonjour,
je voudrais vous présenter mon petit plugin perso qui n'a pas de nom et qui fait un peu la même chose qu'Autosize.

C'est beaucoup dire en fait car il n'y a aucune gestion des utilisateurs différents.
Il redimensionne néanmoins les images "normales" en fonction de la taille de la partie visible de la page, et ce y compris avec des formats exotiques genre panoramiques ou carrés.

Par contre il fait deux choses en plus :
- ajouter une marge en haut des fichiers plus étroits  pour les centrer dans la page.
- faire glisser la page pour afficher l'image en entier.
Avantages : c'est un plugin uniquement donc il suffit de le copier/coller dans la partie Plugin personnel du plugin LocalFiles Editor. Et du coup pas de problèmes avec les mise à jour de thème.
De plus il se désactive tout seul si Autosize est lancé. Mais avoir les deux me parait exagéré non ?

Hop le code :

Code:

if(!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
class icietla {
    function icietla_plugin()
    {
      global $template, $pwg_loaded_plugins;
    $my_autosize = '<script type="text/javascript">
          jQuery(function($){
            $(document).ready(function(){
              var $image,$elem ;
              if($("#theMainImage").length != 0){$image = $("#theMainImage")}else{$image = $("#theImage img")};      
              $elem = $image.parents("div").eq(0);
                          
              function laClass() {
                  this.imgH = $image.height();
                  this.imgW = $image.width();
                  this.elemH = $elem.height();
                  if (this.elemH < this.imgH) this.elemH = this.imgH;
                  this.offsetElem = $elem.offset();
                  this.offsetImg = $image.offset();
              };
  
              var iC = new laClass();
              var iCeH = iC.elemH;
              /* la variable suivante peut etre une valeur fixe, 600px par exemple.
              -80 est un ajustement pour le theme stripped. */
              var $containerH = $(window).height()-80;
              if (iCeH<$containerH) {
                //ajouter une marge-top
                $elem.css("margin-top", ($containerH-iCeH) / 2);
              } else if (iCeH>$containerH) {
                //reduire la taille de elem via celle de l\'image
                var $ratio = iC.imgH/iC.imgW;
                var $iCimgH = (iC.imgH*2*$containerH/iCeH)-$containerH;
                $image.width($iCimgH/$ratio).height($iCimgH);
              };
  
              var iC2 = new laClass();//l\'image à changée de dimensions, on la recharge
              var off7 = iC2.offsetImg.top-(($containerH-iC2.imgH)/2);
              if(off7 != null || off7 != 0)$("html,body").animate({scrollTop : off7},200);
            });
          });
          </script>
        ';
      if (!isset($pwg_loaded_plugins[ 'Autosize' ])){
        $template->append('footer_elements', $my_autosize);
      };
    }
    //Autres fonctions ici
} 
add_event_handler('loc_end_picture', array(icietla, 'icietla_plugin'),41,2);

C'est son doute améliorable mais déjà ça marche avec de nombreux thèmes :
sylvia, sobre, simple grey, pure grey, expo, dark, clear
demande un ajustement manuel de la hauteur : stripped (inclus ci dessus)
le script fonctionne, mais affichage défaillant : Gally graphite
Idem pour Luciano amodo mais corrigé avec le plugin « cl_conflit » 

Ce n'est pas tout !
En testant avec d'autres thèmes j'ai constaté que rien ne se passait. Et c'est peu.
En fait, et bien que jQuery fasse partie de l'installation par défaut de Piwigo, il n'est pas lancé sur la page « image » dans la plupart des cas.
Du coup voici un petit complément à ajouter à la place de « //Autres fonctions ici ».
Il charge jQuery, si ce n'est pas déjà fait et avant tout autre script. Attention : conflit avec Mootools sur certains thèmes (voir cl_conflit)

Code:

    function test_jQuery()
    {
    global $template;
      $template->func_combine_script( array(
                      'id'=> 'jquery',
                      'load'=> 'header',
                      'path'=> 'themes/default/js/jquery.min.js',
              ), $smarty);
    }

Et la fonction pour le lancer :

Code:

add_event_handler('loc_begin_page_header', array(icietla, 'test_jQuery'),1,2);

A mettre juste avant l'autre add_event_...

Voilou c'est tout.
J’espère que ça pourra servir.
N'hésitez pas à tester et donnez moi vos retours.

Hors ligne

#2 2012-03-21 10:50:34

cljosse
Former Piwigo Team
2006-11-12
1167

Re: alternative à Autosize

Bonjour.
   
Quelque points a corriger:


Notice: Use of undefined constant icietla - assumed 'icietla' in ...piwigo\plugins\PersonalPlugin\main.inc.php on line 69
correction:

Code:

array('icietla',

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method icietla::icietla_plugin() should not be called statically in ....\piwigo\include\functions_plugins.inc.php on line 161
Correction
  mettre les fonctions en  "static public "

Code:

static public function icietla_plugin()...
 static public function test_jQuery()...

Mes remarques:

Ne gère pas le redimentionnement en largeur.
   Manque de compatibilité avec le plugin Charlie's
                                      problème affichage avec certain thème (simple, montblanc, sobre...)
          position de l' image  , necessite un scroll pour afficher la barre d'outils.
       
Mais c'est un bon début... :-)

Hors ligne

#3 2012-03-21 19:41:42

websigns
Membre
Montpellier
2010-05-27
66

Re: alternative à Autosize

Notice: Use of undefined constant icietla - assumed 'icietla' in ...piwigo\plugins\PersonalPlugin\main.inc.php on line 69

Gné ?
Jamais eu cette erreur perso. Ni la suivante.

Ne gère pas le redimentionnement en largeur

Dans la mesure ou je force et la hauteur et la largeur, si. Tout les navigateurs ne gardant pas l’homothétie lors du changement d'une dimension, c'est "préférable".
Par contre je ne tiens volontairement pas compte de la largeur du viewport c'est vrais.

Au sujet de la plus ou moins grande inaccessibilité du menu c'est vrais que c'est un peu gênant mais :
- pas avec tout les thèmes. Avec Stripped c'est parfait (voir mon site).
- le but est de privilégier la visualisation de l'image. De préférence complétement.
Ca me parait être l'essentiel pour une galerie non ? Parce-que le scrolling pour toutes les images : ARG !
J'ai bien essayé de tenir compte de l'"environnement" immédiat de l'image mais il y a trop de disparité entre les thèmes pour tendre à l'universel.
Par ailleurs il est très simple d'ajuster pour un thème particulier la hauteur du scroll, c'est indiqué.
- beaucoup des thèmes testés offrent à droite et à gauche flêches ou miniatures, plus besoin du menu.
En plus j'ai découvert que Piwigo gérait la navigation au clavier, ce qu'il faudrait signaler d'ailleurs.

Le problème de l'incompatibilité partielle ou complète, visuelle ou technique avec certains thèmes est due d'une part à ce que je veux mettre en place (chose réussit pour moi) et d'autre part à un trop grand nombre de structures HTML et dénomination des objets.
On est pas loin de devoir tenir compte séparément de chaque thème ! Du coup je préfère encore aider qui voudra adapter à son thème plutôt que de me battre pour faire une usine à gaz.
C'est pourquoi aussi j'ai lancé ce sujet :[/url]http://fr.piwigo.org/forum/viewtopic.php?id=21805[/url]

Concernant Charlie's plugin, j'avoue ne pas avoir testé tout les plugins existants. Et je vais me coller au moins à celui là dès que possible.

Donc voilà, il y a du "chacun ses gouts" là dedans et ce n'est clairement pas utile pour tous.
Mais je replonge pour pister et tester plus avant.
Pourrais tu me donner plus d'indications concernant tes conditions de tests ? themes, plugins ?
De mon coté avec les thèmes testés comme bon, et mes 18 plugins : pas de problème.

Hors ligne

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact