From 302ef5673563922277a59f5711a30fd45bce6df3 Mon Sep 17 00:00:00 2001
From: David Cook <dcook@prosentient.com.au>
Date: Tue, 11 Sep 2012 07:18:54 +1000
Subject: [PATCH] Bug 8508 - Holds to Pull : Library dropdown options are
 erroneously concatenated by br tags
Content-Type: text/plain; charset="utf-8"

This patch introduces a new javascript function that breaks apart option
strings that are erroneously concatenated by br tags. The split strings
are then checked against non-concatenated option strings, and pushed into
the option array if there is no duplication.

This function is nestled into the JQuery datatable function for populating
the drop-down menu.

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
---
 .../prog/en/modules/circ/pendingreserves.tt        |   27 ++++++++++++++++++++
 1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt
index 0b832dc..9bf2aa4 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt
@@ -15,7 +15,34 @@ $(document).ready(function() {
   var holdst = $("#holdst").dataTable($.extend(true, {}, dataTablesDefaults, {
   }));
   holdst.fnAddFilters("filter");
+  [%# add separateData function to cleanse jQuery select lists by breaking apart strings glued with BR tags and then de-duplicating any repeated library codes %]
+  function separateData ( ColumnData ){
+    var cD = ColumnData;
+    var new_array = new Array();
+    for ( j=0 ; j<cD.length ; j++ ) {
+        var strMatch = cD[j].match(/<br>/gi);
+        if (strMatch) {
+            var split_array = cD[j].split(/<br>/gi);
+            for ( k=0 ; k<split_array.length ; k++ ){
+                var check_array = $.inArray(split_array[k], new_array);
+                if (check_array == -1) {
+                new_array.push(split_array[k]);
+                }
+            }
+        }
+        else {
+            var check_array = $.inArray(cD[j], new_array);
+            if (check_array == -1) {
+                new_array.push(cD[j]);
+            }
+        }
+    }
+    new_array.sort();
+    return new_array;
+  }
+  [%# add SeparateData function into createSelect function, so that it does the createSelect on clean data %]
   function createSelect( data ) {
+      data = separateData(data);
       var r='<select style="width:99%"><option value="">None</option>', i, len=data.length;
       for ( i=0 ; i<len ; i++ ) {
           r += '<option value="'+data[i]+'">'+data[i]+'</option>';
-- 
1.7.7.6