Des blocs dépliables

Cet outil du Couteau Suisse vous permet de créer des blocs dont le titre cliquable peut rendre un contenu visible ou invisible, voire de les munir d’une adresse pour que le bloc visible soit récupéré en AJAX. Ces blocs sont disponibles dans tous vos contenus SPIP (articles, rubriques, etc.) ainsi que dans vos squelettes.

Présentation

Cet outil permet de créer des blocs dont le titre cliquable peut rendre un contenu visible ou invisible, voire de les munir d’une adresse pour que le bloc visible soit récupéré en AJAX. Ces blocs sont disponibles dans tous vos contenus SPIP (articles, rubriques, etc.) ainsi que dans vos squelettes (fichiers .html). Ils sont facilement configurables et imbricables.

Les fonctionnalités décrites ici font partie du plugin Le Couteau Suisse que vous pouvez trouver ici : Le Couteau Suisse. Pour avoir accès aux blocs dépliables présentés dans cet article, il vous faut donc avoir préalablement installé ce plugin.

Dans les contenus SPIP

Les rédacteurs ont à disposition les nouvelles balises <bloc> (ou <invisible>) et <visible> à utiliser dans leurs textes (articles, rubriques, etc.) comme ceci :

<bloc>
 Un titre qui deviendra cliquable
	    
 Le texte, initialement caché, à montrer/cacher, après deux sauts de ligne...
</bloc>
<visible>
 Un titre qui deviendra cliquable
	 
 Le texte, initialement affiché, à cacher/montrer, après deux sauts de ligne...
</visible>

A noter : si le texte du bloc ne comporte pas deux sauts de ligne délimitant le titre et le futur texte dépliable, alors le Couteau Suisse crée un titre qui deviendra cliquable en prenant les 30 premiers caractères du texte présent dans le bloc. Si besoin, ce paramètre est directement modifiable sur la page de configuration du plugin.

• Résumé

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

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

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.

