Skip to content
Extraits de code Groupes Projets
Valider 28993706 rédigé par Fil's avatar Fil
Parcourir les fichiers

script de depliage plus subtil

parent 12f2ef34
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -46,19 +46,37 @@ function hide_obj(obj) { ...@@ -46,19 +46,37 @@ function hide_obj(obj) {
// deplier un ou plusieurs blocs // deplier un ou plusieurs blocs
jQuery.fn.showother = function(cible) { jQuery.fn.showother = function(cible) {
if (this.is('.replie')) { var me = this;
this.addClass('deplie').removeClass('replie'); if (me.is('.replie')) {
jQuery(cible)/*.show()*/.slideDown('fast').addClass('blocdeplie').removeClass('blocreplie'); me.addClass('deplie').removeClass('replie');
jQuery(cible)
.slideDown('fast',
function(){
jQuery(me)
.addClass('blocdeplie')
.removeClass('blocreplie')
.removeClass('togglewait');
}
);
} }
return this; return this;
} }
// replier un ou plusieurs blocs // replier un ou plusieurs blocs
jQuery.fn.hideother = function(cible) { jQuery.fn.hideother = function(cible) {
if (!this.is('.replie')){ var me = this;
this.addClass('replie').removeClass('deplie'); if (!me.is('.replie')){
jQuery(cible)/*.hide()*/.slideUp('fast').removeClass('blocdeplie').addClass('blocreplie'); me.addClass('replie').removeClass('deplie');
} jQuery(cible)
.slideUp('fast',
function(){
jQuery(me)
.addClass('blocreplie')
.removeClass('blocdeplie')
.removeClass('togglewait');
}
);
}
return this; return this;
} }
...@@ -71,9 +89,9 @@ jQuery.fn.toggleother = function(cible) { ...@@ -71,9 +89,9 @@ jQuery.fn.toggleother = function(cible) {
} }
// deplier/replier en hover // deplier/replier en hover
// on le fait subtilement : on attend 350ms avant de deplier, periode // on le fait subtilement : on attend 400ms avant de deplier, periode
// durant laquelle, si la souris sort du controle, on annule le depliement // durant laquelle, si la souris sort du controle, on annule le depliement
// idem au repliement, mais avec une periode plus longue (1000s) // idem au repliement, mais avec une periode plus longue (700ms)
// Cette fonction est appelee a chaque hover d'un bloc depliable // Cette fonction est appelee a chaque hover d'un bloc depliable
// la premiere fois, elle initialise le fonctionnement du bloc ; ensuite // la premiere fois, elle initialise le fonctionnement du bloc ; ensuite
// elle ne fait plus rien // elle ne fait plus rien
...@@ -89,11 +107,10 @@ jQuery.fn.depliant = function(cible) { ...@@ -89,11 +107,10 @@ jQuery.fn.depliant = function(cible) {
// effectuer le premier hover // effectuer le premier hover
.addClass('hover') .addClass('hover')
.addClass('hoverwait'); .addClass('togglewait');
var t = setTimeout(function(){ var t = setTimeout(function(){
me me.toggleother(cible);
.toggleother(cible) t = null;
.removeClass('hoverwait');
}, },
me.is('.deplie') ? timer : timed me.is('.deplie') ? timer : timed
); );
...@@ -101,22 +118,34 @@ jQuery.fn.depliant = function(cible) { ...@@ -101,22 +118,34 @@ jQuery.fn.depliant = function(cible) {
me me
// programmer les futurs hover // programmer les futurs hover
.hover(function(e){ .hover(function(e){
me.addClass('hover') me
.addClass('hoverwait'); .addClass('hover');
if (t) { clearTimeout(t); t = null; } if (!me.is('.deplie')) {
t = setTimeout(function(){ me.addClass('togglewait');
me.toggleother(cible) if (t) { clearTimeout(t); t = null; }
.removeClass('hoverwait'); t = setTimeout(function(){
}, me.toggleother(cible);
me.is('.deplie') ? timer : timed t = null;
); },
me.is('.deplie') ? timer : timed
);
}
} }
, function(e){ , function(e){
if (t) { clearTimeout(t); t = null; } if (t) { clearTimeout(t); t = null; }
jQuery(this) me
.removeClass('hover') .removeClass('hover');
.removeClass('hoverwait'); })
});
// gerer le triangle clicable
.find("a.titremancre")
.click(function(){
if (me.is('.togglewait') || t) return false;
me
.toggleother(cible);
})
.end();
} }
return this; return this;
} }
......
...@@ -86,7 +86,7 @@ function bouton_block_depliable($texte,$deplie,$ids=""){ ...@@ -86,7 +86,7 @@ function bouton_block_depliable($texte,$deplie,$ids=""){
.">" .">"
// une ancre pour rendre accessible au clavier le depliage du sous bloc // une ancre pour rendre accessible au clavier le depliage du sous bloc
// on ne la mets pas en interface "accessible", dans laquelle il n'y pas de sous bloc ... un comble ! // on ne la mets pas en interface "accessible", dans laquelle il n'y pas de sous bloc ... un comble !
. ($GLOBALS['spip_display']==4?"":"<a href=\"#\" onclick=\"jQuery(this).parent().toggleother('$cible');return false;\" class='titremancre'></a>") . ($GLOBALS['spip_display']==4?"":"<a class='titremancre'></a>")
. "$texte</div>" . "$texte</div>"
. http_script( ($deplie==='incertain') . http_script( ($deplie==='incertain')
? "jQuery(document).ready(function(){if (jQuery('$cible').is(':visible')) $('#$bouton_id').addClass('deplie').removeClass('replie');});" ? "jQuery(document).ready(function(){if (jQuery('$cible').is(':visible')) $('#$bouton_id').addClass('deplie').removeClass('replie');});"
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter