SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Administration > Le Couteau Suisse

Des blocs dépliables

dimanche 6 janvier 2008, par mj, Patrice Vanneufville. Dernier ajout lundi 21 avril 2008


Cet outil du Couteau Suisse vous permet de créer des blocs dont le titre cliquable peut les rendre visibles ou invisibles, et de les munir d’une adresse pour que le bloc visible soit récupéré en AJAX


Présentation

Cet outil vous permet de créer des blocs dont le titre cliquable peut les rendre visibles ou invisibles. Vous pouvez les insérer directement dans le texte de vos articles ou dans vos squelettes (fichiers .html).

- Dans les textes SPIP : les rédacteurs ont à disposition les nouvelles balises <bloc> (ou <invisible>) et <visible> à utiliser dans leurs textes comme ceci :

<bloc>
Un titre qui deviendra cliquable

Le texte à cacher/montrer, après deux sauts de ligne...
</bloc>

• Résumé

Pour qu’un résumé puisse alterner avec le contenu du bloc initialement caché, utiliser les balises <resume></resume> après le double saut le ligne comme ceci :

<bloc>
Le titre

<resume>Un résumé</resume>
Le contenu du bloc plu développé

- Dans les squelettes : vous avez à votre disposition les nouvelles balises #BLOC_TITRE, #BLOC_RESUME, #BLOC_DEBUT et #BLOC_FIN à utiliser comme ceci :

#BLOC_TITRE
Mon titre
#BLOC_RESUME
Le résumé de la suite
#BLOC_DEBUT
Mon bloc dépliable
#BLOC_FIN

• Résumé

La balise #BLOC_RESUME est facultative. En cas d’utilisation, le résumé entre #BLOC_RESUME et #BLOC_DEBUT sera masqué lorsque le bloc est rendu visible.

Toutefois, seul le titre reste cliquable.

• Ajax

Pour utiliser Ajax, il faut préciser l’URL à charger grâce à la balise #BLOC_TITRE{mon_URL} à laquelle vous ajoutez un paramètre. Le fichier (ou l’adresse) pointée par l’url sera alors chargée dans le BLOC (entre #BLOC_DEBUT et #BLOC_FIN) avant que le bloc ne soit rendu visible.

Installation

L’outil décrit ici est une fonctionnalité du plugin « Le Couteau Suisse » que vous pouvez trouver ici : Le Couteau Suisse.

Pour avoir accès aux raccourcis et aux balises décrits dans cet article, il vous faut donc avoir préalablement installé ce plugin en suivant la procédure normale d’installation des plugins SPIP.

Ensuite, veuillez activer l’outil « Blocs Dépliables » en vous rendant sur la page d’administration du plugin en espace privé (Bouton Configuration, et onglet "Le Couteau Suisse").

Une fois cet outil activé, vous aurez enfin la possibilité d’insérer dans vos articles ou dans vos squelettes des blocs dépliables/repliables.

Dépendances

Cet outil a besoin de la librairie jQuery. Le site officiel (en anglais) est : http://jquery.com/. D’autres informations sont disponibles en français ici : http://www.jquery.info/. Cette librairie de fonctions Javascript a été complètement intégrée dans SPIP à partir de la version 1.92. Pour les versions antérieures, il vous faudra installer un plugin spécifique que vous pouvez télécharger ici : http://files.spip.org/spip-zone/jqu....

Personnalisation des blocs

Les CSS doivent être ajoutées dans le fichier habituel de vos squelettes. En ce qui concerne la dist SVN de SPIP, il s’agit du fichier "habillage.css". On le surcharge souvent à la racine du squelette utilisé pour le site.

Il y a une autre possibilité encore, celle de surcharger directement le fichier plugins/couteau_suisse/outils/blocs.css.html en le recopiant dans monsquelette/outils/blocs.css.html et en y modifiant les styles proposés ou en y ajoutant vos propres styles.

Attention : toute modification d’un fichier surchargé nécessite une recompilation des outils du Couteau suisse, obtenue en se rendant simplement sur la page de configuration du plugin ou en réaffichant celle-ci.

Un bloc <bloc> est construit comme ceci :

<div class="cs_blocs"><h4 class="blocs_titre blocs_replie"><a href="#">un titre</a></h4><div class="blocs_invisible">le contenu</div></div>

Si l’on veut en modifier l’apparence, il suffit donc de déclarer un style perso comme ceci :

