]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/conify/global/permission/perm_list.js
e91d88a90146636b8c37062af01b3a2ec1a8bacc
[Evergreen.git] / Open-ILS / web / conify / global / permission / perm_list.js
1 /*
2 # ---------------------------------------------------------------------------
3 # Copyright (C) 2008  Georgia Public Library Service / Equinox Software, Inc
4 # Mike Rylander <miker@esilibrary.com>
5
6 # This program is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU General Public License
8 # as published by the Free Software Foundation; either version 2
9 # of the License, or (at your option) any later version.
10
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15 # ---------------------------------------------------------------------------
16 */
17
18 dojo.require('fieldmapper.dojoData');
19 dojo.require('openils.widget.TranslatorPopup');
20 dojo.require('dojo.parser');
21 dojo.require('dojo.string');
22 dojo.require('dojo.data.ItemFileWriteStore');
23 dojo.require('dijit.form.TextBox');
24 dojo.require('dijit.form.ValidationTextBox');
25 dojo.require('dijit.form.Textarea');
26 dojo.require('dijit.layout.ContentPane');
27 dojo.require('dijit.layout.LayoutContainer');
28 dojo.require('dijit.layout.BorderContainer');
29 dojo.require('dojox.widget.Toaster');
30 dojo.require('dojox.fx');
31 dojo.require('dojox.grid.Grid');
32 dojo.require('dojox.grid._data.model');
33 dojo.require("dojox.grid.editors");
34
35 // some handy globals
36 var cgi = new CGI();
37 var cookieManager = new HTTP.Cookies();
38 var ses = cookieManager.read('ses') || cgi.param('ses');
39 var pCRUD = new OpenSRF.ClientSession('open-ils.permacrud');
40
41 var current_perm;
42 var virgin_out_id = -1;
43
44 var highlighter = {};
45 var dirtyStore = [];
46
47
48 function status_update (markup) {
49         if (parent !== window && parent.status_update) parent.status_update( markup );
50 }
51
52 function save_perm () {
53
54         var modified_ppl = new ppl().fromStoreItem( current_perm );
55         modified_ppl.ischanged( 1 );
56         modified_ppl.description( dojo.string.trim( modified_ppl.description() ) );
57         modified_ppl.code( dojo.string.trim( modified_ppl.code() ) );
58
59         pCRUD.request({
60                 method : 'open-ils.permacrud.update.ppl',
61                 timeout : 10,
62                 params : [ ses, modified_ppl ],
63                 onerror : function (r) {
64                         highlighter.red.play();
65                         status_update( 'Problem saving data for ' + perm_store.getValue( current_perm, 'code' ) );
66                 },
67                 oncomplete : function (r) {
68                         var res = r.recv();
69                         if ( res && res.content() ) {
70                                 perm_store.setValue( current_perm, 'ischanged', 0 );
71                                 highlighter.green.play();
72                                 status_update( 'Saved changes to ' + perm_store.getValue( current_perm, 'code' ) );
73                         } else {
74                                 highlighter.red.play();
75                                 status_update( 'Problem saving data for ' + perm_store.getValue( current_perm, 'code' ) );
76                         }
77                 },
78         }).send();
79 }
80
81 function save_them_all (event) {
82
83         perm_store.fetch({
84                 query : { ischanged : 1 },
85                 onItem : function (item, req) { try { if (this.isItem( item )) window.dirtyStore.push( item ); } catch (e) { /* meh */ } },
86                 scope : perm_store
87         });
88
89         var confirmation = true;
90
91
92         if (event && dirtyStore.length > 0) {
93                 confirmation = confirm(
94                         'There are unsaved modified Permissions!  '+
95                         'OK to save these changes, Cancel to abandon them.'
96                 );
97         }
98
99         if (confirmation) {
100                 for (var i in window.dirtyStore) {
101                         window.current_perm = window.dirtyStore[i];
102                         save_perm(true);
103                 }
104
105                 window.dirtyStore = [];
106         }
107 }
108
109 dojo.addOnUnload( save_them_all );
110