diff --git a/core/src/main/resources/hudson/PluginManager/_table.js b/core/src/main/resources/hudson/PluginManager/_table.js index 7f666624bafd1c182b0186d68c3b089e604b50ef..d900e0beda21a791971271cd03639661ace77e18 100644 --- a/core/src/main/resources/hudson/PluginManager/_table.js +++ b/core/src/main/resources/hudson/PluginManager/_table.js @@ -20,8 +20,7 @@ function showhideCategory(col) { row.style.display = newDisplay; } -Behaviour.register({ - "#filter-box": function(e) { +Behaviour.specify("#filter-box", '_table', 0, function(e) { function applyFilter() { var filter = e.value.toLowerCase(); ["TR.plugin","TR.plugin-category"].each(function(clz) { @@ -36,5 +35,4 @@ Behaviour.register({ } e.onkeyup = applyFilter; - } -}); + }); diff --git a/core/src/main/resources/hudson/console/ExpandableDetailsNote/script.js b/core/src/main/resources/hudson/console/ExpandableDetailsNote/script.js index 569707427deee1bf9f477a2f483454504a5c0aaa..39b041f4d9dbb8f2fae849ead185ddf9e0fbebdf 100644 --- a/core/src/main/resources/hudson/console/ExpandableDetailsNote/script.js +++ b/core/src/main/resources/hudson/console/ExpandableDetailsNote/script.js @@ -1,11 +1,8 @@ (function() { - Behaviour.register({ - - "INPUT.reveal-expandable-detail" : function(e) { + Behaviour.specify("INPUT.reveal-expandable-detail", 'ExpandableDetailsNote', 0, function(e) { var detail = e.nextSibling; makeButton(e,function() { detail.style.display = (detail.style.display=="block")?"none":"block"; }); - } }); }()); diff --git a/core/src/main/resources/hudson/security/GlobalMatrixAuthorizationStrategy/config.jelly b/core/src/main/resources/hudson/security/GlobalMatrixAuthorizationStrategy/config.jelly index f5e9fae5e198358e77bbd93c391ef33ed947fdc6..84f286f0a8a9aacd88f44342f7d77687df8c8500 100644 --- a/core/src/main/resources/hudson/security/GlobalMatrixAuthorizationStrategy/config.jelly +++ b/core/src/main/resources/hudson/security/GlobalMatrixAuthorizationStrategy/config.jelly @@ -144,16 +144,15 @@ THE SOFTWARE. }); })(); - Behaviour.register({ - "#${strategyid} TD.stop A.remove" : function(e) { + Behaviour.specify("#${strategyid} TD.stop A.remove", 'GlobalMatrixAuthorizationStrategy', 0, function(e) { e.onclick = function() { var tr = findAncestor(this,"TR"); tr.parentNode.removeChild(tr); return false; } e = null; - }, - "#${strategyid} TD.stop A.toggleall" : function(e) { + }); + Behaviour.specify("#${strategyid} TD.stop A.toggleall", 'GlobalMatrixAuthorizationStrategy', 0, function(e) { e.onclick = function() { var tr = findAncestor(this,"TR"); var inputs = tr.getElementsByTagName("INPUT"); @@ -163,7 +162,7 @@ THE SOFTWARE. return false; }; e = null; - }, + }); diff --git a/core/src/main/resources/lib/form/advanced/advanced.js b/core/src/main/resources/lib/form/advanced/advanced.js index 7d01f8d44b946ffdd150e50908fffcb0f20c5d51..4f1c0baac052b6583a1cf55b2a2f55d5e47333c6 100644 --- a/core/src/main/resources/lib/form/advanced/advanced.js +++ b/core/src/main/resources/lib/form/advanced/advanced.js @@ -1,5 +1,4 @@ -Behaviour.register({ - "INPUT.advanced-button" : function(e) { +Behaviour.specify("INPUT.advanced-button", 'advanced', 0, function(e) { makeButton(e,function(e) { var link = e.target; while(!Element.hasClassName(link,"advancedLink")) @@ -23,5 +22,4 @@ Behaviour.register({ layoutUpdateCallback.call(); }); e = null; // avoid memory leak - } }); \ No newline at end of file diff --git a/core/src/main/resources/lib/form/apply/apply.js b/core/src/main/resources/lib/form/apply/apply.js index 4c3cecb066326ec23c1494d5e96a343d5033d3e4..4e2cdc11d12946178ecea2853e7832e80847872f 100644 --- a/core/src/main/resources/lib/form/apply/apply.js +++ b/core/src/main/resources/lib/form/apply/apply.js @@ -1,5 +1,4 @@ -Behaviour.register({ - "INPUT.apply-button":function (e) { +Behaviour.specify("INPUT.apply-button", 'apply', 0, function (e) { var id; var containerId = "container"+(iota++); @@ -63,5 +62,4 @@ Behaviour.register({ f.target = null; } }); - } }); \ No newline at end of file diff --git a/core/src/main/resources/lib/form/combobox/combobox.js b/core/src/main/resources/lib/form/combobox/combobox.js index 50acde5149a36415195636a1c7a6d1236963589f..d15b7bc78c240b1c06f27699f35df03c9a7b71f2 100644 --- a/core/src/main/resources/lib/form/combobox/combobox.js +++ b/core/src/main/resources/lib/form/combobox/combobox.js @@ -1,5 +1,4 @@ -Behaviour.register({ - "INPUT.combobox2" : function(e) { +Behaviour.specify("INPUT.combobox2", 'combobox', 0, function(e) { var items = []; var c = new ComboBox(e,function(value) { @@ -21,5 +20,4 @@ Behaviour.register({ } }); }); - } }); \ No newline at end of file diff --git a/core/src/main/resources/lib/form/hetero-list/hetero-list.js b/core/src/main/resources/lib/form/hetero-list/hetero-list.js index d7e92648659c268e4ed6e0cdf48cf9e8af61bc2c..9991f6196ed5910c8bbf246e45dd5b8f8047880e 100644 --- a/core/src/main/resources/lib/form/hetero-list/hetero-list.js +++ b/core/src/main/resources/lib/form/hetero-list/hetero-list.js @@ -2,8 +2,7 @@ // do the ones that extract innerHTML so that they can get their original HTML before // other behavior rules change them (like YUI buttons.) -Behaviour.list.unshift({ - "DIV.hetero-list-container" : function(e) { +Behaviour.specify("DIV.hetero-list-container", 'hetero-list', -100, function(e) { e=$(e); if(isInsideRemovable(e)) return; @@ -134,9 +133,9 @@ Behaviour.list.unshift({ } }); } - }, + }); - "DIV.dd-handle" : function(e) { +Behaviour.specify("DIV.dd-handle", 'hetero-list', -100, function(e) { e=$(e); e.on("mouseover",function() { $(this).up(".repeated-chunk").addClassName("hover"); @@ -144,5 +143,4 @@ Behaviour.list.unshift({ e.on("mouseout",function() { $(this).up(".repeated-chunk").removeClassName("hover"); }); - } }); diff --git a/core/src/main/resources/lib/form/radioBlock/radioBlock.js b/core/src/main/resources/lib/form/radioBlock/radioBlock.js index a8804e8d527606d129503acf9de60e62f2473dbb..0911cdb995fb72021387f5b7458f92a6cc64d9b6 100644 --- a/core/src/main/resources/lib/form/radioBlock/radioBlock.js +++ b/core/src/main/resources/lib/form/radioBlock/radioBlock.js @@ -24,11 +24,8 @@ var radioBlockSupport = { } }; -Behaviour.list.unshift({ - // this needs to happen before TR.row-set-end rule kicks in. - // but this is a hack. - // TODO: how do we handle ordering? - "INPUT.radio-block-control" : function(r) { +// this needs to happen before TR.row-set-end rule kicks in. +Behaviour.specify("INPUT.radio-block-control", 'radioBlock', -100, function(r) { r.id = "radio-block-"+(iota++); // when one radio button is clicked, we need to update foldable block for @@ -73,5 +70,4 @@ Behaviour.list.unshift({ // install event handlers to update visibility. // needs to use onclick and onchange for Safari compatibility r.onclick = r.onchange = function() { g.updateButtons(); }; - } }); diff --git a/core/src/main/resources/lib/form/repeatable/repeatable.js b/core/src/main/resources/lib/form/repeatable/repeatable.js index 047e25078ea186856c11dcca4e4302bdeadf5470..7ad9ae5b7942dcaa92ba11ab89b51f2581ecff89 100644 --- a/core/src/main/resources/lib/form/repeatable/repeatable.js +++ b/core/src/main/resources/lib/form/repeatable/repeatable.js @@ -99,8 +99,7 @@ var repeatableSupport = { // do the ones that extract innerHTML so that they can get their original HTML before // other behavior rules change them (like YUI buttons.) -Behaviour.list.unshift({ - "DIV.repeated-container" : function(e) { +Behaviour.specify("DIV.repeated-container", 'repeatable', -100, function(e) { if(isInsideRemovable(e)) return; // compute the insertion point @@ -109,27 +108,25 @@ Behaviour.list.unshift({ ip = ip.previous(); // set up the logic object(repeatableSupport).init(e, e.firstChild, ip); - } }); -Behaviour.register({ // button to add a new repeatable block - "INPUT.repeatable-add" : function(e) { +Behaviour.specify("INPUT.repeatable-add", 'repeatable', 0, function(e) { makeButton(e,function(e) { repeatableSupport.onAdd(e.target); }); e = null; // avoid memory leak - }, + }); - "INPUT.repeatable-delete" : function(e) { +Behaviour.specify("INPUT.repeatable-delete", 'repeatable', 0, function(e) { makeButton(e,function(e) { repeatableSupport.onDelete(e.target); }); e = null; // avoid memory leak - }, + }); // radio buttons in repeatable content - "DIV.repeated-chunk" : function(d) { +Behaviour.specify("DIV.repeated-chunk", 'repeatable', 0, function(d) { var inputs = d.getElementsByTagName('INPUT'); for (var i = 0; i < inputs.length; i++) { if (inputs[i].type == 'radio') { @@ -145,5 +142,4 @@ Behaviour.register({ if (inputs[i].defaultChecked) inputs[i].checked = true; } } - } }); \ No newline at end of file diff --git a/core/src/main/resources/lib/form/select/select.js b/core/src/main/resources/lib/form/select/select.js index 5727fca794d90fd34dec616e9cc66d7252f972bd..56090590de32bd246b722021147f91fd6d03322c 100644 --- a/core/src/main/resources/lib/form/select/select.js +++ b/core/src/main/resources/lib/form/select/select.js @@ -40,8 +40,7 @@ function updateListBox(listBox,url,config) { new Ajax.Request(url, config); } -Behaviour.register({ - "SELECT.select" : function(e) { +Behaviour.specify("SELECT.select", 'select', 0, function(e) { // controls that this SELECT box depends on refillOnChange(e,function(params) { var value = e.value; @@ -63,5 +62,4 @@ Behaviour.register({ } }); }); - } }); \ No newline at end of file diff --git a/core/src/main/resources/lib/form/textarea/textarea.js b/core/src/main/resources/lib/form/textarea/textarea.js index 56984a110ab8bfadac78f5fe6edd1b8bcdaba2d0..1f0f1a2d9cb8592180cc9bf7351250d5d792ef4b 100644 --- a/core/src/main/resources/lib/form/textarea/textarea.js +++ b/core/src/main/resources/lib/form/textarea/textarea.js @@ -1,5 +1,4 @@ -Behaviour.register({ - "TEXTAREA.codemirror" : function(e) { +Behaviour.specify("TEXTAREA.codemirror", 'textarea', 0, function(e) { var h = e.clientHeight; var config = e.getAttribute("codemirror-config") || ""; config = eval('({'+config+'})'); @@ -14,9 +13,9 @@ Behaviour.register({ var scroller = codemirror.getScrollerElement(); scroller.setAttribute("style","border:1px solid black;"); scroller.style.height = h+"px"; - }, + }); - "DIV.textarea-preview-container" : function (e) { +Behaviour.specify("DIV.textarea-preview-container", 'textarea', 0, function (e) { var previewDiv = findElementsBySelector(e,".textarea-preview")[0]; var showPreview = findElementsBySelector(e,".textarea-show-preview")[0]; var hidePreview = findElementsBySelector(e,".textarea-hide-preview")[0]; @@ -54,5 +53,4 @@ Behaviour.register({ $(hidePreview).hide(); $(previewDiv).hide(); }; - } }); \ No newline at end of file diff --git a/core/src/main/resources/lib/layout/copyButton/copyButton.js b/core/src/main/resources/lib/layout/copyButton/copyButton.js index 0fb109e14f9de204e0f349ca7ad27d311f2c0998..3e6ca98c93fb466be81ebfce0a4839fd4b8c3678 100644 --- a/core/src/main/resources/lib/layout/copyButton/copyButton.js +++ b/core/src/main/resources/lib/layout/copyButton/copyButton.js @@ -1,7 +1,6 @@ // @include "org.kohsuke.stapler.zeroclipboard" -Behaviour.register({ - "span.copy-button" : function(e) { +Behaviour.soecify("span.copy-button", 'copyButton', 0, function(e) { var btn = e.firstChild; var id = "copy-button"+(iota++); btn.id = id; @@ -35,5 +34,4 @@ Behaviour.register({ clip.addEventListener('onMouseUp',function() { $(id).removeClassName('yui-button-active') }); - } }); diff --git a/war/src/main/webapp/scripts/hudson-behavior.js b/war/src/main/webapp/scripts/hudson-behavior.js index cc814d5885d45d3e5c47d906c31a4117acee148d..ca554e1a711b54f5989cad7c1def8eab4091c6ab 100644 --- a/war/src/main/webapp/scripts/hudson-behavior.js +++ b/war/src/main/webapp/scripts/hudson-behavior.js @@ -1159,7 +1159,9 @@ var jenkinsRules = { adjustSticker(); } }; -var hudsonRules = jenkinsRules; // legacy name +for (var selector in jenkinsRules) { + Behaviour.specify(selector, 'hudson-behavior', 0, jenkinsRules[selector]); +} function applyTooltip(e,text) { // copied from YAHOO.widget.Tooltip.prototype.configContext to efficiently add a new element @@ -1212,10 +1214,6 @@ function refillOnChange(e,onChange) { h(); // initial fill } -Behaviour.register(hudsonRules); - - - function xor(a,b) { // convert both values to boolean by '!' and then do a!=b return !a != !b;