Bugzilla – Attachment 19449 Details for
Bug 10522
Javascript error on acquisition pages: YAHOO is not defined
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 10522 - Javascript error on acquisition pages: YAHOO is not defined
Bug-10522---Javascript-error-on-acquisition-pages-.patch (text/plain), 15.43 KB, created by
Chris Cormack
on 2013-07-07 07:55:25 UTC
(
hide
)
Description:
Bug 10522 - Javascript error on acquisition pages: YAHOO is not defined
Filename:
MIME Type:
Creator:
Chris Cormack
Created:
2013-07-07 07:55:25 UTC
Size:
15.43 KB
patch
obsolete
>From ad0826e7918613c009fa949bce1a94dff6b53200 Mon Sep 17 00:00:00 2001 >From: Owen Leonard <oleonard@myacpl.org> >Date: Fri, 28 Jun 2013 14:46:44 -0400 >Subject: [PATCH] Bug 10522 - Javascript error on acquisition pages: YAHOO is > not defined > >acq.js includes an immediately invoked function expression, which means >that it runs whether or not it is called. Because this function tries to >reference the YAHOO object, it triggers an error on pages which don't >include the main YAHOO assets. Only the basketgroups page uses this >function and YAHOO assets. > >It's probably possible to make this a regular function, but I propose >simply wrapping it in a check for the YAHOO object so that it only >executes on pages where YAHOO exists--the basketgroups page. > >To test, apply the patch, clear your browser cache, and test on both the >basketgroups page and at least one page which also includes acq.js >(addorderiso2709.pl, neworderempty.pl, aqbudgets.pl, suggestion.pl, >etc.) and confirm that the browser reports no JavaScript errors. > >Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com> >$ git show HEAD -w >[...] >- >+if( typeof(YAHOO) === "object"){ > (function() { > > var Dom = YAHOO.util.Dom; >@@ -234,7 +234,7 @@ YAHOO.extend(DDList, YAHOO.util.DDProxy, { > } > }); > })(); >- >+} > >Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz> >--- > koha-tmpl/intranet-tmpl/prog/en/js/acq.js | 280 +++++++++++++++--------------- > 1 file changed, 140 insertions(+), 140 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/acq.js b/koha-tmpl/intranet-tmpl/prog/en/js/acq.js >index 067cd08..b9039ea 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/js/acq.js >+++ b/koha-tmpl/intranet-tmpl/prog/en/js/acq.js >@@ -60,181 +60,181 @@ function isNum(v,maybenull) { > //======================================================================= > // Functions for drag-and-drop functionality > >+if( typeof(YAHOO) === "object"){ >+ (function() { > >-(function() { >- >-var Dom = YAHOO.util.Dom; >-var Event = YAHOO.util.Event; >-var DDM = YAHOO.util.DragDropMgr; >- >-DDApp = { >- init: function() { >- var uls = document.getElementsByTagName('ul'); >- var i,j; >- var ddtarget; >- for (i=0; i<uls.length;i=i+1) { >- if (uls[i].className == "draglist" || uls[i].className == "draglist_alt") { >- ddtarget = YAHOO.util.DragDropMgr.getDDById(uls[i].id); >-// The yahoo drag and drop is written (broken or not) in such a way, that if an element is subscribed as a target multiple times, >-// it has to be unlinked multiple times, so we need to test whether it is allready a target, otherwise we'll have a problem when closing the group >- if( ! ddtarget ) { >- new YAHOO.util.DDTarget(uls[i].id); >- } >- var children = uls[i].getElementsByTagName('li'); >- for( j=0; j<children.length; j=j+1) { >-// The yahoo drag and drop is (broken or not) in such a way, that if an element is subscribed as a target multiple times, >-// it has to be unlinked multiple times, so we need to test whether it is allready a target, otherwise we'll have a problem when closing the group >- ddtarget = YAHOO.util.DragDropMgr.getDDById(children[j].id); >+ var Dom = YAHOO.util.Dom; >+ var Event = YAHOO.util.Event; >+ var DDM = YAHOO.util.DragDropMgr; >+ >+ DDApp = { >+ init: function() { >+ var uls = document.getElementsByTagName('ul'); >+ var i,j; >+ var ddtarget; >+ for (i=0; i<uls.length;i=i+1) { >+ if (uls[i].className == "draglist" || uls[i].className == "draglist_alt") { >+ ddtarget = YAHOO.util.DragDropMgr.getDDById(uls[i].id); >+ // The yahoo drag and drop is written (broken or not) in such a way, that if an element is subscribed as a target multiple times, >+ // it has to be unlinked multiple times, so we need to test whether it is allready a target, otherwise we'll have a problem when closing the group > if( ! ddtarget ) { >- new DDList(children[j].id); >+ new YAHOO.util.DDTarget(uls[i].id); >+ } >+ var children = uls[i].getElementsByTagName('li'); >+ for( j=0; j<children.length; j=j+1) { >+ // The yahoo drag and drop is (broken or not) in such a way, that if an element is subscribed as a target multiple times, >+ // it has to be unlinked multiple times, so we need to test whether it is allready a target, otherwise we'll have a problem when closing the group >+ ddtarget = YAHOO.util.DragDropMgr.getDDById(children[j].id); >+ if( ! ddtarget ) { >+ new DDList(children[j].id); >+ } > } > } > } >- } >- } >-}; >+ } >+ }; > > >-// drag and drop implementation >+ // drag and drop implementation > >-DDList = function(id, sGroup, config) { >+ DDList = function(id, sGroup, config) { > >- DDList.superclass.constructor.call(this, id, sGroup, config); >+ DDList.superclass.constructor.call(this, id, sGroup, config); > >- this.logger = this.logger || YAHOO; >- var el = this.getDragEl(); >- Dom.setStyle(el, "opacity", 0.67); // The proxy is slightly transparent >+ this.logger = this.logger || YAHOO; >+ var el = this.getDragEl(); >+ Dom.setStyle(el, "opacity", 0.67); // The proxy is slightly transparent > >- this.goingUp = false; >- this.lastY = 0; >-}; >+ this.goingUp = false; >+ this.lastY = 0; >+ }; > >-YAHOO.extend(DDList, YAHOO.util.DDProxy, { >+ YAHOO.extend(DDList, YAHOO.util.DDProxy, { > >- startDrag: function(x, y) { >- this.logger.log(this.id + " startDrag"); >+ startDrag: function(x, y) { >+ this.logger.log(this.id + " startDrag"); > >- // make the proxy look like the source element >- var dragEl = this.getDragEl(); >- var clickEl = this.getEl(); >- Dom.setStyle(clickEl, "visibility", "hidden"); >+ // make the proxy look like the source element >+ var dragEl = this.getDragEl(); >+ var clickEl = this.getEl(); >+ Dom.setStyle(clickEl, "visibility", "hidden"); > >- dragEl.innerHTML = clickEl.innerHTML; >+ dragEl.innerHTML = clickEl.innerHTML; > >- Dom.setStyle(dragEl, "color", Dom.getStyle(clickEl, "color")); >- Dom.setStyle(dragEl, "backgroundColor", Dom.getStyle(clickEl, "backgroundColor")); >- Dom.setStyle(dragEl, "border", "2px solid gray"); >- }, >+ Dom.setStyle(dragEl, "color", Dom.getStyle(clickEl, "color")); >+ Dom.setStyle(dragEl, "backgroundColor", Dom.getStyle(clickEl, "backgroundColor")); >+ Dom.setStyle(dragEl, "border", "2px solid gray"); >+ }, > >- endDrag: function(e) { >+ endDrag: function(e) { > >- var srcEl = this.getEl(); >- var proxy = this.getDragEl(); >+ var srcEl = this.getEl(); >+ var proxy = this.getDragEl(); > >- // Show the proxy element and animate it to the src element's location >- Dom.setStyle(proxy, "visibility", ""); >- var a = new YAHOO.util.Motion( >- proxy, { >- points: { >- to: Dom.getXY(srcEl) >- } >- }, >- 0.2, >- YAHOO.util.Easing.easeOut >- ) >- var proxyid = proxy.id; >- var thisid = this.id; >- >- // Hide the proxy and show the source element when finished with the animation >- a.onComplete.subscribe(function() { >- Dom.setStyle(proxyid, "visibility", "hidden"); >- Dom.setStyle(thisid, "visibility", ""); >- }); >- a.animate(); >-// if we are in basketgrouping page, when finished moving, edit the basket's info to reflect new status >- if(typeof(basketgroups) != 'undefined') { >+ // Show the proxy element and animate it to the src element's location >+ Dom.setStyle(proxy, "visibility", ""); >+ var a = new YAHOO.util.Motion( >+ proxy, { >+ points: { >+ to: Dom.getXY(srcEl) >+ } >+ }, >+ 0.2, >+ YAHOO.util.Easing.easeOut >+ ) >+ var proxyid = proxy.id; >+ var thisid = this.id; >+ >+ // Hide the proxy and show the source element when finished with the animation > a.onComplete.subscribe(function() { >- var reg = new RegExp("[-]+", "g"); >-// add a changed input to each moved basket, so we know which baskets to modify, >-// and so we don't need to modify each and every basket and basketgroup each time the page is loaded >-// FIXME: we shouldn't use getElementsByTagName, it's not explicit enough :-( >- srcEl.getElementsByTagName('input')[1].value = "1"; >- if ( srcEl.parentNode.parentNode.className == "workarea" ) { >- var dstbgroupid = srcEl.parentNode.parentNode.getElementsByTagName('input')[srcEl.parentNode.parentNode.getElementsByTagName('input').length-2].name.split(reg)[1]; >- srcEl.className="grouped"; >- srcEl.getElementsByTagName('input')[0].value = dstbgroupid; >-//FIXME: again, we shouldn't be using getElementsByTagName!! >- srcEl.parentNode.parentNode.getElementsByTagName('input')[srcEl.parentNode.parentNode.getElementsByTagName('input').length-1].value = 1; >- } >- else if ( srcEl.parentNode.parentNode.className == "workarea_alt" ){ >- srcEl.className="ungrouped"; >- srcEl.getElementsByTagName('input')[0].value = "0"; >- } >- }); >- } >- }, >+ Dom.setStyle(proxyid, "visibility", "hidden"); >+ Dom.setStyle(thisid, "visibility", ""); >+ }); >+ a.animate(); >+ // if we are in basketgrouping page, when finished moving, edit the basket's info to reflect new status >+ if(typeof(basketgroups) != 'undefined') { >+ a.onComplete.subscribe(function() { >+ var reg = new RegExp("[-]+", "g"); >+ // add a changed input to each moved basket, so we know which baskets to modify, >+ // and so we don't need to modify each and every basket and basketgroup each time the page is loaded >+ // FIXME: we shouldn't use getElementsByTagName, it's not explicit enough :-( >+ srcEl.getElementsByTagName('input')[1].value = "1"; >+ if ( srcEl.parentNode.parentNode.className == "workarea" ) { >+ var dstbgroupid = srcEl.parentNode.parentNode.getElementsByTagName('input')[srcEl.parentNode.parentNode.getElementsByTagName('input').length-2].name.split(reg)[1]; >+ srcEl.className="grouped"; >+ srcEl.getElementsByTagName('input')[0].value = dstbgroupid; >+ //FIXME: again, we shouldn't be using getElementsByTagName!! >+ srcEl.parentNode.parentNode.getElementsByTagName('input')[srcEl.parentNode.parentNode.getElementsByTagName('input').length-1].value = 1; >+ } >+ else if ( srcEl.parentNode.parentNode.className == "workarea_alt" ){ >+ srcEl.className="ungrouped"; >+ srcEl.getElementsByTagName('input')[0].value = "0"; >+ } >+ }); >+ } >+ }, > >- onDragDrop: function(e, id) { >+ onDragDrop: function(e, id) { > >- // If there is one drop interaction, the li was dropped either on the list, >- // or it was dropped on the current location of the source element. >- if (DDM.interactionInfo.drop.length === 1) { >+ // If there is one drop interaction, the li was dropped either on the list, >+ // or it was dropped on the current location of the source element. >+ if (DDM.interactionInfo.drop.length === 1) { > >- // The position of the cursor at the time of the drop (YAHOO.util.Point) >- var pt = DDM.interactionInfo.point; >+ // The position of the cursor at the time of the drop (YAHOO.util.Point) >+ var pt = DDM.interactionInfo.point; > >- // The region occupied by the source element at the time of the drop >- var region = DDM.interactionInfo.sourceRegion; >+ // The region occupied by the source element at the time of the drop >+ var region = DDM.interactionInfo.sourceRegion; > >- // Check to see if we are over the source element's location. We will >- // append to the bottom of the list once we are sure it was a drop in >- // the negative space (the area of the list without any list items) >- if (!region.intersect(pt)) { >- var destEl = Dom.get(id); >- var destDD = DDM.getDDById(id); >- destEl.appendChild(this.getEl()); >- destDD.isEmpty = false; >- DDM.refreshCache(); >+ // Check to see if we are over the source element's location. We will >+ // append to the bottom of the list once we are sure it was a drop in >+ // the negative space (the area of the list without any list items) >+ if (!region.intersect(pt)) { >+ var destEl = Dom.get(id); >+ var destDD = DDM.getDDById(id); >+ destEl.appendChild(this.getEl()); >+ destDD.isEmpty = false; >+ DDM.refreshCache(); >+ } > } >- } >- }, >+ }, > >- onDrag: function(e) { >+ onDrag: function(e) { > >- // Keep track of the direction of the drag for use during onDragOver >- var y = Event.getPageY(e); >+ // Keep track of the direction of the drag for use during onDragOver >+ var y = Event.getPageY(e); > >- if (y < this.lastY) { >- this.goingUp = true; >- } else if (y > this.lastY) { >- this.goingUp = false; >- } >- this.lastY = y; >- }, >+ if (y < this.lastY) { >+ this.goingUp = true; >+ } else if (y > this.lastY) { >+ this.goingUp = false; >+ } >+ this.lastY = y; >+ }, > >- onDragOver: function(e, id) { >+ onDragOver: function(e, id) { > >- var srcEl = this.getEl(); >- var destEl = Dom.get(id); >+ var srcEl = this.getEl(); >+ var destEl = Dom.get(id); > >- // We are only concerned with list items, we ignore the dragover >- // notifications for the list. >- if (destEl.nodeName.toLowerCase() == "li") { >- var orig_p = srcEl.parentNode; >- var p = destEl.parentNode; >+ // We are only concerned with list items, we ignore the dragover >+ // notifications for the list. >+ if (destEl.nodeName.toLowerCase() == "li") { >+ var orig_p = srcEl.parentNode; >+ var p = destEl.parentNode; > >- if (this.goingUp) { >- p.insertBefore(srcEl, destEl); // insert above >- } else { >- p.insertBefore(srcEl, destEl.nextSibling); // insert below >- } >+ if (this.goingUp) { >+ p.insertBefore(srcEl, destEl); // insert above >+ } else { >+ p.insertBefore(srcEl, destEl.nextSibling); // insert below >+ } > >- DDM.refreshCache(); >+ DDM.refreshCache(); >+ } > } >- } >-}); >-})(); >- >+ }); >+ })(); >+} > > > >-- >1.8.3.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 10522
:
19342
|
19358
| 19449