div.cs_blocs>div {
        border:solid 2px;
}

h4.blocs_titre, h4.blocs_replie {
        background:transparent none;
}

Dans cet exemple, tous les <bloc> auront un cadre noir autour du contenu et les tous les titres de blocs repliables h4 seront privés de leur petit triangle.

Pour y voir plus clair, je conseille toujours de débuguer son site avec FireFox et l’excellente extension FireBug. On peut y gérer les CSS et débugger le JS à la volée, c’est très pratique.

Blocs numérotés

Vous avez la possibilité d’ajouter un numéro à vos raccourcis, afin de mieux cibler l’apparence que vous pourriez donner à vos blocs dépliables. En utilisant par exemple <bloc2> (ou <invisible2> ou <visible2>), la classe « cs_bloc2 » sera ajoutée au bloc <div principal :

<bloc2>
Un titre qui deviendra cliquable

Le texte à cacher/montrer, après deux sauts de ligne...
</bloc2>

Ce bloc <bloc2> est construit comme ceci :

<div class="cs_blocs cs_bloc2"><h4 class="blocs_titre blocs_replie"><a href="#">un titre</a></h4><div class="blocs_invisible">le contenu</div></div>

si l’on veut en modifier l’apparence, il suffit donc de déclarer un style perso comme ceci :

div.cs_bloc2>div {
        border:solid 2px;
}

div.cs_bloc2 h4.blocs_titre, div.cs_bloc2 h4.blocs_replie {
        background:transparent none;
}

Dans cet exemple, tous les <bloc2> auront un cadre noir autour du contenu et seuls les titres de ces blocs h4 seront privés de leur petit triangle.

Déplier un bloc au chargement de la page

Cela peux se faire directement en jQuery (code Javascript à insérer dans votre squelette) en simulant un clic de souris.

La fonction eq(index) permet de choisir le bloc à déplier, sachant que la variable index commence à zéro. L’exemple suivant déplie le premier bloc de la page :

jQuery(document).ready(function() {
        jQuery('h4.blocs_titre').eq(0).click();
});

