diff --git a/VERSIONS_HOTLINE/64607 b/VERSIONS_HOTLINE/64607 new file mode 100644 index 0000000000000000000000000000000000000000..a48c41783251ca5c52f57482c2e84a1c9600d160 --- /dev/null +++ b/VERSIONS_HOTLINE/64607 @@ -0,0 +1,2 @@ + - ticket #64607 : Administration : correction du glisser déposer du composant de sélection des articles. + \ No newline at end of file diff --git a/public/admin/js/treeselect/treeselect.js b/public/admin/js/treeselect/treeselect.js index 1927395e9f12a8f612b83673c9fad67524ce5ed6..2776030d80db042c2a3b8a8ee0b5d2984ab8ecae 100644 --- a/public/admin/js/treeselect/treeselect.js +++ b/public/admin/js/treeselect/treeselect.js @@ -1,10 +1,10 @@ (function($) { - + $.widget("ui.treeselect", { options: { datas: [] }, - + disableMultipleSelection: function () { this.multiple_selection=false; @@ -14,29 +14,29 @@ _create: function(){ var self=this; - this.multiple_selection = true; + this.multiple_selection = true; this.element.addClass('ui-widget ui-helper-reset'); this.container = $("<div class='ui-treeselect ui-widget-content ui-corner-all'></div>"). - appendTo(this.element); + appendTo(this.element); - this.searchInput = - $("<div class='ui-treeselect-search'>"+ - "<span>Rechercher: </span><input type='textfield' size='50'></input>"+ - "</div>"). - appendTo(this.container). - find('input').keyup(function(event){ - self._onSearchInputChange($(this).val()); - }).end(); + this.searchInput = + $("<div class='ui-treeselect-search'>"+ + "<span>Rechercher: </span><input type='textfield' size='50'></input>"+ + "</div>"). + appendTo(this.container). + find('input').keyup(function(event){ + self._onSearchInputChange($(this).val()); + }).end(); this.itemsTree = ($("<div class='ui-treeselect-items-tree' />")). - appendTo(this.container); + appendTo(this.container); - this.selectedItems = - $("<div class='ui-treeselect-selected-items'>"+ - "<div class='ui-treeselect-selected-items-inner ui-widget-content ui-corner-all'>"+ - "<ul></ul></div></div>"). - appendTo(this.container). - find("ul"); + this.selectedItems = + $("<div class='ui-treeselect-selected-items'>"+ + "<div class='ui-treeselect-selected-items-inner ui-widget-content ui-corner-all'>"+ + "<ul></ul></div></div>"). + appendTo(this.container). + find("ul"); this._createDataTree(); this._initialize(); @@ -71,32 +71,32 @@ var self = this; $.each(items, function(index, item) { - var item_li=self.mkli(item, parent, 'item'). - children('a'); + var item_li=self.mkli(item, parent, 'item'). + children('a'); }); - + }, mkli: function(catOrItem, parent, type){ var self = this; return $("<li class='ui-treeselect-"+type+"'>"+ - this._addCheckbox(catOrItem)+ - "<a class='ui-state-default' href='#' title='" + catOrItem.label.replace("'", "'") + "'>" + - this._addIco(catOrItem)+ - catOrItem.label+ - "</a>" + - "</li>"). - data("label", catOrItem.label). - data("type", type). - data("elid", catOrItem.id). - appendTo(parent). - children('a').hover( - function (event) { - self._onMouseEntersLI($(event.target).parent()); - }, - function (event) { - self._onMouseExitsLI($(event.target).parent()); - }).end(); + this._addCheckbox(catOrItem)+ + "<a class='ui-state-default' href='#' title='" + catOrItem.label.replace("'", "'") + "'>" + + this._addIco(catOrItem)+ + catOrItem.label+ + "</a>" + + "</li>"). + data("label", catOrItem.label). + data("type", type). + data("elid", catOrItem.id). + appendTo(parent). + children('a').hover( + function (event) { + self._onMouseEntersLI($(event.target).parent()); + }, + function (event) { + self._onMouseExitsLI($(event.target).parent()); + }).end(); }, @@ -107,22 +107,22 @@ var self = this; $.each(categories, function(index, cat) { - var cat_li = self.mkli(cat, parent, 'category'); - - if ((cat.categories.length + cat.items.length) == 0) { - cat_li.addClass('ui-treeselect-empty-category'); - return; - } - - - var cat_ul = $("<ul></ul>").appendTo(cat_li); - self._addCategoriesTo(cat.categories, cat_ul); - - - $.each(cat.items, function(index, item){ - self.mkli(item, cat_ul, 'item'). - children('a'); - }); + var cat_li = self.mkli(cat, parent, 'category'); + + if ((cat.categories.length + cat.items.length) == 0) { + cat_li.addClass('ui-treeselect-empty-category'); + return; + } + + + var cat_ul = $("<ul></ul>").appendTo(cat_li); + self._addCategoriesTo(cat.categories, cat_ul); + + + $.each(cat.items, function(index, item){ + self.mkli(item, cat_ul, 'item'). + children('a'); + }); }); }, @@ -131,32 +131,32 @@ var anchor = li.children('a'); if(anchor.size()) - anchor.data('on_mouse_enter_classes', anchor[0].className); + anchor.data('on_mouse_enter_classes', anchor[0].className); anchor. - addClass("ui-state-hover"). - removeClass("ui-state-default"). - removeClass("ui-state-highlight"). - removeClass("ui-state-active"); + addClass("ui-state-hover"). + removeClass("ui-state-default"). + removeClass("ui-state-highlight"). + removeClass("ui-state-active"); if (li.parents('.ui-treeselect-selected-items').length == 0) return; - var hint = - $('<div class="hint ui-widget ui-corner-all ui-state-active" style="display:none"/>'). - hide(). - appendTo(li); + var hint = + $('<div class="hint ui-widget ui-corner-all ui-state-active" style="display:none"/>'). + hide(). + appendTo(li); hint.delay(1000).fadeIn('fast'); - + var sourceLI = this._findConnectedIn(li, this.itemsTree); this._getAnchorTreeFor(sourceLI). - slice(0, -1). - each(function(index, element){ - hint = $("<li>"+$(element).text()+"</li>"). - appendTo($("<ul></ul>")). - appendTo(hint); - }); + slice(0, -1). + each(function(index, element){ + hint = $("<li>"+$(element).text()+"</li>"). + appendTo($("<ul></ul>")). + appendTo(hint); + }); }, @@ -164,9 +164,9 @@ var anchor = li.children('a'); anchor. - addClass(anchor.data('on_mouse_enter_classes')). - removeData('on_mouse_enter_classes'). - removeClass("ui-state-hover"); + addClass(anchor.data('on_mouse_enter_classes')). + removeData('on_mouse_enter_classes'). + removeClass("ui-state-hover"); this.selectedItems.find('.hint').remove(); @@ -176,86 +176,87 @@ _createDataTree: function(){ var self = this; $.each(this.options.datas, function(index, cat) { - cat = self._initDataOptions(cat); - - $("<h4><a href='#'>"+cat.label+"</a></h4>"). - appendTo(self.itemsTree); - - var ul = $("<div style='padding:0px' class='cat_"+cat.id+"'></div>"). - appendTo(self.itemsTree). - append('<ul></ul>'). - children()[0]; - - self._addCategoriesTo(cat.categories, ul); - self._addItemsTo(cat.items,ul); + cat = self._initDataOptions(cat); + + $("<h4><a href='#'>"+cat.label+"</a></h4>"). + appendTo(self.itemsTree); + + var ul = $("<div style='padding:0px' class='cat_"+cat.id+"'></div>"). + appendTo(self.itemsTree). + append('<ul></ul>'). + children()[0]; + + self._addCategoriesTo(cat.categories, ul); + self._addItemsTo(cat.items,ul); }); }, - + _initDataOptions: function(categorieOrItem){ var self = this; if(undefined==categorieOrItem.options) - categorieOrItem.options = []; - + categorieOrItem.options = []; + $.each(categorieOrItem.categories, function(index,cat){ - self._initDataOptions(cat); + self._initDataOptions(cat); }); $.each(categorieOrItem.items, function(index,item){ - if(undefined==item.options) - item.options = []; + if(undefined==item.options) + item.options = []; }); - + return categorieOrItem; }, - _initAccordion: function(){ - this.itemsTree.accordion({collapsible: true, - beforeActivate: function(event, ui) { - if (ui.newHeader[0]) { - var currHeader = ui.newHeader; - var currContent = currHeader.next('.ui-accordion-content'); - } else { - var currHeader = ui.oldHeader; - var currContent = currHeader.next('.ui-accordion-content'); - } - var isPanelSelected = currHeader.attr('aria-selected') == 'true'; - var isPanelHighlight = currHeader.hasClass('ui-state-highlight'); - currHeader - .toggleClass('ui-corner-all', isPanelSelected) - .toggleClass('accordion-header-active ui-state-active ui-corner-top', !isPanelSelected) - .attr('aria-selected', ((!isPanelSelected).toString())); + _initAccordion: function(){ + this.itemsTree.accordion({collapsible: true, + beforeActivate: function(event, ui) { + if (ui.newHeader[0]) { + var currHeader= ui.newHeader; + var currContent = currHeader.next('.ui-accordion-content'); + } else { + var currHeader= ui.oldHeader; + var currContent = currHeader.next('.ui-accordion-content'); + } + var isPanelSelected = currHeader.attr('aria-selected') == 'true'; + var isPanelHighlight = currHeader.hasClass('ui-state-highlight'); + currHeader + .toggleClass('ui-corner-all', isPanelSelected) + .toggleClass('accordion-header-active ui-state-active ui-corner-top', !isPanelSelected) + .attr('aria-selected', ((!isPanelSelected).toString())); - currContent.toggleClass('accordion-content-active', !isPanelSelected) + currContent.toggleClass('accordion-content-active', !isPanelSelected) - if(isPanelSelected && isPanelHighlight) { - self._hideAll(); - return false; - } + if(isPanelSelected && isPanelHighlight) { + self._hideAll(); + return false; + } - if (isPanelSelected) { - currContent.slideUp(); - return false; - } - - currContent.slideDown(); - return false; - }} - ); + if (isPanelSelected) { + currContent.slideUp(); + return false; + } + + currContent.slideDown(); + return false; + }} + ); }, _initSortable: function(){ var self=this; this.selectedItems. - addClass("sortable"). - sortable({ - cursor:'crosshair', - opacity: 0.8, - start: function(event, ui) {$(this).find('.hint').remove();} - }); + addClass("sortable"). + sortable({ + cursor:'crosshair', + opacity: 0.8, + start: function(event, ui) {$(this).find('.hint').remove();}, + stop: function(event, ui) {$(this).closest('form').find('input').first().change();} + }); }, @@ -263,42 +264,42 @@ var self=this; this.itemsTree.find('li').each( - function(index, li){ - $(li).data('sid', index);}); - + function(index, li){ + $(li).data('sid', index);}); + this.itemsTree.change( - function(event){ - self._onSelectionChange($(event.target).parent()); - event.stopPropagation();}); + function(event){ + self._onSelectionChange($(event.target).parent()); + event.stopPropagation();}); this.itemsTree.find('li>ul').css("display","none"); this.itemsTree.click( - function(event){ - var $target = $(event.target); - if ($target.is("a>*")) $target = $target.parent(); - if ($target.is("a")) { - event.stopPropagation(); - event.preventDefault(); - $target.closest('li').find('li').show(); - $target.siblings('ul').find('ul').hide(); - $target.siblings('ul').toggle('fast'); - }}) + function(event){ + var $target = $(event.target); + if ($target.is("a>*")) $target = $target.parent(); + if ($target.is("a")) { + event.stopPropagation(); + event.preventDefault(); + $target.closest('li').find('li').show(); + $target.siblings('ul').find('ul').hide(); + $target.siblings('ul').toggle('fast'); + }}) }, _findConnectedIn: function(li, items) { var sid = li.data('sid'); - return items.find('li').filter(function(index) { - return $(this).data('sid') == sid; + return items.find('li').filter(function(index) { + return $(this).data('sid') == sid; }); }, _deselect: function(li) { this._findConnectedIn(li, this.selectedItems). - hide('fast', function(){ - $(this).remove()}); - + hide('fast', function(){ + $(this).remove()}); + li.children('input').removeAttr('checked'); li.find("li input").removeAttr('disabled'); li.children('a').removeClass('ui-state-active'); @@ -312,7 +313,7 @@ if (parent.length == 0) return; if (parent.find('li>input:checked').length==0) { - this._setInactive(parent); + this._setInactive(parent); } }, @@ -320,10 +321,10 @@ _deselectAll: function() { var self = this; this.itemsTree.find('li.ui-treeselect-category').each( function() { - self._deselect($(this)); + self._deselect($(this)); }); this.itemsTree.find('li.ui-treeselect-item').each( function() { - self._deselect($(this)); + self._deselect($(this)); }); }, @@ -332,49 +333,49 @@ var self = this; if (!this.multiple_selection) - this._deselectAll(); + this._deselectAll(); li.children('input').attr('checked', 'checked'); - + var selectedLI = $("<li>"+ - "<a href='#'>"+ - li.find('a').html()+ - "</a></li>"). - appendTo(self.selectedItems). - data(li.data()). - children('a'). - addClass('ui-state-default'). - addClass(li[0].className). - hover( - function (event) { - self._onMouseEntersLI($(event.target).parent()); - }, - function (event) { - self._onMouseExitsLI($(event.target).parent()); - } - ).end(). - click( - function(event){ - event.preventDefault(); - if ($(event.target).is('a.ui-state-highlight')) { - $(event.target).removeClass("ui-state-highlight"); - $(event.target).removeClass("ui-state-active"); - $(event.target).addClass("ui-state-default"); - return self._hideAll(); - } - if ($(event.target).is('a')) - self._highlightSelected($(event.target).parent()); - }); + "<a href='#'>"+ + li.find('a').html()+ + "</a></li>"). + appendTo(self.selectedItems). + data(li.data()). + children('a'). + addClass('ui-state-default'). + addClass(li[0].className). + hover( + function (event) { + self._onMouseEntersLI($(event.target).parent()); + }, + function (event) { + self._onMouseExitsLI($(event.target).parent()); + } + ).end(). + click( + function(event){ + event.preventDefault(); + if ($(event.target).is('a.ui-state-highlight')) { + $(event.target).removeClass("ui-state-highlight"); + $(event.target).removeClass("ui-state-active"); + $(event.target).addClass("ui-state-default"); + return self._hideAll(); + } + if ($(event.target).is('a')) + self._highlightSelected($(event.target).parent()); + }); $("<div class='remove_button'/>"). - appendTo(selectedLI). - click(function(event){ - self._deselect( - self._findConnectedIn($(event.target).parent(), - self.itemsTree)); - self.itemsTree.closest('form').find('input').first().change(); - }); - + appendTo(selectedLI). + click(function(event){ + self._deselect( + self._findConnectedIn($(event.target).parent(), + self.itemsTree)); + self.itemsTree.closest('form').find('input').first().change(); + }); + li.parents('li').andSelf().children('a').addClass('ui-state-active'); this._disableChildren(li); @@ -383,16 +384,16 @@ _disableChildren: function(li) { var self = this; - + if(!this.multiple_selection) - return false; + return false; - li.find("li>input").each( - function(index, checkbox) { - self._deselect($(checkbox).parent()); - $(checkbox). - attr('disabled', true). - removeAttr('checked'); }); + li.find("li>input").each( + function(index, checkbox) { + self._deselect($(checkbox).parent()); + $(checkbox). + attr('disabled', true). + removeAttr('checked'); }); }, @@ -400,20 +401,20 @@ this.itemsTree.closest('form').find('input').first().change(); this._turnHighlightOff(); if (li.children('input').is(':checked')) { - this._select(li); + this._select(li); } else { - this._deselect(li); - this._setInactive(li); + this._deselect(li); + this._setInactive(li); } - + this.selectedItems.sortable('refresh'); }, _turnHighlightOff: function() { this.container.find('.ui-state-highlight'). - removeClass("ui-state-highlight"). - filter('li a, h3'). - addClass("ui-state-default"); + removeClass("ui-state-highlight"). + filter('li a, h3'). + addClass("ui-state-default"); }, @@ -436,15 +437,15 @@ lis.parents("ul").show(); this.itemsTree.find('ul li').hide(); this.itemsTree.find('> div').hide(); - + var self = this; lis.each(function(index, li) { - self._getAnchorTreeFor($(li)). - addClass("ui-state-highlight"). - removeClass("ui-state-default"); - $(li).show(); - $(li).parents('li').show(); - $(li).closest('div').show(); + self._getAnchorTreeFor($(li)). + addClass("ui-state-highlight"). + removeClass("ui-state-default"); + $(li).show(); + $(li).parents('li').show(); + $(li).closest('div').show(); }); }, @@ -462,8 +463,8 @@ _onSearchInputChange: function(searchText) { if (searchText=="") { - this._hideAll(); - return; + this._hideAll(); + return; } accentsTidy = function(s){ @@ -473,19 +474,19 @@ r = r.replace(new RegExp("ç", 'g'),"c"); r = r.replace(new RegExp("[èéêë]", 'g'),"e"); r = r.replace(new RegExp("[ìÃîï]", 'g'),"i"); - r = r.replace(new RegExp("ñ", 'g'),"n"); + r = r.replace(new RegExp("ñ", 'g'),"n"); r = r.replace(new RegExp("[òóôõö]", 'g'),"o"); r = r.replace(new RegExp("Å“", 'g'),"oe"); r = r.replace(new RegExp("[ùúûü]", 'g'),"u"); r = r.replace(new RegExp("[ýÿ]", 'g'),"y"); return r; }; - + searchText = accentsTidy(searchText); var re = new RegExp('\\b' + searchText, 'gi'); var matches = this.itemsTree.find('li, h3').filter(function() { - return re.test(accentsTidy($(this).text())); + return re.test(accentsTidy($(this).text())); }); this._highlightItems(matches); matches.parents(".ui-accordion-content").show(); @@ -494,12 +495,12 @@ _selectByIdAndType: function(ids, type) { var self = this; - jQuery.each(ids, function(index, id) { - self.itemsTree.find('li').each(function(index, li) { - var listitem = $(li); - if ((listitem.data('elid') == id) && (listitem.data('type') == type)) - self._select($(li)); - }); + jQuery.each(ids, function(index, id) { + self.itemsTree.find('li').each(function(index, li) { + var listitem = $(li); + if ((listitem.data('elid') == id) && (listitem.data('type') == type)) + self._select($(li)); + }); }); }, @@ -507,10 +508,10 @@ _getSelectedDataByType: function(type) { var datas = []; this.selectedItems.find('li').each(function(index,li){ - if ($(li).data('type') == type) { - datas.push({"id": $(li).data('elid'), - "label": $(li).data('label')}); - } + if ($(li).data('type') == type) { + datas.push({"id": $(li).data('elid'), + "label": $(li).data('label')}); + } }); return datas; }, @@ -539,20 +540,20 @@ readSelection: function(callback) { callback( - this._getSelectedDataByType('item'), - this._getSelectedDataByType('category')); + this._getSelectedDataByType('item'), + this._getSelectedDataByType('category')); }, toggleVisibility: function(visible) { if (visible) { - var self = this; - this.element.show('fast', - function() { - self.itemsTree.children('div').height('auto'); - }); + var self = this; + this.element.show('fast', + function() { + self.itemsTree.children('div').height('auto'); + }); } else { - this.element.hide('fast'); + this.element.hide('fast'); } } })})(jQuery);