Exemple dans une boucle (ARTICLES) : [(#BLOC_TITRE{[(#URL_PAGE{monajax}|parametre_url{id_article,#ID_ARTICLE})]})]
Ici, le fond monajax.html ne sera donc appelé que lorsque le visiteur voudra déplier le bloc.

Ce mécanisme permet d’alléger le poids de la page initiale et pourra augmenter la vitesse de navigation...

Notez cependant que #URL_PAGE n’aime pas les sous-répertoires sous SPIP : vous risquez un accès interdit. Remplacez donc #URL_PAGE{inc/qqchose} par #URL_PAGE{qqchose}.

Un exemple appelant le 1er article en base et transmettant le paramètre var_mode indispensable développement du site :

[(#BLOC_TITRE{[(#URL_PAGE{monajax}|parametre_url{id_article,1}|parametre_url{var_mode,#ENV{var_mode}})]})]
	My qualifications
#BLOC_DEBUT
	Wait please...
#BLOC_FIN

• Bloc visible

Pour produire un bloc déplié (dont le contenu est visible), ajoutez simplement l’argument {visible} à la balise #BLOC_TITRE. Exemple : #BLOC_TITRE{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...

Si vous remarquez un conflit avec votre squelette ou un autre plugin (dysfonctionnement des blocs par exemple), tentez de modifier l’option de configuration « Balise pour les titres ». La valeur par défaut est h4, mais elle peut être changée en h5 ou même div.

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 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. N’hésitez pas à vider également les caches de SPIP, ou de travailler sans cache durant le développement du site.

Un bloc <bloc> (ou un #BLOC_XXX) 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. (Modif. 2018 : Chrome le permet également très bien).

Il se peut que, si vous placez une image dans un bloc dépliable, le bloc ne soit pas correctement déplié. Essayez alors d’ajouter le style CSS suivant :

.blocs_destination { overflow: hidden; }

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. La numérotation des blocs est également fort utile pour créer des blocs imbriqués. En utilisant par exemple <bloc#2> (ou <invisible#2> ou <visible#2>), la classe « cs_bloc2 » sera ajoutée au bloc <div principal :

<bloc#2>
 Un titre qui deviendra cliquable
	    
 Le texte à cacher/montrer, après deux sauts de ligne...
</bloc#2>

Ce bloc <bloc#2> 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 <bloc#2> auront un cadre noir autour du contenu et seuls les titres de ces blocs h4 seront privés de leur petit triangle.

Petite précision : l’ancienne syntaxe <bloc2></bloc2> (sans le dièse) devient obsolète et doit être évitée car SPIP 2.0 considère désormais que cette notation est un modèle. Si vos rédacteurs ont utilisé cette notation, je crains qu’il faille corriger toutes les occurrences directement en base de données... Pour rechercher les fautifs, la syntaxe SQL à utiliser est par exemple : SELECT id_article FROM spip_articles WHERE texte REGEXP '</?bloc[[:digit:]]+>'. Pour effectuer les remplacements, alors essayez peut-être : UPDATE spip_articles SET texte = REPLACE(texte, 'bloc2>', 'bloc#2>') (je ne pense pas qu’on puisse utiliser les regexp avec un replace...)

Dans vos squelettes, la balise titre à utiliser est alors :
#BLOC_TITRE{un_numero} ou #BLOC_TITRE{un_numero, mon_URL} à la place de : #BLOC_TITRE ou #BLOC_TITRE{mon_URL}. Les classes générées sont les mêmes que précédemment. Exemples : #BLOC_TITRE{1} ou #BLOC_TITRE{#ID_ARTICLE}. Pour un bloc déplié (bloc dont le contenu est visible), utilisez alors la syntaxe #BLOC_TITRE{visible, un_numero, mon_URL}. L’ordre des arguments n’importe pas.

Balise <h4>

Puisque le titre du bloc est transformé en titre HTML (balise <h4> par défaut), il est bien entendu déconseillé de rédiger un bloc comme :

<bloc>
{{{Un intertitre à éviter !!}}}
	    
Ceci est une mauvaise syntaxe...</bloc>

De même, il est conseillé d’agir directement sur les styles, plutôt que de mettre un attribut en dur sur un titre de bloc. Exemple :

<bloc>
{{Un titre en gras}}
 	   
Le gras sur le titre est complètement inutile si vous avez défini ce style :
h4.blocs_titre {
	font-weight:bold;
}
</bloc>

Enfin, si le choix de la balise <h4> ne vous convient pas pour le titre cliquable de vos blocs, il suffit de la modifier sur la page d’administration du Couteau Suisse en indiquant h5, h6 ou h7, en fonction de vos CSS.... Si vous voulez utiliser la balise <h3> que SPIP utilise lui-même pour les intertitres (notation : {{{Mon intertitre}}}), alors le sommaire automatique prendra en compte vos titres de blocs.

L’attribut title du titre

Depuis la version 1.8.15.01 du plugin, le titre d’un bloc est automatiquement affublé d’un title par défaut : "Déplier" ou "Replier". La source brute du bloc ne possède pas de title, mais JavaScript s’en charge au chargement de la page en cherchant le dernier div de classe blocs_titre (cette classe est invisible par défaut). Si cette classe est trouvée, JavaScript en lit le contenu HTML qui doit contenir le séparateur « || » et modifie le title du titre du bloc en fonction de son état (déplié ou replié).

Exemple : <div class="blocs_title">Déplier||Replier</div>.

Personnalisation : dans le fichier mes_fonctions.php de votre squelette, créez la fonction blocs_title($titre='', $corps='', $num=''). Celle-ci doit renvoyer un tableau contenant le texte pour chaque état du bloc (déplié ou replié). Exemple :

function blocs_title($titre='', $corps='', $num='') {
	$titre = couper($titre, 30);
	return array("D&eacute;plier le bloc &laquo;$titre&raquo;", "Replier le bloc &laquo;$titre&raquo;");
}

Pour un bloc dans un squelette, il suffit d’ajouter la div.blocs_title décrite ci-dessus en clair :

#BLOC_TITRE #TITRE
#BLOC_RESUME #INTRODUCTION
#BLOC_DEBUT #TEXTE
<div class="blocs_title">Déplier mon bloc||Replier mon bloc</div>
#BLOC_FIN

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.

Blocs classiques

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();
});

Dès la version de SPIP 2.0, utilisez plutôt la balise #BLOC_DEPLIER{index} que vous pouvez placer n’importe où dans la page. Exemple pour déplier le 5e bloc une fois la page chargée : #BLOC_DEPLIER{4}.

Blocs numérotés

Le code jQuery est plus facile : il suffit de repérer le sélecteur « div.cs_blocXX » où XX est le numéro du bloc. L’exemple suivant déplie le bloc #4 de la page :

jQuery(document).ready(function() {
	jQuery('div.cs_bloc4')
		.children('.blocs_titre').eq(0).click();
});

Dès la version de SPIP 2.0, utilisez plutôt la balise #BLOC_DEPLIER_NUM{index} que vous pouvez placer n’importe où dans la page. Exemple pour déplier le bloc #4 une fois la page chargée : #BLOC_DEPLIER_NUM{4}.

Ancre et paramètres d’URL

Le but ici est de faciliter les dépliages/repliages de blocs par URL. Pour déplier plusieurs blocs, il faut lister leur identifiant séparés par une virgule. Voici la syntaxe à utiliser pour vos liens (NN, XX, YY et ZZ sont les identifiants numériques de vos blocs) :

  • Blocs numérotés : &deplier_num=NN ou &deplier_num=XX,YY,ZZ
  • Blocs simples : &deplier=NN ou &deplier=XX,YY,ZZ

Attention, les blocs non numérotés sont repérés à partir de zéro : 0 = 1er bloc, 1 = 2e bloc, etc. Ce chiffrage inclus tous les blocs de la page finale, y compris les blocs numérotés éventuels.

Les ancres#deplierNN et #deplier_numNN fonctionnent aussi, mais seuls les blocs numérotés ont un id pour l’instant et provoqueront un défilement de la page jusqu’au bloc voulu... Il est en effet plus prudent d’ancrer des blocs numérotés, histoire d’éviter toute erreur en cas de modification du contenu de la page.

Variable JS

Dès que la page est chargée, le plugin consulte deux variables JavaScript pour savoir qu’il faut ouvrir un bloc ou non. En fonction des besoins, cette variable peut donc être initialisée (avant l’appel des scripts du Couteau suisse) de cette façon :

	// déplier le 2e bloc non numéroté :
	var bloc_actif = 1; 
	// déplier le bloc numéroté #2 :
	var bloc_actif_num = 2; 

Si l’URL de la page comporte un paramètre sur les blocs (voir paragraphe précédent), alors ces variables (dans la catégorie concernée) seront ignorées.

Pagination à l’intérieur d’un bloc

Pour être sûr que le bloc contenant une pagination s’ouvre automatiquement au rechargement de la page, il vous faut d’abord numéroter vos blocs en utilisant pour le titre le même numéro que celui de la pagination.

Par exemple : #BLOC_TITRE{#ID_ARTICLE} pour un critère de pagination comme celui-ci : {pagination 5 #ID_ARTICLE}.
Vous pouvez aussi remplacer l’exemple #ID_ARTICLE par #COMPTEUR_BOUCLE, #_NomDeMaBoucle:COMPTEUR_BOUCLE, ou tout autre numéro.

Enfin, insérez simplement dans votre page le code Javascript suivant [1] :

jQuery(document).ready(function() {
  if(blocs_pagination) {
    jQuery('div.cs_bloc' + blocs_pagination 
       + ' .blocs_titre').eq(0).click();
    window.location.hash = '#pagination' + blocs_pagination;
  }
});

La variable blocs_pagination est automatiquement calculée par le plugin. Elle représente le numéro de la pagination appelée (ce numéro est présent dans l’ancre de l’URL).
Exemple : « 11 » si l’url contient l’ancre « #pagination11 ».

Impression

Dans votre navigateur, ajouter à l’adresse d’une page le paramètre « cs=print » force le Couteau Suisse à déplier les blocs en vue d’une impression. Par exemple : www.monsite.ici/spip?article999&cs=print
Aussi, ce paramétrage est automatique dans les squelettes suivants : « print.html », « imprimer.html », « imprimir_articulo.html », « imprimir_breve.html » ou « article_pdf.html » (donc ici : « page=print », « page=imprimer », etc.). Lisez ici le paragraphe « Particularités » pour en savoir davantage.

Autre méthode (astuce de Commetou) : Javascript. « Si on veut faire un bouton imprimer (sans passer par une page intermédiaire) avec la commande onclick="window.print(); return false;" sur un lien, il faut modifier [2] la CSS d’impression avec le code div.cs_blocs div.blocs_invisible{display: block;} pour que les blocs soient ouverts. »

Zoom sur vos squelettes...

Les balises #BLOC_TITRE, #BLOC_RESUME, #BLOC_DEBUT et #BLOC_FIN ne font qu’envelopper vos blocs à l’aide de trois balises HTML : <div>, <h4> et <a>.

Allez, un exemple vaut mieux qu’un long discours. Voici comment le plugin transforme :

	#BLOC_TITRE Un dépliage simple sans résumé
	#BLOC_DEBUT COUCOU !!
	#BLOC_FIN

	#BLOC_TITRE Un dépliage simple avec résumé
	#BLOC_RESUME Un résumé...
	#BLOC_DEBUT COUCOU !!
	#BLOC_FIN

en :

	<div class="cs_blocs"><h4 class="blocs_titre blocs_replie "><a href="javascript:;"> Un dépliage simple sans résumé
	</a></h4><div class="blocs_invisible blocs_destination"> COUCOU !!
	</div></div>

	<div class="cs_blocs"><h4 class="blocs_titre blocs_replie "><a href="javascript:;"> Un dépliage simple avec résumé
	</a></h4><div class="blocs_resume"> Un résumé...
	</div><div class="blocs_invisible blocs_destination"> COUCOU !!
	</div></div>

Notez que les retours à la ligne sont respectés.

Donc, attention à votre syntaxe HTML !

Il faut veiller à ce que les blocs entre les différentes balises #BLOC (#BLOC_TITRE et #BLOC_DEBUT, puis entre #BLOC_DEBUT et #BLOC_FIN par exemple) soient corrects dans leur syntaxe HTML : pas de balise ouverte non fermée ou fermée et non ouverte.
-  Exemple incorrect : <b>#BLOC_TITRE[(#DATE|annee)]</b>
-  Exemple correct : #BLOC_TITRE<b>[(#DATE|annee)]</b>

Étant donné que le plugin place entre <h4><a> et </a></h4> tout ce qui se trouve entre #BLOC_TITRE et #BLOC_DEBUT, n’y placez pas des liens ou des balises block (<hX>, <p> ou <div>). Les balises inline (comme <span>) en revanche sont permises. En cas de doute référez-vous à la syntaxe HTML des balises imbriquées.
-  Exemple incorrect : #BLOC_TITRE{#ID_RUBRIQUE}<a href="#URL_RUBRIQUE">#TITRE</a>#BLOC_DEBUT
-  Exemple correct : #BLOC_TITRE{#ID_RUBRIQUE}#TITRE#BLOC_DEBUT

De même, au sein de vos articles, ne mettez pas de liens dans le titre du bloc, et surtout par d’intertitre non plus.

Voici un exemple de tri des articles par date, utilisant les listes <ul><li> :

<B1><ul>
<BOUCLE1(ARTICLES){par date}{inverse}{fusion YEAR(date)}>
  <li>#BLOC_TITRE<b class="texte">[(#DATE|annee)]</b>
  <B2>
     #BLOC_DEBUT<ul>
     <BOUCLE2(ARTICLES){annee_relatif}{par date}{inverse}{lang_select=non}{fusion MONTH(date)}>
     <li>#BLOC_TITRE<small>[(#DATE|nom_mois)]</small>
     <B3>
        #BLOC_DEBUT<ul>
        <BOUCLE3(ARTICLES){mois_relatif}{par date}{inverse}>

           <li><small><a href="#URL_ARTICLE">#TITRE</a></small></li>
        </BOUCLE3>
        </ul>#BLOC_FIN
     </B3>
     </BOUCLE2>
     </ul>#BLOC_FIN
  </B2></li>
</BOUCLE1></ul>
</B1>

Voici un exemple listant les brèves dans un bloc avec une pagination :

<B_breves><ul><li>
#BLOC_TITRE
Les Br&egrave;ves du site !
#BLOC_DEBUT
	#ANCRE_PAGINATION
	[<p class="pagination">(#PAGINATION)</p>]
	<ul>
		<BOUCLE_breves(BREVES){tous}{par date}{inverse}{pagination 5}>
			<li>
			<divclass="titredebreve">#TITRE ([(#DATE|affdate_court)])</div>
			[<div class="textedebreve">(#TEXTE)</div>]
			</li>
		</BOUCLE_breves>
	</ul>
	[<p class="pagination">(#PAGINATION)</p>]
#BLOC_FIN</li></ul>
</B_breves>

Voici un exemple de blocs imbriqués [3] :

<B_rubriques>
   <ul>
      <BOUCLE_rubriques(RUBRIQUES) {id_parent} {par titre}>
          <li>
              #BLOC_TITRE{#ID_RUBRIQUE}
              [(#TITRE|supprimer_numero)]
              #BLOC_DEBUT
              <B_articles2>
                  <ul>
                      <BOUCLE_articles2(ARTICLES) {id_rubrique} {par titre}>
                          [<li><a href="#URL_ARTICLE">(#TITRE|supprimer_numero)</a></li>]
                      </BOUCLE_articles2>
                  </ul>
              </B_articles2>
              <BOUCLE_sous_rubriques(BOUCLE_rubriques)>
              </BOUCLE_sous_rubriques>
              #BLOC_FIN
          </li>
       </BOUCLE_rubriques>
   </ul>
</B_rubriques>

Lien cliquable permettant de replier le bloc par l’intérieur

Par défaut, le plugin possède une fonction jQuery qui prendra automatiquement en compte un « lien de repliage » placé dans un bloc déplié, c’est à dire : entre les balises #BLOC_DEBUT et #BLOC_FIN. Ce lien doit être affublé de la classe replier_bloc. Exemple :

#BLOC_TITRE #TITRE
#BLOC_DEBUT #TEXTE
<a href="javascript:;" class="replier_bloc">[Replier l'article]</a>
#BLOC_FIN

Utilisation de la Balise #INTRODUCTION

Cet outil du Couteau Suisse vous permet de paramétrer la balise SPIP #INTRODUCTION et la doter par exemple de points de suite cliquables. Si par hasard vous désirez que ces points de suite produisent l’ouverture du bloc, alors voici comment faire.

Si les points de suite cliquables sont bien activés et que, dans votre squelette, votre bloc dépliable ressemble à :

	<BOUCLE_art(ARTICLES)>
		#BLOC_TITRE #TITRE
		#BLOC_RESUME #INTRODUCTION
		#BLOC_DEBUT #TEXTE
		#BLOC_FIN
	</BOUCLE_art>

... alors le code code JavaScript à insérer dans la page, ou dans le header de votre squelette APRÈS les appels du Couteau Suisse est :

jQuery(document).ready(function(){
	jQuery('.blocs_resume a.pts_suite')
	  .click( function(){
		jQuery(this).parents('.cs_blocs:first').children('.blocs_titre')
			.blocs_replie_tout().blocs_toggle();
		// annulation du clic
		return false;
		});
});

Déplier un bloc éloigné de son titre

Depuis la version 1.8.10.11 du Couteau Suisse, il est possible de déplier un bloc à distance. Le titre cliquable du bloc et son contenu peuvent être éloigné dans la page et placés où vous voulez de façon totalement indépendante, à conditions :
-  d’ouvrir et fermer vos blocs grâce aux couples de balises #BLOC_TITRE_DEBUT/#BLOC_TITRE_FIN (enfermant le futur bouton de dépliage/repliage du bloc) et #BLOC_DEBUT/#BLOC_FIN (enfermant le contenu dépliable/repliable du bouton associé)
-  de choisir un identifiant unique à préciser obligatoirement aux balises #BLOC_TITRE_DEBUT{identifiant_unique} et #BLOC_DEBUT{identifiant_unique} qui permet d’associer le bouton de dépliage/repliage (titre cliquable) à son contenu. Cet identifiant doit être le premier argument de la balise.

Un deuxième argument ’visible’ ou ’invisible’ est autorisé. Il permet de choisir l’état du bloc au démarrage de la page.

Par exemple :

#BLOC_TITRE_DEBUT{toto}
	Bouton pour un bloc éloigné invisible
#BLOC_TITRE_FIN
<p>Allez, un peu de texte, histoire de mettre de la distance... Voyez que le bouton du bloc 'toto' est construit avant son contenu replié que voici :</p>
#BLOC_DEBUT{toto}
	UN COUCOU ELOIGNE !!
#BLOC_FIN

#BLOC_DEBUT{titi,visible}
	UN COUCOU ELOIGNE !!
#BLOC_FIN
<p>Allez, un peu de texte, histoire de mettre de la distance... Voyez que le contenu déplié du bloc 'titi' est constuit avant son titre cliquable que voici :</p>
#BLOC_TITRE_DEBUT{titi,visible}
	Bouton pour un bloc éloigné visible
#BLOC_TITRE_FIN

Attention toutefois à ne pas oublier de changer d’identifiant à chaque tour si vous placez un bloc dépliable à distance à l’intérieur d’une boucle. Si votre identifiant est fixe, alors tous les blocs produits par la boucle s’ouvriraient et se fermeraient ensemble... La balise #COMPTEUR_BOUCLE est ici indispensable :

 <B1><ul>
<BOUCLE1(ARTICLES)>
 <li>
#BLOC_TITRE_DEBUT{toto#COMPTEUR_BOUCLE}
       #COMPTEUR_BOUCLE. #TITRE
#BLOC_TITRE_FIN
blablabla 
 #BLOC_DEBUT{toto#COMPTEUR_BOUCLE}
       #INTRODUCTION
 #BLOC_FIN
</li>
</BOUCL1></ul>
</B1>

Court-circuiter les réglages généraux

Dans une page particulière, pour ignorer le paramétrage général « Un seul bloc ouvert sur la page » [4], placez dans votre page la balise #BLOC_UNIQUE avec l’argument qui correspond à cette page.
-  Syntaxe pour n’avoir qu’un seul bloc ouvert à la fois sur la page : #BLOC_UNIQUE, #BLOC_UNIQUE{oui}, #BLOC_UNIQUE{1}
-  Syntaxe pour permettre au visiteur d’ouvrir plusieurs blocs à la fois sur la page (réglage général par défaut) : #BLOC_UNIQUE{non}, #BLOC_UNIQUE{0}, #BLOC_UNIQUE{-1}

Bien entendu, si vous placez dans la même page la balise #BLOC_UNIQUE{oui} et plusieurs balises valides #BLOC_DEPLIER (ou #BLOC_DEPLIER_NUM), seule la dernière de ces dernières sera prise en compte !

Ouvrir un bloc contenant un formulaire

Si vous décidez de mettre un formulaire SVT dans un bloc, alors il sera nécessaire d’ouvrir le bloc au chargement de la page au cas où le formulaire renvoie une erreur de saisie.

Voici une petite commande JS qui veillera à ouvrir automatiquement un bloc contenant une erreur :

jQuery(document).ready(function() {
  jQuery('.cs_blocs').has('.erreur_message')
    .find('.blocs_titre.blocs_replie').blocs_toggle();
});

Notes

[1dans le corps de votre page ou dans le header APRÈS les appels du Couteau Suisse

[2NDLR : en la surchargeant dans votre squelette

[3Utile pour le plan d’un site par exemple

[4paramètre que vous pourrez trouver sur la page d’administration du Couteau Suisse après avoir sélectionné l’outil « Blocs Dépliables »

Discussion

146 discussions

  • 16

    Bonjour,
    J’utilise les blocs dépliables dans mon site https://keraluc.com mais je souhaite aussi utiliser des ancres dans ma page à l’intérieur des blocs. Un appel d’un lien dans la page n’ouvre pas le bloc qui contient l’ancre. Comment faire pour obtenir cela, si c’est possible ?

    • Bonjour !
      En principe, un petit script jQuery pourra facilement ouvrir le bloc en présence d’une ancre...
      Tu as peut-être déjà résolu ton problème ?

    • Bonjour,
      Non, pas cette fonctionnalité car je n’ai pas les compétences pour développer un script. Dommage car je trouve que cette fonctionnalité pourrais vraiment enrichir ce plugin.

    • Si tu utilises le Couteau Suisse, ce pourra être en effet une fonctionnalité intégrée à la prochaine version du plugin. Sinon voici à quoi pourrait ressembler le script en question :

      <script>
      // Si une ancre est contenue dans un bloc ?
      jQuery(document).ready(function() {
      	var ancre = window.location.hash;
      	if(ancre) {
      		ancre = jQuery(ancre);
      		var bloc = ancre.parents('.cs_blocs').find('.blocs_titre.blocs_replie');
      		if(bloc.length && (ancre.length == 1)) {
      			bloc.blocs_toggle();
          	jQuery('html,body').animate({scrollTop: ancre.offset().top}, 'slow');
      		}
      	}
      });
      </script>

      (non testé en dehors du Couteau Suisse)

    • Merci pour cette réponse très concrète. Excusez ma question de néophyte, mais où faut-il que le place ce script pour le tester ?
      Merci pour l’attention portée à mon souci.

    • J’ai placé ce script dans le header après #INSERT_HEAD
      mais cela ne fonctionne pas. Le lien pointe bien vers l’ancre mais le bloc ne s’ouvre pas en même temps que ce déplacement dans la page.

    • Bonjour.
      J’ai finalement modifié le Couteau Suisse pour que cette fonction soit incluse dans le plugin, moyennant une option à activer dans7la config. Une mise à jour vers la version 1.14.8 devrait répondre à votre question.
      Cordialement

    • Bonjour,
      J’ai désactivé Blocs Dépliables 1.2.8 et réinstallé Le Couteau Suisse 1.14.8 avec l’option Déplier un bloc contenant une ancre : OUI
      mais ce la ne fonctionne pas. Je suis en SPIP 4.1.12, sa mise à jour est-elle nécessaire pour cette nouvelle fonctionnalité du CS.
      Voir cette page que j’aimerais gérer avec la commande permettant d’ouvrir les blocs lus bas dans la page à partir d’un lien dans le texte. En quelque sorte un menu interne à l’article.
      https://www.keraluc.com/Autres-artistes.html

    • En fait, je ne comprends plus très bien ta demande....

      Après avoir regardé ta page, je ne trouve pas d’ancre insérée dans les blocs, sauf erreur ?

      Le raccourci SPIP pour insérer une ancre est : [nom_ancre<-].
      Si cette ancre est insérée au beau milieu du texte d’un bloc alors l’url https://www.keraluc.com/Autres-artistes.html#nom_ancre est censée ouvrir le bloc et défiler la page jusqu’à l’ancre en question...

      En revanche, je vois des ancres insérées dans les titres, est-ce voulu ? Si oui, cette pratique est proscrite car elle crée un lien dans un lien, il faut donc les retirer.

      Si ta demande est simplement d’ouvrir les blocs au chargement de la page, alors est-ce que le paragraphe ci-dessus Ancre et paramètres d’URL répond à ta question ?

      Je vois déjà ce qui fonctionne : l’ancre #deplier2 ouvre bien le bloc de « Georges Allier », tout comme le paramètre ?deplier=2

    • Je me suis sans doute mal exprimé. Mon objectif n’est pas l’ouverture des blocs dépliables au chargement de la page.
      Je souhaite que le clic sur le nom d’un artiste dans le premier paragraphe (chapeau de l’article) dirige vers le titre du bloc correspondant tout en le dépliant.
      Soit sur le nom de l’artiste dans le chapeau et son ancre sur le titre de son bloc dans le texte de l’article.
      Quand je place l’ancre à l’intérieur du texte de son bloc cela provoque un déplacement de la page vers le haut et non pas vers le titre du bloc concerné ?

    • Ah ok,

      Dans ce cas il faut plutôt utiliser les blocs numérotés : <bloc#2>, <bloc#3>, ....

      J’ai fait un test ici : https://vnf.ovh/_SPIP32/spip.php?article1

      Pas besoin d’ancre insérée dans les blocs, mais juste un petit script qui repère le clic dans le chapo et scrolle vers la bio correspondante, bloc ouvert :

      <script>
       // un clic sur une personne qui produit l'ouverture du bloc correspondant.
       jQuery(document).ready(function(){
        jQuery('.spip_ancre[href^="#"]').click( function() {
         // recherche du bloc numéroté désiré
         var sel = '.cs_blocs.cs_bloc'
          + this.getAttribute("href").replace('#', '') 
          + ' .blocs_titre';
         jQuery(sel + '.blocs_replie').blocs_toggle();
         jQuery('html,body').animate({scrollTop: jQuery(sel).offset().top}, 'slow')
         // annulation du clic
         return false;
        });
       });
      </script>
    • Merci pour ces explications et la page de test.
      Mais cela n’est pas très clair pour moi. Ceci peut être géré directement dans l’article Spip avec des blocs numérotés , ... sans intervention dans le squelette de l’article. Si oui, pouvez-vous de communiquer le texte de votre article de test pour que je puisse comprendre les balises à utiliser et la manière de les insérer dans l’article Spip.
      Merci beaucoup pour l’attention que vous portez à ma demande émanant d’un « bricoleur » du net.

    • Ecoute, si tu utilises le Couteau Suisse, autant profiter alors de ses lames persos.

      Voici le code à placer dans config/mes_options.php ;

      ############## COUTEAU SUISSE : LAME PERSO #################
      
      // Installation d'une nouvelle lame personnalisée
      $GLOBALS['mes_outils']['ancre_blocs'] = array(
      	'nom'         => 'Ancres sur les personnes',
      	'description' => 'Permettre de déplier à distance le bloc numéroté contenant la bio d\'une personne.',
      	'auteur'      => 'Pat',
      	'categorie'   => 'public',
      	'code:jq_init' => '	 //	un clic sur une personne qui produit l\'ouverture du bloc correspondant.
        jQuery(\'.spip_ancre[href^="#"]\').click( function() {
         // recherche du bloc numéroté désiré
         var sel = "#deplier_num" + this.getAttribute("href").replace("#", "") + " .blocs_titre";
         jQuery(sel + ".blocs_replie").blocs_toggle();
         jQuery("html,body").animate({scrollTop: jQuery(sel).offset().top}, "slow");
         // annulation du clic
         return false;
        });',
      );

      Ensuite, il faut l’activer, comme toutes les autres lames. Tu la trouveras dans la catégorie « Affichage public ».

      Dans le chapo de ton article, tu mets simplement :

      Georges ALLIER, [André L’HELGUEN->#1] et [André HORELLOU->#2] sont restés fidèles à Keraluc durant plusieurs décennies.

      Et dans le texte, ce sont des blocs numérotés ;

      <bloc#1>
      {{André L’Helguen}} (1935-2017)
      
      bla bla bla 1
      </bloc#1>
      
      <bloc#2>
      {{André Horellou}} (1943-1999)
      
      bla bla bla 2
      </bloc#2>
    • Bravo, magnifique, tout cela fonctionne maintenant très bien. Ces explications sont parfaites et faciles à mettre en œuvre. Je reprends maintenant plaisir à utiliser Spip qui m’accompagne depuis de très nombreuses années.
      J’ai dernièrement eu à me battre pour faire en sorte que mon site hébergé chez IONOS passe bien en https et soit indexé par Google. Pour cela il a fallut « bidouiller » laborieusement en ajoutant du code dans le .htacces, le robots.txt et en modifiant une valeur dans ecran_securite.php.
      Cela ne contribue pas à la facilité de mise en œuvre du CMS pour les néophytes.
      Merci beaucoup.

    • Bonjour,
      Afin d’optimiser la navigation dans la page avec ces blocs numérotés dépliés à distance, j’aimerais qu’un bloc déjà ouvert se referme automatiquement quand une autre URL interne est cliquée. Ce comportement est actif dans ma page en utilisant directement les titres des blocs dépliables, mais en revanche les blocs dépliables déclenchés à distance restent ouverts.
      Merci

    • Pour cela, il faut :

      -  ajouter une fonction « blocs_replie_tout » dans la lame perso en modifiant la ligne suivante :
      jQuery(sel + ".blocs_replie").blocs_replie_tout().blocs_toggle();

      -  activer l’option « Un seul bloc ouvert sur la page » dans la config du Couteau Suiise

      -  vider le cache du navigateur

    • À nouveau un grand merci, cela fonctionne bien. J’ai toujours du mal à vider complètement le cache de Firefox, mais en changeant de navigateur j’ai pu constater que cette modification était bien active.

    Répondre à ce message

  • 7

    Bonjour,

    Je m’aperçois que les blocs dépliables ne sont pas fonctionnels dans l’espace privé, mais qu’ils fonctionnent très bien côté public : est-ce le comportement normal ?

    J’avoue que je n’y avais jamais prêté attention depuis que j’utilise cet outil ;-))).......

    Merci,
    françois

    • Hello, c’est qu’il doit y avoir une erreur javascript sur la page... Un conflit avec autre chose peut-être.... Possible d’inspecter cela avec les outils de développement du navigateur ?

    • Rien dans la console.
      Le souci est présent sur 3 SPIP de versions différentes :
      -  SPIP 3.1.11 [24407] : installation toute fraîche, pour le test, avec 1 seul article, aucun autre plugin (local)
      -  SPIP 3.2.5 [24404] : tous les autres plugins sont désactivés (local et en ligne)
      -  SPIP 3.3.0-dev [24418] : tous les autres plugins sont désactivés (local et en ligne)

      Personne ne reproduit en local ou en ligne ?

    • Hello rassure toi ça a toujours été le cas depuis que j’utilise le plugin spip 2.1
      je pensé a un comportement normal

    • Laëtitia

      Bonjour,

      avec un SPIP 3.2.19 dans l’espace privé, j’ai une erreur qui n’était pas visible jusqu’ à présent, je vois que l’erreur est connue, donc on laisse comme ça ?

      Merci de confirmer... ou pas.

    • Cet avertissement jaune est bénin et n’empêche pas les blocs de fonctionner dans l’espace privé.

      Ce n’est pas esthétique mais c’est dû à SPIP qui n’est pas content de trouver un href="javascript:;" dans le corps de l’article.

      A voir comment contourner ce souci, je n’ai pas encore la solution...

    • Bonjour,

      L’utilisation de href='javascript:;' n’est pas recommandée : https://stackoverflow.com/questions/134845/which-href-value-should-i-use-for-javascript-links-or-javascriptvoid0

      On pourrait utiliser à la place : href='#bloc_non_ajax', ou une autre ancre avec un nom improbable.

    • Merci, super idée !

    Répondre à ce message

  • 1

    Bonjour,
    Je ne peux plus utiliser ce plugin qui empêche l’indexation de mon site si les blocs dépliables sont activé.
    Pourquoi ? Tout le design de mon site s’organise avec cette fonctionnalité et j’aimerais pouvoir la conserver.
    Merci de m’aider à trouver une solution. https://keraluc.com

    Répondre à ce message

  • 1

    Avec Spip 4.2.6, Blocs dépliables 1.2.8 et PHP 8.2
    J’ai un pb avec la balise « bloc » et l’affichage d’images svg si j’insère l’image via la balise « emb » : la page s’affiche, mais le corps de l’article apparaît vide à la fois dans l’espace privé et sur la page publique.

    Si j’insère cette image via la balise « doc », c’est OK.
    Mais pour ce cas précis, j’ai besoin de « emb » qui affiche les title du svg au survol de la souris.

    • Bonjour, a priori je ne reproduis pas ce comportement...

    Répondre à ce message

  • 1

    Bonjour,

    J’ai ouvert un ticket concernant le remplacement (ou pas) de la fonction JavaScript document.write() :

    https://git.spip.net/spip-contrib-extensions/blocsdepliables/issues/1#issue-712

    françois

    Répondre à ce message

  • 2

    Bonjour à tous,
    Quelqu’un peut-il me donner la syntaxe pour ouvrir un bloc par defaut ?
    Pas dans un squelette, comme expliqué dans la doc, mais dans un article SPIP, en utilisant la balise bloc.
    Merci mille fois,
    Enzo.

    • Trr.. Je viens de comprendre... remplacer la balise ’quote’ par une balise ’visible’.. Duh !.. Honnêtement, on pourrait effacer cette question réponse...

    • Oui ;-)

      Les rédacteurs ont à disposition les nouvelles balises <bloc> (ou <invisible>) et <visible>.

    Répondre à ce message

  • Bonjour,
    Rien à voir directement avec le plugin (qui est parfait).
    Je suis les fils de discussions avec le lien RSS (en bas de la page) de mes plugins et SPIP dans Thunderbird.
    J’ai un problème avec le votre qui m’affiche 10 fois par jour le poste de René Picard du 26/09/2013 (voir PJ) !
    Pouvez-vous y remédier ?
    Merci
    Patrice

    Répondre à ce message

  • En haut de cet article, les 2 liens vers le code source et les tickets pointent vers CS au lieu de pointer vers Blocs Dépliables.

    Répondre à ce message

  • Bonjour,
    cette lame du couteau suisse a été sortie en plugin seul, mais il n’a pas de page sur contrib, ce qui est logique puisque c’est exactement la même chose que la présente page : il devrait peut-être être notifié quelque part dans cette page que ce plugin existe seul ? avec un lien vers sa page sur https://plugins.spip.net/blocsdepliables.html?compatible_spip=3.2 ?

    Répondre à ce message

  • 1

    Problème https : bonjour Patrice, j’ai un souci avec les blocs dépliables pour un site en https.
    l’url des images de fonds (triangle.gif, triangle_bas.gif) est indiquée en http et non pas en https:

    .bloc_replie{background:transparent url(http://mondoine.tld/prive/images/triangle.gif);}

    Comment faut-il procéder pour corriger ce défaut de protocole ?
    Merci beaucoup d’avance de ton aide

    • Même problème avez vous trouvé une solution depuis ?
      Merci

    Répondre à ce message

  • 4

    Bonjour

    Je voudrais faire des blocs imbriqués dans le texte de l’article avec ce code :

    <bloc>Bloc de premier niveau
    
    <bloc>Bloc de deuxième niveau
    
    Placez votre texte ici
    </bloc>
    
    </bloc>

    Mais ça ne fonctionne pas car le bloc de premier niveau est fermé par le </bloc>du bloc de deuxième niveau.

    Normal. Mais est-ce possible de faire fonctionner ça ?

    • Eh oui c’est possible ! Regarde la doc ci-dessus, avec les blocs numérotés...

    • Bon sang que c’est beau quand c’est simple !

      J’avais mal compris la notion de « numéroté », je voyais ça comme des listes numérotées et j’ai lu en diagonale. Et je suis donc passé à côté.

      Merci pour l’info et pour cet excellent plugin.

    • >
      >
      > Bonjour
      >
      > Je voudrais faire des blocs imbriqués dans le texte de l’article avec ce code :
      > Bloc de premier niveau
      >
      > Bloc de deuxième niveau
      >
      > Placez votre texte ici
      >
      >
      >
      >
      > Mais ça ne fonctionne pas car le bloc de premier niveau est fermé par le du bloc de deuxième niveau.
      >
      > Normal. Mais est-ce possible de faire fonctionner ça ?
      Quelle solution as-tu trouvée ?
      Dans une structure :
      ...


      ...



      J’arrive bien à ouvrir le bloc2 de même niveau que le bloc1

      <bloc#1>[...->#deplier_num2]
      ...
      </bloc#1>
      <bloc#2>
      ...
          <bloc#3>
          ...
          </bloc#3>
      </bloc#2>

      mais pas le sous-bloc3

      <bloc#1>[...->#deplier_num3] 
      ...

      Merci

    • Chez moi, ça fonctionne avec

      <bloc>Bloc de premier niveau
      
      <bloc#1>Premier bloc de deuxième niveau
      
      Texte du premier bloc
      </bloc#1>
      <bloc#2>Deuxième bloc de deuxième niveau
      
      Texte du deuxième bloc
      </bloc#2>
      </bloc>

    Répondre à ce message

  • Cela fonctionne bien mais comment faire pour que le bloc reste ouvert lorsqu’on change l’ordre de tri ? Merci

    #BLOC_TITRE{2}
    Tous
    #BLOC_DEBUT
    <B_articlestest>
    <p><big>#TRI{>,'&#8593;',ajax} </big> | <big>#TRI{<,'&#8595;',ajax}</big> |  #TRI{titre,'Par titre',ajax} | #TRI{date,'Par date',ajax} | 
    #TRI{popularite,'Par popularite',ajax}</p>
    <div class="menu2 menu_articles">
    #ANCRE_PAGINATION
    	<ul>
    <BOUCLE_articlestest(ARTICLES){id_rubrique} {tri titre}{!par date}{tout}{pagination }>
    <li> 
    <span class='statut'>[ (#STATUT|puce_statut{article,#ID_ARTICLE,#ID_RUBRIQUE})]<span>&#129; 	&#129;&#129; 	&#129;
    <a href="#URL_ARTICLE">#SURTITRE</a> 	#MODELE{article_mots}
    </li>
    [<p class="pagination">(#PAGINATION)</p>]
    </BOUCLE_articlestest>
    		</ul>
    </B_articlestest>
    			En attente de vos fichiers
    <//B_articlestest>
    #BLOC_FIN

    Répondre à ce message

  • 4

    Bonjour,

    Les titres sont tronqués à 30 caractères ligne 65 dans le fichier blocsdepliables_pipelines.php et function blocsdepliables_callback().

    Comment pourrait-on surcharger cette valeur proprement via mes_fonctions.php ?

    Merci,
    françois

    • Bonjour François,

      Les titres sont tronqués à 30 caractères seulement si justement le bloc ne comporte pas de titre reconnu par le Couteau Suisse (en fait : pas de double retour à la ligne présente dans le bloc).

      C’est bien le cas chez toi ?
      Car pour éviter de tronquer les titres, il suffirait juste d’un définir un en séparant la première ligne de la deuxième pas un double retour à la ligne...

    • Et bien sûr !!!

      Désolé pour le bruit, je n’ai pas poussé mon investigation assez loin ;-)

      Est-ce que cette particularité pourrait apparaitre dans le doc ?

      Merci pour la précision,
      françois

    • Depuis hier, c’est dans la doc 😉

    • C’est cool !

      Merci.

    Répondre à ce message

  • Bonjour, j’aimerais rendre dépliables les « forums » sous les articles, pour que les visiteurs n’ouvrent la fenêtre d’écriture que s’ils ont besoin d’intervenir. Est-ce possible ? Je ne sais pas du tout programmer, et n’y comprends pas grand chose...
    merci de votre aide.

    Répondre à ce message

  • 3

    Bonjour,

    Après mise à jour vers la v1.2.0 : les blocs dépliables ne fonctionnent qu’à l’intérieur de la balise #TEXTE.

    • Installation de SPIP 3.1.6
    • Installation de blocs dépliables 1.2.0
    • Rédaction d’un article avec, dans le corps de texte :
       <bloc>
       Un titre qui deviendra cliquable
        
       Le texte, initialement caché, à montrer/cacher, après deux sauts de ligne...
       </bloc>
    • Dans le squelette article.html, ajout des balise blocs dépliables, juste avant #TEXTE :
      #BLOC_TITRE
           Mon titre
           
      #BLOC_DEBUT
           Mon bloc dépliable Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
      #BLOC_FIN
      
      [<div class="#EDIT{texte} texte surlignable clearfix">(#TEXTE|image_reduire{672,*})</div>]

    Les 2 blocs sont bien présents, repliés, ... et il n’y a que les blocs inclus dans #TEXTE qui fonctionnent.
    Je constate et reproduits le souci sur 2 sites en prod et plusieurs test en local.

    françois

    Répondre à ce message

  • Raminagrobis

    Bonjour,

    J’utilise des blocs dépliables dans un menu escamotable à droite de ma page. Les titres dépliables sont les rubriques et en cliquant dessus on déploie les noms des articles de la rubrique. Quand je choisis un article, j’y arrive et le menu se referme. Quand je retourne au menu, le bloc s’est replié malgré le fait d’avoir coché « Mémoriser l’état des blocs ». C’est assez troublant d’un point de vue ergonomique. Y aurait-il moyen d’éviter cela ?

    Répondre à ce message

  • 1

    Pour info après changement des bornes

    compatibilite=« [3.0.0 ;3.2.*] »

    RAS

    • tu parles du plugins couteau suisse en générale, ou juste de la fonction « des blocs dépliables » ?

    Répondre à ce message

  • 5
    Raminagrobis

    Bonjour,

    J’utilise avec bonheur ce plugin sur divers sites et cela me rend de grands services, merci. Cette fois, cela se complique un peu :

    Sur mes pages (qui contiennent beaucoup d’images) j’utilise un « lazy load » pour charger les images au fur et à mesure du scroll de la page. J’ai aussi de petites images contenues dans des blocs fermés mais elles ne sont pas chargées quand on scrolle. Quand on ouvre le bloc on ne les voit donc pas, mais il suffit de faire un léger scroll pour qu’elles apparaissent.

    J’ai donc pensé que le plus simple serait d’associer un window.scrollBy au click d’ouverture du bloc pour faire défiler la page d’un pixel. Mais il s’agit d’un petit script qui fonctionne en html et je ne vois pas d’élément html à surcharger dans ce plugin... Et en javascript ou en php je ne sais pas faire. Quelqu’un a-t-il une idée ? Peut-être que c’est tout bête !

    Merci d’avance

    • Bonjour,

      Il existe une fonction surchargeable qui permet de personnaliser les clics, regarde au tout début du code du fichier blocs.js.

      Ce pourrait être un code javascript du genre à ajouter à ta page :

      // ma fonction personnalisée :
      jQuery.fn.blocs_toggle_slide = function( selector ) {
      	// ici mon code après le clic...
      	// maintenant le [dé|re]pliage du bloc :
      	return this.is(".blocs_slide")
      		?this.slideUp(blocs_slide)
      		:this.slideDown(blocs_slide);
      };
    • Raminagrobis

      Merci pour cette rapide réponse.

      Je comprends bien l’idée, mais ne connaissant pas la syntaxe de JS, je ne sais pas la réaliser (j’ai bien collé ce code à l’endroit indiqué mais cela ne produit rien).

      La fonction à utiliser est :

      <script>
      function scrollWin() {
          window.scrollBy(0, 5);
      }
      </script>

      et l’action :

      onclick="scrollWin()"

      Source

    • Raminagrobis

      C’est facile JavaScript, il suffit d’y aller à tâtons ;-)
      Ça marche avec juste window.scrollBy(0, 1);. Le défilement d’un pixel produit bien l’effet attendu.

    • Je ne sais pas si ce code peut fonctionner. Le code serait plutôt dans le squelette de ta page :

      <script type="text/javascript">
        // ma fonction personnalisée :
        jQuery.fn.blocs_toggle_slide = function(selector) {
      	// ici mon code après le clic...
      	window.scrollBy(0, 5); // à vérifier ??
      	// maintenant le [dé|re]pliage du bloc :
      	return this.is(".blocs_slide")
      		?this.slideUp(blocs_slide)
      		:this.slideDown(blocs_slide);
        };
      </script>
    • Raminagrobis

      C’est exactement ce que j’ai fait (mais mon explication ci-dessus était un peu sommaire).

      Sauf que je l’ai fait en surchargeant une copie de blocs.js (squelettes/js/blocs.js). Cela fonctionne très bien : comme dit plus haut, le défilement de la valeur d’un seul pixel suffit à provoquer le chargement de l’image.

      Mais je retiens ta proposition qui pourrait être utile si je ne veux cette fonction que pour certaines pages et non pour le site en entier.

      Merci pour la peine.

    Répondre à ce message

  • 2

    Salut

    Je rencontre une difficulté entre les blocs dépliables et les fonctions de compression des scripts et des css (fonctions avancées) sur un site v.3.0.20 et plugins à jour.
    Clairement lorsque j’active la compression des scripts et/ou des css, les blocs dépliables ne fonctionnent plus.
    Suis-je le seul dans ce cas là, ou bien est-ce que d’autres ont déjà constaté ce curieux fonctionnement ?
    Connaissez-vous une solution ?

    • Ce problème est souvent évoqué dans les forums, la compression n’est en effet pas très fiable...
      Ce n’est pas absolument indispensable a priori car les serveurs transmettent aux clients les pages en format déjà compressé...

    • La compression a aussi comme bénéfice de concaténer tous les scripts en un seul fichier, ce qui économise des requêtes.

      Je ne sais pas si le souci se pose encore avec ce plugin mais j’avais trouvé une astuce pour empêcher la compression d’un script (marche peut-être aussi avec les CSS) : il suffit de rajouter un id quelconque à l’appel. Ainsi, la ligne 19 de blocsdepliables_pipelines.php passe de

      $flux .= "<script type='text/javascript' src='".timestamp(find_in_path('js/blocs.js'))."'></script>";

      à

      $flux .= "<script type='text/javascript' id='ne_pas_compresser_bloc' src='".timestamp(find_in_path('js/blocs.js'))."'></script>";

      Si le problème existe encore, ça peut valoir la peine de commiter cela.

    Répondre à ce message

  • 2

    Bonjour Patrice, j’essaie sans résultat de faire fonctionner les blocs sur une page chargée via un lien ajax preload, j’ai fais

    /* <![CDATA[ */
    cQuery(this).blocs_init() ;
        /* ]]> */

    vois tu une solution ? merci

    • n’importe quoi, c’était les blocs de saisie qui ne se dépliait pas, j’ai ajouté

      saisies_fieldset_pliable();
      	onAjaxLoad(saisies_fieldset_pliable);

      et ça fonctionne ;)

    • De plus cQuery, c’est les crayons, non ?
      Voici un exemple d’utilisation qui devrait fonctionner :

      ;(function($){
        $(window).load(function(){
      	function saisies_fieldset_pliable(){
      		// bla bla bla
      	}
      	saisies_fieldset_pliable();
      	onAjaxLoad(saisies_fieldset_pliable);
        });
      })(jQuery);

      ou peut-être aussi sous cette forme :

      var init_f = function() {
      	// bla bla bla
      }
      if(typeof onAjaxLoad == "function") onAjaxLoad(init_f);
      if (window.jQuery) jQuery(document).ready(init_f);

    Répondre à ce message

  • Bonjour,
    je tombe sur un os que je n’arrive pas à résoudre.
    J’ai surchargé blocs.css.html en en créant un dans squelettes/outils.
    Très bien, sauf que...
    Pour une raison que j’ignore, le CS met les déclarations de styles ainsi générées dans local/couteau-suisse/header.css. Du coup, les chemins pour des images de background ne sont plus bons puisqu’il s’agit de chemins relatifs

    Ce qu’il y a d’étrange, c’est que sur mon serveur local de développement, il n’y a pas de création du fichier local/couteau-suisse/header.css : les déclarations css sont directement intégrées dans le head (et du coup c’est OK)

    Il y a un truc qui m’échappe : pourquoi cette différence de comportement ?

    Répondre à ce message

  • 5

    Bonjour Patrice,
    Les blocs dépliables font partie depuis longtemps de mes incontournables.

    Je rencontre une difficulté avec l’utilisation de cette lame avec le plugin « manuel de rédaction du site ». Les blocs dépliables dans l’article utilisé par le manuel ne fonctionnent plus (les blocs ne se déplient plus). Une idée du pourquoi ?
    SPIP 3.0.20 + CS dernière version
    PS : Merci encore pour ce couteau qui rend si service.

    • Un petit up ! Pas de solution pour « débloquer les blocs » ?

    • Bonjour.
      C’est un peu difficile de répondre à ta question, je ne connais pas ce plugin « manuel de rédaction du site ».
      Il doit y avoir un conflit, une erreur JS induite par cette cohabitation. Peut-être faut-il commencer par chercher cette erreur grâce aux outils de développement des navigateurs ?

    • Oui, bien sûr, j’avais bien commencé par cela. Pas d’erreur (des warnings en pagailles, mais pas d’erreur).
      En PJ, un fichier image pour aider (peut-être, enfin, j’espère !!!), à comprendre ce qu’il se passe :

      Pour info, le plugin blocs dépliables fonctionne bien en utilisant la syntaxe du CS mais j’aimerais vraiment garder le CS, ne serait-ce pour une histoire de certitude dans la compatibilité (il y a plus de 2000 articles sur le site et un bon paquet utilisent la lame blocs dépliables : je veux être certain de leur bon fonctionnement alors je ne souhaite pas changer d’outil !)

      PS : Je peux te donner un accès privé si tu veux voir

    • Donc, a priori, le problème est réglé en changeant un peu la configuration de la lame.

      L’option « Balise pour les titres » doit être changée et portée par exemple à : h5.

      Du coup, plus de conflit. Je confirme que le plugin « manuel de rédaction du site » refonde tous les paragraphes situés après un titre et empêche les blocs de fonctionner lorsqu’ils sont en h4, tout comme les titres de SPIP.

      Cette option avait été prévue justement pour résoudre certains éventuels conflits avec des plugins ou des squelettes. Bien sûr on peut mettre h5, mais aussi div.

    • Comme d’habitude, ta réponse est aussi limpide que rapide !
      Un énorme merci !
      Long life to the Swiss Army Knife (and his developper ! ;-))

    Répondre à ce message

  • 1

    Bonjour,
    Comment faire pour que le bloc se déplie au survol du titre et non au clic ?
    Merci

    • Bonjour,
      +1 ! Ça m’intéresserait aussi cette possibilité de déplier un bloc au survol. As-tu trouvé une solution depuis le post précédent du 25 juillet ?

    Répondre à ce message

  • 7
    Renée Picard

    J’ai mis un formulaire

    <?php include_once("/opt/nursit/sys/home/nursit/matrice/public/4.2/07/spip/ecrire/balise/formulaire_.php"); if ($lang_select = "fr") $lang_select = lang_select($lang_select); inserer_balise_dynamique(balise_FORMULAIRE__dyn(arguments_balise_dyn_depuis_modele('FORMULAIRE_FORMIDABLE'), '2'), array('', '', '', '', 'fr', '1')); if ($lang_select) lang_select(); ?>

    dans un bloc dépliable. Comment faire pour qu’il reste déplié lorsqu’il y a des erreurs dans la saisie du formulaire ? Le formulaire a été fabriqué avec le plugin formidable.

    • Il me semble qu’un commande jQuery devrait faire l’affaire : la détection d’une classe d’erreur incluse dans un bloc pourrait provoquer l’ouverture de celui-ci.

    • Bonjour,
      L’idée serait de déplier le bloc si une classe erreur est trouvée à l’intérieur...
      Est-ce que le code JS suivant fonctionne ?
      Pat

      jQuery(document).ready(function() {
        jQuery('.cs_blocs').has('.erreur_message')
          .find('.blocs_titre.blocs_replie').blocs_toggle();
      });
    • Renée Picard

      Résolu ! C’est parfait. Merci

    • Merci du retour, je viens d’ajouter ce cas de figure à la doc ci-dessus ;-)

    • Christian Julia

      Bonjour,

      J’ai également ce problème. J’ai mis le bout de code dans le fichier blocs.js mais cela ne donne rien. Ce n’est peut-être pas la bonne place.

      Par ailleurs, le même problème se pose à l’inverse pour le message qui indique que tout s’est bien passé et que la réponse a été enregistrée. Le blocs se replie. Y a-t-il aussi un bout de code à ajouter (où ?) pour que le bloc reste ouvert pour que la personne qui a saisi le formulaire voie que tout s’est bien passé.

      Merci de votre aide. Cordialement.

    • Christian Julia

      Bonjour,

      Précision par rapport à mon précédent message : je suis en version 2.1.26. Le bloc ne reste pas déplié après validation du formulaire (forms et tables) même si je mets le bout de code proposé dans le squelette concerné (article.html).

      Merci de votre aide.

    • Christian Julia

      Bonjour,

      Je continue ma recherche dans une grande solitude. J’ai résolu une partie du problème : le code proposé pour laisser le bloc déplié en cas d’erreur de saisie du formulaire semble fonctionner avec Formidable mais pas avec Forms et Tables. C’est déjà ça de reglé ! En revanche, je ne parviens pas à laisser le bloc déplié pour que reste apparent le message OK en vert en cas de validation. J’ai essayé avec la classe .reponse_formulaire_ok mais cela ne donne rien.

      Merci de votre aide.

    Répondre à ce message

  • 2

    Salut à vous !

    a propos de la balise BLOC_UNIQUE, serait il possible qu’elle n’agisse que sur une partie d’une page ? une div de class truc que l’on pourrait passer en argument ?

    genre :
    #BLOC_UNIQUE{oui}{truc}

    je m’explique :
    mon reglage general est sur BLOC_UNIQUE{non}.
    j’utilise des blocs à plusieurs endroits des pages (ex : les menus dans la « colonne » de gauche, (parfois) dans un article, les documents joints à un article...)
    je souhaiterai que l’une de ces « div » ai un comportement BLOC_UNIQUE{oui}, en l’occurrence une div class="portfolio" pour les documents joints (autrement dit, que, quand on ouvre un bloc de la « div portfolio », cela referme tous les autres blocs situés dans cette div mais pas les div « extérieures ».

    premiers pas pour moi dans le js...
    j’ai modifié le fichier /outil/blocs.js à la ligne 59 ainsi :

    		jQuery('.portfolio .blocs_titre').not('.blocs_replie').not(lignee).blocs_toggle();

    jusque la tout va bien...

    c’est un peu « rude » mais ça fonctionne :)

    si ça peut donner des idées...

     

    grand merci aux dev de ce plugin !...

    • Bonjour !
      C’est une très bonne idée. Il faudrait publier une modification du code plus « universelle » sur ce 2e paramètre de la balise ;-)

    • salut :)

      c’est qu’heuuu... j’en suis à la phase « je comprend ce que je vois » , je « comprends » le mécanisme... mais pas encore capable de coder en vrai :-\

      quand j’ai testé cet ajout, jme disais « ça serait logique que ça marche » mais... j’ai quand même été surpris que j’y arrive ! :-)

      donc sincèrement, je ne ferai pas mon apprentissage avec ton plugin ;-)

    Répondre à ce message

  • Bonjour,

    Lorsqu’il y a une carte (générée avec le plugin GIS) dans le bloc repliable, le carte est mal positionnée : décalée en haut à gauche du bloc leaflet de la carte. Il faut glisser la carte pour voir son contenu.
    Je ne sais pas si c’est dû à une mauvaise interaction entre les codes Javascript (je suis incapable de vérifier ça).

    Également lorsque j’applique une couleur de rubrique au background de cs_bloc la couleur se replie et n’est visible que pour le titre, alors que je voudrais que tout le contenu du bloc soit sur ce fond de couleur.

    Merci (et désolée pour cet usage décalé des blocs !)

    dd

    Répondre à ce message

  • 1

    Hello
    super plug-in :-)
    petit problème :
    j’essaie de faire des blocs imbriqués selon le shéma

    • bloc dépliable distant#1
      • bloc dépliable
      • bloc dépliable
      • fermer le bloc
    • bloc dépliable distant#2
      • bloc dépliable
      • fermer le bloc

    soit je choisis l’option « un seul bloc ouvert » et qu’on clique sur le niveau 2, le niveau 1 se referme avant l’affichage du niveau 2
    soit je choisis l’option « plusieurs blocs ouverts » et quand on clique sur le niveau 2, on ne sait plus fermer le niveau 1 (et les autres niveaux 1 s’ouvrent sans fermer celui qui est ouvert - ce qui est logique mais fout un peu le bazar)

    l’idéal serait d’avoir un comportement qui dit quelque chose comme : quand le niveau 2 est déclenché, le niveau 1 courant reste ouvert sauf si on clique sur un autre niveau 1. sinon (quand le niveau 2 n’est pas déclenché) le niveau 1 courant est fermé quand on clique sur un autre niveau 1,
    et un autre qui dit : fermer tous les blocs

    une idée ?
    merci d’avance, Eric

    (voir le site http://lab.etopia.be/#section2)

    • Eric Luyckx

      en fait, avec l’option « un seul bloc ouvert », le bloc parent se referme quand on clique sur le bloc enfant mais si on reclique sur le bloc parent, le bloc enfant apparaît ouvert…

    Répondre à ce message

  • bonjour, sur ce satané ie9 la fonction insert_head_css de certains plugins cassent les blocks, j’ai recensé diogène, legendes, modèles media, socialtags et z-commerce ... sur spip3 spip-r une idée du pourquoi ? merci

    Répondre à ce message

  • Notes et blocs dépliables
    Y a-t-il un moyen pour que les notes raccourci [[ma petite note de bas de page]] soit calculée « bloc par bloc » ou du moins soit affichée à l’intérieur de chaque bloc, à la fin du bloc déplié ? En effet, en l’état, SPIP calcule et rassemble toutes les nôtres en bas de page et, pour peu que tous les blocs soient repliés, on ne comprend pas très bien ce qu’il se passe…
    En espérant avoir été clair…
    Merci d’avance des pistes… (et vive le CS que je trouve à la fois commode et bien fichu !)

    Répondre à ce message

  • 3

    Bonjour,

    D’abord bravo, le module est une réussite !
    Je rencontre toutefois un problème, lié je pense au thème que j’utilise.
    Comme vous pouvez le constater ici, le triangle indiquant la présence d’un bloc s’affiche deux fois (sous firefox, pas explorer :/)
    Le problème n’apparait pas dans l’interface privée, seulement publique. Le thème utilisé est une adaptation du thème envision.
    J’avoue ne pas savoir du tout où chercher !
    Merci d’avance si vous avez des idées.

    • Effectivement, je n’ai pas d’élément d’explication, il faudrait creuser l’intéraction des différents composants de ton site (lames, plugins et squelette).
      Il semble que les liens <a> dépliables héritent de l’image de leur père (<h4>), et ne je sais vraiment pas pourquoi !
      Pour éviter ça, une règle CSS ressemblant à la suivante devrait suffire :

      .blocs_titre a {
        background-image: none;
      }
    • Effectivement, cela règle le problème, je l’ai ajouté au css du thème.
      Merci et tant pis pour la compréhension ^^

    • et j’ajoute qu’il faut aussi ajouter :

          .blocs_titre a:hover {
          background-image: none;
          }

      pour que le survol ne fasse pas apparaitre le deuxième triangle.

    Répondre à ce message

  • 1

    Bonjour

    Le plugin est vraiment très pratique.
    J’ai juste une question (pour info, ça ne concerne que l’intégration sur le site privé, et pas dans un squelette) :
    Lorsque le titre est court et le texte masqué, ils se mélangent. Je n’ai pas trouvé de solution pour n’afficher que le titre.
    Voici mon code :

    <invisible#1>
     Mon titre
     
     Mon texte
    </invisible#1>

    Ça m’affiche le lien visible :
    > Mon titre Mon texte (…)
    Je voudrais simplement :
    > Mon titre

    Merci

    • Bonjour,

      Je n’arrive pas à reproduire ton problème. N’y a-t-il pas une cause extérieure particulière à ton site (erreur JS par exemple) qui bloquerait la construction des blocs ?

    Répondre à ce message

  • 5

    Bonjour à tous,
    un mystère pour moi :
    soit dans un article :

    <bloc#2>
    <button type="button" class="btn btn-large btn-success">
    Faire votre demande de projet : 
    </button>
    
    
    <form3>
    </bloc#2>

    Cela fonctionne nickel…

    Et plus loin dans le squelette :

     #BLOC_TITRE_DEBUT{#2}
       bouton
       
        
       #BLOC_TITRE_FIN{#2}

    Le deuxième arrive à replier le bloc#2 losrqeue l’on clique sur le « buton » entre les deux balises,mais pas à l’ouvrir ???

    Qu’est ce que je n’ai pas saisie ?

    De plus comment utiliser les :  ?
    En balise seule dans le code, l’ancre fonctionne, mais la combinaison m’échappe pour la faire fonctionner avec la déplier/replier.

    Help, 3 heures que je je me sens chaque minute plus stupide !!

    Merci aux bonnes âmes pour leurs lumières

    • Bonjour,

      Je ne comprends pas bien, quel est ton objectif ? Contrôler un bloc à deux endroits différents, à l’intérieur d’un article et dans un squelette, c’est ça ?

      Déjà, ta syntaxe n’est pas du tout bonne elle crée le code suivant qui n’est pas du tout conforme :

      <h4 class="blocs_titre blocs_click cs_done blocs_replie"><a href="javascript:;" title="Déplier"><button type="button" class="btn btn-large btn-success">
      Faire votre demande de projet&nbsp;: 
      </button>
      
      </a><p><a href="javascript:;"></a></p>
      </h4>

      A priori il ne faut pas mettre de bouton dans un titre... Ne peux-tu pas t’en sortir avec les CSS plutôt ?

    • Bonjour c’est exactement ça un bouton déporter renvoie vers une encre qui contient le blog déplié replié accueillant lui-même un formulaire. Celui-ci conduit l’internaute jusqu’au bloc qui s’ouvre sur son clic. Le bouton contenu dans le bloc deplier/replir fonctionne parfaitement, mais je peux faire appel aux CSS.
      A ce jour je n’utilise ce merveilleux pluton que de façon basique.
      Quelle est mon erreur ? Je ne vous comprend pas ? Merci de votre réponse !

    • Ton erreur est dans la formulation HTML. Il faudrait que tu consultes sur Internet la façon correcte d’utiliser les balises, et voir celles que l’on peut mettre dans d’autres. Un plugin sur ton navigateur pourra aussi te permettre de déceler et corriger les erreurs de code.

      Notamment : pas de bouton dans un titre et seulement dans un formulaire, surtout pas de paragraphe non plus.

    • Voici le code correct dans l’article :

      <bloc#2>
      Faire votre demande de projet : 
      
      <form1>
      </bloc#2>

      Voici le code correct dans le squelette :

      <h4 class="titre_distant" onclick="jQuery('div.cs_bloc2').children('.blocs_titre').click();">
      	Faire votre demande de projet !
      </h4>

      Tout le reste doit être un habillage CSS !!

    • Bonjour Patrice,

      Grand Grand Merci !

      Long vie à spip et à tous ;)

    Répondre à ce message

  • 5

    Bonjour,

    ne connaissant pas le script j’apprécie grandement de trouver ce plugin prêt à l’emploi dont je me sert abondamment.

    Là je rencontre une difficulté sur un montage complexe
    cluetip > bloc dépliable > gis

    cluetip ouvre sans soucis une fenetre quand laquelle le lien depliement/repliement marche generalement (pas à 100%) et affiche le plan *la première fois*. Si je referme cette fenêtre cluetip et la réouvre, ça ne va plus jamais marcher... jusqu’au prochain chargement de la page web.

    Sur l’IRC on m’a dit d’utiliser reziseTo (qui est une fonction de la bibliothèque mapStraction qui est utilisé par GIS2) mais je ne suis pas convaincu : les plans s’affichent sans soucis si je sollicite l’affichage blocs dépliés, mais le problème de lien qu’on ne peut plus cliquer ensuite est également présent.

    Merci à toute personne qui serait susceptible de me fournir une piste.

    La page : http://rictus.info/spip.php?page=agenda

    • Bonjour, ce problème est lié au fonctionnement javascript de cluetip et à l’unicité de sa fenêtre qui est mise à jour à la volée en fonction des mouvements de la souris.

      Le Couteau Suisse ne repèrent que les transferts ajax, ce qui explique le fonctionnement normal des blocs dépliables au premier chargement de la fenêtre cluetip.

      Mais ce que les CS ne repère pas [1], ce sont les modifications de contenu à la volée : lorsque la fenêtre cluetip est mise à jour avec un contenu déjà chargé auparavant, donc sans ajax cette fois, les événements ouverture/fermeture sont perdus en route.

      Il conviendrait donc, pour réactiver ces événements perdus à chaque modification de contenu de la fenêtre, de relancer la fonctions blocs_init qui recherchera et activera les blocs sans événement.

      Je propose cette ligne de code à tester, elle n’est pas trop violente (mouseenter pourrait être remplacé par autre chose) car elle se base sur l’entrée de la souris sur la zone cluetip, précédant sans doute un éventuel dépliage de bloc :

      jQuery('#cluetip-inner').mouseenter(blocs_init);

      Mais peut-être y aurait-il une façon plus robuste de faire, à trouver dans le code JS de cluetip ?

    • Il est probable que les blocs dépliables pourraient tirer un meilleur parti de jQuery grâce à :
      -  la fonction delagate() (http://api.jquery.com/delegate/),
      -  ou mieux : on() (http://api.jquery.com/on/).

      Affaire à suivre, pour qui veut bien tester tout ça !

    • De retour après quelques temps je trouve ta réponses, sans avoir reçu de notification, il me semble. Merci de t’intéresser à ce problème

      Je suis à fond pour tester cela, mais franchement pas dégourdi. Donc la première question est : où suis-je censé insérer ce code ?

    • j’ai tenté de mettre ta ligne de script en pied du squelette affiché en tant que cluetip.

      Pas de changement. Peut-être faudrait-il plutôt que le code concerne le script. Là, ça me dépasse largement.

    • Tu as le lien public ? Peut-être plutôt le code au complet :

      <script type="text/javascript">/* <![CDATA[ */
      jQuery(document).ready(function(){
         jQuery('#cluetip-inner').mouseenter(blocs_init);
      });
      /* ]]> */</script>

    Répondre à ce message

  • 4

    Bonjour,

    Merci pour cette lame bien utile qui me sert pour de nombreux sites. Pour approfondir un peu, et puisque c’est fondé sur du javascript, que peut-on faire en terme d’accessibilité pour les gens qui désactivent le javascript dans leur navigateur ?

    • Bonjour, il me semble que les blocs sont systématiquement ouverts pour ceux qui n’utilisent pas JS, tu as essayé peut-être ?

    • Eh oui, j’ai testé mais le contenu reste figé, rien n’apparaît au clic, c’est là qu’est le hic !

    • Oui, c’est le JS qui ouvre/ferme les blocs. Il faudrait vérifier que si le JS est inactif, alors tous les blocs sont ouverts au chargement de la page... Il me semble bien que ça se passe comme ça déjà, non ?

    • Testé sur un autre ordinateur, et effectivement ça marche : JS désactivé, les blocs s’affichent dépliés. Désolé pour le bruit.

    Répondre à ce message

  • Bonjour,

    Il y a surement la réponse, mais je n’arrive pas à l’identifier visuellement.
    J’utilise spip 3 et eva web comme squelette.

    Le squelette me permet d’implanter des CSS dans mes squelettes.
    Mon niveau ne me permet guère d’aller plus , ce n’est pas faute d’essayer.

    Qu’inclure comme code CSS pour que tous mes articles soient affichés en bloc dépliable sans reprendre article par article ?

    Un grand merci,

    Répondre à ce message

  • 8

    Bonjour,
    Sous spip 3 en privé les balises du couteau suisse fontionnent bien, ...mais pas en public, savez-vous comment faire pour avoir ces blocs dépliables fonctionnels sous spip3 partie publique ?
    J’ai bien des erreurs JS aussi : (fichier http://www.monsite/local/cache-js/42359efa3fde43356ac3845b29ec954c.js.pagespeed.jm.42SGnBCBCy.js) - (erreur "Uncaught SyntaxError : Unexpected token ILLEGAL " ligne 1174)

    Capture de l’erreur en détail si-jointe
    « »
    Merci par avance si vous savez de quoi il s’agit !!

    • Bonsoir.

      Impossible de t’aider l’image est coupée et le JS est compressé. Une erreur JS bloque les blocs, il faut trouver laquelle. Peut-être en désactivant les autres plugins ? Ou en désactivant la compression JS dans SPIP ?

    • Bonjour, merci pour votre rapide réponse ! j’ai désactivé « jolis coins » du couteau suisse...et aussi toutes les compressions. Maintenant tout les autres outils fonctionnent y compris les blocs dépliables + onglets !

    • Bonjour,

      Je rencontre le même problème mais même en désactivant tous les autres plugins & toutes les autres fonctionnalités du couteau suisse cela ne fonctionne pas ...

      D’avance merci !

    • Quelques précisions : Version de Spip 3.0.8, couteau suisse en 1.8.133
      Squelette perso
      Niveau affichage, back office tout va bien, sur le site, le titre est cliquable, mais le bloc est déplié ...

    • même réponse, si le titre est déplié, c’est que le JS comporte une erreur bloquante, et il faut la trouver... Tu as peut-être un lien public ?

    • Oui oui http://www3.aconit.org/spip/spip.php?page=expositions sur le deuxième bloc, on voit les titres mais les blocs sont dépliés...
      Il est possible que l’erreur soit vraiment toute bête, c’est la première fois que j’utilise SPIP ...

      Merci pour cette réponse très rapide en tout cas !

    • il semble que ton head ne comporte pas les appels indispensables à tous les CSS et JS. Je t’invite à regarder comment le squelette distribué par SPIP fonctionne afin de t’en inspirer pour faire fonctionner correctement l’ensemble des plugins. Les différentes balises « #INSERT_HEAD(_XX)? » manquent notamment.

      Si tu désactives ton squelette en retrouvant le SPIP original, je pense que les blocs fonctionneront...

    • J’ai juste inclus la balise sans essayer de désactiver le squelette ... Et ça marche ! Erreur toute bête c’était sur !

      Merci beaucoup en tout cas !

    Répondre à ce message

  • 2

    Est-ce qu’il serait possible, en bidouillant cette lame, d’avoir un comportement similaire au menu « GPS » que l’on trouve sur le site du Groupe de Recherche et d’Action Pédagogiques et Educatives http://www.inattendu.org/grape ? Ce serait top !

    Répondre à ce message

  • Le comportement de la balise #iNTRODUCTION, avec ses points de suite cliquable, m’intéresse.

    Malheureusement, elle ne fonctionne pas avec le type d’objet #DESCRIPTIF de la table EVENEMENTS

    J’ai donc tenté d’utiliser un bloc dépliable en déportant le titre en pied de bloc et lui donnant l’intitulé «  ». dans l’espoir d’avoir à peu près le même comportement.

    Mais dans ce cas,le résumé refuse de se cacher, créant un texte en double. je livre à tout hasard mon code.

    #BLOC_TITRE{bloc#ID_EVENEMENT}
    #BLOC_RESUME{bloc#ID_EVENEMENT}
       [(#DESCRIPTIF|couper{150}|propre)]
    #BLOC_DEBUT{bloc#ID_EVENEMENT}
        #DESCRIPTIF
    #BLOC_FIN{bloc#ID_EVENEMENT}
    #BLOC_TITRE_DEBUT{bloc#ID_EVENEMENT} …
    #BLOC_TITRE_FIN{bloc#ID_EVENEMENT}

    Répondre à ce message

  • 10

    J’ai placé une image cartographique dans un bloc dépliable, de façon à n’afifcher la carte que lors d’un clic sur le titre.

    J’ai un soucis avec les fond GoogleMap qui sont tronqués (voir copie), alors qu’avec Open Layer, l’image dépliable est complète. Quel paramètre changer pour corriger cela.

    • Bonjour, est-ce que par hasard le problème est le même avec un bloc dépliable, mais ouvert et non fermé au chargement de la page ? en fait, certaines commandes Javascript ne s’exécutent pas dans un bloc invisible...

    • bonjour,,
      je rencontre presque le même problème :
      spip 2.1.12
      avec le plugin couteau suisse v 1.8.78

      En fait, j’ai activé sa fonction de blocs dépliables, mais je remarque qu’il n’y a pas d’effet sur la page publique alos que dans l’espace privé tout va bien :

      voila le résultat que j’ai sur la page publique : http://www.bi.refer.org/spip.php?rubrique27

      pourquoi les blocs ne se replient pas ? je ne comprend pas

    • Bonsoir

      Je ressort le problème avec spip 3, comment cela fut corriger en 2.1 ?

    • Il faut voir si une erreur javascript sur la page ne bloque pas le fonctionnement normal

    • Vas essayez de trouver ça, mais rien de sur, tu connais mon niveau php.

    • C’est grâce à la console de chrome ou firefox/firebug que tu pourras trouver des erreurs JS. t’as un lien public ?

    • regarde ici portage-rictus.pierre-kuhn.org/400
      clique sur localiser et tu vas voir 2 cartes, une complète et une couper.

    • Oui, c’est normal. Manipuler un objet dans un bloc fermé n’est pas toujours possible. Il faut laisser le bloc ouvert, permettre à la carte de se construire, puis seulement ensuite, fermer le bloc...
      Regarde ici, c’est tout OK :
      http://portage-rictus.pierre-kuhn.org/gypsy-lyon-festival.html?deplier=0

    • Donc il faut que je l’aisse le bloc ouvert au chargement de la page ? Comment faire sans variable dans l’url ?

    • Allez ça marche en déplier avant, je continu mes investigations.

    Répondre à ce message

  • 2
    zatoune

    Bonjour,

    Je cherche à pointer vers des blocs dépliables d’une page avec des urls comportant des ancres, chacune d’entre elles identifiant un bloc ; mon souci est de pouvoir arriver depuis l’extérieur sur le bloc directement déplié.
    Si quelqu’un a déjà pratiqué de la sorte, via jQuery ou autre, je serais bien intéressé.
    Merci d’avance

    Répondre à ce message

  • Bonjour,

    Il y a un problème d’interaction entre listes et blocs dépliables. Avec le #TEXTE suivant la plupart des liens administratifs de la page d’un article dans l’espace privé sont désactivés (cachés sous un DIV, j’imagine) :


    -* Ceci est un item de liste.
    <bloc>Ceci est un bloc.

    Texte du bloc.
    </bloc>


    Si on rajoute un saut de ligne avant <bloc>, SPIP considère que la liste est terminée et n’a plus de problème. On peut encore naviguer au clavier avec TAB, c’est juste un problème de masquage à l’écran je crois, mais c’est un peu embêtant ...

    PS : SPIP 3.0.5, couteau suisse 1.8.106

    Répondre à ce message

  • 7

    Bonjour, j’ai un soucis d’affichage de diaporama avec les blocs dépliables.
    J’utilise le plugin Spip jQuery Cycle (à jour). Lorsque j’insère le code du diapo dans la partie cachée du bloc, il n’apparait pas mais il est visible dans l’article hors du bloc.
    En regardant mon code avec firebug le diapo fonctionne mais il n’est pas visible ?!
    Y aurait-il incompatibilité ?

    • Salut, tu as peut-être un lien public à montrer ? Merci ;)

    • Oui, bien sur :
      LIEN

      J’ai oublié de dire que le site est sous spip 2.1.
      Merci.

    • Tu as fais un essai avec un bloc visible (donc non replié...) pour tester le diaporama ?

      Sinon, je vois que la largeur du div englobant la diapo est bonne (500 pixels) mais que la hauteur est à zéro car non spécifiée, même si les images à l’intérieur sont explicitement dimensionnées :

      <div class="dsjcycle" id="dsjcycle_id_50ffcec6be3ac" style='width:500px;background:ffffff'>

      Après, je ne sais pas pourquoi, il faudrait fouiller un peu, mais en attendant voici un patch qui semble fonctionner :

      .dsjcycle { height: 333px; }

    • Alors... J’ai testé avec le bloc « visible », le diapo apparait correctement, même quand je replie le bloc. Mais pas quand je le met dans « invisible ».

      Pour le patch, je l’ai inséré dans mon habillage.css, mais ça ne fonctionne pas. Faut-il mettre le code dans une feuille de style bien particulière ?

    • Rectification, le patch fonctionne quand je le met dans habillage.css.
      La page n’avait pas dûe être rechargée comme il faut.

    • Il est donc probable qu’un bloc fermé empêche le plugin jQuery Cycle de trouver la hauteur du bloc de diapo correctement, puisque le bloc englobant est invisible à ce moment (certaines propriétés désactivées).

      Si ce patch te suffit ça ira. Sinon, il faudra charger la page avec les blocs visibles, puis à la toute fin de la page, insérer une commande jQuery qui les fermera tous, une fois que les diapos auront été correctement configurés par le plugin jQuery Cycle.

    • Je ne sais comment, le patch augmente la hauteur de la page bien après le pied de page et ne correspond à aucun bloc sous firebug (sans doute invisible ?!). Ce n’est pas très élégant mais bon, en attendant ça ira.

      L’idée de charger le bloc ouvert puis le refermer, ce pourrait être la solution. J’ai lu ceci dans un précédent post qui concernait l’ouverture de tous les blocs et leur fermeture :

      jQuery(’.blocs_replie’).blocs_toggle() ;
      jQuery(’.blocs_titre’).not(’.blocs_replie’).blocs_toggle() ;

      Mais comme je ne connais pas ces commandes, j’ai besoin de conseil ! :)

    Répondre à ce message

  • 5
    christianD.

    Bonjour,

    Tout fonctionne bien avec Firefox, Chrome mais avec IE, même en V8, ça pose problème. Tout se passe comme si la fin d’un bloc n’était signalé et que les parties qui suivent un bloc étaient comprises dans ce bloc.

    Comme c’est pas très clair, je vous mets la page en question.

    • Salut.
      Quel est ton code HTML de départ ?
      Car au niveau du titre, je lis ceci sur ta page, et ce n’est pas très catholique en effet :

      <div class="cs_blocs">
        <h4 id="cs_bloc_id_messages" class="blocs_titre blocs_replie cs_done">
          <a title="Déplier" href="javascript:;"></a>
        </h4>
        <a href="javascript:;"><h3 class="inline">Derniers messages</h3>
        </a>
      </div>
      <a href="javascript:;"></a>
    • christianD.

      Bonjour Patrice,

      Ca donne ça.

    • Mais ça c’est bon, non ? Ce qui ne doit pas être valide, c’est le titre cliquable, et non le bloc à plier/déplier... Essaie peut-être avec un code simplifié ?

    • christianD.

      Je suppose que ça doit être bon car ça fonctionne sous Firefox, Chrome, Safari. Il n’y a que IE qui pose problème. Je vois pas trop bien.

      Si quelqu’un a déjà eu le souci et l’a résolu, je suis preneur.

    • christianD.

      Pour changer le titre cliquable, il faut aller où ?

    Répondre à ce message

  • 2

    Bonjour,

    Est-il possible de déplier d’un clic tous les blocs présents dans la page ?
    La fonction eq(index) et la balise #BLOC_DEPLIERindex ne s’appliquent qu’à un bloc.
    Peut-on le faire globalement ou en spécifiant tous les index de blocs via une boucle tels que
    #BLOC_DEPLIERi0, i1, i2, iN ou n=TOTAL_BOUCLE-1 ?

    Merci d’avance,

    Gautier

    Répondre à ce message

  • Bonjour je rencontre un problème avec le plugin
    J’ai un bout de code qui apparemment génère un conflit

    $(document).ready(function() {
    
        if($('.ie8').length){
            
            $('.ie8PngFixGlare').css('display', 'none');
            $('.ie8PngFix').css("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=
    'true',sizingMethod='crop',src="
     + $(this).attr('src')); 
        }

    je n’arrive pas à savoir pourquoi. Quand je le supprime tout fonctionne mais plus mon menu du coup.
    Si quelqu’un a une idée.

    Merci d’avance

    Répondre à ce message

  • 3
    christianD.

    Bonjour,

    Je découvre cette fonctionnalité et elle a l’air de correspondre à mes besoins. Le hic est que ça replie bien mais je n’arrive pas à déplier, malgré la présence du petit triangle.
    Je vous copie le code

    Je vois pas ce qui ne va pas... Merci d’avance.

    • Visiblement tu veux déplier un bloc distant. Ta syntaxe n’est effectivement pas bonne dans ce cas.

      Regarde l’exemple ici, la syntaxe y est expliquée.

      Il vaut mieux dans un premier temps, coder un exemple simple et vérifier qu’il fonctionne bien.

    • christianD.

      Merci Patrice. Je vais tout reprendre, ce sera effectivement plus simple.

      Et merci d’assurer la « permanence » en cette période de vacances.

    • ChristianD.

      Pour vous tenir complètement informé et après avoir tout repris, ça marche !

    Répondre à ce message

  • 1

    Est-il possible d’insérer un bloc dépliable à l’intérieur d’un notre bloc dépliable ? Si oui comment. Peut-on le faire depuis l’espace privée ou faut-il touché au code du squelette ?

    • Tout est expliqué dans l’article ci-dessus, et pour répondre à cette question, il eut été préférable de faire quelques essais préalables...

      Les blocs sont donc imbricables, et on peut en faire soit :
      -  dans un article (espace privé)
      -  dans un squelette HTML

    Répondre à ce message

  • 3

    Blocs dépliables imbriqués

    Bonjours : est-il possible d’avoir un bloc dépliable qui contienne lui même un ou plusieurs autres blocs dépliables ? J’ai fait quelques tentatives mais toutes sans succès aussi je me demandais si c’était réalisable ou non ?

    • Normalement oui ! As-tu essayé avec des blocs numérotés ?

    • Yessss, c’était la bonne piste ! Merci (beaucoup !)

    • Je voudrais faire la même chose, comment vous y êtes parvenu ?

    Répondre à ce message

  • 4

    De l’aide ! Je ne trouve pas ! S’il vous plaît !

    Mon code de départ :

    <B_rubriques4>					              
         <div id="side_categories">
    	<ul class="cat">
    	<BOUCLE_rubriques4(RUBRIQUES) {id_rubrique=210} {par num titre}{unique}>
    	<li>#BLOC_TITRE<a href="#URL_RUBRIQUE"[title="(#TITRE|attribut_html)"][ class="(#EXPOSE)"]>- [(#TITRE|couper{30})]</a>
    		<B_children4>
    		#BLOC_DEBUT<ul class="children">
    		<div style="margin-left:0.6em;">
    		<BOUCLE_children4(RUBRIQUES){id_parent} {par num titre, titre}{inverse}><BOUCLE_test_expose4(RUBRIQUES) {id_enfant}>#EXPOSE{' '}</BOUCLE_test_expose4>
    		<li class="cat-item cat-item-#ID_RUBRIQUE"><a href="#URL_RUBRIQUE"[ class="(#EXPOSE)"]><img src="squelettes/img/sub1.png"> [(#TITRE|couper{60})]</a></li>
    		</BOUCLE_children4></div>
    		</ul>#BLOC_FIN
    		</B_children4>
    		</li>
    </BOUCLE_rubriques4>
    </ul>
    </div>
    </B_rubriques4>

    Je voudrais un Titre d’onglet qui s’appellerait « Dossiers » et qui listerait les rubriques ayant le mot-clé « Dossier ». Possible ?

    Robert
    Merci

    • Bonjour,

      Euh, tu es bien dans l’article concernant les blocs dépliables, pas les onglets...
      Pour construire ta boucle, il faudrait un code plus simple, là c’est difficile à lire... Quelle est la version de ton SPIP ? Il me semble que le corps de ce que tu demandes est très simple :

      <B_rub0>
        #BLOC_TITRE
        Dossiers
        #BLOC_DEBUT
        <ul>
        <BOUCLE_rub0(RUBRIQUES){titre_mot=Dossiers}>
            <li>#ID_RUBRIQUE. #TITRE</li>
        </BOUCLE_rub0>
        </ul>
        #BLOC_FIN
      </B_rub0>
    • Super, enfin réussi à simplifier sur le modèle donné...

      Mais comment faire pour que la rubrique concernée par #TITRE puisse être accessible aussi (et pas seulement pour déplier le menu).

      Exemple boucle :

      <B_rubriques2>					              
      <div id="side_categories">
      <h2 class="mast3">Projets exceptionnels...</h2>
      <ul class="cat">
      <BOUCLE_rubriques2(RUBRIQUES) {id_mot=126} {par num titre}{unique}>
      <li>#BLOC_TITRE<a href="#URL_RUBRIQUE"[ class="(#EXPOSE)"]>[(#TITRE|couper{80})]</a>
      <B_children2>
      #BLOC_DEBUT<ul class="children">
      <BOUCLE_children2(RUBRIQUES){id_parent} {par num titre, titre}><BOUCLE_test_expose2(RUBRIQUES) {id_enfant}>#EXPOSE{' '}</BOUCLE_test_expose2>
      <li class="cat-item cat-item-#ID_RUBRIQUE"><a href="#URL_RUBRIQUE"[ class="(#EXPOSE)"]>[(#TITRE|couper{60})]</a></li>
      </BOUCLE_children2></div>
      </ul>#BLOC_FIN
      </B_children2>
      </li>
      </BOUCLE_rubriques2>
      </ul>
      </div>
      </B_rubriques2>

      Un grand merci pour votre aide

      Robert

    • Et pourquoi tu mets un lien dans le titre de ton bloc dépliable ? Il ne faut pas de balise <a> amha...

    • Merci,

      J’ai enlevé le lien <a> mais en cliquant j’ai le bloc qui se déplie mais je ne peux accédéer à la rubrique titre...

      Robert

    Répondre à ce message

  • 2

    bonjour,

    j’utilise le plugin pour un formulaire de recherche invisible similaire à celui de l’admin spip (loupe).

    si je veux que cela se déplie/replie en « mousseover » quel est la meilleurs manière de faire ?
    et comment mettre le focus sur la zone texte ?

    gregory

    • Salut, tu peux regarder la fonction blocs_init() dans outils/blocs.js : la première commande jQuery programme les clics... Dans ton propre squelette, il suffirait d’en écrire une similaire qui programmerait les « mouseenter » et les « mouseleave », une fois que le DOM est prêt. Cet article t’aidera peut-être : http://api.jquery.com/hover/.

      Au cas où, n’hésite pas à nous renvoyer le résultat de tes travaux, ça peut toujours servir à d’autres...

    • Bonjour,

      Je suis intéressé par cette fonction « mousseover » mais je n’ai toujours pas compris comment l’intégrer...

      Merci pour votre aide

      Robert

    Répondre à ce message

  • 3

    Personnaliser les blocs
    J’ai bien compris en lisant la doc que l’on peut personnaliser les blocs en leur affectant un #2, #3 etc...
    Juste par coquetterie (et pour que ce soit plus « parlant » donc plus facile pour le rédacteur), est-ce qu’il y aurait un moyen de passer un nom de classe « en clair », un peu à la manière de ce qui existe pour les modèles, en écrivant un truc du style
    <bloc|aller_plus_loin> ou <bloc|deplier>
    qui produiraient des <div class="cs_blocs cs_bloc_aller_plus-loin"> ou <div class="cs_blocs cs_bloc_deplier"> ?

    • Oui, mais pas avec cette syntaxe là : <bloc|aller_plus_loin> serait interprété comme un modèle par SPIP, et le raccourcis deviendrait inexploitable. Mais pourquoi pas : <bloc#aller_plus_loin>...

    • Bon sang mais c’est bien sûr !... Pourquoi vouloir compliquer quand cela peut être si simple !
      Merci.. (une fois de plus)

    • Sauf que pour l’instant, seules les valeurs numériques sont reconnues... Il faudrait changer le code pour que ça fonctionne.

    Répondre à ce message

  • 1
    Renée Picard

    Bonjour
    Dans la page plugin-thelia/inc/inc-rubrique_thelia.html j’ai mis un tableau pour afficher les produits et dans ce tableau il y a un bloc dépliable sur le titre du produit.
    http://www.conceptvirtuel.ca/mangersaison/spip.php?page=rubrique_thelia&id_rubrique_thelia=2
    Voici le code relatif au bloc dépliable :

    <table> ..... <tbody>.... <tr>	  
    <td>  #BLOC_TITRE	
    THELIA-TITRE
    #BLOC_DEBUT
    <span class="thelia_promo">THELIA-DESCRIPTION</span>
     #BLOC_FIN
    </td> ... </tbody> </table> 

    Le bloc se déplie bien avec firefox. Avec IE le bloc ne se déplie pas.

    Par contre bloc dépliable fonctionne ailleurs sur le même site mais ici il n’y a pas de tableau :
    http://www.conceptvirtuel.ca/mangersaison/spip.php?rubrique1

    Avez-vous déjà mis un bloc dépliable dans un tableau et si OUI comment faire avec IE ?

    Merci
    RP

    • Je viens d’essayer avec Firefox et IE6, tout fonctionne bien. Sinon il faudrait peut-être remplacer ton tableau par des div...

    Répondre à ce message

  • 4

    Au secours ! Mes blocs dépliables sont tous dépliés et ne se replient plus ! En allant sur la page d’administration, il est noté en haut de page : « Note : la librairie jQuery semble inactive sur cette page. Veuillez consulter ici le paragraphe sur les dépendances du plugin ou recharger cette page. » J’ai bien relu la partie d’article sur les dépendances, mais je ne vois pas qu’est ce que je dois faire : je suis en spip 2.1.12 Le site réinstallé début décembre marchait très bien et soudainement ça ne se replie plus depuis quelques jours. Peut-être dû à une mise à jour de Javascript ?

    Que dois-je télécharger ? Je le trouve où ? Je le place où ? Merci à tous pour toutes infos pertinentes.

    • Salut, tu as une adresse publique ?

      Il y a sans doute une erreur JS quelque part : à vérifier avec Firefox+Firebug ou Chrome. Peut-être un plugin interfère.

    • Bonjour, Merci pour cette première réponse très rapide. adresse du site : www.societ.sococodami.com

    • Merci. Je ne vois ni bloc ni erreur JS sur cette page...

    • Ils sont sur la plupart des pages accessibles par les liens ou le menu, essentiellement sur les pages de valeurs des timbres (c’est de la philatélie...)
      Merci

    Répondre à ce message

  • 1

    J’ai à présent un nouveau soucis avec l’image de fond pour les blocs titre h4
    J’ai personnalisé blocs.css.html dans mon répertoire /squelettes/outils pour définir une image de fond destinée à remplacer le triangle jaune défini par défaut
    background:transparent url(#CHEMIN{voir.gif}) no-repeat scroll left center;
    j’ai mis le fichier voir.gif bien sagement dans squelettes/ mais cette image ne s’affiche pas (ressource non trouvée). Ce qu’il y a de bizarre c’est que

    • la feuille de style calculée header.css affiche bien
      background: transparent url(sites/palestine.maferme.noisetier/squelettes/voir.gif) no-repeat scroll left center;
    • mais l’url recherchée est http://palestine.maferme.noisetier/local/couteau-suisse/sites/palestine.maferme.noisetier/squelettes/voir.gif
    • => C’est quoi cette url « fantaisiste » pour cette image de fond ? (je précise que je suis en mutualisation)
    • Bonjour.

      En fait j’ai du mal à comprendre ton exposé. Parfois, il vaut mieux mettre l’URL absolue, car les images CSS sont recherchées dans le répertoire de la feuille de styles. Essaie plusieurs formules, comme peut-être :

      • [(#EVAL{_DIR_RACINE}|url_absolue)]voir.gif
      • [(#CHEMIN{voir.gif}|url_absolue)]

    Répondre à ce message

  • 2
    Augustin

    Bonjour et merci pour cette extension !

    J’aimerais savoir comment faire pour rendre cliquable le texte du résumé en plus du texte du titre. Encore mieux, si c’est possible, rendre les deux blocs entiers cliquables pour déplier/replier le bloc caché.

    Merci d’avance !

    • Bonjour, travailles-tu dans un squelette ou à l’intérieur d’un article ? Probablement qu’une petite commande jQuery dans le résumé au moment du clic pourra faire l’affaire.

    • Bonjour et merci de la réponse.

      C’est pour les deux situations, mais plus particulièrement pour un template (j’affiche le titre et le chapeau de news, et elles sont appelées en AJAX lorsque le bloc est déplié).

      Merci !

    Répondre à ce message

  • 3

    Souci avec la balise #TITRE et ajax.

    Bonjour,

    la balise #TITRE semble ne pas fonctionner quand on utilise un bloc numéroté distant. Dans le squelette, elle créée les balises prévues mais elle ne les referme pas. Un bug ?

    <div class="cs_blocs cs_bloc1"><h4 class="blocs_titre blocs_replie blocs_ajax "><a href="http://fondation.linguasphere.info/spip.php?page=cs_liste_article&id_rubrique=1">
    		Mon titre

    Les balises HTML de fermeture </a></h4></div> ne sont pas créées dans le squelette.

    SPIP 2.1.11 [18566] et la version 1.8.44 (53934) du Couteau suisse. Un bug ?

    Amicalement.

    • Bonjour, pourrais-tu donner le code du squelette, qu’on puisse tester la chose ? Merci ;-)

    • Voici les extratits de squelettes. Pour la création des titres d’appels, en entête :

      		
      <BOUCLE_secteurs(RUBRIQUES){racine}>
      		[(#BLOC_TITRE{#ID_RUBRIQUE,
      [(#URL_PAGE{cs_liste_article}|parametre_url{id_rubrique,#ID_RUBRIQUE})]})]
      #TITRE
      </BOUCLE_secteurs>

      ...qui fabrique le code suivant pour chaque tour de boucle (le n° change) :

      <div class="cs_blocs cs_bloc1"><h4 class="blocs_titre blocs_replie blocs_ajax "><a href="http://fondation.linguasphere.info/spip.php?page=cs_liste_article&id_rubrique=1">
                      Mon titre

      ... dans lequel il semble manquer </a></h4></div>

      et plus bas, dans le contenu :

      <BOUCLE_secteurs1(RUBRIQUES){racine}>
      	#BLOC_DEBUT{#ID_RUBRIQUE}
      	#BLOC_FIN
      </BOUCLE_secteurs1>

      qui produit ceci :

      <div class="blocs_destination blocs_invisible blocs_slide cs_bloc_id_1"></div>
      <div class="blocs_destination blocs_invisible blocs_slide cs_bloc_id_7"></div>
      <div class="blocs_destination blocs_invisible blocs_slide cs_bloc_id_8"></div>	

      qui semble OK.

      Une précision peut-être importante :le site est sous ZPIP en HTML5.

      Pierrick

    • Bon, mon message est bloqué, je ne sais pas pourquoi !!!!!!

      Merci pour ce code très bien exposé. Les blocs éloignés n’ont pas tout à fait la même syntaxe. Regarde la doc ci-dessus à nouveau (paragraphe « Déplier un bloc éloigné de son titre »).

    Répondre à ce message

  • 3

    Salut

    Y a -t-il une méthode pour avoir deux séries de blocs distincts dans une page ?
    C’est à dire deux séries qui fonctionnent, qui s’ouvrent et se ferment de façon indépendante l’une de l’autre ?

    • As-tu fait des tests ? Il me semble que les blocs, numérotés ou non, n’ont pas ce genre de limitation... Ou je ne comprends pas ta question ?

    • Dans une même page :
      -  d’une part il y a un menu qui utilise les blocs pour ouvrir l’une ou l’autre des sous-rubrique.
      -  d’autre part, il y a un article et dans le texte de cet article, il y a des blocs pour donner le détails des items d’une liste.

      Enfin blocs-dépliables est configuré pour qu’il n’y ait qu’un bloc ouvert sur la page.

      Or donc mon rêve, c’est que chaque série (la série du menu et la série du texte) puisse gérer son ouverture/fermeture indépendamment l’une de l’autre.
      Or lorsqu’on déplie un item du texte, les items du menu se ferment et réciproquement.
      La notion de bloc numéroté ne fonctionne pas car ce sont tous les blocs de la page qui sont indexés et qui sont donc traités comme un seul ensemble.
      Quand aux blocs nommés (#BLOC_TITRE_DEBUT{toto}) ils permettent de commander l’ouverture de blocs non adjacents mais ne se préoccupent pas du tout d’identifier une série de blocs d’une autre.

      Bref il me reste à isoler le menu dans une iframe avec le calcul hasardeux de la hauteur de son inclusion dans la page. Ce qui n’est pas une solution satisfaisante. Bref, bref, ce n’est pas joyeux !

    • Dans ce cas, il te faut surcharger le plugin jQuery jQuery.fn.blocs_replie_tout proposé par le Couteau Suisse en le réécrivant à ta sauce, et ça, c’est de la programmation jQuery.

      Code d’origine à modifier :

      // replie tout sauf le bloc appelant et sa lignee parentale
      Query.fn.blocs_replie_tout = function() {
        if(blocs_replier_tout) {
          // applique-t-on la fonction sur cs_blocs ou sur blocs_titre ?
          var cible = this.is('.cs_blocs')? this : this.parents('div.cs_blocs');
          // lignee du bloc
          var lignee = cible.children('.blocs_titre');
          jQuery('.blocs_titre').not('.blocs_replie').not(lignee).blocs_toggle();
        }
        return this;
      }

      Admettons que tu encapsules ton menu dans un div.blocsmenu et les autres blocs dans un div.blocstexte. Après l’appel du fichier bloc.js dans le header, il faudrait réécrire ta fonction, un peu dans cette idée (code non testé !) :

      // replie tout sauf le bloc appelant et sa lignee parentale
      // + distinction blocsmenu / blocstexte
      jQuery.fn.blocs_replie_tout = function() {
        if(blocs_replier_tout) {
          // applique-t-on la fonction sur cs_blocs ou sur blocs_titre ?
          var cible = this.is('.cs_blocs')? this : this.parents('div.cs_blocs');
          // liste des blocs à ignorer : est-on dans le menu ou non ?
          var pastouche = cible.parents('.blocsmenu').length
            ?jQuery('.blocsmenu').children('.blocs_titre')
            :jQuery('.blocstexte').children('.blocs_titre');
          // lignee du bloc
          var lignee = cible.children('.blocs_titre');
          jQuery('.blocs_titre').not(pastouche).not('.blocs_replie').not(lignee).blocs_toggle();
        }
        return this;
      }

    Répondre à ce message

  • 1
    stephane

    Bonjour a tous.

    Je découvre ce plugin et je cherche à mettre sous mes bloc forum un bloc dépliable pour le formulaire de réponse (comme sur SPIP CONTRIB).
    J’utilise donc Ajax avec une syntaxe (#BLOC_TITRE[(#URL_PAGEmonajax|parametre_urlid_article,#ID_ARTICLE)])]

    J’ai un effet que je ne comprend pas : la première fois que je clique sur le lien pour déplier, le formulaire s’insere correctement dans la page sous le thread.
    Mais si je clique sur un second bloc depliable d’un autre Thread, la page ajaxée s’ouvre complétement et pas uniquement un bloc dans la page d’origine :-(

    Une idée ?

    • Ton exemple de code est passé dans la moulinette typo de SPIP et n’est pas très clair... Peut-être faut-il ici utiliser les blocs numérotés ?

    Répondre à ce message

  • Thomas

    Bonjour,

    Merci pour ce plug-in très utile. Néanmoins, je rencontre un problème, et après avoir lu les commentaires postés récemment, je n’ai pas vu quiconque en parler.
    Voici le problème, lors de l’utilisation de la syntaxe :

    <bloc>
    
    Titre
    
    
    Texte caché 
    
    
    [( Texte dans un bloc ayant un fond coloré )]
    
    </bloc>

    L’affichage n’est pas celui désiré. En effet, sur Mozilla Firefox, tout fonctionne pour le mieux, ce qui n’est d’ailleurs pas surprenant. Mais, sur notre cher ami Internet Explorer dans sa version 9, le titre du bloc apparaît correctement, mais même en cliquant dessus, impossible de l’ouvrir. En effet, ce dernier reste fermé. De plus, lors de l’utilisation du mode de compatibilité d’IE, les titres des blocs acceptent enfin de montrer leur contenu, mais, le titre devient très très gros (du genre titre h3-h4). Après avoir étudié les feuilles de style associées à ce plug-in et les paramètres SPIP, il semblerait que ce dernier paramètre soit configurable. Voici mes deux questions :
    D’où vient cette différence d’affichage entre le mode normal et le mode de compatibilité de IE ?
    Pourquoi, en mode normal, les blocs refusent-ils de bien vouloir se déplier ?

    Cordialement,

    Thomas

    Répondre à ce message

  • Gaz electricite

    Déja merci beaucoup pour ce plugin,
    Toutefois j’ai un petit problème ;

    Mon cas : j’utilise plusieurs blocs avec pagination dans un corps qui est inclus dans une page.
    (j’ai utilisé des blocs numérotés),
    La pagination des blocs rafraîchi tout le corps de la page (je ne peux pas enlever l’ajaxation du corps de la page car il m’est utile pour d’autres cas)

    Problème : si je clique sur la pagination le bloc se referme quant la page se rafraîchi.. j’ai essayé d’utiliser le code javascript donné dessus mais ça ne marche pas peut être parce que mon corps de page est inclus..
    Merci pour votre aide
    Cordialement ,

    Répondre à ce message

  • 4
    Renée Picard

    Bonjour
    J’aimerais qu’à l’ouverture de la page la première fois, le bloc soit replié et qu’une fois qu’il y a eu une première recherche de produit (Thelia) le bloc soit déplié.
    En allant voir la page vous comprendrez mon souci. Je n’ai pas trouvé une autre façon de faire afficher la recherche THELIA qu’un développeur PHP a fait ?
    VOICI le lien :
    http://www.paniersdici.com/spip.php?article112
    Merci
    RP

    • Bjr,

      As-tu essayé par exemple avec un truc du genre (non testé !) :

      #BLOC_TITRE{toto,[(#ENV{type}|=={1}|?{visible,invisible})]}

    • Renée Picard

      Non cela ne fonctionne pas.

    • Renée Picard

      J’ai essayé
      #BLOC_DEPLIERproduit,[(#ENVtype|==1| ?visible,invisible)]
      cela ne fonctionne pas non plus mais est-ce une piste ?

    • Mon exemple précédent ne marche pas comme ça oui, mais c’est une piste : tu peux aller pas à pas en définissant clairement ce qui peut dans le contexte #ENV être valide pour créer un bloc ouvert (visible) ou fermé (invisible) en fonction du type de page... Il faut pour cela informer la balise #BLOC_TITRE :

      [(#BLOC_TITRE{[(#ENV{type}|=={1}|?{visible,invisible})]})]

      Sinon, pour la piste JS, #BLOC_DEPLIER doit obligatoirement avoir un numéro de bloc dans son argument. Un truc du genre qui déplie le premier bloc de la page si l’argument &type=1 est présent dans l’URL :

      [(#ENV{type}|=={1}|oui)#BLOC_DEPLIER{0}]

    Répondre à ce message

  • 7

    Tres bien les blocs depliables a distance.

    Cependant installes dans une boucle d’articles en ajax, les balises bloquent le chargement des articles suivants sur la meme page sous les articles precedants.

    Y a-t-il un moyen de contourner ce probleme ?

    Merci

    • j’ai un autre problème, ne peut-on pas mixer les blocs dépliables à distance dans une boucle ?

      la boucle suivante m’ouvre tous les blocs en même temps, alors que je ne voudrais n’en ouvrir qu’un à la fois :

      <B1><ul>
      <BOUCLE1(ARTICLES){par date}{inverse}>
        <li>
        #BLOC_TITRE_DEBUT{toto}<b class="texte">[(#DATE|annee)]</b>#BLOC_TITRE_FIN<br>
        	<small><abbr class="published"[ title="(#DATE|date_iso)"]>[(#DATE|affdate_jourcourt)]</abbr>[, <:par_auteur:> (#LESAUTEURS)]</small>
        
        #BLOC_DEBUT{toto}
      	#INTRODUCTION
        #BLOC_FIN
      </li>
      </BOUCLE1></ul>
      </B1>
    • Salut,

      As-tu essayé par exemple avec un truc du genre (non testé !) :

      #BLOC_TITRE{toto,[(#COMPTEUR_BOUCLE|=={1}|?{visible,invisible})]}

    • Resultat negatif :
      Devant le 1er titre de la liste j’ai un « visible} » et « invisible} » pour les titres suivants, qui apparaissent,
      et les blocs continuent à s’ouvrir tous en meme temps..

    • Je viens de comprendre ton souci. C’est normal que tous les blocs s’ouvrent à la fois : ils ont le même identifiant !!

      Pour changer d’identifiant à chaque article il faut le code suivant :

      <B1><ul>
      <BOUCLE1(ARTICLES){par date}{inverse}>
       <li>
       #BLOC_TITRE_DEBUT{toto#COMPTEUR_BOUCLE}blabla#BLOC_TITRE_FIN
       blabla
        #BLOC_DEBUT{toto#COMPTEUR_BOUCLE}
              #INTRODUCTION
       #BLOC_FIN
      </li>
      </BOUCLE1></ul>
      </B1>

      Ca marche comme ça ?

    • Oui, parfaitement !

      Ma principale difficulté a été ensuite de retrouver mes div, un peu complexe certes, et plus encore à l’appliquer aux blocs à distance..
      Enfin bref, près d’une semaine de bidouille pour y arriver. Reste que mon squel passe la validation w3c..

      Merci de ton aide !

    • PS : as-tu qlq conseils pour le « necessite » du fichier plugin ?

      Le plugin necessite deja spip2, cfg, mais ne necessite pas le CS pour tous les squels, uniquement pour celui dont je t’ai parlé en MP, et dont je doute encore de pouvoir le distribuer en GPL, pour cause de droit sur l’original..
      Aussi cette question resolue, je ne souhaite pas appliquer une necessite ds plugin, pour les users qui choisiraient un des autres squels.

      Ma question, si tu peux y repondre : Est-possible et comment mettre une sorte de necessite, ds le panneau cfg, dans le cas où l’on selectionne le squel qui en a besoin ?

    • Finalement je v faire un plugin a part ca sera plus simple.

    Répondre à ce message

  • 5

    Bonjour,

    Y-a-t-il un moyen de rajouter automatiquement le paramètre cs=print à toutes les URL sans reprendre les squelettes.

    Je pense à une commande php certainement dans le fichier mes_options ou mes_fonctions, mais quelle commande utiliser ? Je n’y connais pas grand chose de ce coté là !

    Je ne passe pas par une page intermédiaire mais utilise le code onclick=« window.print() ; return false » dans un bouton imprimer.

    Merci d’avance pour votre aide et un grand merci à vous pour cet outils génial qui rend bien des services.

    • Bonjour,

      Si tu n’utilises pas de squelette spécifique pour l’impression (affublé peut-être du paramètre cs=print), alors il faut passer par les CSS dédiés à l’impression : http://www.alsacreations.com/tuto/l....

      N’hésite pas à donner un retour de ton travail à ce sujet, ce pourrait être intéressant pour d’autres utilisateurs.

    • Le truc c’est que rien n’y fait en css. Display block ne fonctionne pas. visibility non plus. Je ne dois pas taper sur la bonne classe. Je ne comprend pas se que fait cs=print. Tu n’aurais pas une piste ?

    • Eh oui, les CSS, c’est du précis ;-)

      Le paramètre cs=print implique une présentation différente des blocs calculée en PHP. Tu pourrais peut-être utiliser le plugin « Plugin version imprimable » que le Couteau Suisse, je crois, reconnait automatiquement...

    • Bon au final la solution c’est : div.cs_blocs div.blocs_invisible {display: block;}

      Peut être pourrais-tu indiquer dans la doc que si on veut faire un bouton imprimer (sans passer par une page intermédiaire) avec la commande onclick="window.print() ; return false" sur un lien il faut modifier la css d’impression avec le code div.cs_blocs div.blocs_invisible{display: block;} pour que les blocs soient ouverts.

      En tous cas merci les ces lames bien utiles.

    Répondre à ce message

  • Bonjour,

    Les blocs dépliables semblent ne plus fonctionner quand le cache du navigateur est rempli à un certain point : un clic sur un bloc dépliable et il ne se déplie pas. Dès qu’on vide le cache, le bloc peut se déplier.
    Ce problème est constaté sur Firefox 3.6.12 surtout, en moindre mesure sur IE 6.
    Version du couteau suisse : 1.8.18.00.
    Avez-vous rencontré ce problème ?

    Merci !

    Répondre à ce message

  • 4
    norbi90160

    Bonjour,

    J’aimerais changer la couleur par défaut du lien du bloc dépliable.
    Je suis intervenu dans le fichier bloc.css.html en rajoutant l’instruction acolor:blue ;
    Cela n’a eu aucun effet.

    Comment faudrait-il faire ?
    Merci.

    • Bonjour. Il ne faut pas modifier le fichier original. Soit tu ajoutes le style dans un de tes fichiers CSS perso, soit tu recopies d’abord outils/blocs.css.html dans le dossier outils/ de ton squelette, avant de le modifier. Toute modif doit être suivie d’un vidage des caches SPIP et d’une reconstruction du CS.

      Le couple Firefox/Firebug te dira exactement ce qui se passe exactement au niveau des priorités CSS.

    • norbi90160

      Pat,

      Merci pour ta réactivité.
      A vrai dire je n’ai pas tout saisi ce que tu as écrit.

      Pour ma part, j’ai recopié le fichiers original blocs.css.html à la racine du site dans le répertoire squelettes/outils.
      J’ai ensuite rajouté l’instruction a{color:blue} dans le fichier.
      J’ai vidé le cache Spip, supprimé tous les fichiers présents sous le répertoire tmp.
      Cela n’a eu aucun effet.
      Par rapport à ta réponse, je ne sais pas comment (où) se construit un fichier CSS perso.
      Je ne sais ce que signifie « reconstruction CS ».
      Pour firebug, je viens de l’installer, encore trop tôt pour bien maîtriser son mode de fonctionnement.

      1. « reconstruction CS » = reconstruction des caches du Couteau Suisse en réaffichant sa page d’admin (lire l’article plus haut).
      2. blocs.css.html doit toujours être dans un dossier outils/, sinon il n’est pas reconnu par le plugin pour la surcharge. L’intérêt de surcharger ce fichier est de vouloir changer pas mal de choses dedans pour mieux adapter l’aspect des blocs à ton site
      3. il s’agit ici d’avoir les connaissances suffisantes en CSS : a{color:blue}, c’est très vaste comme sélecteur et peut-être pas vraiment adéquat pour ce que tu cherches. Si tu n’as pas d’idée réelle de la structure CSS de ton site, Firebug t’aidera beaucoup, tu verras les chaines de priorité. Tu pourras même bidouiller avec en live, pour trouver exactement ce qu’il te faut.
      4. Quand tu regardes le code du squelette dist de SPIP (http://core.spip.org/projects/spip/repository/revisions/16973/entry/branches/spip-2.1/squelettes-dist/inc-head.html) tu vois déjà l’ordre dans lequel les Fichiers sont appelés. Tu peux notamment y vois que SPIP appelle tout seul un fichier perso.css placé dans la racine de ton squelette, et que le Couteau Suisse place ses CSS grâce à la balise #INSERT_HEAD_CSS.
      5. sache que SPIP compile également les headers, ce qui masque les modifs que tu peux faire ici ou là. Je te conseille donc de travailler sans cache et sans compression dans un premier temps (outil « SPIP et le cache… »).

      Bon courage !

    • norbi90160

      Après avoir pratiquer firebug :) installer et utiliser Web developper, lu (et compris) un peu de tuto sur CSS et appliquer tes conseils.... on comprend mieux et on en arrive même à trouver des solutions !!
      Merci.

    Répondre à ce message

  • 7

    Je viens de remarquer un truc mais c’est peut être comme ça depuis longtemps : si on charge dans le bloc un contenu ajax, les boutons d’admin (recalculer,...) se dédoublent. Ils s’enlèvent quand ont replie le bloc...

    • ca me conduit à penser que dans ton « contenu Ajax » il y a des boutons d’admin qui viennent se superposer à ceux de la page principale. Pour t’en assurer, charge le contenu ajax tout seul dans une page vierge, s’il y a des boutons d’amin ==> bingo.

    • Oui je m’en doutais bien. que c’était ca. Mais bon dans le squelette de la page appelée, je n’ai pas mis de balise #FORMULAIRE_ADMIN... En plus je viens de voir qu’il n’y a plus besoin de la mettre, que spip la rajoute tout seul... Alors comment faire ?

    • tu peux faire un truc du genre
      <!-- #FORMULAIRE_ADMIN --> dans ta page appelée par ajax.

      Mais c’est hyper cosmétique, en fait les boutons marchent et seuls les gens connectés les verrons, donc c’est pas un souci je pense ?

    • Je ne comprends pas. Tu me dis d’ajouter <!-- #FORMULAIRE_ADMIN --> dans ma page appelée par ajax ? J’ai bien dis précédemment que cette balise n’était pas dans la page appelée par ajax.

    • Oui, tu devrais regarder la doc de cette balise.

      Si tu ne la mets PAS, spip la met tout seul là où il pense que c’est bien. Si tu la mets Spip ne la met pas à ta place. Du coup, le conseil que je te donne est de la mettre toi, (du coup Spip ne la mettra pas tout seul) MAIS, dans un commentaire html qui ne sera donc pas affiché.

      d’où la syntaxe <!-- --> qui est le début et la fin du commentaire html donc non affiché.

      Ca fait donc un truc qui a l’air idiot, je le conçois :-) il faut mettre une balise pour éviter qu’elle ne se rajoute toute seule.

      et ca fait bien
      <!-- #FORMULAIRE_ADMIN -->

      tu devrais essayer ;-)

    • En effet, c’est poilant ;-)

      Une autre piste (non testée) pour le squelette en question, s’il n’est appelé que par AJAX :

      <?php global $flag_preserver; $flag_preserver = true; ?>

      Merci du résultat de tes tests, Yffic ;-)

    • Le formulaire en commentaire, ca fonctionne... Mais pas le code php...

      En fait on ne voyait pratiquement pas le dédoublement des boutons d’admin avant que je n’installe le mini bandeau... Avec ce plugin ca saute aux yeux... C’est pas grave effectivement, mais ca ne fait pas propre...

    Répondre à ce message

  • 2

    Bonjour,

    j’essaie d’utiliser les blocs dépliables. Globalement, ca marche. La seule chose qui me chagrine, c’est que le premier paragraphe d’un bloc perd ses <p></p>. Ex :

    <bloc>
    
    Un titre qui deviendra cliquable
    
    Ligne 1
    
    Ligne 2
    
    </bloc>

    aurait du me donner qq chose du genre

    <p>Ligne1</p>
    <p>Ligne2</p>

    Or, ca me donne plutôt

    Ligne1
    <p>Ligne2</p>

    Je rate qqchose ?

    Répondre à ce message

  • 1

    juste pour dire :
    patrice, cet outils est une simple tuerie !
    merci

    Répondre à ce message

  • 3

    Impression blocs dépliables...

    Je ne comprends pas pourquoi le contenu des blocs dépliables ne s’impriment pas (ni avec le plugin imprimer, ni avec le plugin pdf).

    Page exemple : http://questions-enfants.org/spip.php?article2695

    Merci à vous

    • Pas de réponse ni de piste de solution ?

      Merci à vous.

      Robert

    • Bonjour.

      Tes blocs sont-ils à l’intérieur d’un article ou directement dans le squelette ? S’ils sont dans le squelette sous forme de balises #BLOC, alors tu dois aussi surcharger les pages article_pdf.html et imprimir_articulo.html en ajoutant les balises adéquates pour que tes blocs apparaissent aussi...

      Mais peut-être je me trompe ?

    • Les balises #BLOC sont bien dans le squelettes sur un boucle du plugin correspondant (Plugin Lire aussi). Je ne vois pas comment « surcharger »...

      Mais je fais « suer » le monde, non ?

    Répondre à ce message

  • 2

    Bonjour a tous,

    J’ai mis a jour mon couteau suisse, dans SPIP 2.0.10, puis active les blocs repliables.
    J’ai ajouter dans mes CSS :
    div.cs_blocs>div
    border:solid 2px ;

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

    Puis insere dans un article les balises donnees plus haut et egalement mis dans un des squelettes les balises correspondante.
    Resultat :

    <div class='cs_blocs'><h4 class='blocs_titre blocs_replie blocs_click'><a href='javascript:;'>Un titre qui deviendra cliquable</a></h4><div class='blocs_destination blocs_invisible blocs_slide'>
    Le texte a cacher/montrer, apres deux sauts de ligne&hellip;
    </div></div>

    Ce qui me semble correcte. Les CSS fonctionnent mais pas d’interactivite ni repliage ni pliage.
    Le tout teste sous Firefox ...

    J’ai du louper quelques chose, non ?
    Merci de votre aide,
    Jacais

    • Peut-être une erreur Javascript sur ta page bloque-t-elle le dépliement/repliement ? Le couple Firefox/Firebug te donnent-ils des infos à ce sujet ? Tu as un lien public ?

    • L’erreur provenait en effet d’une erreur javascript, plus precisement des appels de fichiers js exterieurs liés aux plugins, appels que je faisait (bêtement) a la main.
      Un remplacement de tous mes appels par #INSERT_HEAD a directement reglé le probleme !
      Merci Patrice !

    Répondre à ce message

  • 1

    Salut,
    Voici le lien de la page en question :
    http://souleilla.com/beroagermany/spip.php?article48

    Je n’arrive pas a retirer d’information pertinente pour debuger avec firebug ...

    • Bah en fait, voici ce que me dit Firefox, il y a bien une erreur dans ton fichier fonction.js, et ce fichier ne fait pas partie du Couteau Suisse :

      onAjaxLoad is not defined
      http://souleilla.com/beroagermany/squelettes/javascript/fonctions.js
      Line 77

    Répondre à ce message

  • Plutôt que de voir le bloc.css.html directement intégré dans le html, peut-on faire une feuille de style externe ? J’imagine que c’est possible mais je ne trouve pas le fichier qui intègre le css directement dans le HTML.

    Répondre à ce message

  • Bonjour
    J’ai essayé le code :

    BLOC_TITRE{[(#URL_PAGE{golfs-ligue}|parametre_url{'id_golf',#ID_GOLF})]}

    Le résultat du source :

    <div  class="cs_blocs">
    <h4  class="blocs_titre blocs_replie cs_done">
    <a  title="Déplier"href="javascript:;">url/SPIP/spip.php?page=golfs-ligue&id_golf=00913}
    </a>
    </h4>
    <div  class="blocs_destination blocs_invisible blocs_slide">
    </div>
    </div>

    Je ne sais pas d’où vient le } de la fin du lien au lieu d’un >

    ADB

    Répondre à ce message

  • 3

    Comment maintenir le bloc déplier au rechargement de la page ?

    Bonjour, j’inclus un

    du plugin form&table dans le bloc déplier/replier. Tout fonctionne nickel, toutefois à la validation du formulaire, la page se recherche et le bloc est refermé.

    Comment ajaxer le block, pour recharger le formulaire et ainsi découvrir si il est validé ou non ?

    Je ne comprends pas les éléments suivant , mais est-ce la piste :
    [(#BLOC_TITRE[(#URL_PAGEmonajax|parametre_urlid_article,#ID_ARTICLE)])]

    Merci de votre aide

    • Bonjour, je pense qu’effectivement c’est la piste. Votre formulaire sera enfermé dans un bloc ajax déploiyé par le bloc dépliable. Grâce à ce système, la validation du formulaire ne provoquera pas le chargement de toute la page.

    • Bonjour,

      OK, mais je comprends vraiment pas comment ;)

      Ce serai génial de pourvoir glisser dans le texte :

      <bloc>
      le liens qui déplie
      _
      _
      <form1>
      </bloc>

      mais celà ne fonctionne pas ;(

    • Quand le formulaire est en dehors du bloc, ça fonctionne en ajax ?

    Répondre à ce message

  • Bonjour

    Merci pour ce supeer plugin plein de possibilités. J’utilise les Blocs et je voudrais y caler lazyload.
    Dans cette fonction, quelle class ou id dois-je mettre pour que les photos ne se chargent que lorsque le bloc est déplié ?

    $(document.ready(function()
    $(« div à placer »).lazyload(effect : « fade ») ;
    )
    ) ;

    Merci
    ADB

    Répondre à ce message

  • Bug sur mon site en ligne : le bloc ne se déplir plus (je ne sais depuis combien de temps), alors que mon site local (backup et test) il déplie encore. Dans les deux cas, le survol de la souris indique "javascript : ;" dans la barre des taches.

    -  SPIP2.1 sur les deux
    -  « Le Couteau Suisse ».Version locale : 1.8.17.02 en local
    -  mise à jour 1.8.18 en ligne
    -  serveur local ubuntu "Lucid"
    -  serveur en ligne Ubuntu 8.04.4 LTS

    Y a t’il un module utile au plugin maintenant que je n’aurais pas sur mon apache en ligne ?
    Une autre idée, un test à faire ?

    Répondre à ce message

  • 3

    Hello, comment retirer/modifier les petites flèches oranges des titres ? :-o
    merci

    • Ça c’est une question de CSS : un petit tour du côté des feuilles de styls te permettra de personnaliser à ta convenance l’apparence des blocs dépliables : soit tu enlèves l’image de fond, soit tu la remplaces par une autre qui a ta préférenece

    • Manu a raison. Ce sujet est d’ailleurs abordé dans l’article ci-dessus (personnalisation des blocs).

    • merci pr les réponses éclair !

    Répondre à ce message

  • 2
    Commetou

    Bonjour,
    Utilisateur convaincu du CS, je voulais tout d’abord vous remercier pour ce précieux travail.
    J’ai remarqué un petit soucis avec les blocs et l’utilisation d’une liste en fin de bloc.
    Les 2 div de fermeture du bloc s’intercalent avec les li ul de fermeture (/div> /div> /li> /ul>).

    Cela génère une erreur lors de la validation des pages au W3C.
    Pensez-vous qu’il existe une solution ?

    Je suis sous SPIP 2.1.0 avec toutes les mises à jour disponibles à ce jour.
    Une URL pour voir le site en test : http://www.frederic-guerouet.com/spip/spip.php?article1

    Encore merci pour ce travail qui fait vraiment gagner beaucoup de temps !

    • Merci du retour. Cette correction (dispo vers 18h05) devrait corriger ce problème.

    • Commetou

      Merci !!!

      Il faut juste supprimer le _ en fin du lien sinon ça marche impeccable

    Répondre à ce message

  • 9

    Bonjour,
    je fais partie des utilisateurs heureux du couteau suisse que je trouve particulièrement simple à utiliser... Je tombe cependant sur un os sur la lame « blocs dépliables » lorsque, dans un de ces blocs, justement, j’insère un panorama (voir la contrib d’Arnaud Pacho).

    code 1

    <bloc>
    Voir le panorama
    
    du texte bla bla bla
    <imgxx|panorama>
    </bloc>

    Résultat : IE (toutes versions) ne montre que le texte et pas le panorama (qui est en fait un javascript)... (C’est OK avec FF et Safari : le bloc se plie, se déplie et j’ai bien le texte + le panorama)


    code 2

    <bloc>
    Voir le panorama
    
    du texte bla bla bla
    <imgxx|panorama>
    </bloc>
    
    <imgxx|panorama>

    Résultat : avec IE, le panorama n’apparait toujours pas dans le bloc plié/déplié et la seconde occurence du panorama (située hors bloc) se comporte de manière abérrente. Avec FF et Safari, c’est OK


    code 3

    <bloc>
    Voir le panorama
    
    du texte bla bla bla
    </bloc>
    
    <imgxx|panorama>

    Résultat : c’est OK (mais bien sûr sans intérêt)


    Il doit donc y avoir un conflit entre les deux scripts dans la mesure où le CS apprécie peu d’avoir un js (ce js ?) dans un bloc mais mes connaissances ne sont pas suffisantes pour pouvoir régler le truc... Une piste à proposer ?

    • Tu as un lien public de cela ? Le Couteau Suisse est-il bien complètement mis à jour ? Une surcharge de ses fichiers CSS a-t-elle été faite ?

    • Merci de ta réactivité...

      url : http://www.hotelvauban-camaret.fr : visible sur la page d’accueil
      Version du CS : 1.8.13.06
      Surcharge des CSS ? En principe, non...

    • Alors, as-tu tout mis à jour, vidé tes caches et constaté une amélioration ?

    • Bonsoir et merci de t’intéresser à ce qui était avenu du problème soulevé.
      J’avais laissé cette question de côté parce que ça me prenait un peu la tête, que j’avais séché déjà pas mal de temps et qu’il fallait que le truc avance : j’ai modifié le site public en mettant le diaporama directement (=en le sortant du bloc dépliable). Par contre, j’ai laissé sur mon serveur local le diaporama dans un bloc dépliant CS et sous IE, ça se confirme, ça ne passe pas... C’est visible sur cette page.
      Les blocs se plient/déplient correctement, mais, le contenu du diaporama ne suit pas...

    • Sur le site que tu donnes en exemple, le Couteau Suisse est trop vieux, il faut le mettre à jour.

    • J’avais la version 1.8.13 qui n’était pas si vieille que ça, mais suffisament pour que le passage à la 1.8.17 résolve en effet la situation ! Merci !

    • La dernière version n’est-elle pas 1.8.18.00 ? Le temps avec le Couteau Suisse peut parfois aller très vite ;-)

    • En fait j’ai été un peu rapide dans ma réponse... J’ai vidé les fichiers temporaires, relancé windows, et non, rien n’y fait : IE ne veut toujours pas montrer le diaporama lorsque celui-ci est dans un bloc dépliable.

    • Bonjour,

      Je réagis à ce fil car je rencontre le même genre de problème en essayant de masquer une carte google map (plugin escoitar gis). Avec les balises bloc et invisible l’affichage de la carte buggue alors qu’avec la balise visible ça passe impec.
      Version spip 2.1 et couteau suisse à jour.
      Je vais creuser de mon côté, mais si quelqu’un avais une astuce, je suis preneur.

    Répondre à ce message

  • 4

    Un déroulement vers... le haut, ce serait possible ça ?
    Pour un site sur lequel je commence à plancher, je me dis que ce serait sympa d’avoir des blocs pliables/dépliables... mais vers le haut ? Disons qu’ils se dérouleraient en montant !... Possible ? Pas possible ?
    It would be great !

    • Dans un squelette ? Alors il s’agirait de blocs éloignés de leur titre, puisque placés avant...

    • ca ferait très bizarre non, le titre, et le bloc qui « remonte » ? je ne comprends pas tellement l’effet recherché. SInon, ca doit être possible en modifiant les CSS mais assez tricky.

    • Bizarre ? non, pas plus que ça... Tout dépend bien évidement de ce que tu veux faire ! Ici, l’idée serait de disposer de déclencheurs qui provoqueraient la remontée de div vers le haut. Après tout, on a l’habitude de tirer quelque chose vers le bas, mais rien n’empêche de tirer quelque chose qui est en bas pour le faire remonter ! Il n’y a pas de raison !
      Visible ici

    • Dans la mesure où la fonction jQuery.fn.blocs_toggle_slide_dist() utilisée par le plugin est surchargeable (voir ici le code), l’utilisateur peut provoquer le glissement de son choix sur le blocs. Quelques réglages CSS et le tour est joué.

      Si tu réussis à faire qq chose de sympa sur le sujet, n’hésite pas à nous en faire part.

    Répondre à ce message

  • 1

    bonjour,

    y a t il un moyen de surcharger blocs.js j’aimerai le modifier ? (pour ajouter des title sur les liens « Déplier : xxx » / « Replier : xxx »)

    • Effectivement, aucun système de title n’a été prévu. La version 1.8.15.01 remédie à cette lacune.

      Personnalisation : créer dans le mes_fonctions.php du squelette la fonction blocs_title($titre='', $corps='', $num=''). Celle-ci doit renvoyer un tableau. Exemple :

      function blocs_title($titre='', $corps='', $num='') {
      	$titre = couper($titre, 30);
      	return array("D&eacute;plier le bloc &laquo;$titre&raquo;", "Replier le bloc &laquo;$titre&raquo;");
      }

      Par défaut : un title (« Déplier » ou « Replier ») est inséré en JavaScript grâce à un div ajouté à chaque bloc par le plugin : <div class="blocs_title">Déplier||Replier</div>. Le séparateur est : « || ».

      Pour les squelettes, ajouter la div.blocs_title en clair :

      #BLOC_TITRE #TITRE
      #BLOC_RESUME #INTRODUCTION
      #BLOC_DEBUT #TEXTE
      <div class="blocs_title">Déplier mon bloc||Replier mon bloc</div>
      #BLOC_FIN

    Répondre à ce message

  • 4

    Bonjour,

    Je cherche à ouvrir un bloc depuis un lien qui serait dans un menu de barre de navigation latérale (nav). Le bloc quant à lui se trouverait dans la partie centrale de la page (main).

    A part l’utilisation de css en position absolue, existe-t-il un moyen de créer un lien (titre) qui soit externe à la div englobante (cs_blocs) ?

    Merci pour votre aide.

    • Oui, si tu arrives à mettre à jour Le Couteau Suisse avec la toute dernière révision.

      Je viens de modifier l’article ci-dessus afin d’expliquer comment faire. Tu me diras si tout est OK !

    • Patrice,

      Tout d’abord, merci beaucoup pour ta précieuse aide.
      Voici les résultats du test que j’ai pu faire :

      J’ai installé la nouvelle version du couteau sur un spip 2.0.10 : attention dans le fichier plugin.xml du plugin la version est restée annotée à 1.8.10.10 et n’est pas annotée 1.8.10.11.

      En faisant un essai avec ton exemple, le javascript (déplier) ne fonctionne pas :
      #BLOC_TITRE_DEBUT{1}
      Bouton pour un bloc éloigné invisible
      #BLOC_TITRE_FIN
      <p>Allez, un peu de texte, histoire de mettre de la distance... Voyez que le bouton du bloc '1' est constuit avant son contenu que voici :</p>
      #BLOC_DEBUT{1}
      UN COUCOU ELOIGNE !!
      #BLOC_FIN

      Le code injecté par les balises est :
      <div class="cs_blocs"><h4 class="blocs_titre blocs_replie" id="cs_bloc_id_1"><a href="javascript:;">Bouton pour un bloc éloigné invisible</a></h4></div>
      <p>Allez, un peu de texte, histoire de mettre de la distance... Voyez que le bouton du bloc '1' est constuit avant son contenu que voici :</p>
      <div class="blocs_destination blocs_invisible blocs_slide cs_bloc_id_1">UN COUCOU ELOIGNE !!</div>

    • Oui, j’ai changé la version du plugin il y a peu de temps. As-tu bien vidé le cache du navigateur ? Firefox/Firebug indique une erreur qq part ? Un lien public ? Mes tests sont pourtant verts...

    • Désolé pour le bruit, c’était bien un problème de cache dans Firefox. Je me suis fais avoir comme un débutant...

      Merci mille fois Patrice pour ta réactivité et ton dévouement. Bonnes fêtes de fin d’année.

    Répondre à ce message

  • Depuis la version 1.8.10.06 du Couteau Suisse, le code des balises de squelette a fortement changé

    1. Les balises sont désormais calculées en php, recentrées vers une fonction unique : blocs_balises($type, $args=array())
    Cette fonction contrôle le bon ordre des balises et décrypte les arguments de #BLOC_TITRE

    2. Les balises #BLOC_TITRE_NUM, #BLOC_VISIBLE_TITRE et #balise_BLOC_VISIBLE_TITRE_NUM sont obsolètes désormais, mais conservées pour conserver une compatibilité avec les anciens squelettes.
    Elles sont remplacées par #BLOC_TITRE{9999}, #BLOC_TITRE{visible} et #BLOC_TITRE{9999, visible}

    3. L’ordre des arguments de #BLOC_TITRE importe peu. Les arguments autorisés sont :
    - ’visible’ : crée un bloc déplié
    - ’invisible’ : crée un bloc replié (état par défaut)
    - un nombre : crée un bloc numéroté
    - un texte (URL si possible !) : crée un bloc AJAX

    Répondre à ce message

  • 2

    Bonsoir,

    Existe-t-il un moyen d’obtenir un dépliage doux des blocs ?
    Ce comportement est évoqué dans la SpipZone...

    Edit : Je me rends compte que la question a déjà été posée ici même... Il y aurait une option dans la configuration de l’outil. Eh bien, je ne la vois pas !
    Je n’ai que les options « Un seul bloc ouvert sur la page », « Utilisation des cookies » et « Balise pour les titres ».

    (SPIP 2.0.10)

    Merci d’avance.

    • As-tu vraiment la dernière version du plugin ? Il y a une 4e option pour le dépliage doux : Type d’animation.

    • Ben voilà... C’est aussi bête que ça...

      Merci Pat !

    Répondre à ce message

  • Merci

    Je savais bien que mon code était pourri j’ai fait un peu du rafistolage mais j’aurais du dès le départ partir sur quelque chose de propre. Il est vrai que je ne maitrise pas bien firebug.
    Je vais essayer dès que j’ai le temps de refaire ce code ...

    En tout cas c’est vraiment sympa de m’avoir répondu.

    Répondre à ce message

  • 1

    Merci de me répondre.
    J’ai essayé de voir avec firebug mais rien de concluant. Je te donne donc une page ou je fait le test en ce moment ;).

    http://www.fantasista.fr/Test-equipe.html

    Merci en tout cas.

    • OK qq remarques :
      -  Tu as des balises <font> partout qu’il conviendrait de supprimer totalement.
      -  Tes blocs sont en bas car le div#contenu n’est pas en « float:left » et va donc engloger le div#colgauche.
      -  La suite est de lui supprimer les marges et paddings, ajuster la largeur, etc., etc.
      -  Firebug montre très bien tout cela, peut-être devrais-tu creuser l’utilisation de ce plugin pour FireFox...
      -  Pourquoi ne te bases-tu pas sur un layout Gala ? En voici la structure :

      <div id="page">
       <div id="entete">Bloc entête</div>
       <div id="conteneur">
         <div id="contenu">Bloc contenu</div>
       </div>
       <div id="navigation">Bloc navigation</div>
       <div id="extra">Bloc extra</div>
       <div id="pied">Bloc pied</div>
      </div>

      C’est ensuite à configurer avec les CSS. Alessandro Fulciniti propose 40 façons faciles d’organiser facilement la page !

    Répondre à ce message

  • 1

    Up

    Help me !!!

    Je n’ai toujours pas trouvé la solution de mon problème CSS, ca se cale toujours sur la fin de ma colonnne de gauche :(. J’aimerais vraiment utiliser ces blocs dépliables ...

    Y a toujours personne qui sait faire ceci ... ?

    Merci

    • Pas évident de te répondre sans éléments précis... Utilises-tu Firefox+Firebug pour travailler tes CSS ? Si ce n’est pas encore résolu, tu as un lien public de ce problème ?

    Répondre à ce message

  • Bonjour,

    J’ai un problème niveau graphique, les blocs dépliables se calent a la fin de ma colonne de gauche . Donc ca me fait un gros blanc :-(. J’ai essayé de jouer avec le css mais rien n’y fait.
    Ya t-il des gens qui ont eu le même problème et qui ont réusi à le résoudre ?

    Répondre à ce message

  • 2

    bonjour,

    je viens de découvrir bloc dépliable.
    ( je ne connais rien au jquery.)
    quelques questions :
    1-
    je souhaite que le titre de mon bloc soit un lieu vers une rubrique
    il ouvre sans probleme les sous-rubriques et leurs liens respectifs
    mais la rubrique mere je n’ai pas de lien
    le <a> renvoie « javascript : ; »

    2-
    a quoi sert le bloc unique
    ou comment puis je faire des groupes de blocs

    merci à tous

    • Hum... AMHA, les ponctuations françaises aident vraiment à comprendre le sens d’un texte.

    • Suis d’accord avec patrice...

      1- je ne pense pas que ce soit pertinent ni même possible que « le titre du bloc soit un lien ». Sinon, l’internaute clique sur le titre du bloc, ca déplie le bloc et hop... on change de page.... pas passionnant.

      2- je ne comprends pas ton histoire de bloc unique ?

    Répondre à ce message

  • C’est bien ce que je craignais... devoir jouer sur les classes !!!

    Répondre à ce message

  • 1

    Salut,

    Comment puis-je avoir 4 ensembles de blocs sur la même page en ayant le 1er bloc de chaque ensemble déplié au chargement de la page ?

    A l’heure actuelle, si je déplie un bloc d’un de mes 4 ensembles de blocs, les autres blocs se referment, or je souhaiterais que chaque ensemble de blocs fonctionnent de manière indépendante.

    Je pourrais répondre « non » au champ « Un seul bloc ouvert sur la page : » dans la configuration de la lame du couteau mais je tiens à garder cette fonction de repli automatique.

    Un exemple de ce que je cherche à obtenir : site Collide où chacun des 4 ensembles de blocs fonctionne de manière totalement indépendante.

    • Salut, je viens de mettre à jour les blocs dépliables et par la même ocasion l’article ci-dessus. Peut-être y trouveras-tu ton bonheur.

      En tout cas, mis à part une programmation jQuery spécifique de blocs numérotés avec un jeu sur les classes, il ne me semble pas possible spontanément d’isoler 4 blocs uniques comme sur l’exemple que tu cites.

    Répondre à ce message

  • 1

    Bonjour,

    Bon décidément j’adore ce plug-in, encore merci Patrice pour son développement.
    Et c’est toujours pareil plus quelque chose est bien plus on lui en demande.
    Et là je me heurte à un petit souci...
    J’utilise quasi systématiquement les blocs dépliables comme ceci :

    <B_fabrication>
    	<BOUCLE_fabrication(ARTICLES){id_rubrique}{titre_mot=fabrication}>
    		#BLOC_TITRE
    		[<h3>(#SURTITRE)</h3>]
    		#TITRE
    		[<h3>(#SOUSTITRE)</h3>]
    		#BLOC_RESUME
    		[(#INTRODUCTION{200})]
    		#BLOC_DEBUT
    		[<b>(#CHAPO|)</b>]
    		[(#TEXTE|justifier|image_reduire{250,0})]
    		<a href="javascript:;" class="repliage">- replier l'article -</a>
    		[<hr>(#PS)]
    		[<hr>(#NOTES)]
    		#BLOC_FIN
    	</BOUCLE_fabrication>
    </B_fabrication>

    Ce qui me convient très bien... SAUF... et bien sauf quand l’article est court, c’est à dire fait moins de 200 caractères. A ce moment là le BLOC_RESUME s’affiche mais pas de dépliage (ce qui est normal). Or, l’affichage de INTRODUCTION se fait sans mis en forme, sans image ni document joint... donc problème.
    La question est donc de savoir comment faire pour ne pas utiliser les blocs dépliables en-dessous d’une certaine longueur d’article ?

    D’avance merci pour vos contributions.

    • Bon j’ai trouvé une solution grace aux boucles conditionnelles de SPIP BONUX :

      <B_technique>
          <BOUCLE_technique(ARTICLES){id_rubrique}{titre_mot=technique}>
              <BOUCLE_testt(CONDITION){si #ENV{[(#TEXTE|textebrut|strlen)]}|>{500}}>
                  #BLOC_TITRE
                  [<h3>(#SURTITRE)</h3>]
                  #TITRE
                  [<h3>(#SOUSTITRE)</h3>]
                  #BLOC_RESUME
                  [(#INTRODUCTION{200})]
                  #BLOC_DEBUT
                  [<b>(#CHAPO|)</b>]
                  [(#TEXTE|justifier|image_reduire{250,0})]
                  <a href="javascript:;" class="repliage">- replier l'article -</a>
                  [<hr>(#PS)]
                  [<hr>(#NOTES)]
                  #BLOC_FIN
              </BOUCLE_testt>
                   [<h3>(#SURTITRE)</h3>]
                  <h2>#TITRE</h2>
                  [<h3>(#SOUSTITRE)</h3>]
                  [<b>(#CHAPO|)</b>]
                  [(#TEXTE|justifier|image_reduire{250,0})]
                  [<hr>(#PS)]
                  [<hr>(#NOTES)]
              <//B_testt>
          </BOUCLE_technique>
      </B_technique>

      Je ne sais pas si c’est très propre ou la solution la plus économe, en tout cas ça marche, cependant je suis ouvert à toute critique et autres propositions

    Répondre à ce message

  • 16

    Bonjour,

    Et un GRAND MERCI pour ces lames géniales qui font passé spip dans une autre ère !

    Moi j’adore les blocs dépliables ! Au moins, c’est l’utilisateur qui choisi quelle « longueur » a sa page. Avant de passer sur spip j’avais d’ailleurs déjà fait un petit javascript pour pouvoir faire cela dans mes sites.

    Bref, comme toute bonne chose, on a toujours envie de l’améliorer. Et moi l’autre lame que j’aime beaucoup est #INTRODUCTION qui simplifie et améliore beaucoup les filtres {couperXXX}.
    L’idée serait en fait que #INTRODUCTION soit le #BLOC_RESUME du bloc dépliable (ce que je pense beaucoup font déjà), MAIS SURTOUT que les points de suite de #INTRODUCTION soient le lien cliquable javascript pour déplié le bloc.

    Et la question est : est-ce possible avec les lames #INTRODUCTION et BLOCS DEPLIABLES dans leur versions actuelles, et si oui comment ?
    Et si non, est-ce une piste de développement ?

    De mon côté j’ai essayé en paramettrant les points de suite de #INTRODUCTION à :

    <h4 class="blocs_titre blocs_replie "><a href="javascript:;"><h2> ... <i>lire la suite</i></h2></a></h4>

    Mais cela ne fonctionne malheureusement pas, et je pense que c’est dû à l’imbrication des <div> ; d’où mon inquiétude quant à la faisabilité de la manip’ avec les versions actuelles des lames.

    Un énorme MERCI d’avance pour vos futures contributions !

    • T’as pas moins compliqué ? lol

      À mon avis, il suffirait d’un simple : <span class="la_suite"> (...)</span>.

      Ensuite, en jQuery, tu programmes le clic de $('.la_suite') pour qu’il ouvre le bloc...

    • Merci pour ta réponse !
      Euh oui....
      Alors j’ai l’impression que ça te parait tout facile... mais en ce qui me concerne je ne suis malheureusement qu’un débutant en javascript, et notamment je n’ai jamais programmé avec la librairie JQuery.
      Donc si tu pouvais consacré un tout petit peu de ton précieux temps pour m’expliquer de manière un peu plus explicite je t’en serais sincèrement reconnaissant.

      MERCI ENCORE
      (et encore bravo pour les lames !)

    • Bonjour à tous,

      Décidément je crois que j’ai besoins d’un petit coup de main louable de votre part :
      Je n’arrive pas à faire que le bloc résumé deviennent insible et le bloc principal visible par le clique des points de suite de #INTRODUCTION.
      Je ne suis tout de même pas le seul à avoir eut l’idée !?
      Certains auraient donc bien trouvé une solution... non ?
      En tout cas UN GRAND MERCI D’AVANCE pour toute aide, je suis maintenant bloqué dans mon développement à cause de ce point.

    • Tu sais que les points de suite ne sont pas visibles si le texte brut fourni par la balise est en dessous du nombre de caractères spécifié en config... Peut-être vaut-il mieux alors ajouter ton lien cliquable à la mains ?

      Sinon, Le code suivant devrait fonctionner tout seul avec une mise à jour du plugin et une suppression des caches SPIP et navigateur.

      //	Pour un bloc dépliable du genre :
      //	<BOUCLE_art(ARTICLES)>
      //		#BLOC_TITRE
      //		#TITRE
      //		#BLOC_RESUME
      //		#INTRODUCTION
      //		#BLOC_DEBUT
      //		#TEXTE
      //		#BLOC_FIN
      //	</BOUCLE_art>
      //	le clic sur un point de suite cliquable de la balise #INTRODUCTION produit l'ouverture du bloc.
      //	code JS a inserer dans le header de votre squelette APRES les appels du Couteau Suisse :
      jQuery(document).ready(function(){
      	jQuery('.blocs_resume>a.pts_suite')
      	  .click( function(){
      		jQuery(this).parents('.cs_blocs:first').children('.blocs_titre')
      			.blocs_replie_tout().blocs_toggle();
      		// annulation du clic
      		return false;
      		});
      });

      Si ça marche, champagne qd même !?

      Pat

    • CA MARCHE !!!!!
      CHAMPAGNE !!!!
      Super !!!! Merci beaucoup !!!...

      Pour les autres il suffit de mettre :
      <a href="javascript:;" class="pts_suite">... lire la suite</a>
      Par exemple.Moi j’essayais désespérément de modifier la fonction blocs_init d fichier bloc.js pour y arriver mais sans succès. En fait je n’arrivais pas à récupérer les blocs voulus pour leur appliquer le .blocs_replie_tout().blocs_toggle();.
      Et donc c’est .parents('.cs_blocs:first').children('.blocs_titre')
      Superbe.
      je devrais donc maintenant être capable d’intégrer ton code à bloc_init et peut être même être capable d’ajouter une balise « replier » en fin de texte déplier pour pouvoir replier les nlocs par un titre sur le ce dernier.

      Pour exemple, la page est : http://lappeldairs.org/tinatur/-Thermofloc-R-a-souffler-.html#

      MERCI ENORMEMENT ENCORE !!!!
      (peut-être une amélioration de la future version de la lame blocs dépliables...)

    • Et t’as essayé de programmer la chose en ajax, histoire de ne pas charger tous le texte caché de tes articles au premier hit ?

      le fonction blocs_init() pourrait devenir :

      // compatibilite Ajax : ajouter "this" a "jQuery" pour mieux localiser les actions 
      // et tagger avec cs_done pour eviter de binder plrs fois le meme bloc
      function blocs_init() {
      	// clic sur un titre de bloc
      	jQuery('.blocs_titre', this).not('.cs_done').addClass('cs_done')
      	  .click( function(){
      		jQuery(this).blocs_replie_tout().blocs_toggle();
      		// annulation du clic
      		return false;
      		});
      	// points de suite #INTRODUCTION presents dans le resume
      	jQuery('.blocs_resume>a.pts_suite', this)
      	  .click( function(){
      		jQuery(this).parents('.cs_blocs:first').children('.blocs_titre')
      			.blocs_replie_tout().blocs_toggle();
      		// annulation du clic
      		return false;
      		});
      }
    • Bonjour,

      En déplacement ce week-end je viens de me remettre sur mon développement.
      Et grâce à ton aide Patrice, j’ai réussi à faire ce que je voulais.
      J’ai donc transformé comme tu me l’as indiqué la fonction blocs-init du fichier blocs.js et j’ai ajouté le même comportement pour une balise « repliage » placer en fin du texte invisible. Ainsi j’obtiens la fonction blocs_init suivante :

      // compatibilite Ajax : ajouter "this" a "jQuery" pour mieux localiser les actions 
      // et tagger avec cs_done pour eviter de binder plrs fois le meme bloc
      function blocs_init() {
      	// clic sur un titre de bloc
      	jQuery('.blocs_titre', this).not('.cs_done').addClass('cs_done')
      	  .click( function(){
      		jQuery(this).blocs_replie_tout().blocs_toggle();
      		// annulation du clic
      		return false;
      		});
      	// points de suite #INTRODUCTION presents dans le resume
      	jQuery('.blocs_resume>a.pts_suite', this)
      	  .click( function(){
      		jQuery(this).parents('.cs_blocs:first').children('.blocs_titre')
      			.blocs_replie_tout().blocs_toggle();
      		// annulation du clic
      		return false;
      		});
      	  
      	// replier à la fin du bloc principal
      	jQuery('.blocs_destination>a.repliage', this)
      	  .click( function(){
      		jQuery(this).parents('.cs_blocs:first').children('.blocs_titre')
      			.blocs_replie_tout().blocs_toggle();
      		// annulation du clic
      		return false;
      		});
      }

      Les points de suite de #INTRODUCTION sont configurés comme suit :
      <a href="javascript:;" class="pts_suite"><i> ...&nbsp;lire la suite</i></a>

      Et j’insère le code :
      <a href="javascript:;" class="repliage"><i>>replier l'article<</i></a>
      Juste avant #BLOC_FIN dans mes squelettes.

      Et voilà
      Pour exemple rendez-vous ici : http://www.lappeldairs.org/tinatur/-Thermofloc-R-a-souffler-.html
      J’ai pas fini mes CSS donc l’apparence graphique est pas encore au top... MAIS CA MARCHE !!!!

      MERCI ENCORE !!!

    • Bonjour,

      Après quelques mois d’hésitation, je suis finalement passé sur Spip 2.0.7 cette nuit.
      Mais, bien que j’ai bien repris tous mes fichiers modifiés précédemment dans la nouvelle version (donc blocs.js) et bien ça ne marche pas comme il faut !
      Au chargement de la page les blocs sont bien pliés, mais impossible de les déplier en cliquant sur les points de suite ni en cliquant sur le titre !
      Aïlle aîlle aïlle !

      Une petite aide peut-être ?
      Merci d’avance !

    • Bonsoir,

      Bon, après quelques heures de galères à activer et désactiver tous les scripts sur mon site et à lire de la littérature en anglais dans le texte sur pas mal de sites sur jQuery, j’ai trouvé !
      En fait, le passage sous SPIP 2.0.7 a révélé une incompatibilité qui aurait pu agir déjà sous SPIP 1.9.2.
      En effet, j’utilisais pour mon site la librairie scriptaculous pour un diaporama crossfade et notamment la librairie prototype.js.
      Une incompatibilité existe entre ces différentes librairies notamment par l’usage de « $ ». Il existe une méthode pour passer outre cette incompatibilité voir ici.
      Mais cependant, j’ai choisi de ne pas multiplier les librairies et je me suis dit que jQuery serait bien capable de faire un diaporama crossfade.
      Donc je bosse actuellement sur un diaporama crossfade sous jQuery pour mettre en fond de mon header de site.
      DOnc au passage si certains d’entre vous on des pistes, voire du code, voire une solution ; je suis preneur !

      Merci encore à la communauté !

    • Bonjour à tous, je cherche à insérer un lien « replier le bloc » qui apparaitrait à la fin du bloc déplié.

      C’est entre autre le sujet du message du 9 mars par MacGeol, mais je ne parviens pas à le faire fonctionner.
      Je précise que je ne connais pas javascript et que ça ne facilite pas la tâche !

      J ai inséré ce code dans la fonction blocs_init() de bloc.js :

      // replier à la fin du bloc principal
              jQuery('.blocs_destination>a.repliage', this)
                .click( function(){
                      jQuery(this).parents('.cs_blocs:first').children('.blocs_titre')
                              .blocs_replie_tout().blocs_toggle();
                      // annulation du clic
                      return false;
                      });

      et ajouté la ligne suivante juste avant le #BLOC_FIN :

      <a href="javascript:;" class="repliage"><i>>replier l'article<</i></a>

      Mais ça ne marche pas !
      Quelqu’un aurait-il l’amabilité de m’éclairer ?

      Merci, et bravo pour ce plugin !

    • Bonjour, je viens de faire l’essai de ce que tu proposes et ça fonctionne bien.
      -  Questions : quelle version de SPIP (voire de jQuery) utilises-tu ? Es-tu certain de tes caches (SPIP, navigateur) ? La console de Firefox/Firebug indique-t-elle une erreur JS ?
      -  Remarque : il ne faut surtout pas modifier les fichiers source d’un plugin, cela t’empêche de les mettre à jour facilement. Ex : lame « Mises à jour automatiques ».
      -  Suggestion : avec la toute dernière révision du Couteau Suisse (rev. 31836), les liens class=« replier_bloc » devraient permettre de replier le bloc contenant. Plus la peine d’ajouter du JS : j’ai modifié l’article ci-dessus en conséquence.

    • Ok, mea culpa il s’agissait d’une question de cache navigateur...

      Merci beaucoup d’avoir ajouté cette fonctionnalité !

      J’ai une autre question : est-il possible de déplier/replier les blocs de manière douce, un peu comme le fait le plugin ancres douces ?

      Et aussi, j’aimerais que le repli du bloc entraîne un déplacement de la page au niveau du début du bloc, est-ce possible sans modifier le plugin ?

    • est-il possible de déplier/replier les blocs de manière douce, un peu comme le fait le plugin ancres douces ?

      Bien sûr ! As-tu été voir la config de l’outil ?

    • j’aimerais que le repli du bloc entraîne un déplacement de la page au niveau du début du bloc

      Completed at revision : 31851

    • Oops ! Je n’avais pas vu l’option de dépliage doux, au temps pour moi...

      Merci pour l’ajout du déplacement sur la page, c’est génial quelqu’un d’aussi réactif !

      Du coup je n’ai plus rien à dire, tout est parfait !!

    • Ah, tu dis ça parceque je n’ai pas encore envoyé la facture :P

    Répondre à ce message

  • 3

    Bonjour,

    Tout d’abord merci pour ce plugin vraiment très utile. J’aurais voulu savoir s’il était possible de gérer la balise #EXPOSE , histoire de faire du menu qu’il soit contextuel...
    Cela le rendrait encore plus indispensable.

    Merci
    Fraktale

    • Comment ça gérer la balise #EXPOSE ?

    • En fait rajouter la classe .on sur l’article ou la rubrique en cours et forcer le déploiement de l’arborescence...

    • Rien de plus facile, c’est plutôt à toi de programmer la chose... Exemple :

      <html>
      <head>
      #INSERT_HEAD
      <style type="text/css"><!--
        li h4.blocs_titre a { color: blue; }
        li.on h4.blocs_titre a { color: red; font-weight: bold; }
      --></style>
      <script language="JavaScript" type="text/javascript">
      jQuery(document).ready(function(){
        jQuery('li.on h4.blocs_titre')
          .blocs_replie_tout().blocs_toggle();
      });
      </script>
      </head>
      
      <body>
      
      <BOUCLE_principale (ARTICLES) {id_article}>
        <B_menu>
        <ul>
          <BOUCLE_menu (ARTICLES) {id_rubrique}>
          <li[ class="(#EXPOSE)"]>
            #BLOC_TITRE #TITRE
            #BLOC_DEBUT #INTRODUCTION
            #BLOC_FIN
          </li>
          </BOUCLE_menu>
        </ul>
        </B_menu>
      </BOUCLE_principale>
      
      </body>
      </html>

    Répondre à ce message

  • OK, merci ! Je me doute bien que c’est un problème de CSS, je vais voir avec Firebug.

    Répondre à ce message

  • 1

    Excellent outil que ces blocs dépliables, merci. Mais je rencontre un problème d’affichage.
    Sur mon site (Intranet, donc pas de lien), j’ai une colonne de navigation à gauche avec des liens vers des articles. Au centre, une colonne plus large avec le texte de l’article, et dans celui-ci des blocs dépliables : ceux-ci viennent se positionner non pas en haut de leur colonne comme ce devrait être le cas mais en bas, exactement à la hauteur du dernier lien de ma colonne de gauche (c’est clair ?). Quel que soit le nombre de liens dans ma colonne de navigation, les blocs dépliables de mon texte viennent se positionner au niveau du dernier d’entre eux dans la colonne centrale. Si j’ai du texte tout simple, il reste en haut ; dès qu’un bloc dépliable apparaît dans le texte, tout le reste est décalé vers le bas : il y a donc un grand vide correspondant à la hauteur de mes liens de gauche. Si je retire les raccourcis « bloc » « /bloc » de mon article et que je les remplace par -* par exemple, l’affichage revient à la normale et le texte revient bien se positionner en haut de la colonne centrale ; je remets les « bloc » « /bloc », l’affichage se décale vers le bas. Any idea ?

    • Ceci est probablement une question de CSS que tu peux tenter de régler avec Firefox+Firebug... Sans exemple public, ce n’est pas évident à cerner ;-)

    Répondre à ce message

  • angegar

    Alors la un grand merci tu as trop la classe.
    En effet j ai modifie le javascript comme indique et boom devinez quoi ... ca marche.

    Encore merci pour ton aide.

    ++

    Répondre à ce message

  • 2
    angegar

    Bonsoir j’ai un petit souci avec mes blocs dépliables.
    Ils ne déplient que si je clique sur la fleche située devant.

    Vous pourrez trouver le symptôme ici

    Ce bug ne se produit pas dans l’interface privée, peut être est ce une interférence avec le squelette Eva Web 4

    • Patrice Vanneufville

      Salut,

      Je viens de voir les blocs dépliables à propos des katas. Sans pouvoir regarder dans le détail, il est possible qu’il y ait un conflit avec un autre plugin... googleanalytics peut-être ?

      As-tu essayé de désactiver tes plugins un par un pour trouver la source du pb ?

      Je vois aussi que le fichier « plugins/eva_habillage_pour_spip_2_0/javascript/menu_depliant.js » possède à la ligne 14 le code suivant :

      $("a").click(function (e) {
           e.stopPropagation();
      });

      Il s’agit d’un code JS très intrusif qui bloque très probablement les <a> placés dans le titre des blocs dépliants du Couteau Suisse, alors qu’il ne le devrait pas.

      Je propose de remplacer ce code par :

      $('#menu a').click(function (e) {
           e.stopPropagation();
      });

      Tu pourras tester cela et voir si ça change quelque chose ?

      Cela devrait limiter les clics à ne pas propager au simple menu de gauche auquel ils sont destinés. Je pense que ce fichier est livré avec le squelette. Il faut donc contacter les concepteurs du squelette pour corriger éventuellement cette ligne.

      Tiens-nous au courant !

    • Patrice Vanneufville

      En examinant le code du squelette EVA, il apparait même que le menu dépliant n’a en fait rien d’un menu dépliant programmé en JS... Les classes "noeud" et "feuille" que l’on voit dans « menu_depliable.js » n’ont été reprises nulle part, ni dans « inc_menu.html », ni dans le squelette entier... On dirait un copier-coller mal fini, un gros ménage s’impose ;-)

    Répondre à ce message

  • 2

    Depuis mon passage à la dernière version du CS (de 1.7.18.03 à 1.8.09.02) mes blocs ne se déplient plus, et même sur une page très simple (juste #INSERT_HEAD et du texte). FireBug signale : blocs.js ligne 5 : this.hasClass is not a function.

    SPIP 1.9.2i [14398]

    Quelqu’un peut-il m’aider, merci d’avance.

    Répondre à ce message

  • Je posterai du code plus « propre » des que j’ai un peu plus de temps, mais en attendant, voici deja les morceaux de squelettes que j’ai fini par ecrire, apres que Patrice m’ait donné un petit coup de pied au cul dans le bon sens par mails interposés ;) Merci encore !

    d’ailleurs, si qq’un est interessé par quoi que ce soit dans les squelettes du site que je programme pour l’instant, n’hesitez pas a m’envoyer un chti mail - apres tout, une bonne partie du code et/ou des idees vient de spip-contrib ;)

    Répondre à ce message

  • 3

    Bonjour,
    j’essaie d’implementer des blocs depliables incluant une pagination ajax dans lesdits blocs.

    J’arrive a ce que tout fonctionne sans ajax, mais des que j’utilise le systeme de spip2 pour « ajaxifier » une boucle, les blocs ne se deplient pas au chargement du bloc paginé lorsqu’on clique sur un des liens de pagination. j’imagine que c’est parce que le code jQuery utilisé pour les deplier se base sur un parametre de l’url, parametre qui n’existe pas quand on utilise ajax...qq’un aurait-il une suggestion pour resoudre ce probleme ?

    • Salut, aurais-tu les différents codes (simplifiés) utilisés, histoire de pouvoir tester ?

    • Bonjour,
      Merci de ta réponse rapide :)
      j’ai mis les fichiers ici.

      Le fichier rubrique=9.html n’est la que pour info. il appelle par include inc-listemots.html qui include lui-meme inc-newsnoisette.html

      Il te suffit d’enlever le parametre « ajax » de l’include dans inc-listemots.html pour voir que la pagination dans un bloc dépliable fonctionne correctement (= le bloc s’ouvre au chargement de la page « paginée » (hmmm, j’espère que je suis assez clair)). Par contre, la version ajax ne fonctionne pas super bien ( le bloc se replie apres avoir chargé les éléments paginés).

      Merci encore !

    • Salut

      Tu nous diras si t’as pu trouver une solution en dsencapsulant le bloc déplié, histoire d’empêcher que le clic Ajax ne produise un nouveau fragment où forcément le nouveau bloc sera fermé... Si tu peux et si ça marche, n’hésite pas à publier ici un code simple pour que les visiteurs comprennent mieux ;-)

    Répondre à ce message

  • Bonjour,

    Il semble qu’il y ait une incompatibilité entre le superbe plug-in « BLocs Dépliables » que j’utilise dans tout mon site et « jQuery latest » que je veux intégrer pour faire des « innerfade ».
    Dès que jQuery latest est appelé, impossible de déplier et replier les blocs !!!!
    Des idées ?
    UN GRAND MERCI D’AVANCE
    Site : http://www.tinatur.com

    Répondre à ce message

  • Salut à tous !

    Je trouve un potentiel excellent dans ce plugin, mais je ne parviens pas à afficher mon article sur la page : c’est-à-dire à le rendre visible.

    Comment dois-je faire ?

    Je ne comprends pas comment rendre mon contenu visible et invisible.

    Répondre à ce message

  • 2

    Bonjour,

    J’utilise le plugin imprimir_documento_2 pour imprimer les articles. Comment faire pour que les blocs soient dépliés et que les contenus puissent s’imprimer ?

    Merci

    • Ah oui tiens, à l’instar des découpes en page...

      Je viens de commiter la prise en compte du paramètre « cs=print ». À voir donc comment cela s’articule avec le plugin imprimir_documento_2, mais je pense que c’est bon car j’avais déjà bossé dessus ya longtemps.

      Lire ici le paragraphe « Particularités » pour en savoir davantage...

    • Merci ça marche très bien avec le plugin d’impression.

      Merci encore

    Répondre à ce message

  • phaphane

    Super pour cette réponse rapide. Je me doutais bien qu’il fallait changer cela. Mais j’ai tellement bidouillé que sans m’en apercevoir j’étais revenu sur left.

    Répondre à ce message

  • 1
    phaphane

    Bonjour,

    Votre plugin est vraiment très sympa. Je souhaite par contre mettre les puces après le titre plutôt qu’avant le titre. J’ai beau chercher, je ne trouve pas comment faire.

    • les puces ? tu veux dire le triangle ? Ceci est du pur CSS...

      Essaie de surcharger outils/blocs.css.html en remplaçant « left » par « right ». Pour la classe blocs_replie, il faut également utiliser le triangle qui pointe à gauche :

      .blocs_replie {
      	background:transparent url([(#EVAL{_DIR_IMG_PACK}|url_absolue)]triangle_rtl.gif) no-repeat scroll right center;
      }

    Répondre à ce message

  • Salut

    Pour ralentir le dépliage des blocs que je trouve un poil trop brusque, je modifie

    .blocs_replie_tout().blocs_toggle() ;

    en

    .blocs_replie_tout(’slow’).blocs_toggle(’slow’) ;

    Pour l’instant sans résultat, est-ce une méthode valable ?

    Répondre à ce message

  • 1
    Vincent

    bonjour,

    quelqu’un a t’il déjà penser à insérer les blocs dépliables dans la barre typo v2 sinon encore mieux dans le porte plume ??

    je trouve que cela serait vraiment parfait de pouvoir mettre un texte entre les balises bloc tout en générant le bon alignement (je parle du titre qui doit être séparé du texte par un saut de ligne).

    je sais que les développeurs sont occupés mais je les invite à s’y pencher sérieusement (perso à part la traduction ou le graphisme où je peux contribuer, je suis à un niveau proche de zéro en terme de développement).

    @+

    • Les choses sont en projet mais pas totalement réalisées, c’est vrai. Le Couteau Suisse a pour certains outils un mécanisme d’ajout de boutons dans la BTV2, mais les blocs dépliables sont encore en projet. L’extension sur le porte plume est à faire, c’est sur la planche de travail... de la communauté.

    Répondre à ce message

  • Tout d’abord, merci d’avoir pris le temps de travailler sur ce code. Je pense que ça servira à beaucoup de monde.

    J’ai donc testé la nouvelle version et ca semble marcher très bien. Un bloc numéroté reste ouvert lorsque l’on revient sur la même page.

    Petite question, comment faire pour qu’il reste ouvert sur toutes les pages tant que je ne le referme pas.
    C’est à dire que dans le cas d’un menu, si je suis le lien dans une liste, la liste reste ouvert apres avoir suivi le lien !

    Encore merci.............je crois que je te dois le champagne !!!!

    Répondre à ce message

  • 1

    Je reviens parmi vous et toujours avec le même problème.

    Faire en sorte qu’un bloc déplié (dans le cadre d’un menu) reste ouvert au changement de page.

    J’ai bien essayé de m’inspirer du script du sommaire mais sans réussite (voir quelques messages plus bas)

    J’ai vraiment besoin de votre aide !

    Répondre à ce message

  • 2

    j’ai enlevé la première partie du script qui, à mon avis n’est pas utile.

    J’ai corrigé les erreurs de syntaxe mais ............c’est toujours pas ça !

    Je vous mets le code :

    function cs_bloc1_cookie() {
    
    	if(typeof jQuery.cookie !='function') return ;
    
    	var replie = jQuery.cookie('cs_bloc1') ;
    
    	jQuery.cookie('cs_bloc1', null) ;
    
    	if (Number(replie))
    
    		jQuery(cs_bloc1).eq(0).addClass('cs_blocs_replie')
    
    			.next().toggleClass('cs_blocs_invisible');
    
    	jQuery(window).bind('unload', function() {
    	
    		jQuery.cookie('cs_bloc1',
    
    			Number(jQuery(cs_bloc1).eq(0).hasClass('cs_sommaire_replie'))
    
    );
    
    	});
    
    }
    • Bonjour,

      Je poste ici car je n’ai rien trouvé sur d’autres forums et que le problème, en plus d’être lié à mon avis aux blocs dépliables, est présent ici même SUR CE SITE !

      Bref, j’ai peut-être mal cherché (et pardon d’avance si c’est le cas) mais ici même lorsque, à partir d’un IE7 (ou IE6), je fais « Voir ce message avant de le poster » j’ai une erreur javascript ’objet inconnu’ (argh j’aime pas ces erreurs qui ne disent rien)

      FF c’est plus compliqué pour reproduire l’erreur, mais je l’ai eue une fois et j’ai donc pu voir qu’il s’agissait un problème après le callback, juste avant de déplier la prévisu.

      Vous avez aussi le pb, j’imagine ?

      Evidemment, il ne s’agit pas d’un problème de squelette puisque je parle ici des squelettes par défaut.

    • Ce message semble hors sujet. L’objet ici est le Couteau Suisse, non SPIP lui-même...

    Répondre à ce message

  • Au secours !!!!!!!!!!

    Un petit indice, une piste.....suis-je loin de ce que je cherche ?

    J’ai besoin d’aide !

    var blocs_sel = ’div.cs_blocs_replie, div.cs_blocse_titre’ ;

    // compatibilite Ajax : ajouter « this » a « jQuery » pour mieux localiser les actions

    // et tagger avec cs_done pour eviter de binder plrs fois le meme bloc

    function cs_blocs_init()

    jQuery(blocs_sel, this)

    .not(’.cs_done’).addClass(’cs_done’)

    .click( function()

    jQuery(this).toggleClass(’cs_blocs_replie’)

    .next().toggleClass(’cs_blocs_invisible’)

    // annulation du clic

    return false ;

    ) ;

    // Sauve l’etat du 1er sommaire de la page dans un cookie si on quitte la page, et le remet quand on revient

    // pour SPIP < 2.0, il faut le plugin jquery.cookie.js

    function cs_bloc1_cookie()

    if(typeof jQuery.cookie !=’function’) return ;

    var replie = jQuery.cookie(’cs_bloc1’) ;

    jQuery.cookie(’cs_bloc1’, null) ;

    if (Number(replie))

    jQuery(blocs_sel).eq(0).addClass(’cs_blocs_replie’)

    .next().toggleClass(’cs_blocs_invisible’) ;

    jQuery(window).bind(’unload’, function()

    jQuery.cookie(’cs_bloc1’,

    Number(jQuery(blocs_sel).eq(0).hasClass(’cs_blocs_replie’))

    ) ;

    ) ;

    Répondre à ce message

  • voilà mon dernier essai pour que le bloc1 reste ouvert au changement de page !

    var bloc1_sel = 'div.cs_bloc1 h4.blocs_replie, div.cs_bloc1 h4.blocs_titre';
    
    
    
    
    
    // compatibilite Ajax : ajouter "this" a "jQuery" pour mieux localiser les actions 
    
    // et tagger avec cs_done pour eviter de binder plrs fois le meme bloc
    
    function cs_bloc1_init() {
    
    	jQuery(bloc1_sel, this)
    
    		.not('.cs_done').addClass('cs_done')
    
    		.click( function(){
    
    			jQuery(this).toggleClass('cs_bloc1_replie')
    
    				.next().toggleClass('cs_bloc1_invisible')
    
    			// annulation du clic
    
    			return false;
    
    		});
    
    }
    
    
    
    // Sauve l'etat du 1er sommaire de la page dans un cookie si on quitte la page, et le remet quand on revient
    
    // pour SPIP < 2.0, il faut le plugin jquery.cookie.js
    
    function cs_sommaire_cookie() {
    
    	if(typeof jQuery.cookie!='function') return;
    
    	var replie = jQuery.cookie('cs_bloc1');
    
    	jQuery.cookie('cs_bloc1', null);
    
    	if (Number(replie))
    
    		jQuery(sommaire_sel).eq(0).addClass('cs_bloc1_replie')
    
    			.next().toggleClass('cs_bloc1_invisible');
    
    	jQuery(window).bind('unload', function() {
    
    		jQuery.cookie('cs_bloc1',
    
    			Number(jQuery(sommaire_sel).eq(0).hasClass('cs_bloc1_replie'))
    
    		);
    
    	});
    
    }

    Désolé pour tous les spécialistes qui vont s’arracher les cheveux en voyant ça !

    Répondre à ce message

  • J’ai le même problème que toi ! As-tu trouvé une solution ?

    J’aimerais éviter à l’utilisateur de réouvrir un bloc au changement de page !

    Seul problème : le javascript et moi ça fait 12 !

    Quelqu’un aurait-il une solution ?

    Faut-il passer les blocs ouverts en ENV ? comment ?

    J’imagine que la fonction qui permet d’ouvrir un bloc précis au chargement de la page doit intervenir mais en agissant sur les blocs qui étaient déjà ouverts.

    Mais comment les identifier ?

    Bref je patoge !

    Répondre à ce message

  • Je galère toujours sur le même problème :

    faire en sorte qu’un bloc ouvert reste ouvert au changement de page !

    SVP ! Un petit coup de pouce serait vraiment génial !

    Répondre à ce message

  • 1

    Déjà merci pour ce superbe plugin !

    Voila, une petite question toute bete mais qui me casse les pieds !

    Sur firefox, lorsque je déplis un bloc en cliquant sur le bloc titre, le navigateur me mets deux petits points, comme des puces, juste au dessus du bloc titre. Ces points disparaissent lorsque je clique ailleurs dans la page.

    Ce phénomène ne se produit pas sur ie.

    C’est pas grand chose mais esthétiquement c’est pas top.

    Je pense que ca doit se régler par css mais je ne vois pas comment ni sur quoi intervenir !

    Merci d’avance pour les réponses et pistes éventuelles.

    • Oui c’est probablement un style qui traine... Tu px voir ça avec Firefox/Firebug... Tu as un lien public ?

    Répondre à ce message

  • je ne demande qu’à apprendre. Pourrais-tu m’aiguiller sur le bon morceau de code stp ?

    Répondre à ce message

  • 1

    Déjà un grand merci de prendre le temps de me répondre, sdeulement je ne suis pas un grand pro deu javascript, voir même carrément débutant.

    J’ai bien regardé le code source de la page sommaire mais il y a beaucoup trop de script pour que je parvienne à isoler le morceau qu’il me faudrait étudier et éventuellement tenter d’adapter à mon problème !

    Répondre à ce message

  • 1

    peux tu m’en dire plus stp ?

    me donner quelques pistes à explorer ou un lien ou ce procédé est expliqué ?

    • Le sommaire automatique du Couteau Suisse utilise cette technique pour conserver l’état du sommaire (déplié ou replié) de chaque page. Tu peux en étudier le code si tu veux.

    Répondre à ce message

  • 1

    J’ai réalisé un menu avec plusieurs blocs.

    Est-il possible de faire en sorte que les blocs qui sont ouverts par l’utilisateur restent ouverts au changement de page ?

    Le but étant que l’utilisateur puisse choisir son mode de navigation en ne dépliant que les blocs qu’il souhaite, sans avoir à les redéplier après chaque rechargemenr de la page.

    J’espère être clair.

    Exemple : j’ai un bloc menu. Si je clique dessus, il restera ouvert tout au long de ma visite sur le site tant que je ne le ferme pas moi même !

    Merci d’avance pour votre réponse !

    • Bien sûr, tout est possible. Il suffit de passer tout ça en cookies. Sous SPIP 2, la gestion des cookies est très simple car elle passe par jQuery.

    Répondre à ce message

  • 1

    Bonjour !

    Chose étrange, je ne parviens à modifier le style des blocs qu’en modifiant le fichier original /plugins/couteau_suisse/outils/blocs.css.html.

    J’ai tenté de reproduire l’exemple ci-dessus (cadre noir, et aucune flèche), mais aucune des lignes écrites dans /squelette/habillage.css ou dans /squelette/outils/bloc.csss.html ne sont prises en compte. J’ai bien pris soin de recharger la page de configuration du couteau suisse à chaque fois. J’ai tenté d’inclure ses lignes en début de fichier et en fin, j’ai tenté aussi de les isoler... bref. Rien à faire.

    Ce comportement est-il normal ?

    • Attention à la syntaxe : /squelette/outils/bloc.csss.html ou /squelettes/outils/bloc.css.html ?

      Regarde ce que donne le code rendu avec Firefox+Firebug. Tu verras comment son gérées les priorités CSS.

      Tu ne mentionnes pas le cache de SPIP qu’il faut veiller à vider.

    Répondre à ce message

  • Bonjour et merci Patrice.
    Effectivement, après quelques essais, cela a résolu mon problème.
    j’ai donc mis #BLOC_TITRE_NUM#ID_SYNDIC et dans ma boucle pagination 5 #ID_SYNDIC. Par contre, je n’ai mis qu’un seul script (déplacé dans la page appelante)

    jQuery(document).ready(function() {
     if(blocs_pagination) {
       jQuery('div.cs_bloc' + blocs_pagination
          + ' h4.blocs_titre').eq(0).click();
       window.location.hash = '#pagination' + blocs_pagination;
     }
    });

    plus le votre, cité dans un des posts car sinon les blocs ne restaient pas ouvert au click sur un lien.
    Mais, j’ai encore des erreurs dans le code, le div id qui se crée pour la pagination Ajax n’est pas unique <div id="fragment_html_6ab29a092d4505268f12e6d02abcbcad_articles" class="fragment">
    Le but étant d’afficher 3 fils RSS de 2 sites différents sur ma page, les 6 id sont les mêmes...

    Répondre à ce message

  • 1

    Bonjour

    J’utilise cet outil sur la page d’accueil de mon site(SPIP 1.9.2), j’arrive à avoir les blocs dépliables mais quand je clique sur les chiffres de la pagination, mon site remonte en haut de page (le bloc reste ouvert). je crois que je n’ai pas bien compris le passage « Il vous faut d’abord numéroter vos blocs en utilisant pour le titre le même numéro que celui de la pagination... ». J’aimerai savoir aussi si c’est normal qu’un bloc, une fois ouvert, ne se referme pas quand on clique sur un autre titre. Merci

    Mon code inclure dans page appellante

    <BOUCLE_sites(SITES) {id_syndic==^(13|14|15)$}>
    [(#INCLURE{fond=modeles/site_paronglet}{id_syndic}{ajax}{env}{self=#SELF})]
    </BOUCLE_sites>

    Page appelée

    <script type="text/javascript">
    jQuery(document).ready(function() {
            jQuery('h4.blocs_titre').eq(0).click();
    });
    
    jQuery(document).ready(function() {
     if(blocs_pagination) {
       jQuery('div.cs_bloc' + blocs_pagination
          + ' h4.blocs_titre').eq(0).click();
       window.location.hash = '#pagination' + blocs_pagination;
     }
    });
    </script>  
    
    <BOUCLE_sites(SITES) #ENV{id_syndic} {par id_syndic}>
    <B_articles>
    #BLOC_TITRE_NUM #NOM_SITE
    #BLOC_DEBUT
    #ANCRE_PAGINATION
                      
    <BOUCLE_articles(SYNDIC_ARTICLES) #ENV{id_syndic}{par date}{inverse}{pagination 5}>
    <p>[<small>(#DATE|affdate_court) :</small>] <a href="#URL_ARTICLE" class="spip_out" title="Ouvre un nouvel onglet">[(#TITRE*|couper{70})]</a><br />
    [<em>(#TAGS|afficher_tags)</em><br />]
    [(#DESCRIPTIF|couper{200})]
    </p>
    </BOUCLE_articles>
    [<p class="pagination">(#PAGINATION)</p>]
    <BOUCLE_rss_tous(SITES) #ENV{id_syndic}>
    <li><div align="right"><a href="[(#ID_SYNDIC|generer_url_site)]">Tous les Fils</a></div></li>
    </BOUCLE_rss_tous>
    #BLOC_FIN
    </B_articles>
    </BOUCLE_sites>

    Répondre à ce message

  • 1

    Bonjour !

    j’ai différents blocs dans mes squelettes :

    BLOC_TITRE_NUM1

    mais voila comment dois-je modifier le css pour appliquer un style à ce bloc ?

    Merci

    • Le paragraphe « Blocs numérotés » s’applique pour les blocs en article comme pour les blocs en squelette, les classes générées sont les mêmes, il suffit de regarder le code et travailler avec Firefox+Firebug.

    Répondre à ce message

  • 1

    Bonjour,

    Bah, il suffit de poser la question pour y arriver ... !

    Voici le code que je cherchais à faire et qui... fonctionne :

    <B1>
    <BOUCLE1(ARTICLES){par date}{inverse}{fusion YEAR(date)}>
       <b class="texte">[#BLOC_TITRE(#DATE|annee)]</b><br>
       <B2>#BLOC_DEBUT
          <BOUCLE2(ARTICLES){annee_relatif}
          {par date}{inverse}{lang_select=non}
          {fusion MONTH(date)}>
          <small>[#BLOC_TITRE(#DATE|nom_mois)]</small><br>
          <B3>
             #BLOC_DEBUT
             <BOUCLE3(ARTICLES){mois_relatif}{par date}{inverse}>
                <small><a href="#URL_ARTICLE">#TITRE</a></small><br>
             </BOUCLE3>
             #BLOC_FIN
          </B3>
          </BOUCLE2>
          #BLOC_FIN
       </B2>
    </BOUCLE1>
    </B1>

    Merci,
    Michel

    • Ce code n’est pas bon : l’ordre et l’imbrication des balises ne sont pas respectés. Il faut veiller à ce que le bloc entre #BLOC_TITRE et #BLOC_DEBUT soit correct dans sa syntaxe HTML : pas de balise ouverte et non fermée.

      Voici la version correcte, utilisant les listes <ul> :

      <B1><ul>
      <BOUCLE1(ARTICLES){par date}{inverse}{fusion YEAR(date)}>
        <li>#BLOC_TITRE<b class="texte">[(#DATE|annee)]</b>
        <B2>
           #BLOC_DEBUT<ul>
           <BOUCLE2(ARTICLES){annee_relatif}{par date}{inverse}{lang_select=non}{fusion MONTH(date)}>
           <li>#BLOC_TITRE<small>[(#DATE|nom_mois)]</small>
           <B3>
              #BLOC_DEBUT<ul>
              <BOUCLE3(ARTICLES){mois_relatif}{par date}{inverse}>
                 <li><small><a href="#URL_ARTICLE">#TITRE</a></small></li>
              </BOUCLE3>
              </ul>#BLOC_FIN
           </B3>
           </BOUCLE2>
           </ul>#BLOC_FIN
        </B2></li>
      </BOUCLE1></ul>
      </B1>

    Répondre à ce message

  • Bonjour,

    Un de vous pourrait-il m’aider, car je n’arrive pas à insérer les trois codes dans la boucle ci-dessous :

    #BLOC_TITRE , #BLOC_DEBUT, #BLOC_FIN

    de façon que l’affichage soit celui-ci :

    Année (clic déplier apparait les)

    Mois de l’année (clic déplier apparait les)

    articles du mois

    <B1>

    <ul>

    <BOUCLE1(ARTICLES)par dateinversefusion YEAR(date)>

    <li>(#DATE

    <B2>

    <ul>

    <BOUCLE2(ARTICLES)annee_relatif
    par dateinverselang_select=non
    fusion MONTH(date)>

    <li>(#DATE

    <B3>

    <ul>

    <BOUCLE3(ARTICLES)mois_relatif
    par dateinverse>

    <li><a href=« #URL_ARTICLE »>#TITRE</a></li>

    </BOUCLE3>

    </ul>

    </B3>

    </li>

    </BOUCLE2>

    </ul>

    </B2>

    </li>

    </BOUCLE1>

    </ul>

    </B1>

    Merci,

    Michel

    Répondre à ce message

  • 4

    bonjour,
    je souhaiterai déplié un bloc et que l’autree bloc déplié se replie

    A déplié si Clic sur B alors B déplié et A replié
    merci de m’aider.

    • Je viens de faire évoluer le code pour y arriver, mais c’est incomplet pour l’instant. Pour que ça marche, il faut décommenter la ligne 30 de blocs.js

      Ce repliement automatique ne concerne pour l’instant que les blocs non ajaxés et sans résumé, et il faudrait trouver le moyen d’éviter qu’un parent de bloc déplié soit replié !

    • a mon avis il va falloir analyser plus avant.

      -  replier un bloc lorsque l’on en déplie un autre

      c’est ce que fait le « résumé », non ? tu peux mettre un truc dans le résumé (déplié) et un autre truc dans le bloc (replié). Lorsque le bloc se déplie, le résumé se plie et vice-versa.

      -  replier « des » blocs lorsque l’on en déplie un autre

      ... lesquels .... comment les identifier, les lier les uns aux autres.... ca s’appelle un accordéon, en fait. ca mérite peut-être une autre lame sur le modèle « accordéon » ?

      mes deux sous.

    • Bon, je me réponds à moi-même... Je viens de tout refaire blocs.js !

      Maintenant, tous les clics (blocs simples, avec ou sans résumé, ajaxés ou non) sont traités par la même fonction, c’est plus simple...

      La fonction ’blocs_replie_tout’ replie tous les blocs sauf l’appelant et sa lignée parentale. Voila le code proposé et à tester :

      function blocs_replie_tout(appel) {
       lignee = jQuery(appel).parents('div.cs_blocs').children('h4.blocs_titre');
       jQuery('h4.blocs_titre').not('h4.blocs_replie').not(lignee).blocs_toggle();
      }
    • Merci beaucoup c’est tout à fait ce qu’il faut. mais cela ne fonctionne pas. et je ne sais pas où mettre la fonction. de plus l’ancienne version fonctionnait

    Répondre à ce message

  • 2
    P Houplon

    Je souhaite utiliser le bloc dépliable pour faire apparaître, au bas de chaque article, le formulaire forum. Pour l’instant pas de problème de ce côté. J’y parviens facilement.

    Le problème arrive lorsque on clique sur le bouton « voir ce message avant de le poster ». La page revient en haut de page et le formulaire se replie. Du coup l’internaute doit déplier une nouvelle le bloc formulaire-forum pour valider le commentaire (pas très pratique)

    Comment, après avoir cliqué sur « voir ce message avant de le poster », maintenir déplié le formulaire de prévisualisation ?

    ici : l’exemple d’une page d’article du site où pour le moment je n’utilise plus le dépliable (en attendant LA solution...)

    • Bonjour

      es-ce que par hasard ca ne serait pas totalement corrigé avec la dernière version de SPIP 2.0 (grace à l’Ajaxification des formulaires ?).

      Sinon il va falloir développer un « truc » spécifique, qui déplie le bloc lorsque le forum est appelé en mode « previsualisation ». C’est possible mais peut-être un peu compliqué.

      Michel

    • Oui, le plus simple, en l’état est d’écrire quelques lignes en jQuery. Sinon, ajaxer le formulaire est la meilleure solution.

    Répondre à ce message

  • 3

    Bonjour,

    Je souhaiterais utiliser ce plugin pour le plan du site. C’est à dire, afficher uniquement les articles et rubriques de premier, voire deuxième, niveau. Le reste ne serait pas visible au chargement de la page, il faudrait déplier au fur et à mesure les rubriques. Ca m’éviterai d’avoir un plan de site énorme.

    Mais je me retrouve donc avec des bloc imbriqués, et ça ne marche pas :-( Seul le bloc le plus « à l’intérieur » fonctionne.

    Voici ma boucle :

    <B_rubriques>
        <ul>
           <BOUCLE_rubriques(RUBRIQUES) {id_parent} {par titre}>
               <li>
                   #BLOC_TITRE
                   [<a href="#URL_RUBRIQUE">(#TITRE|supprimer_numero)</a>]
                   <B_articles>
                       #BLOC_DEBUT
                       <ul>
                           <BOUCLE_articles(ARTICLES) {id_rubrique} {par titre}>
                               [<li><a href="#URL_ARTICLE">(#TITRE|supprimer_numero)</a></li>]
                           </BOUCLE_articles>
                       </ul>
                       #BLOC_FIN
                   </B_articles>
                   <BOUCLE_sous_rubriques(BOUCLE_rubriques)>
                   </BOUCLE_sous_rubriques>
               </li>
            </BOUCLE_rubriques>
        </ul>
    </B_rubriques>

    Est-ce que quelqu’un sait comment faire ?

    • bonjour

      tu n’aurais pas un URL pour voir ce que ca fait ?

      Merci

    • Non, j’ai fais les tests en local :-(

      Je vais voir pour faire des captures d’écran ou l’héberger sur un site de test. Merci de ton intérêt pour mon problème :-D

    • Salut, le problème on dirait dans ton code, c’est que les 3 balises #BLOC risquent de ne pas toujours être appelées. Hors elles doivent cohabiter quoiqu’il arrive...

      Essaie peut-être :

      <B_rubriques>
         <ul>
            <BOUCLE_rubriques(RUBRIQUES) {id_parent} {par titre}>
                <li>
                    #BLOC_TITRE_NUM{#ID_RUBRIQUE}
                    [<a href="#URL_RUBRIQUE">(#TITRE|supprimer_numero)</a>]
                    #BLOC_DEBUT
                    <B_articles2>
                        <ul>
                            <BOUCLE_articles2(ARTICLES) {id_rubrique} {par titre}>
                                [<li><a href="#URL_ARTICLE">(#TITRE|supprimer_numero)</a></li>]
                            </BOUCLE_articles2>
                        </ul>
                    </B_articles2>
                    <BOUCLE_sous_rubriques(BOUCLE_rubriques)>
                    </BOUCLE_sous_rubriques>
                    #BLOC_FIN
                </li>
             </BOUCLE_rubriques>
         </ul>
      </B_rubriques>

    Répondre à ce message

  • 1
    Jean-Luc GARNIER

    Bonjour,
    J’ai modifié mon squelette de plan pour avoir un bloc dépliable pour chaque rubrique (idem à la dist, mais articles, brèves, sites, etc. dans un bloc dépliable).
    Le squelette est hyper simple :

    #BLOC_TITRE

    Rubrique « (#TITRE

    [(#REM) bloc_resume avec le descriptif de la rubrique ]
    #BLOC_RESUME
    #DESCRIPTIF

    [(#REM) Articles et sous-rubriques ]
    [(#REM) bloc_debut ]
    #BLOC_DEBUT

    [(#REM) içi, les boucles articles, brèves, etc.]

    #BLOC_FIN

    Hélas, si j’enlève le #BLOC_RESUME, cliquer sur le titre des rubriques m’envoie vers la rubrique correspondante au lieu de déplier le bloc attendu ! Si je ne laisse que la balise (sans descriptif), cela se remet à marcher...

    Est-ce un comportement normal ?
    Merci d’avance pour toute aide.

    • Non le comportement est anormal en effet. donnes-nous les versions du CS et de SPIP que tu utilises, et/ou un url pour aller voir ce qui arrive. Normalement, sans #BLOC_RESUME, le bloc doit se déplier.

      merci de nous permettre de voir le bug..

      Michel

    Répondre à ce message

  • 4

    Hello,

    J’utilise des blocs dépliables pour y loger des Brèves. J’en mets 2 avant #BLOC_TITRE. Quand le visiteur clique sur « Plus de brèves » il a les 3 suivantes qui sont dans #BLOC_DEBUT. Tout fonctionne bien, sauf... quand il n’y a pas au moins 3 brèves à disposition (selon un critère). Dans ce cas, il n’y a rien dans #BLOC_DEBUT et la mise en page se casse la gueule à partir de cet endroit !

    Voici un extrait du code source généré (dans n’importe quel browser) :

    <div class="brevetitre">19.02.2008 
    						••• <a title= "Lien permanent" href="spip.php?breve5">Petite nouvelle</a> •••  
    						</div>
    						<div class="brevetext"><p>Texte de la brève. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur porta enim non magna. Etiam fermentum. Aliquam erat volutpat. Vivamus placerat sem quis nibh. Pellentesque justo arcu, cursus quis, imperdiet nec, laoreet sit amet, quam. In mi. Integer pharetra nulla sagittis nunc. Aenean fermentum consectetuer justo
    
    (<a title="lire la suite - commentaires" href='spip.php?breve5'>...</a>)</p></div>
    						
    						<br>
    						<div class="cs_blocs"><h4 class="blocs_titre blocs_replie"><a href="#">
    						
    						<div class="plusbreve">						
    						Plus de brèves
    						</div>
    					
    						</a></h4><div class="blocs_invisible">

    Evidemment, quand il n’y a aucune brève, c’est encore pire !

    Est-ce qu’il y a un espoir que cela puisse marcher ?

    • Michel

      donc c’est un pb de squelettes.

      Tu pourrais poster ton squelette ?

      en fait, il faut prévoir le cas ou il y a « moins de n » brèves pour que le squelette ne génère PAS #BLOC_DEBUT et #BLOC_FIN (je pense.....) je peux essayer mais montre le squelette pour ne pas partir dans tous les sens....

    • Volontiers, voici le squelette :

      <div class="breves">
      
      					<B_breves>
      					 <h2>Brèves</h2>
      					<br>
      						<BOUCLE_breves(BREVES) {id_rubrique}{par date}{inverse} {0,2}>
      						<div class="brevetitre">[(#DATE|jour)].[(#DATE|mois)].[(#DATE|annee)] 
      						••• <a title= "Lien permanent" href="#URL_BREVE">#TITRE*</a> •••  
      						</div>
      						[<div class="brevetext"><p>(#TEXTE*|liens_ouvrants|substr{0,400}|propre|PtoBR)(<a title="lire la suite - commentaires" href='#URL_BREVE'>...</a>)</p></div>]
      						</BOUCLE_breves>
      						<br>
      						#BLOC_TITRE
      						
      						<div class="plusbreve">						
      						Plus de brèves
      						</div>
      						
      						</B_breves>	
      											
      						#BLOC_DEBUT		
      						<div class="blocsDaube">
      						<BOUCLE_brevesautres(BREVES) {id_rubrique}{par date}{inverse} {2,5}>
      						
      						<div class="brevetitre">[(#DATE|jour)].[(#DATE|mois)].[(#DATE|annee)] 
      						••• <a title= "Lien permanent" href="#URL_BREVE">#TITRE*</a> •••
      						</div>
      						[<div class="brevetext"><p>(#TEXTE*|liens_ouvrants|substr{0,400}|propre|PtoBR)(<a title="lire la suite - commentaires" href='#URL_BREVE'>...</a>)</p></div>]
      						</BOUCLE_brevesautres>												
      						<div class="brevetitre">
      						<a href="#URL_PAGE{brevestout}">Toutes les brèves</a>...
      						<br><br>
      						</div>	</div>
      						#BLOC_FIN	
      						
      						</B_brevesautres>
      						
      				</div>

      (J’ai mis PtoBR pour ne pas avoir les p class=« spip ». Mais j’ai du rajouter <p></p> aux bons endroits .)

    • Michel

      je te propose de mettre un a cet endroit la, de façon à ce que le BLOC_TITRE ne vienne si et seulement si il y a vraiment des breves autres...

      <div class="breves">
      
                  <B_breves>
                                               <h2>Brèves</h2>
                                              <br>
                  <BOUCLE_breves(BREVES) {id_rubrique}{par date}{inverse} {0,2}>
                                            .........
                   </BOUCLE_breves>
      
      		<B_brevesautres>
                                             <br>
                                              #BLOC_TITRE        
                                                      <div class="plusbreve">                                               
                                                      Plus de brèves
                                                      </div>
                                                                                             
                                                      #BLOC_DEBUT               
                                                      <div class="blocsDaube">
                                                      <BOUCLE_brevesautres(BREVES) {id_rubrique}{par date}{inverse} {2,5}>
                                               .......
                                                      </BOUCLE_brevesautres>                                                                                               
                                                      
      <div class="brevetitre">
                                                      <a href="#URL_PAGE{brevestout}">Toutes les brèves</a>...
                                                      <br><br>
                                                      </div>        </div>
                                                      #BLOC_FIN       
                                                     
                                                      </B_brevesautres>
                                                     
                                      </div>
    • Ça marche très bien. Et cela même s’il n’y a pas de brève du tout. Grand merci !

      (En fait, quand je vois la simplicité de la solution, je suis un peu penaud... Je ne suis pas très bon pour développer des boucles compliquées et je pensais que ce serait le cas pour ce problème. Alors qu’il suffisait juste de répartir la matière autrement dans les 2 boucles !)

      Cordialement
      Béat

    Répondre à ce message

  • 10

    Les blocs dépliables fonctionnent en partie privé par sur le site public.
    Je n’ai rien fait sur les squelettes.

    Vidé les caches, Installer 1.7.17.05, actualiser

    Rien n’y fait. ça marche en privé pas en public

    Site avec dist de SPIP 1.9.3 dev [11376]

    Merci de votre aide...

    • Bonjour
      je ne comprends pas l’allusion à l’espace privé.

      Il vous faut juste activer le couteau suisse et l’outil bloc dépliable. ensuite, dans votre article, mettre les raccourcis prévus.

      Avez-vous une url que j’aille voir ?

      vous pouvez voir ce que ca donne sur
      www.pscaledonie.org

    • Je rédige un article, j’utilise Titre 2 lignes d’espace Texte , je valide. Dans l’espace privé de spip, les blocs se déplient normalement. Lorsque je publie l’article, les blocs ne se déplient plus dans le site public.

      C’est plus clair ?

    • Je rédige un article, j’utilise <bloc> Titre 2 lignes d'espace Texte </bloc>, je valide. Dans l’espace privé de spip, les blocs se déplient normalement. Lorsque je publie l’article, les blocs ne se déplient plus dans le site public.

      C’est plus clair ?

    • C’est un peu plus clair en effet.....

      Ca serait idéal si j’avais un url meme public pour voir le code généré, comme demandé plus haut....

      A votre place je commencerait par vider le cache de spip et celui du navigateur.
      Ensuite, dans /tmp/ je virerai le dossier /tmp/couteau_suisse. Ensuite, je réactiverait le couteau suisse et les blocs dépliables. Ensuite, sur la page, j’irai m’assurer que jquery est bien chargé dans l’espace public. Enfin, je controlerait l’html généré.

      voila.. Chez moi ca marche sans souci, je vais toutefois recontroler, et notre collègue va surement jeter un oeil.

    • rcaron

      J’ai effectué toutes les manips. Même résultat.

      Par contre dans la console Firebug j’ai l’erreur suivante :

      useless setTimeout call (missing quotes around argument?)
      (no name)()spip.php (line 64)
      (no name)()spip.php (line 1074)
      (no name)()spip.php (line 1085)
      each([function(), function(), function(), 5 more...], function(), undefined)spip.php (line 333)
      ready()spip.php (line 1084)
      [Break on this error] jQuery(document).ready(function(){setTimeout(init_f.apply(document),200)});

      Je ne sais pas si ça peut aider...

      Merci

    • ca vient d’un autre plugin cela. SI J’AVAIS UNE URL ON PERDRAIT MOINS DE TEMPS

      -  desactiver tous les plugins sauf couteau suisse
      -  desactiver tous les outils du C suisse sauf les blocs
      -  virer tmp/couteau suisse
      -  vider le cache

      et c’est reparti...

      désolé

      MJ

    • J’avais le même souci jusqu’à ce que j’insère la balise #INSERT_HEAD dans ma page (grâce au Couteau Suisse d’ailleurs)… Depuis ça roule ;)

    • J’avais déjà activé cette fonction de couteau suisse. Mais ça ne marche toujours pas... Les blocs fonctionnent dans la partie rédacteur mais pas sur le site lui-même.

    • Utilises tu le plugin Crayon ?
      Si c’est le cas, cela rends les blocs non dépliables lorsque tu es loggué en partie privée et que tu as rendu les textes contenus entre ta balise bloctitre et blocdebut.

      Solution : Supprimer le #EDITparametre du css entre les deux balises #Bloctitre et #Blocdebut afin de ne plus rendre le crayon utilisable sur les titre de tes blocs,.

    • Problème résolu après mise à jour vers SPIP 1.9.3 dev [11727]

      Merci

    Répondre à ce message

  • 2

    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.

    • 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...

    • 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

  • 5

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

    • hmm, qui es-tu ? la der des der des version du CS ? caches vidés et CS recompilé ? Chez moi tout fonctionne...

    • sorry j’ai fait trop vite je n’ai pas vu que les champs identifiants étaient vides...
      depuis la 511 aujourd’hui j’ai des souçis jquery, menu accordeon et blocs depliés

    • Quels soucis ? le menu et les blocs ne sont peut-être pas compatibles... ds ce cas, fo trouver pkoi... viens sur IRC si tu vx : irc.freenode.net, salon #spip

    • tout est déplié, accordeon et blocs, thickbox aussi est planté. Firebug marque blocs_init.apply(this) ; mais j’y capte rien... je suis sur freenode

    • OK, pb réglé. Gare à SPIP SVN !!

      (... À éviter en production)

    Répondre à ce message

  • 6

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

    Une aide ?

    Merci

    • ah, on vient justement d’ajouter des fonctionnalités aux blocs. t’as bien recompilé de Couteau Suisse et vidé les caches ? t’as un lien public ?

    • Nouvelle mise à jour. Caches vidés.

      sous 1.9.2d les blocs ne se déplient pas
      Voir http://www.observatoire-de-la-langue.com/spip.php?article211

      J’ai la même erreur sous SPIP 1.9.3 dev [11376]

      Merci de votre aide. Je suis bloqué.

    • Bonjour,
      ca marche sans pb chez moi (site local)

      -  qu’es-ce qui ne marche pas ? Ajax (avec url) ou pas d’ajax ? Résumé (avec #BLOC_RESUME) ou pas de résumé ?

      As-tu fait mes manoeuvres magiques
      -  désactiver l’outil « bloc dépliables » dans la config du couteau suisse
      -  désactiver le plugin couteau suisse dans la gestion des plugins
      -  effacer le dossier « tmp/couteausuisse »

      -  réactiver le couteau suisse
      -  réactiver l’outil blocs dépliables

      Enfin, une url nous permettrait de t’aider mieux.

    • Ajax ou pas, je ne sais pas...
      Balises <bloc> et </bloc> insérées dans article.

      Manoeuvres magiques effectuées sans succès.

      url : http://www.observatoire-de-la-langue.com/spip.php?article211 voir « essai onglet »

      Merci

    • On avait fait un petit oubli de class... Tu tombes juste au mauvais moment, désolé ;-) Mais merci pour la remontée de bug, en principe c’est à présent corrigé.

    • Exact. Les blocs refonctionnent.

      Merci et bravo

    Répondre à ce message

  • 34

    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

    • 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.

    • 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 !

    • 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
    • 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).

    • 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.

    • 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.

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

    • 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 ?

    • 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

    • 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...

    • 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 ?

    • 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/

    • 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....

    • 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}
    • 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.

    • 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...

    • 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

    • 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

    • 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

    • 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.

    • Voila c’est fait, merci de tester

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

      Bonne utilisation

      Michel

    • 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...

    • nathbni

      Merci et félicitations à tous les deux pour cet excellent travail que j’ai suivi pas à pas. Chapeau bas !

    • 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...

    • 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

    • 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.

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

    • 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.

    • 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>

    • 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

    • 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 ?

    • 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

    • 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

    • 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

  • Bonjour,

    merci pour ce plugin très pratique. Il semblerait qu’il y ait une incompatibilité avec l’outil du couteau suisse « paragrapher » (avec SPIP 1.9.2d) :

    Si les 2 sont activés la fonction « supprimer numéro » du couteau suisse ne s’applique plus (pour tout le site, pas seulement dans les blocs dépliables).

    Lorsque j’enlève « paragrapher » les numéros sont bien invisibles.

    dd

    Répondre à ce message

  • 5
    Yanik Bourgeois

    Ces 2 Fonctions sont un régal.
    Mon soucis, c’est qu’avec une longue liste de blocs insérée dans des onglets, il arrive que çà déraille :
    -  Les onglets ne sont plus générés et
    -  Les blocs ne cachent que le premier paragraphe du texte encadré par les balises.

    -  Pas d’onglets imbriqués (article complet en 4 onglets)
    -  Pas de blocs imbriqués (une dizaine par page)

    Fiches de données et tableaux dans les blocs

    Par de code html traversant (autres qu’ onglets).
    Que dois-faire, ou ne pas faire ? (faire ou ne pas faire, c’est toujours faire < ;-)) )

    Passe pas sous IE6 (majorité de mes lecteurs ) Cà passe sous FF, pas essayé sous IE7.

    Je souhaite ardemment que çà marche parce que j’utilise beaucoup.

    Merci de votre aide

    • Un exemple public peut-être ? Parfois en passant des lignes, ça débloque certaines choses...

      Il faudrait que tu donnes un exemple (simplifié) de ce qui bloque, ça serait plus facile à débugguer.

    • Yanik Bourgeois

      Bonjour Pat et à tous,
      Merci pour cette réponse rapide.

      Un exemple,
      c’est Ici : http://aneg.aeroclub.free.fr/spip.php?article203

      c’est une copie de l’article, j’y ai joint le texte de l’article.

      J’utilise cette combinaison pour d’autres articles pour lesquels je n’ai pas de soucis. Ils comportent également les mêmes contenus :
      tableaux, données, images.

      Seule différence peut-être : les liens externes.

      Merci de votre aide

    • Merci pour toutes ces infos.

      Visiblement ta page génère des erreurs javascript qu’il conviendrait déjà de supprimer. IE6 (ligne 182 ?) et FF/Firebug (ligne 206) signalent le pb.

      Ton texte est pourtant bien interprété avec ma config, mais j’ai probablement moins de plugins. A toi de trouver le fautif...

      Sinon, je ne comprends pas pkoi tu sembles mettre un tiret à chacun de tes titres de bloc. je ne suis pas sûr que ce soit vraiment autorisé ...

    • Yanik Bourgeois

      Bonjour à tous et toutes,
      Aprés avoir supprimé toutes mises en formes par raccourcis typo des titres des blocs, tout est revenu dans l’ordre.
      Ces raccourcis étaient :

      -  Tirets de puces "- Titre"
      -  mise en gras du titre "{{Titre}}"
      -  Combinés "- {{Titre}}"

      Pour les erreurs javascvrip, elle sont étaient générées par le plugin Gis et/ Googlemaps_api.
      Merci encore pour votre aide, et ces supers outils.

    • pour les titres des blocs et des onglets, il ne faut pas mettre de mise en forme (tirets, gras ou autres...) il vaut mieux passer par les CSS, c’est bien mieux niveau compatibilité. tu peux repérer les classes en regardant le code source.

    Répondre à ce message

  • 5

    Hello,

    Ben chez moi ça marche pas :-(

    Le code source de ma page présente bien ce qui est prévu, à savoir quelque chose de ce type :

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

    ... et ceci, que je construise le bloc dépliable dans la partie administrative ou dans un squelette. Tout espoir n’est donc pas perdu...

    Mais le problème c’est que la page affiche le bloc déplié et c’est tout. (Tout au plus, quand je clique sur le titre, la page se repositionne en haut, à cause du href=« # », je pense.)

    J’ai bien essayé de désactiver, un à un, tous les autres plugins, rien n’y fait. Je ne peux malheureusement pas vous envoyer sur un site, car je développe en interne sur MAMP.

    Spip version 1.9.2d - jquery par défaut (1.1) - Couteau suisse 1.7.17.00

    • jQuery par défaut, càd ? SPIP 1.92 n’a pas besoin du plugin jQuery. Il est possible qu’une erreur Javascript se soit produite. Avec Firefox/Firebug, vous pourrez trouver cette erreur.

      Si par hasard la balise #INSERT_HEAD manque dans le header du squelette, les blocs ne pourront pas non plus fonctionner.

    • « jQuery par défaut ». Je veux dire par là que je n’ai rien ajouté ou changé de ce qui est livré par défaut avec la 1.92. En me référant à ce qui est écrit plus haut dans cette page : « Cette librairie de fonctions Javascript a été complètement intégrée dans SPIP à partir de la version 1.92. »

      Pour être sûr que ce ne sont pas mes pages qui posent un problème, j’ai copié un squelette (rubrique.html) de la dist dans mon dossier squelettes et j’y ai juste ajouté mon petit bout de code avant le pied de page. Le résultat est le même, ça ne marche pas. (rubrique.html contient cette balise #INSERT_HEAD par le truchement de inc-head.)

      Voici mon code tout simple :

      #BLOC_TITRE
      Mon titre à cliquer
      #BLOC_DEBUT
      Mon bloc dépliable 
      <br>
      qui contient un peu de texte
      #BLOC_FIN

      J’ai d’autres scripts du Couteau suisse qui fonctionnent bien.
      Firebug ne me montre aucun erreur.

    • Merci de ces précisions. Aucune erreur, même au moment du clic ? réussis-tu à débugger le Javascript ? D’après ta description, jQuery ne parvient pas à lier le clic au dépliage. De plus, si tes blocs sont spontanément dépliés, c’est que Javascript ne les a pas repliés au chargement de la page. Il doit bien y avoir une raison simple. Question bête, mais as-tu bien activé le Javascript dans ton navigateur ? Le code source de la page te parait-il complet ? exempt d’erreurs ?

      tu peux m’envoyer par mail privé le code source de ta page si tu ne réussis toujours pas à résoudre ce pb.

    • Merci de ta peine ;-)
      Juste une question générale avant que j’aille me coucher (je continuerai demain...) : est il normal que tous les JS soient écrits dans la page ? Ça fait une sacrée tartine ! Quand je réalise de sites « normaux », je mets ces bibliothèques en externe.

    • non, dans les pages il ya peu de js. et puis c’est bien plus couteux pour un serveur de faire un hit spécial sur un fichier de quelques octets. les lames du couteau utilisant du js important le font dans un fichier à part (cf. les blocs).

    Répondre à ce message

  • 8

    Bonjour,
    Avant de me lancer, je voudrais savoir si vous pensez que ça peut s’adapter sans trop de circonvolutions aux forums, dont on verrait les titres, et déplierait le contenu.
    Sachant que ce serait bien aussi d’avoir la possibilité de déplier l’ensemble d’un fil ou l’ensemble de tous les forums si on veut.
    Merci beaucoup.

    • Je pense que ça peut s’adapter très facilement. Il faut juste quelques connaissances en jQuery et une juste programmation des boucles SPIP.

      La possible numérotation des blocs récemment ajoutée pour les articles (<bloc1>, <bloc2>, etc.) n’a pas été portée sur les balises pour squelettes, mais ça pourrait sans doute faciliter la programmation de ce que tu cherches... Je vais voir cela. Je n’ai aucune objection à faire évoluer cette lame du Couteau Suisse.

      Ce forum est là bien sûr pour trouver des solutions, et même si nous pouvons t’aider, une mise à disposition publique de tes trouvailles est la bienvenue !

      (H.S. : un grand bravo pour ton livre !)

    • J’ai commencé à tenter une adaptation, ça peut aller, voyez vous-même, en cliquant ici.
      Un problème : le style h4.blocs_titre ne prend pas la caractéristique padding:0pt 0pt 0pt 20px. Ce qui fait que l’espace nécessaire pour voir le triangle de dépliement/repliement n’existe pas. Impossible de comprendre pourquoi.
      Une idée ?

    • Tu n’utilises pas Firefox+Firebug ? On y vout tout de suite que tes h4 sont courcicuités par blog.css :

       h4, #conteneur #content h4 {
         /* blog.css (ligne 189) */
         (...)
         padding:0pt;
         (...)
      }

      Pour contrarier les priorités de style (ordre de déclaration) tu peux utiliser !important dans lipietz.net (ligne 86) :

      padding:0pt 0pt 0pt 20px !important;

    • Si tu es satisfaite du résultat et si tu veux, tu pourrais nous donner ton code SPIP afin que d’autres puisse en profiter. Ca illustrerait également bien l’utilisation des blocs dépliables.

    • Perline

      Oui, je pensais donner le code une fois que j’aurais réglé ces petits problèmes.
      En ce qui concerne les téléscopages, oui j’utilise firebug, mais c’est l’ordre des priorités des prises en compte des css que je n’arrive pas à comprendre, car je ne la maîtrise pas (comment les plugins, leurs css, et leurs css adaptées sont ordonnés ? J’ai tout essayé, je ne vois pas).
      De plus, le style ne devrait quand même pas ne pas considérer ce padding là, à cet endrot-là.
      Bref, je continue de ce côté.

    • Avec la modif que je t’ai suggérée, ça marche très bien, quel que soit l’ordre des priorités. C’est vrai que moi aussi, je m’y perds.

    • Perline

      Oui, certes, mais si je ne veux pas changer l’ensemble de mon style dans le css principal
       ?
      Même problème poru changer le triangle, j’ai tenté, j’ai mis dans squelettes/images, et ça marche pas. Au secours.....

    • Il suffit de cibler le h4 :

      h4.blocs_titre, h4.blocs_replie {
              padding:0pt 0pt 0pt 20px !important;
      }

      Quant au petit triangle, c’est celui de SPIP. Actuellement, il n’y a pas de surcharge prévue dans outils/blocs.css.html : il faudrait y changer le code et mettre #CHEMIN...

      Bon, si tu veux mettre tes triangles perso alors tu peux mettre :

      h4.blocs_titre {
      	background:transparent url(monchemin/triangle-bas.gif) no-repeat scroll left center !important;
      }
      
      h4.blocs_replie {
      	background:transparent url(monchemin/triangle.gif) no-repeat scroll left center !important;
      }

      Et si tu veux tout personnaliser, alors il t’es possible de surcharger directement le fichier plugins/couteau_suisse/outils/blocs.css.html en le recopiant/modifiant dans : squelettes/outils/blocs.css.html

    Répondre à ce message

  • 1

    Bonjour,

    Super travail !

    Y a-t-il une possibilité de donner un effet de transition au bloc qui se déplie ou se replie ?
    Par effet de transition, j’entends un dépliement tout en douceur et beau à voir...

    Merci d’avance !

    Répondre à ce message

  • 1

    Bonjour,

    D’abord, félicitations pour ce plugin fort utile et que j’ai, déjà mis en œuvre dans 2 sites.

    Comment faire en sorte qu’au chargement de la page, un bloc soit déplié ?

    Ex : http://dynamique-solidaire94.org/menage-service-emplois-familiaux

    J’aimerais que le 1er bloc à de la colonne de gauche soit déplié.

    Merci d’avance

    • Tu peux le faire directement en jQuery. La fonction eq(index) permet de choisir le bloc à déplier :

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

    Répondre à ce message

  • 7

    Bonjour,

    Tout d’abord, merci pour le travail effectué qui permet « aux billes » dans mon genre de faire un site.

    J’utilise sarkaspip comme squelette (dernière version).
    Je suis sous spip 1.2c

    J’ai installé le « Couteau suisse »
    Je n’arrive pas à faire fonctionner le bloc dépliant.

    Voici le « morceau d’article » concerné en essais :

    « bloc » (je ne met pas entre guillemets mais entre signe « inférieur » et « supérieur »)
    Il existe différents types d’arc en fonction de l’utilisation que l’on veut en faire : (suivi de 2 lignes blanches)

    • Les arcs à poulies sont utilisés principalement pour la chasse.
    • Les arcs classiques sont quant à eux utilisés pour le sport ou le loisir.

    « bloc » (sans ligne avant ce dernier bloc)

    Pouvez-vous me dire ce que je fais mal SVP

    Cordialement
    JPA

    • je me réponds à moi-même, j’avais oublié le « / » avant le second « bloc ». Mais il me semble que ce n’est pas noté dans l’explication.

      Par contre le titre cliquable n’apparait pas bien au format PDF ==> bleu avec des signes # et chiffres à la place de lettres.

      Est-ce dû au squelette ? au plugin « Pdf » ?

      Ou plus certainement une erreur de ma part ?

      Avec toutes mes excuses pour cet apprentissage « un peu rude » pour moi.

    • En plus le « / » Etait bien noté. Je suis vraiment mauvais
      Avec toutes mes excuses

    • Si tu veux donner un morceau de code, pourrais-tu le noter entre les balises <code> et </code> ?

      Tu as aussi : <cadre>, </cadre>, <html> et </html>

      Tu as peut-être un lien public à montrer ?

    • Bonjour,

      Merci pour votre aide.

      <bloc>
      Il existe différents types d’arc en fonction de l’utilisation que l’on veut en faire :
      
      
      
      -* {{Les arcs à poulies}} sont utilisés principalement pour la chasse. 
      -* {{Les arcs classiques}} sont quant à eux utilisés pour le sport ou le loisir.
      </bloc>

      La page concernée : http://www.fscf-fcomte.fr/spip.php?article35
      Puis mettre au format PDF.

      J’obtiens :

      Il existe différents types d&#8217;arc en fonction de
      l&#8217;utilisation que l&#8217;on veut en faire :

      En fait il semble qu’il s’agisse des « apostrophes » qui ne passent pas au pdf car sur un autre article en « Actualité » cela passe bien.

      A part enlever les apostrophes je ne vois pas ce qu’il faut faire.

      Encore merci
      Cordialement

    • Ah, c’est plutot un problème du plugin pdf alors, pas des blocs...

      Le titre cliquable est codé comme ceci : <h4 class=blocs_titre><a href="#">L'apostrophe :</a></h4>

      Essaie de mettre <h4 class=blocs_titre>L'apostrophe :</h4>, puis <a href="#">L'apostrophe :</a>, histoire de voir quelle balise ce plugin interprète mal...

    • Bonjour,

      De retour, je découvre votre message. merci pour votre réponse et je vais essayer de faire ce que vous dites.

      Mais... où est-ce que je dois noter ce que vous suggérez... je vous avais bien dit que je suis une « bille »... j’avoue que je suis un peu gêné d’embêter comme cela.

      Merci pour tout

      JPA

    • Mais... où

      ... directement dans le texte de l’article. Ensuite, il suffit de le visionner sous PDF...

    Répondre à ce message

  • 6

    youpi encore une fonctionnalité totalement inaccessible au clavier

    • euh ? tu peux expliquer et donner les solutions ? ça serait plus constructif qu’un coup de gueule. tu as l’air un pro du clavier alors aide-nous...

    • Tu utilises un onclick sur un Hx et un Hx ne peut pas recevoir le focus au clavier par défaut donc je n’ai aucun moyen d’activer le onlick sans la souris.
      Pour corriger cela tu peux entourer le contenu du Hx d’un lien vers une ancre situé juste en dessous et ajouter le onclick sur le lien plutot que sur le Hx

    • Ok, mais ta remarque concerne une généralité sur l’accessibilité ou toi, tu as besoin de faire un site accessible au clavier ? Dans le second cas, je peux fournir sans problème un code jQuery adapté.

      Ensuite, prones-tu l’utilisation d’accesskey ou de simples tabulations sur les liens ?

      Utiliser un lien comme tu dis impliquerait l’utilisation des styles associés aux liens, ce qui n’est pas forcément du meilleur effet...

    • Ce genre de solution donc : <div class="cs_blocs cs_bloc2"><a href="#" class="blocs_titre blocs_replie">un titre</a><div class="blocs_invisible">le contenu</div></div>

    • pas d’accesskey c’est merdique donc oui plutot qqchose comme :

      <div class="cs_blocs cs_bloc2">
      <h3 class="blocs_titre blocs_replie"><a href="#monbloc1">un titre</a></h3>
      <div class="blocs_invisible"><a name="#monbloc1" id="#monbloc1"></a>
      le contenu
      </div>
      </div>

      (attention souvent sur ie y a un problème de la synchronisation du clavier avec les ancres et les focus)

      ce qui sans javascript donne :

      <h3>un titre</h3>
      le contenu
    • Allez pour le lien dans le titre. je viens de faire la modif dans le plugin. En revanche, il s’agit bien d’un h4, non d’un h3, et pointer le titre sur un « # » me parait suffisant...

    Répondre à ce message

  • 3

    Bonjour,

    top fonctionnalité !

    Je l’utilise dans un menu de rubriques et sous-rubrique (adapté de « inc-rubriques.html » de la dist)
    Y’aurait-il un moyen de ne pas afficher la flèche quand le bloc ne comprend rien ?

    • Je devine que tu utilises les balises en #BLOC_TOTO dans ton squelette ?

      La syntaxe SPIP (crochets et parenthèses) ne suffirait-elle pas pour obtenir ce que tu veux ? Le plugin n’a aucun moyen de savoir ce que se trouve entre #BLOC_DEBUT et #BLOC_FIN...

    • Tu devines bien !
      et non, ça ne fonctionne pas avec la synthaxe Spip...
      et je suis en plus confrontée à un autre souci : mes titres sont des titres de rubriques, et il faudrait donc que la flèche effectue le dépliage, mais que le clique sur le titre m’amène sur la rubrique.

      Je sais pas si je suis claire. En tout cas, je cherche et je vous tiens au courant ! (je suis pas non plus contre une piste, si y’a ça facile sous le coude ;-)

    • Ca, ce n’est pas possible... La flèche et le titre sont liés. Si tu veux un lien vers ta rubrique, il faut faire un lien distinct...
      Voici un exemple de code, si ça peut te servir :

      <BOUCLE_rub_test(RUBRIQUES){tout}>
      [(#TEXTE*|?{' ',''})#BLOC_TITRE #TITRE #BLOC_DEBUT #INTRODUCTION #BLOC_FIN]
      [(#TEXTE*|?{'',' '})<div>#TITRE</div>]
      </BOUCLE_rub_test>

    Répondre à ce message

  • 10

    J’ai tenté de définir un bloc2 dans bloc.css.html comme suit :

    div.cs_blocs h4 {
    	background:transparent url([(#EVAL{_DIR_IMG_PACK}|url_absolue)]triangle-bas.gif) no-repeat scroll left center;
    	font-family: "Trebuchet MS";
    	font-variant:small-caps;
    	font-weight:bold;
    	font-size:100%;
    	color:#666666;
    	background-color: #AF9CB4;
    	font-weight:normal;
    	line-height:1.2em;
    	margin-top:4px;;
    	padding:0pt 0pt 0pt 20px;
    	margin-bottom:0.1em;
    	clear:left;
    }
    
    div.cs_blocs h4:hover {
    	cursor:pointer;
    	text-decoration:underline;
    }
    
    div.cs_blocs h4.blocs_replie {
    	background:transparent url([(#EVAL{_DIR_IMG_PACK}|url_absolue)]triangle.gif) no-repeat scroll left center;
    	background-color: #BFB0C4;
    }
    
    div.cs_bloc2>div {
            font-family: "Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana,Arial,Helvetica,sans-serif;
            float: right;
            width:20em;
            margin-right:0em;
            border: 0.10em solid;
            padding:0.5em;
            font-size:0.95em;
            background-color:#D4D4D4;
    }
    
    div.cs_bloc2 h4, div.cs_bloc2 h4.blocs_replie {
            background:transparent none;
    }

    Mais devinez ? ça ne marche pas...

    Elle est où ma bêtise ?

    Merci

    • bonjour,

      peut être 2 petites pistes pour toi :
      div.cs_blocs h4 background:transparent url([(#EVAL_DIR_IMG_PACK|url_absolue)]triangle-bas.gif)

      cela ne me semble pas terrible , div.cs_blocs h4 background:transparent url([#EVAL_DIR_IMG_PACK/triangle-bas.gif]) semble mieux (enfin dans le principe il doit manquer ’’\’ avant ton image)

      ensuite dans la déclaration de tes polices :

      font-family: "Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana,Arial,Helvetica,sans-serif;

      pourquoi des guillemets sur les 3 premiers ?

      Voila je ne sais pas si cela pourra t’aider mais je pense que ces deux passages ne sont pas conformes

      ps : au passage merci encore à pat pour son engagement et ses supers plugins

    • Ecoute, je viens d’essayer ton code sous SPIP SVN, et les modifs sont bien prises en compte... Que veux-tu dire par « ça marche pas » [1] !?

    • Une fois ces modifs faites dans bloc-css.html, si je mets une partie de texte dans un article entre <bloc2> et </bloc2>, ma partie de texte disparaît mais bloc2 n’est pas pris en compte.

    • As-tu bien :

      1. pris en compte la syntaxe avec le double saut de ligne ?
      2. mis à jour le Couteau suisse avec la toute dernière version ?
      3. affiché la page de config du plugin pour réinitialiser l’ensemble des outils ?
    • 1 - Oui le réglage <bloc> est bien pris en compte mais <bloc2> ne passe pas
      2 - Toute dernière version installée : 1.7.16.01
      3 - Réinitialisation des outils, message

      vérifier les droits d'écriture
      Le système a rencontré une erreur lors de l'écriture du fichier _DIR_CS_TMPmes_options.php. Veuillez, en tant qu'administrateur du site, vérifier les droits d'écriture sur le répertoire ..

      Mais je ne vois pas de quel répertoire il s’agit.

    • Ah ui, la version du plugin n’a pas changé lorsque le numéro des blocs a été introduit... Si tu mettais à jour le plugin qd même (v1.7.16.02) ?

      (je ne parlais pas de réinitialisation totale des outils, mais une simple recompilation des outils, obtenue en se rendant sur la page de config du plugin)

    • ça commence à venir...

      bloc2 est pris en charge. Seulement le titre du bloc se trouve en dehors du cadre du bloc et le triangle n’apparaît pas à gauche du titre comme dans bloc1

    • La situation est donc débloquée ; maintenant, c’est du css pur et dur. utilise-donc firefox/firebug !

      bon courage.

    • Merci...

      Je sens que je vous énerve et il y a de quoi...

      Voici ce que j’ai trouvé...

      Bizarre mais ça a l’air de marcher. Bloc1 (h4) sur toute la largeur et bloc2 largeur réduite et calé à droite. Le code de mon bloc.css.html

      div.cs_blocs h4 {
      	background:transparent url([(#EVAL{_DIR_IMG_PACK}|url_absolue)]triangle-bas.gif) no-repeat scroll left center;
      	font-family: "Trebuchet MS";
      	font-variant:small-caps;
      	font-weight:bold;
      	font-size:120%;
      	color:#666666;
      	background-color: #AF9CB4;
      	line-height:1.2em;
      	margin-top:4px;
      	padding:0pt 0pt 0pt 20px;
      	margin-bottom:0.1em;
      }
      
      div.cs_blocs h4:hover {
      	cursor:pointer;
      	text-decoration:underline;
      }
      
      div.cs_blocs h4.blocs_replie {
      	background:transparent url([(#EVAL{_DIR_IMG_PACK}|url_absolue)]triangle.gif) no-repeat scroll left center;
      	background-color: #AF9CB4;
      }
      div.cs_bloc2 {
              font-family: "Lucida Grande",Lucida Sans Unicode,Tahoma,Verdana,Arial,Helvetica,sans-serif;
              font-variant:small-caps;
      	font-weight:bold;
      	font-size:120%;
      	color:#666666;
      	background-color: #AF9CB4;
      	line-height:1.2em;
      	margin-top:4px;
      	padding:0pt 0pt 0pt 20px;
      	margin-bottom:0.1em;
      	width: 20em;
      	float: right;
      }
      div.cs_bloc2 bloc2_replie {
              background:transparent url([(#EVAL{_DIR_IMG_PACK}|url_absolue)]triangle.gif) no-repeat scroll left center;
              background-color: #AF9CB4;
      }

      J’ai fait des bêtises ?

      Mais si vous n’avez pas le temps, tant pis...

      Merci quand même

    • Mais non ya aucun énervement ici, on veut bien t’aider. On sait pas trop quel aspect tu veux donner à tes blocs. Mais c’est vrai aussi que l’apprentissage des CSS n’est pas l’objet de ce forum.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom