[(#REM) ACS (Plugin Spip) http://acs.geomaticien.org Copyright Daniel FAIVRE, 2007-2022 Copyleft: licence GPL - Cf. LICENCES.txt Draw widget select controls on start and refresh (they works even without javascript in a soft-downgrade mode) ][(#INCLURE{fond=javascript/acs_jquery-ui.min.js})] function acs_init() { jQuery(".ctlWidget").each( function(i,cw) { var selectid = "#select_" + cw.id; jQuery(selectid).css("display", "none"); if (jQuery(selectid).val() != '') { var dragid = "#widget_" + jQuery(selectid).val(); jQuery("#widgets").append(jQuery(this).find(".widget")); jQuery(this).find(".widget").remove(); jQuery(this).append(jQuery(dragid)); } } ); [(#REM) acsPanels - min-width is set to the with of the panel on ] jQuery("a.acsTab").click(function(e) { e.preventDefault(); if (this.hasAttribute('data-acs-panel') && this.hasAttribute('data-acs-ajax') && !this.hasAttribute('data-acs-ajax-loaded')) { aSqueezeNode(this.getAttribute('data-acs-ajax'), jQuery('#' + this.getAttribute('data-acs-panel')), this.setAttribute('data-acs-ajax-loaded', true)); } let p = jQuery(this).data("acs-panel"); let jpparent = jQuery("#" + p).parent(); jpparent.children(".acsPanel").css('min-width', jpparent.width() + 'px'); jpparent.children(".acsPanel").removeClass("acsPanelOn"); jpparent.children("#" + p).addClass("acsPanelOn"); jQuery(this).parent().children("a.acsTab").removeClass("acsTabOn"); jQuery(this).addClass("acsTabOn"); }); [(#REM) Add widgets box filter on mouse enter into filter buttons ] jQuery(".widgets_filter_bar").show(); jQuery(".acs_box_composants a.grclbl:first").addClass("survol"); jQuery(".acs_box_composants a.grclbl").each(function(i,btn) { var g = jQuery(btn).attr("name"); g = g.replace(/gr_(.*)/, "$1"); jQuery(btn).mouseenter(function(e) { jQuery(".acs_box_composants a.grclbl").removeClass("survol"); jQuery(btn).addClass("survol"); jQuery(".acs_box_composants ul.grclist").not(".gr_"+g).hide(); if (g=="all") jQuery(".acs_box_composants ul.grclist").show(); else jQuery(".acs_box_composants ul.gr_"+g).show(); }); }); [(#REM) Drag/drop widgets pour JQuery ] var dragid; var dropid; jQuery(".widget:not(.widget_unused)").draggable({ helper: "clone", delay: 100, distance: 10, ghosting: true, opacity: 0.8, start: function(event, ui) { // store dragid dragid = event.target.id; if (jQuery("#" + dragid).parent().is(".ctlWidget")) jQuery(this).draggable("option", "revert", false); else jQuery(this).draggable("option", "revert", "invalid"); ui.helper.find('*').addClass("widget_move"); }, stop: function() { // reset select on stop dragging from its ctlWidget if (jQuery("#" + dragid).parent().is(".ctlWidget")) { var dropid = "#select_" + jQuery("#" + dragid).parent().attr("id"); jQuery("#widgets").append(jQuery("#" + dragid)); jQuery(dropid).val(""); } } }); jQuery(".ctlWidget").droppable({ accept: ".widget", tolerance: "pointer", activeClass: "ctlWidget_droppable_active", hoverClass: "ctlWidget_droppable_over", drop: function(event) { dropid = "#select_" + event.target.id; var oldval = jQuery(dropid).val(); var val_dragid = dragid.substring(7); jQuery(dropid).val(val_dragid); if (jQuery(dropid).val() == val_dragid) { if (jQuery("#" + dragid).parent().is(".ctlWidget")) { var olddropid = "#select_" + jQuery("#" + dragid).parent().attr("id"); jQuery(olddropid).val(""); } jQuery("#widgets").append(jQuery(this).find(".widget")); jQuery(this).find(".widget").remove(); jQuery(this).append(jQuery("#" + dragid)); } dragid = undefined; dropid = undefined; }, fit: true }); jQuery(document).tooltip({ items: '.acsLabel', track: true, content: function() { var elt = jQuery(this); elt.css('cursor', 'help'); return elt.attr('title'); } }); jQuery(".acsLabel").off('click').on('click', function(e) { var target = jQuery(e.target); var fort = target.attr('for'); if (fort) { jQuery("[name='" + fort + "']").select(); document.execCommand('copy'); } }); [(#REM) chargement en suggestion des valeurs d'une variable de contrôle déjà définies pour d'autres instances de ce composant ] jQuery('.ctrl input[type="text"]').off('click').on('click', function(e) { e.stopPropagation(); var target = jQuery(e.target); var id = target.attr('id'); var w = target.innerWidth(); var pos = target.offset(); var avid = 'av_' + id; if (jQuery('#' + avid)[0]) { jQuery('#' + avid).slideToggle(200); } else { target.after('
'); jQuery('#' + avid).offset({top: pos.top + target.outerHeight(), left: pos.left + (target.outerWidth() - target.innerWidth()) / 2}).width(w); aSqueezeNode('[(#URL_ECRIRE{acs_var_vals,var=' + id + '}|html_entity_decode)]', jQuery('#' + avid)); } jQuery('.acs_var_vals:not(#' + avid + ')').hide(); }); jQuery('html,.edit_composant').click(function() { jQuery('.acs_var_vals').hide(); }); [(#REM) ctlColor change ] jQuery('.ctrl input[type="color"].acsColorCtl').off('change').on('change', function(e) { e.stopPropagation(); e.target.previousElementSibling.value = e.target.value; }); [(#REM) Donne leur fonction onclick aux plieurs (générique) ] jQuery(".acs_plieur:not([data-acs-plieur-init='done'])").each( function(i, plieur) { var cap = plieur.name.substr(7); [(#REM) classe à plier ] $(plieur).off('click').on('click', function(e) { e.preventDefault(); $(plieur).toggleClass('plon'); $("." + cap).slideToggle("slow"); return false; }).attr('data-acs-plieur-init', 'done'); } ); } function aSqueezeNode(url, target, f, event) { jQuery(target).animeajax(); if (typeof f === 'function') { callback = function(res,status) { f.apply(this,[res,status]); } } else { callback = function(res,status) {} } ret = jQuery.ajax({ 'url': url, 'complete': function(r,s) { if (r.aborted) return; if (s=='error') return jQuery(target).html('HTTP Error'); jQuery(target).html(r.responseText).each(callback, [r.responseText, s]); jQuery(target).endLoading(); } }); return ret; }