Currently, the additem.js is using "indexOf" to search for a value in an array. While this works in Chrome, Firefox, and IE > 9, it fails miserably in IE 8 and 7 (which don't have the indexOf method). This means that users aren't able to add items using the acquisitions module! Instead of using "indexOf", we should be using the jQuery function $.inArray. It was added in jQuery v1.2 (3.8.0 uses v1.3.2 so even our oldest supported release can use this method). It's perfectly cross-browser compatible...works in Chrome, Firefox, and every version of IE that I've tried (i.e. 7, 8, 9). Patch and test plan to follow...
Created attachment 19399 [details] [review] Bug 10541 - Enable cross-browser AJAX in additem.js Test Plan: Before applying patch: 0) Switch to Internet Explorer 7, or 8, or 9. If you're using IE 9, you'll need to change the Document Mode to IE7 standards or IE8 standards. You can do this by opening Internet Explorer 9, pressing F12 (or clicking on the gear in the top right corner and choosing F12 Developer Tools), and then clicking on "Document Mode" on the top toolbar. There, you can change to IE7 or IE8 standards. N.B. This is not always a perfect emulation in every case, but this time it does show you the bug. 1) Set the system preference AcqCreateItem to "receiving an order" 2) Go to Acquisitions 3) Either: a) Receive a shipment for a basket with items b) Create a new basket, create an order, close the basket, and then do 3a) 4) In the "Item" fieldset, fill out some fields such as barcode, Date acquiried, Public note, etc. 5) Click "Add" at the bottom of the fieldset 6) Note that while the item may have been added, the "Item" fieldset is not being shown again. You may also notice a Javascript error appearing in a pop-up window or you might see a yellow warning flag on the bottom status bar. APPLY THE PATCH 7) Do a full refresh of the page (hold down shift and press the refresh button on the browser next to the address bar), and try adding items again. 8) Note that you receive no warnings and that items are added correctly as they would be in Firefox or Chrome. OPTIONALLY 9) To be sure that I haven't broken anything, go through the same steps in IE9 (with IE9 standards) or Chrome or Firefox. Everything should be working.
Created attachment 19593 [details] [review] [SIGNED-OFF] Bug 10541 - Enable cross-browser AJAX in additem.js Currently, the additem.js is using "indexOf" to search for a value in an array. While this works in Chrome, Firefox, and IE > 9, it fails miserably in IE 8 and 7 (which don't have the indexOf method). This means that users aren't able to add items using the acquisitions module! Instead of using "indexOf", we should be using the jQuery function $.inArray. It was added in jQuery v1.2 (3.8.0 uses v1.3.2 so even our oldest supported release can use this method). It's perfectly cross-browser compatible...works in Chrome, Firefox, and every version of IE that I've tried (i.e. 7, 8, 9). Test Plan: Before applying patch: 0) Switch to Internet Explorer 7, or 8, or 9. If you're using IE 9, you'll need to change the Document Mode to IE7 standards or IE8 standards. You can do this by opening Internet Explorer 9, pressing F12 (or clicking on the gear in the top right corner and choosing F12 Developer Tools), and then clicking on "Document Mode" on the top toolbar. There, you can change to IE7 or IE8 standards. N.B. This is not always a perfect emulation in every case, but this time it does show you the bug. 1) Set the system preference AcqCreateItem to "receiving an order" 2) Go to Acquisitions 3) Either: a) Receive a shipment for a basket with items b) Create a new basket, create an order, close the basket, and then do 3a) 4) In the "Item" fieldset, fill out some fields such as barcode, Date acquiried, Public note, etc. 5) Click "Add" at the bottom of the fieldset 6) Note that while the item may have been added, the "Item" fieldset is not being shown again. You may also notice a Javascript error appearing in a pop-up window or you might see a yellow warning flag on the bottom status bar. APPLY THE PATCH 7) Do a full refresh of the page (hold down shift and press the refresh button on the browser next to the address bar), and try adding items again. 8) Note that you receive no warnings and that items are added correctly as they would be in Firefox or Chrome. OPTIONALLY 9) To be sure that I haven't broken anything, go through the same steps in IE9 (with IE9 standards) or Chrome or Firefox. Everything should be working. Signed-off-by: Owen Leonard <oleonard@myacpl.org> Tested in IE10 in IE7 mode and IE9 mode. Also tested in Firefox.
Created attachment 19594 [details] [review] Bug 10541 - Enable cross-browser AJAX in additem.js Currently, the additem.js is using "indexOf" to search for a value in an array. While this works in Chrome, Firefox, and IE > 9, it fails miserably in IE 8 and 7 (which don't have the indexOf method). This means that users aren't able to add items using the acquisitions module! Instead of using "indexOf", we should be using the jQuery function $.inArray. It was added in jQuery v1.2 (3.8.0 uses v1.3.2 so even our oldest supported release can use this method). It's perfectly cross-browser compatible...works in Chrome, Firefox, and every version of IE that I've tried (i.e. 7, 8, 9). Test Plan: Before applying patch: 0) Switch to Internet Explorer 7, or 8, or 9. If you're using IE 9, you'll need to change the Document Mode to IE7 standards or IE8 standards. You can do this by opening Internet Explorer 9, pressing F12 (or clicking on the gear in the top right corner and choosing F12 Developer Tools), and then clicking on "Document Mode" on the top toolbar. There, you can change to IE7 or IE8 standards. N.B. This is not always a perfect emulation in every case, but this time it does show you the bug. 1) Set the system preference AcqCreateItem to "receiving an order" 2) Go to Acquisitions 3) Either: a) Receive a shipment for a basket with items b) Create a new basket, create an order, close the basket, and then do 3a) 4) In the "Item" fieldset, fill out some fields such as barcode, Date acquiried, Public note, etc. 5) Click "Add" at the bottom of the fieldset 6) Note that while the item may have been added, the "Item" fieldset is not being shown again. You may also notice a Javascript error appearing in a pop-up window or you might see a yellow warning flag on the bottom status bar. APPLY THE PATCH 7) Do a full refresh of the page (hold down shift and press the refresh button on the browser next to the address bar), and try adding items again. 8) Note that you receive no warnings and that items are added correctly as they would be in Firefox or Chrome. OPTIONALLY 9) To be sure that I haven't broken anything, go through the same steps in IE9 (with IE9 standards) or Chrome or Firefox. Everything should be working. Signed-off-by: Owen Leonard <oleonard@myacpl.org> Tested in IE10 in IE7 mode and IE9 mode. Also tested in Firefox. Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Passes koha-qa.pl, works as advertised.
I have run into this in training as well and glad to see a patch for it as this has been quite a blocker bug for the library. There are also IE problems in serials and other modules - maybe we shold fix all IndexOf appearances?
(In reply to Katrin Fischer from comment #4) > I have run into this in training as well and glad to see a patch for it as > this has been quite a blocker bug for the library. There are also IE > problems in serials and other modules - maybe we shold fix all IndexOf > appearances? Indeed. I have opened bug 10607 for tracking this.
Pushed to master. Thanks, David!
This patch has been pushed to 3.12.x, will be in 3.12.4. Thanks David!
Pushed to 3.10.x, will be in 3.10.11
Pushed to 3.8.x, will be in 3.8.18 Awesome commit message :)