Répondre à cet article

  • Salut, je cherche actuellement a implémenter le comportement d’animation lors de l’apparition des blocs dans le plugin bloc dépliables du couteau suisse.

    Exemple ici : http://www.dynamicdrive.com/dynamicindex17/animatedcollapse.htm

    Existe t-il actuellement une solution a mon problème ?

    Si cela a déjà été fait je ne l’ai pas trouvé :(. SI j’y arrive je vous tiens au courant.

    Répondre à ce message

    • Les blocs fonctionnent à l’aide de classes css, donc sans effet prévu. Il faut chercher du côté de jQuery, utilisé par SPIP et par le Couteau Suisse : des fonctions toutes prêtes existent. A voir comment rester compatible avec le basculement résumé/contenu...

      Répondre à ce message

      • c’est possible mais ca exige de modifier le code dans blocs.js. Je n’ai pas le temps de m’y coller cette semaine, mais c’est une voie a explorer.

        Ca exigera de toute façon quelques lignes de javascript et/ou de jquery a la charge du webmestre, donc ca concernera moins de gens.

        Répondre à ce message

    Retour au début des forums

  • Des blocs dépliables

    23 avril 2008 20:23

    ah flute depuis la svn 500 c’est tout cassé

    Répondre à ce message

    Retour au début des forums

  • Version 1.7.17.04 Blocs ne fonctionnenet plus

    20 avril 2008 13:02, par rcaron

    Depuis la mise à jour 1.7.17.04, les blocs dépliables ne fonctionnent plus chez moi.

    Une aide ?

    Merci

    Répondre à ce message

    Retour au début des forums

  • Des blocs dépliables

    5 mars 2008 22:51, par michel

    Salut, super développement, ca donne un coté très dynamique aux pages.

    J’avais commencé de mon coté un truc beaucoup moins élégant, qui dépliait un article mais avec une grosse différence. L’article (le bloc "replié") n’était pas chargé, mais se chargeait avec AJAX au moment où l’utilisateur dépliait le bloc . C’est sans intérêt pour les "petits" articles, mais bien sur passionnant pour les articles longs (une bonne page, voire plusieurs). Je serait content d’adapter (jquery fait ca très bien). Ou commencer pour pouvoir tripoter le code ? :-(

    Cordialement

    MJ

    Répondre à ce message

    • Des blocs dépliables 6 mars 2008 13:10, par Pat

      Ah oui, c’est une voie super intéressante. Les fichiers qui gèrent les blocs sont :

      - outils/blocs.css.html (styles)
      - outils/blocs.js (jquery)
      - outils/blocs.php (outil "blocs dépliables")
      - outils/blocs_fonctions.php (balises)

      Il y a aussi la déclaration de l’outil, dans config_outils.php (ligne 775), les chaines de langue, dans lang/desc_fr.php (ligne 439) et bien sûr le présent article à compléter !

      N’hésite pas à nous tenir au courant de tes travaux.

      Répondre à ce message

      • Des blocs dépliables 14 mars 2008 19:36, par nathbni

        Moi, ce que je cherche à faire, c’est utiliser ce code génial pour afficher les articles en 2 temps :

        1/ quand on accède à une rubrique, on affiche la liste des articles (avec titre ; date de publication ; nom de l’auteur et texte d’intro). Classique, quoi.

        2/ au clic sur l’un de ces items, on fait apparaitre l’intégralité de l’article.

        Sauf que, quand je déroule, je me retrouve avec le début de l’article écrit 2 fois... Comment faire pour remplacer le résumé du texte par son intégral ?

        Euh... Je ne sais pas si je suis très claire, là.

        J’ai vu un très beau script sur http://www.beseen-communication.com/spip.php ?rubrique5

        Est-ce quelqu’un a une piste ? Merci d’avance !

        Répondre à ce message

        • Des blocs dépliables 14 mars 2008 23:48, par Patrice Vanneufville

          Ton code est peut-être à revoir ? A l’intérieur d’une boucle ARTICLES, ce devrait ressembler, en gros, à :

          #BLOC_TITRE
          #TITRE
          #BLOC_DEBUT
          #TEXTE
          #BLOC_FIN

          Répondre à ce message

          • Des blocs dépliables 15 mars 2008 12:40, par nathbni

            Merci pour ta réponse. J’ai regardé mais dans ce que tu proposes, je perds le résumé de l’article (les x premiers mots, quoi). Or, je voulais présenter le début de l’article dans un premier temps et, au clic, le remplacer par l’intégral (ce qui se fait en DHTML mais je crois qu’on n’a pas droit au javascript dans SPIP).

            Répondre à ce message

            • Des blocs dépliables 16 mars 2008 00:45, par Pat

              Je vois ce que tu dis. Il faudrait là directement programmer en jQuery la fonctionnalité que tu cherches, car les blocs dépliables du Couteau Suisse ne peuvent pas aujourd’hui déplier un bloc tout en faisant disparaitre un autre.

              Répondre à ce message

              • Des blocs dépliables 16 mars 2008 09:15, par nathbni

                Ok, et bien je m’incline. Je ne peux pas m’empêcher d’en demander toujours plus ! Quand j’aurai la maîtrise de SPIP, je m’attaquerai à jQuery (non, je rigole ( :-D> En tout cas merci beaucoup. Je vais trouver une parade.

                Répondre à ce message

        • Des blocs dépliables 16 avril 2008 13:03, par Patrice Vanneufville

          Finalement, Michel a intégré le résumé pour les blocs dépliables dans les squelettes. Peut-être ça t’intéresse toujours. Ceci est précisé ci-dessus.

          A suivre bientôt pour l’intérieur des articles...

          Répondre à ce message

    • Des blocs dépliables 4 avril 2008 12:01, par Pierre

      Salut, très intéressante l’option d’intégrer un load sur le click de ces blocs ! du nouveau ?

      Répondre à ce message

      • Des blocs dépliables 4 avril 2008 12:11, par Michel

        salut, j’arrive a faire marcher cela chez moi, mais je me sers
        - d’un "modèle"
        - et d’une balise.

        je ne sais pas comment publier ca dans le couteau suisse, que faut-til faire ? envoyer les fichiers modifiers ?

        Répondre à ce message

        • Des blocs dépliables 4 avril 2008 12:25, par Pierre

          je pense que le coutelier va se manifester...

          en tout cas j’ai hâte d’essayer ça, pas sûr que celà s’adapte à mes besoins car j’ai déjà une pagination dans le bloc... tu peux m’envoyer le bidule ? tu as une url où on peut le voir en action ?

          merci pour le boulot

          Répondre à ce message

        • Des blocs dépliables 4 avril 2008 13:39, par Pat

          oui, je pense que c’est une bonne méthode. On pourrait implémenter un raccourci du genre <bloc|ajax=monbloc2> qui irait chercher le modèle monbloc.html, cliquable en ajax. SPIP 1.93 a déjà fait un pas en direction d’ajax...

          Pour les squelettes, pareil avec #BLOC_TITRE{monbloc2} par exemple...

          Répondre à ce message

          • Des blocs dépliables 5 avril 2008 00:10, par Michel

            pour l’instant je ne me suis pas plongé dans les racourcis. j’ai juste écrit une pseudo balise #BAJAX{xxx} qui fonctionne comme "modele", et le javascript.

            Dans le modele xxx on a 3 div consécutives
            - une div pour le titre avec le href du fragment (actuellement, contient le titre de l’article)
            - une div "résumé" (actuellement, contient le chapo ou l’introduction)
            - une div "fragment". (qui contiendra l’article complet)

            le jscript est activé quand on clique le titre et
            - load en ajax le fragment référencé dans le href et le met dans la div fragment,
            - masque la div "résumé"
            - et montre la div fragment.

            C’est donc tout bête. Par contre c’est "sale" je ne sais pas ou poser le modèle (dans le couteau suisse ? dans les squelettes ? ....) je n’ai pas encore eu le temps de tester comme "raccourci" dans un article (mais ca pose des tas de pbs : si c’est un raccourci dans un article, quelle syntaxe pour le bloc résumé ? pour le fragment à loader ??? on laisse tout ca au modèle en lui passant l’id_article... ?)

            mes deux sous, pour l’instant ca n’est publiable qu’en modifiant le couteau suisse, je l’ai fait chez moi, c’est encore en test, mais comment le passer à la communauté sans "massacrer" le couteau suisse ?

            Répondre à ce message

            • Des blocs dépliables 5 avril 2008 00:37, par Patrice Vanneufville

              le plus simple pour tester un truc c’est de faire une lame perso (doc ici) dans un premier temps. les modelès sont en général dans : modeles/. Le Couteau Suisse utilise aussi certains fonds dans : fonds/

              Répondre à ce message

              • Des blocs dépliables 5 avril 2008 06:02, par Michel

                Farpait la lame personnalisée à la volée. Pour publier il suffit donc d’envoyer :
                - la config d’outil que voila

                add_outil( array(
                        'id' => 'bajax',
                        'categorie'        => 'public',
                        'contrib' => 2583,
                        'jquery'        => 'oui',
                ));

                - plus la pseudo balise bajax que voici (dans bajax_fonctions.php)

                function balise_BAJAX($p) {

                        // Appeler la balise #MODELE{emb}{arguments}
                       
                        if (!function_exists($f = 'balise_modele'))
                                $f = 'balise_modele_dist';

                        return $f($p);
                }

                - le javascript que voici (dans bajax.js)

                if (window.jQuery) jQuery(function(){
                        // clic sur un outil
                jQuery('h4.bajax_titre').click(
                        function() {
                                jQuery(this).toggleClass('blocs_replie') /* marque la div pliée ou pas */
                                .next().toggleClass('blocs_invisible')        /* rend invisible la div "resume" */
                                .next().toggleClass('blocs_invisible')         /* rend visible la div du fragment à charger */              .load(jQuery(this).attr("href"))                /* charge le href pointé */
                                ;
                                // annulation du clic
                                return false;
                        });
                });

                - et enfin le "modèle" que voila (mon titre est "bloc.html")

                <BOUCLE_a1(ARTICLES){id_article}>
                <h4 class="bajax_titre blocs_replie" href="#URL_SITE_SPIP/spip.php?page=fragment&id_article=#ID_ARTICLE" >[(#TITRE*)]</h4>
                <DIV class="">
                [<div class="contenu">(#CHAPO|couper{80})</div>]
                [<div class="contenu">(#TEXTE*|couper{100})</div>]
                </DIV>
                <DIV class="blocs_invisible ">
                        <img src="IMG/ajax-loader.gif" width="16" height="16">
                <DIV>
                </BOUCLE_a1>

                - reste le "fragment" (fragment.html) qui remplit le bloc ajax, et le voici.

                #HTTP_HEADER{'Content-type: text/css'}
                <BOUCLE_acc(ARTICLES) {ID_article=#ENV{id_article}}>
                [<div class="chapo">(#CHAPO)</div>]
                [<div class="contenu">(#TEXTE)</div>]
                </BOUCLE_acc>

                Ca s’appelle dans les squelettes en faisant

                #BAJAX{bloc}

                Si on essaie de publier tout ca dans le couteau suisse,
                - Ou pensez-vous qu’il faille placer le(les) modèles qui vont avec ? dans un sous-rep modeles du couteau suisse ?
                - il faut une convention de nommage, des fichiers (bloc et fragment) genre bajax_fragment, bajax_blocs ?
                - il faut une convention de nommage des styles css, genre bajax_titre (le reste est pompé honteusement des blocs repliables).

                Ca fait pas mal de taf encore. Reste encore le problème des raccourcis dans un texte d’article. le rédacteur a l’habitude d’écrire

                <bloc>
                Un titre qui deviendra cliquable

                Le texte à cacher/montrer, après deux sauts de ligne...
                </bloc>

                Il faudrait lui faire faire quelque chose comme

                <bajax>
                un titre cliquable

                le résumé

                l'adresse du fragment ajax?? ou du texte déja la ??? ou un numéro d'article ??
                </bajax>

                ou bien alors qq chose comme

                <bajax|modelemachin|id_article>
                Le titre

                Le texte qui disparaitra
                </bajax>

                donc petit pb de syntaxe et de conception que je n’arrive pas à traiter "intelligemment". Si l’un de vous a une idée géniale....

                Répondre à ce message

                • Des blocs dépliables 5 avril 2008 19:28, par Patrice Vanneufville

                  Merci pour ce travail. QQ questions :
                  - Ne serait-ce pas plus judicieux d’étendre les blocs dépliables plutot que de créer une nouvelle lame ?
                  - Ne pourrait-on pas réunir les deux modèles en un seul avec, peut-être, un test sur #ENV ? Ce modèle renverrait soit la version résumée, soit la version complète...
                  - Comment gérer la petite flèche si un résumé est présent à la place du texte non déplié... L’as-tu gardée telle quelle ?
                  - Pour les articles, j’ai proposé plus haut la syntaxe <bloc|ajax=monbloc2> qui irait chercher l’unique modèle monbloc.html (peut-être ça serait mieux d’utiliser un fond en fait)
                  - Pour les balises, pareil : #BLOC_TITRE{monbloc2} ou carrément #BLOC_AJAX{monbloc2} à la place de #BLOC_DEBUT et #BLOC_FIN.
                  - Pour un résumé inline, on pourrait ajouter une balise facultative #BLOC_RESUME avec une utilisation du genre (sans ajax) :

                  #BLOC_TITRE
                  Mon titre
                  #BLOC_RESUME
                  Mon résumé qui disparait si on clique
                  #BLOC_DEBUT
                  Mon bloc dépliable
                  #BLOC_FIN

                  ou (avec ajax) :

                  #BLOC_TITRE
                  Mon titre
                  #BLOC_RESUME
                  Mon résumé qui disparait si on clique
                  #BLOC_AJAX{monbloc2}

                  Répondre à ce message

                  • Très judicieux tout ca.
                    - étendre BLOC est effectivement plus logique que de créer encore un truc.
                    - Ta syntaxe est plus générale que la mienne, mais on peut encore la simplifier je pense genre

                    #BLOC_TITRE{fragment} /* fragment si ajax, pas de fragment sinon */
                    Mon titre
                    #BLOC_RESUME           /* facultatif */
                    Mon résumé qui disparait si on clique
                    #BLOC_DEBUT
                    Mon bloc dépliable        /* qui est aussi l'emplacement pour l'Ajax si le fragment est donné */
                    #BLOC_FIN

                    si {fragment} est présent, il faut charger l’ajax, sinon, pas la peine. Il faut juste décider si (fragment) fait disparaitre Mon bloc dépliable ou alors se met avant/après.

                    - Je n’ai pas du tout géré la pitite flèche (honte à moi...) Mais on peut la laisser telle quelle : replié=résumé, déplié=ajax.
                    - je ne comprends pas très bien la différence entre "modèle" et "fond"
                    - la syntaxe dans un article pourrait être :

                    <bloc|ajax=fragment>
                    Un titre qui deviendra cliquable

                    Le texte à cacher/montrer, après deux sauts de ligne.../* ou le résumé qui sera remplacé par le fragment si l'argument "ajax" est rempli */
                    </bloc>

                    je veux bien avec ton autorisation aller tripoter le javascript et les balises mais je suis un peu dépassé par les pipelines dans le texte des articles.... Et il faut encore que je finalise vraiment comment faire une lame perso du couteau suisse.
                    - reste un problème que je ne sais pas gérer (en ce moment c’est le boxon...) :

                    Ou doit-on placer le "fragment" utilisé, dans le cadre d’une distribution avec le couteau suisse ? un dossier "modele" dans le couteau suisse ? parce que sinon, on va crouler sous les demandes "ou dois-je mettre le fichier ’bloc.html’" (ca commence déjà…) et en plus çà ne sera pas du tout immédiat à distribuer en plugin......

                    Je commence cet am (dimanche pour moi....)

                    très intéressé par l"échange en tout cas.

                    Répondre à ce message

                    • Des blocs dépliables avec ajax facultatif (vive l’unification !) 6 avril 2008 13:39, par Patrice Vanneufville

                      J’ai l’impression qu’avec ta vision de la chose, on ne peut pas choisir le fichier html qui sera appelé par le hit ajax... Doit-on forcément le limiter à bloc.html ?

                      Il faudrait sans doute se caler un peu sur les travaux de SPIP à propos des noisettes ajax (fond/ajax). On va donc rester sur l’idée des fonds. La notion des fragments a été abandonnée.

                      Le code du Couteau Suisse est libre de manipulation grâce à SVN, avec toutes ces bonnes idées, n’hésite pas ;-)

                      Pour le fichier (ou les fichiers ?) html, on pourrait proposer par défaut d’insérer le contenu d’un article dans le bloc appelé par ajax, ou pkoi pas d’une brève... Il faut trouver une façon générique de proposer la chose, quitte à ce que les utilisateurs fabriquent leurs propres fonds à l’image de ces exemples...

                      Répondre à ce message

                      • heu... me trompje ou n’est ce pas équivalent à ce devraient faire les liens ajaxés ? je dis devraient parce que je ne suis pas arrivé à les faire fonctionner, ça semble extrêmement simple d’utilisation pourtant, si quelqu’un a des infos je suis preneur

                        http://www.spip.net/ecrire/ ?exec=articles&id_article=3753&bonjour=oui

                        Répondre à ce message

                        • Salut Pierre je ne connais rien aux liens ajaxés et ton lien est inutilisable pour moi :-(

                          On a bien travaillé avec Patrice et toi je suppose. Je me penche dès que possible sur SVN pour essayer de publier ca dans le couteau suisse, mais la partie "bloc dépliable dans les articles" n’aura pas changé.

                          a bientot

                          Répondre à ce message

                          • salut,

                            rebravos et remille mercis à vous deux pour ce boulot de nuit, c’est vraiment un super lame, je vais m’en servir plus encore que du tire bouchon, c’est dire !!

                            pour le lien je ne sais pourquoi le forum a mis un espace après le slash, c’est dans l’espace privé de spip.net, ajax à tous les étages, enfin presque, on monte pas encore aux liens ajaxés semble t-il...

                            bon dimanche

                            Répondre à ce message

                            • SPIP corrige la typo française et met systématiquement un espace devant le point d’interrogation, c’est comme ça ! J’en profite donc pour dire que le Couteau Suisse empêche cette correction dans les liens comme ça : outil "Belles URLs"

                              Dès que Michel aura commité son code, les blocs seront en effet ajaxables, et, cerise sur le gâteau, ajax ou non, un texte de résumé qui disparaît après le premier clic pourra être aussi ajouté.

                              Nous adapterons la doc en conséquence. Michel, as-tu un compte ici ? Je peux te donner les droits pour retoucher l’article.

                              Répondre à ce message

                              • Voila c’est fait, merci de tester

                                Normalement les blocs sont
                                - Ajaxables
                                - Avec résumé
                                - ou même sans résumé.

                                Bonne utilisation

                                Michel

                                Répondre à ce message

                                • Test négatif avec AJax 17 avril 2008 16:45, par Perig

                                  17 avril. Je viens de télécharger la dernière version sur la zone (Revision : 20015).

                                  Sur Spip 1.9.3 SVN [11455], Ajax ne fonctionne pas.

                                  Quand je clique sur le lien, le bloc RESUME disparait mais le bloc DEBUT n’apparaît pas (visiblement, ça ne charge pas).

                                  J’utilise bien la balise #BLOC_TITREmon_URL. Si j’enlève mon_URL, tout est ok, mais sans ajax...

                                  Répondre à ce message

                                  • Test négatif avec AJax 17 avril 2008 17:17, par Pierre T

                                    première chose à faire : réinitialiser le couteau dans l’espace privé (désactiver, réactiver), supprimer les dossier tmp/cache et tmp/couteau_suisse

                                    si le problème persiste c’est que tu as un un problème avec ton url

                                    Répondre à ce message

                                    • Test négatif avec AJax 17 avril 2008 21:22, par mj

                                      Je pense que ton url est fausse (le plus probable). si tu es sur firefox, télécharge et installe Firebug il te permettra de voir ce qui est chargé ou pas.

                                      Répondre à ce message

                                    • Test négatif avec AJax 18 avril 2008 02:12, par Pat

                                      Pour recompiler le Couteau Suisse, il suffit simplement d’afficher/actualiser la page de config du plugin.

                                      Répondre à ce message

                                      • Test avec AJax 18 avril 2008 11:36, par Perig

                                        Effectivement, l’URL était mauvaise et tout fonctionne... C’est merveilleux.

                                        Cependant, si j’tuilise le bloc dépliable ajaxé dans une liste d’articles avec une pagination elle-même ajaxée, le bloc invisible ne se déplie pas quand je clique, mais mon navigateur ouvre une nouvelle page avec le contenu du bloc.

                                        Pour la pagination ajaxée, j’utilise les recommandations de l’article Ajax à tous les étages sur Spip.net.

                                        Si j’enlève ajax de la pagination, tout fonctionne à nouveau.

                                        Répondre à ce message

                                        • Test avec AJax 18 avril 2008 12:31, par Pat

                                          Si tu veux bien nous donner le code utilisé de ton squelette, on pourrait reproduire la chose de notre côté.

                                          Rappel : le code se note entre les balises <code> et </code>

                                          Répondre à ce message

                                          • Test avec AJax 18 avril 2008 13:55, par Perig

                                            Le problème est visible sur cette page de test (équivalente à une page sommaire basique). Pagination en ajax et blocs dépliables akaxés.

                                            http://fil.anamzer.net/ ?page=test_ajax

                                            Au premier accès, la pagination est donc à 0. En cliquant sur "résumé", le bloc se déplie correctement et l’appel sur la base se fait correctement.

                                            La pagination en ajax recharge normalement mais dès qu’on l’a utilisé, si on clique sur "résumé, le chargement se fait dans une autre page.

                                            La pagination est appelée par un "inclure" :

                                            <INCLURE{fond=noisettes/sommaire_articles}{ajax}>

                                            Dans la noisette "sommaire_articles", le code est le suivant :

                                                            <B_articles_recents>
                                                            <div class="menu articles">
                                                                    [(#ANCRE_PAGINATION)]
                                                                    <h2><:derniers_articles:></h2>
                                                                    <ul>
                                                                            <BOUCLE_articles_recents(ARTICLES) {par date_redac}{inverse} {pagination}>
                                                                            <li class="hentry">
                                                                                    <h3 class="entry-title">
                                                                                            <BOUCLE_source(SYNDIC){id_syndic}>
                                                                                            <a href="#URL_SITE">[(#LOGO_SITE|left|image_reduire{70,70})]</a>
                                                                                            </BOUCLE_source>
                                                                                            <a href="#URL_ARTICLE" rel="bookmark">#TITRE</a>
                                                                                    </h3>
                                                                                    <small>
                                                                                    <p><abbr class="published"[ title="(#DATE|date_iso)"]>
                                                                                            <strong><BOUCLE_le_jour(RUBRIQUES){titre=#DATE_REDAC|affdate{"Y-m-d"}}><a href="#URL_RUBRIQUE"></BOUCLE_le_jour>[(#DATE_REDAC|affdate{"Y-m-d"}|=={[(#ENV{date}|affdate{"Y-m-d"})]}|?{Aujourd'hui &agrave; [(#DATE_REDAC|heures)] h [(#DATE_REDAC|minutes)],
                                                                                            [(#DATE_REDAC|affdate{"j"}|=={[(#EVAL{date('j')-1})]}|?{Hier,[(#DATE_REDAC|nom_jour)] [(#DATE_REDAC|affdate_jourcourt)]})]})]</a>.</strong> </abbr> <a href="?site[(#ID_SYNDIC)]">#NOM_SITE</a>
                                                                                    </p>
                                                                                    <B_mots><p><BOUCLE_mots(MOTS){id_article}{"|"}>
                                                                                    <a href="#URL_MOT" rel="bookmark">#TITRE</a>
                                                                                    </BOUCLE_mots></p></B_mots>
                                                                                    </small>
                                                                                    [(#INTRODUCTION|!={''}|?{
                                                                                    [(#BLOC_TITRE{?page=article_introduction&id_article=#ID_ARTICLE})]
                                                                                    R&eacute;sum&eacute;
                                                                                    #BLOC_DEBUT
                                                                                    #BLOC_FIN                                       
                                                                                    ,''})]
                                                                            </li>
                                                                            </BOUCLE_articles_recents>
                                                                    </ul>
                                                                    [<p class="pagination">#GRAND_TOTAL articles | (#PAGINATION)</p>]
                                                            </div>
                                                            </B_articles_recents>

                                            Si je place ce même code dans ma page sommaire à la place de l’INCLURE, tout fonctionne bien (mais la pagination n’est plus ajaxée). Voir la page sommaire standard : http://fil.anamzer.net

                                            Répondre à ce message

                                            • Test avec AJax 18 avril 2008 14:31, par Pat

                                              Ce que je remarque, c’est que FF2 et IE6 fonctionnent bien au 1er chargement de la page. Les blocs ajax sont nickel (d’ailleurs, je viens d’optimiser un peu le fichier blocs.js).

                                              Ensuite, un clic sur la pagination ne permet plus d’afficher les blocs ajax cachés : normal, ces nouveaux blocs eux chargés par Ajax ne sont plus liés au clic de la souris... Il faudrait trouver le moyen de re-binder les nouveaux blocs ajax de la page après le clic de pagination pour que les nouveaux blocs soient de nouveau pris en compte...

                                              De façon plus générale, cette nouvelle fonctionnalité Ajax va aussi proser des pb à tous les outils basés sur jQuery(function(){bla bla}) comme les onglets ou autres...

                                              Suis-je clair ?

                                              Répondre à ce message

                                              • Test avec AJax 18 avril 2008 15:51, par Perig

                                                J’ai compris le problème mais je n’ai pas les compétences pour le résoudre. Je me passerai donc de la pagination en ajax pour l’instant... Et je suis les évolutions sur ce fil.

                                                P

                                                Répondre à ce message

                                                • Test avec AJax 19 avril 2008 00:09, par mj

                                                  C’est un problème de "rebind" comme dit patrice. J’ai eu le même pb avec les crayons : lorsque tu charges avec ajax un fragment, tout ce qui, dans le fragment, a besoin de jquery ou d’autres tricks javascript, doit être réinitialisé.

                                                  La méthode "sale" consiste à mettre dans le fragment qui se charge un bout de script qui reappelle jquery. Pour les crayons, il faut faire qq chose comme

                                                  cQuery(this).initcrayons() ;

                                                  pour les blocs, on peut programmer une fonction du même genre, MAIS étant donné que c’est un pb général, il y a surement une solution générale ? sur le site de jquery ?

                                                  Bon courage

                                                  MJ

                                                  Répondre à ce message

                                                  • Test avec AJax 19 avril 2008 02:26, par Pat

                                                    Je suis pas un expert en jQuery, mais faudrait trouver le moyen de re-binder un div loadé en Ajax... Le Couteau Suisse pourrait mettre en place un système pour l’ensemble de ses outils, mais là, il faudrait se creuser la tête pour trouver la solution...

                                                    Un load() ne se propage-t-il pas qq part ? Ou peut-on placer des sentinelles sur les div.ajax (par exemple) informant le CS qu’un load a eu lieu ? On devrait sans doute en discuter sur une liste de spip afin d’ouvrir cette discussion à des spécialistes éventuels...

                                                    D’ailleurs ce problème apparait aussi lorsqu’on modifie un article avec les crayons : les blocs du nouveau div ne sont plus dépliables, tout comme les onglets qui ne sont pas reconstruits, tout comme mailcrypt, etc., etc.

                                                    Répondre à ce message

    Retour au début des forums

0 | 25 | 50 | 75 | 100



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et vie SPIP-Contrib | SPIP | L'autre.net