195 lines
4.2 KiB
JavaScript
195 lines
4.2 KiB
JavaScript
|
|
||
|
// Un petit plugin jQuery pour ajouter une classe au survol d'un element
|
||
|
$.fn.hoverClass = function(c) {
|
||
|
return this.each(function(){
|
||
|
$(this).hover(
|
||
|
function() { $(this).addClass(c); },
|
||
|
function() { $(this).removeClass(c); }
|
||
|
);
|
||
|
});
|
||
|
};
|
||
|
|
||
|
|
||
|
var accepter_change_statut = false;
|
||
|
/**
|
||
|
* Utilisee dans inc/puce_statut pour les puces au survol
|
||
|
* @param int id
|
||
|
* @param strong type
|
||
|
* @param int decal
|
||
|
* @param string puce
|
||
|
* @param string script
|
||
|
*/
|
||
|
function selec_statut(id, type, decal, puce, script) {
|
||
|
|
||
|
node = $('.imgstatut'+type+id);
|
||
|
|
||
|
if (!accepter_change_statut)
|
||
|
accepter_change_statut = confirm(confirm_changer_statut);
|
||
|
|
||
|
if (!accepter_change_statut || !node.length) return;
|
||
|
|
||
|
$('.statutdecal'+type+id)
|
||
|
.css('margin-left', decal+'px')
|
||
|
.removeClass('on');
|
||
|
|
||
|
$.get(script, function(c) {
|
||
|
if (!c)
|
||
|
node.attr('src',puce);
|
||
|
else {
|
||
|
r = window.open();
|
||
|
r.document.write(c);
|
||
|
r.document.close();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Utilisee dans inc/puce_statut pour les puces au survol
|
||
|
* @param objet node
|
||
|
* @param string nom
|
||
|
* @param string type
|
||
|
* @param int id
|
||
|
* @param string action
|
||
|
*/
|
||
|
function prepare_selec_statut(node, nom, type, id, action)
|
||
|
{
|
||
|
$(node)
|
||
|
.hoverClass('on')
|
||
|
.addClass('on')
|
||
|
.load(action + '&type='+type+'&id='+id);
|
||
|
}
|
||
|
|
||
|
|
||
|
// deplier un ou plusieurs blocs
|
||
|
jQuery.fn.showother = function(cible) {
|
||
|
var me = this;
|
||
|
if (me.is('.replie')) {
|
||
|
me.addClass('deplie').removeClass('replie');
|
||
|
jQuery(cible)
|
||
|
.slideDown('fast',
|
||
|
function(){
|
||
|
jQuery(me)
|
||
|
.addClass('blocdeplie')
|
||
|
.removeClass('blocreplie')
|
||
|
.removeClass('togglewait');
|
||
|
}
|
||
|
).trigger('deplie');
|
||
|
}
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
// replier un ou plusieurs blocs
|
||
|
jQuery.fn.hideother = function(cible) {
|
||
|
var me = this;
|
||
|
if (!me.is('.replie')){
|
||
|
me.addClass('replie').removeClass('deplie');
|
||
|
jQuery(cible)
|
||
|
.slideUp('fast',
|
||
|
function(){
|
||
|
jQuery(me)
|
||
|
.addClass('blocreplie')
|
||
|
.removeClass('blocdeplie')
|
||
|
.removeClass('togglewait');
|
||
|
}
|
||
|
).trigger('replie');
|
||
|
}
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
// pour le bouton qui deplie/replie un ou plusieurs blocs
|
||
|
jQuery.fn.toggleother = function(cible) {
|
||
|
if (this.is('.deplie'))
|
||
|
return this.hideother(cible);
|
||
|
else
|
||
|
return this.showother(cible);
|
||
|
}
|
||
|
|
||
|
// deplier/replier en hover
|
||
|
// on le fait subtilement : on attend 400ms avant de deplier, periode
|
||
|
// durant laquelle, si la souris sort du controle, on annule le depliement
|
||
|
// le repliement ne fonctionne qu'au clic
|
||
|
// Cette fonction est appelee a chaque hover d'un bloc depliable
|
||
|
// la premiere fois, elle initialise le fonctionnement du bloc ; ensuite
|
||
|
// elle ne fait plus rien
|
||
|
jQuery.fn.depliant = function(cible) {
|
||
|
// premier passage
|
||
|
if (!this.is('.depliant')) {
|
||
|
var time = 400;
|
||
|
|
||
|
var me = this;
|
||
|
this
|
||
|
.addClass('depliant');
|
||
|
|
||
|
// effectuer le premier hover
|
||
|
if (!me.is('.deplie')) {
|
||
|
me.addClass('hover')
|
||
|
.addClass('togglewait');
|
||
|
var t = setTimeout(function(){
|
||
|
me.toggleother(cible);
|
||
|
t = null;
|
||
|
}, time);
|
||
|
}
|
||
|
|
||
|
me
|
||
|
// programmer les futurs hover
|
||
|
.hover(function(e){
|
||
|
me
|
||
|
.addClass('hover');
|
||
|
if (!me.is('.deplie')) {
|
||
|
me.addClass('togglewait');
|
||
|
if (t) { clearTimeout(t); t = null; }
|
||
|
t = setTimeout(function(){
|
||
|
me.toggleother(cible);
|
||
|
t = null;
|
||
|
}, time);
|
||
|
}
|
||
|
}
|
||
|
, function(e){
|
||
|
if (t) { clearTimeout(t); t = null; }
|
||
|
me
|
||
|
.removeClass('hover');
|
||
|
})
|
||
|
|
||
|
// gerer le triangle clicable
|
||
|
/*.find("a.titremancre")
|
||
|
.click(function(){
|
||
|
if (me.is('.togglewait') || t) return false;
|
||
|
me
|
||
|
.toggleother(cible);
|
||
|
return false;
|
||
|
})*/
|
||
|
.end();
|
||
|
|
||
|
}
|
||
|
return this;
|
||
|
}
|
||
|
jQuery.fn.depliant_clicancre = function(cible) {
|
||
|
var me = this.parent();
|
||
|
// gerer le triangle clicable
|
||
|
if (me.is('.togglewait')) return false;
|
||
|
me.toggleother(cible);
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Recharger les blocs d'une page exec
|
||
|
* et changer la class du body si necessaire
|
||
|
* Par defaut les blocs recharges sont #navigation,#extra
|
||
|
* mais il suffit de passer des valeurs differentes en second argument
|
||
|
*
|
||
|
* @param exec
|
||
|
* @param blocs
|
||
|
*/
|
||
|
function reloadExecPage(exec, blocs){
|
||
|
if (window.jQuery) {
|
||
|
jQuery(function(){
|
||
|
if (!blocs)
|
||
|
blocs="#navigation,#extra";
|
||
|
jQuery(blocs).find('>div').ajaxReload({args:{exec:exec}});
|
||
|
if (exec.match(/_edit$/))
|
||
|
jQuery('body').addClass('edition');
|
||
|
else
|
||
|
jQuery('body').removeClass('edition');
|
||
|
})
|
||
|
}
|
||
|
}
|