From c7274c046952ae14bd70511ee3b3a3060390a5bd Mon Sep 17 00:00:00 2001
From: Bill Erickson <berick@esilibrary.com>
Date: Wed, 31 Aug 2011 16:05:50 -0400
Subject: [PATCH] Add CSV filetype filter options Vandelay CSV export

Includes generic support for specifying default filename, extension, and
new filter types for the XUL NsIFilePicker wrapper

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
---
 Open-ILS/web/js/dojo/openils/XUL.js             | 25 ++++++++++++++++++++++++-
 Open-ILS/web/js/ui/default/vandelay/vandelay.js |  8 +++++++-
 2 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/Open-ILS/web/js/dojo/openils/XUL.js b/Open-ILS/web/js/dojo/openils/XUL.js
index 8e367dab4c..9d93f2e907 100644
--- a/Open-ILS/web/js/dojo/openils/XUL.js
+++ b/Open-ILS/web/js/dojo/openils/XUL.js
@@ -148,7 +148,7 @@ if(!dojo._hasResource["openils.XUL"]) {
         }
     };
 
-    openils.XUL.contentToFileSaveDialog = function(content, windowTitle) {
+    openils.XUL.contentToFileSaveDialog = function(content, windowTitle, dispositionArgs) {
         var api = new openils.XUL.SimpleXPCOM();
         api.getPrivilegeManager().enablePrivilege("UniversalXPConnect");
 
@@ -156,6 +156,29 @@ if(!dojo._hasResource["openils.XUL"]) {
         picker.init(
             window, windowTitle || "Save File", api.FP.iface.modeSave
         );
+
+        if (dispositionArgs) {
+            /**
+             * https://developer.mozilla.org/En/NsIFilePicker
+             * Example: 
+             * { defaultString : 'MyExport.csv',
+                 defaultExtension : '.csv',
+                 filterName : 'CSV',
+                 filterExtension : '*.csv',
+                 filterAll : true } */
+
+            picker.defaultString = dispositionArgs.defaultString;
+            picker.defaultExtension = dispositionArgs.defaultExtension;
+            if (dispositionArgs.filterName) {
+                picker.appendFilter(
+                    dispositionArgs.filterName,
+                    dispositionArgs.filterExtension
+                );
+            }
+            if (dispositionArgs.filterAll) 
+                picker.appendFilters(picker.filterAll)
+        }
+
         var result = picker.show();
         if (picker.file &&
                 (result == api.FP.iface.returnOK ||
diff --git a/Open-ILS/web/js/ui/default/vandelay/vandelay.js b/Open-ILS/web/js/ui/default/vandelay/vandelay.js
index 75da815548..e166db7508 100644
--- a/Open-ILS/web/js/ui/default/vandelay/vandelay.js
+++ b/Open-ILS/web/js/ui/default/vandelay/vandelay.js
@@ -462,7 +462,13 @@ function exportHandler(type, response) {
             break;
             case 'csv':
                 //content = content.replace(/\\t/g,'\t'); // if we really wanted to do .tsv instead
-                openils.XUL.contentToFileSaveDialog(content);
+                openils.XUL.contentToFileSaveDialog(content, null, {
+                    defaultString : 'VandelayExport.csv',
+                    defaultExtension : '.csv',
+                    filterName : 'CSV',
+                    filterExtension : '*.csv',
+                    filterAll : true
+                } );
             break;
             default:
                 alert('response = ' + response + '\tcontent:\n' + content);
-- 
2.11.0