Bug 14327: Fix js error "TypeError: events is null" in additem.js
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Thu, 4 Jun 2015 07:15:24 +0000 (09:15 +0200)
committerTomas Cohen Arazi <tomascohen@theke.io>
Sun, 7 Jun 2015 21:40:12 +0000 (18:40 -0300)
If you have no item plugins, the events variable in BindPluginEvents
of additem.js will be null. So testing events.length will generate
the described error.
This patch adds a check to prevent that from happening again.

Test plan:
[1] Do not yet apply this patch !
[2] Temporarily remove framework plugins from your items (in ACQ or default
    framework). Probably you have to clear dateaccessioned.pl and
    barcode.pl.
[3] Open js console in your browser.
[4] Go to Acquisition. Open a basket and add an order from a new empty
    record.
[5] You should see js error: "TypeError: events is null" (additem.js:176)
[6] Apply this patch and reload the page (make sure that you refresh so
    that the new javascript code is read).
[7] The TypeError should be gone.
[8] Restore the framework plugins from step 2. Refresh the page again and
    verify that they still work as expected.

Signed-off-by: Jonathan Druart <jonathan.druart@koha-community.org>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
koha-tmpl/intranet-tmpl/prog/en/js/additem.js

index de3ee71..4a9de09 100644 (file)
@@ -171,8 +171,8 @@ function BindPluginEvents(data) {
 // the events for the plugin
 // when we append, this code does not get executed anymore; so we do it here
     var events= data.match(/BindEventstag_\d+_subfield_._\d+/g);
-    var i;
-    for(i=0; i<events.length; i++) {
+    if ( events == null ) return;
+    for(var i=0; i<events.length; i++) {
         window[events[i]]();
         if( i<events.length-1 && events[i]==events[i+1] ) { i++; }
             // normally we find the function name twice