lp945091 save columns independently for hold lists
authorJason Etheridge <jason@esilibrary.com>
Fri, 2 Mar 2012 19:57:31 +0000 (14:57 -0500)
committerThomas Berezansky <tsbere@mvlc.org>
Wed, 7 Mar 2012 19:13:25 +0000 (14:13 -0500)
Teaches util.list.init a new parameter, columns_saved_under, which effectively
replaces the tree/list id attribute when used to construct a filename for saving
and retrieving column settings.

Use this technique with holds.js so that each XUL-based hold list interface can
save column configurations independently.

Specifically, these interfaces:

Actions for this Record -> View Holds
Patron Display -> Holds
Circulation -> Browse Hold Shelf
Circulation -> Pull List for Hold Requests

Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Open-ILS/xul/staff_client/chrome/content/util/list.js
Open-ILS/xul/staff_client/server/patron/holds.js

index df7f37d..f62e10f 100644 (file)
@@ -32,6 +32,9 @@ util.list.prototype = {
         var obj = this;
         obj.scratch_data = {};
 
+        // If set, save and restore columns as if the tree/list id was the value of columns_saved_under
+        obj.columns_saved_under = params.columns_saved_under;
+
         JSAN.use('util.widgets');
 
         obj.printer_context = params.printer_context;
@@ -259,7 +262,9 @@ util.list.prototype = {
     '_save_columns_tree' : function (params) {
         var obj = this;
         try {
-            var id = obj.node.getAttribute('id'); if (!id) {
+            var id = obj.node.getAttribute('id');
+            if (obj.columns_saved_under) { id = obj.columns_saved_under; }
+            if (!id) {
                 alert("FIXME: The columns for this list cannot be saved because the list has no id.");
                 return;
             }
@@ -298,7 +303,9 @@ util.list.prototype = {
     '_restores_columns_tree' : function (params) {
         var obj = this;
         try {
-            var id = obj.node.getAttribute('id'); if (!id) {
+            var id = obj.node.getAttribute('id');
+            if (obj.columns_saved_under) { id = obj.columns_saved_under; }
+            if (!id) {
                 alert("FIXME: The columns for this list cannot be restored because the list has no id.");
                 return;
             }
index bec92d3..9ba18a6 100644 (file)
@@ -48,6 +48,8 @@ patron.holds.prototype = {
         obj.shelf = params['shelf'];
         obj.tree_id = params['tree_id'];
 
+        obj.determine_hold_interface_type();
+
         var progressmeter = document.getElementById('progress');
 
         JSAN.use('circ.util');
@@ -71,6 +73,7 @@ patron.holds.prototype = {
         JSAN.use('util.list'); obj.list = new util.list( obj.tree_id || 'holds_list');
         obj.list.init(
             {
+                'columns_saved_under' : 'holds_' + obj.hold_interface_type,
                 'columns' : columns.concat(
                     obj.list.fm_columns('acp', {
                         '*' : { 'expanded_label' : true, 'hidden' : true },