From: Jean-Philippe Lang Date: Sat, 10 Jan 2015 21:22:10 +0000 (+0000) Subject: Merged r13615 (#18777). X-Git-Tag: 2.6.1~4 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c408c719976e302a17a53b26858fd8636462a61b;p=redmine.git Merged r13615 (#18777). git-svn-id: http://svn.redmine.org/redmine/branches/2.6-stable@13869 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/public/javascripts/select_list_move.js b/public/javascripts/select_list_move.js index a5687981f..d542ac624 100644 --- a/public/javascripts/select_list_move.js +++ b/public/javascripts/select_list_move.js @@ -1,105 +1,27 @@ -var NS4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) < 5); - -function addOption(theSel, theText, theValue) { - var newOpt = new Option(theText, theValue); - var selLength = theSel.length; - theSel.options[selLength] = newOpt; -} - -function swapOptions(theSel, index1, index2) { - var text, value, selected; - text = theSel.options[index1].text; - value = theSel.options[index1].value; - selected = theSel.options[index1].selected; - theSel.options[index1].text = theSel.options[index2].text; - theSel.options[index1].value = theSel.options[index2].value; - theSel.options[index1].selected = theSel.options[index2].selected; - theSel.options[index2].text = text; - theSel.options[index2].value = value; - theSel.options[index2].selected = selected; -} - -function deleteOption(theSel, theIndex) { - var selLength = theSel.length; - if (selLength > 0) { - theSel.options[theIndex] = null; - } -} - function moveOptions(theSelFrom, theSelTo) { - var selLength = theSelFrom.length; - var selectedText = new Array(); - var selectedValues = new Array(); - var selectedCount = 0; - var i; - for (i = selLength - 1; i >= 0; i--) { - if (theSelFrom.options[i].selected) { - selectedText[selectedCount] = theSelFrom.options[i].text; - selectedValues[selectedCount] = theSelFrom.options[i].value; - deleteOption(theSelFrom, i); - selectedCount++; - } - } - for (i = selectedCount - 1; i >= 0; i--) { - addOption(theSelTo, selectedText[i], selectedValues[i]); - } - if (NS4) history.go(0); + $(theSelFrom).find('option:selected').detach().prop("selected", false).appendTo($(theSelTo)); } function moveOptionUp(theSel) { - var indexTop = 0; - for(var s=0; s indexTop) { - swapOptions(theSel, s-1, s); - } - indexTop++; - } - } + $(theSel).find('option:selected').each(function(){ + $(this).prev(':not(:selected)').detach().insertAfter($(this)); + }); } function moveOptionTop(theSel) { - var indexTop = 0; - for(var s=0; s indexTop) { - for (var i=s; i>indexTop; i--) { - swapOptions(theSel, i-1, i); - } - } - indexTop++; - } - } + $(theSel).find('option:selected').detach().prependTo($(theSel)); } function moveOptionDown(theSel) { - var indexBottom = theSel.length - 1; - for(var s=indexBottom; s>=0; s--) { - if (theSel.options[s].selected) { - if (s < indexBottom) { - swapOptions(theSel, s+1, s); - } - indexBottom--; - } - } + $($(theSel).find('option:selected').get().reverse()).each(function(){ + $(this).next(':not(:selected)').detach().insertBefore($(this)); + }); } function moveOptionBottom(theSel) { - var indexBottom = theSel.length - 1; - for(var s=indexBottom; s>=0; s--) { - if (theSel.options[s].selected) { - if (s < indexBottom) { - for (i=s; i