]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/conify/global/permission/grp_tree.js
aa604076df7f0815e51ca0a73a6653f118dc3c2f
[Evergreen.git] / Open-ILS / web / conify / global / permission / grp_tree.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.data.ItemFileWriteStore');
22 dojo.require('dojo.date.stamp');
23 dojo.require('dijit.form.NumberSpinner');
24 dojo.require('dijit.form.TextBox');
25 dojo.require('dijit.form.TimeTextBox');
26 dojo.require('dijit.form.ValidationTextBox');
27 dojo.require('dijit.form.CheckBox');
28 dojo.require('dijit.form.FilteringSelect');
29 dojo.require('dijit.form.Textarea');
30 dojo.require('dijit.form.Button');
31 dojo.require('dijit.Dialog');
32 dojo.require('dijit.Tree');
33 dojo.require('dijit.layout.ContentPane');
34 dojo.require('dijit.layout.TabContainer');
35 dojo.require('dijit.layout.LayoutContainer');
36 dojo.require('dijit.layout.SplitContainer');
37 dojo.require('dojox.widget.Toaster');
38 dojo.require('dojox.fx');
39 dojo.require('dojox.grid.Grid');
40 dojo.require('dojox.grid._data.model');
41 dojo.require("dojox.grid.editors");
42
43 // some handy globals
44 var cgi = new CGI();
45 var cookieManager = new HTTP.Cookies();
46 var ses = cookieManager.read('ses') || cgi.param('ses');
47 var server = {};
48 server.pCRUD = new OpenSRF.ClientSession('open-ils.permacrud');
49 server.actor = new OpenSRF.ClientSession('open-ils.actor');
50
51 var current_group;
52 var virgin_out_id = -1;
53
54 var highlighter = {};
55
56 function status_update (markup) {
57         if (parent !== window && parent.status_update) parent.status_update( markup );
58 }
59
60 function save_group () {
61
62         var modified_pgt = new pgt().fromStoreItem( current_group );
63         modified_pgt.ischanged( 1 );
64
65         new_kid_button.disabled = false;
66         save_out_button.disabled = false;
67         delete_out_button.disabled = false;
68
69         server.pCRUD.request({
70                 method : 'open-ils.permacrud.update.pgt',
71                 timeout : 10,
72                 params : [ ses, modified_pgt ],
73                 onerror : function (r) {
74                         highlighter.editor_pane.red.play();
75                         status_update( 'Problem saving data for ' + group_store.getValue( current_group, 'name' ) );
76                 },
77                 oncomplete : function (r) {
78                         var res = r.recv();
79                         if ( res && res.content() ) {
80                                 group_store.setValue( current_group, 'ischanged', 0 );
81                                 highlighter.editor_pane.green.play();
82                                 status_update( 'Saved changes to ' + group_store.getValue( current_group, 'name' ) );
83                         } else {
84                                 highlighter.editor_pane.red.play();
85                                 status_update( 'Problem saving data for ' + group_store.getValue( current_group, 'name' ) );
86                         }
87                 },
88         }).send();
89 }
90
91 function save_perm_map (storeItem) {
92
93         var modified_pgpm = new pgpm().fromStoreItem( storeItem );
94         modified_pgpm.ischanged( 1 );
95
96         server.pCRUD.request({
97                 method : 'open-ils.permacrud.update.pgpm',
98                 timeout : 10,
99                 params : [ ses, modified_pgpm ],
100                 onerror : function (r) {
101                         highlighter.editor_pane.red.play();
102                         status_update( 'Problem saving permission data for ' + group_store.getValue( current_group, 'name' ) );
103                 },
104                 oncomplete : function (r) {
105                         var res = r.recv();
106                         if ( res && res.content() ) {
107                                 perm_map_store.setValue( storeItem, 'ischanged', 0 );
108                                 highlighter.editor_pane.green.play();
109                                 status_update( 'Saved permission changes to ' + group_store.getValue( current_group, 'name' ) );
110                         } else {
111                                 highlighter.editor_pane.red.play();
112                                 status_update( 'Problem saving permission data for ' + group_store.getValue( current_group, 'name' ) );
113                         }
114                 },
115         }).send();
116 }
117
118 function save_them_all (event) {
119
120         var dirtyMaps = [];
121
122     perm_map_store.fetch({
123         query : { ischanged : 1 },
124         onItem : function (item, req) { try { if (this.isItem( item )) dirtyMaps.push( item ); } catch (e) { /* meh */ } },
125         scope : perm_map_store
126     });
127
128     var confirmation = true;
129
130
131     if (event && dirtyMaps.length > 0) {
132         confirmation = confirm(
133             'There are unsaved modified Permission Maps!  '+
134             'OK to save these changes, Cancel to abandon them.'
135         );
136     }
137
138     if (confirmation) {
139         for (var i in dirtyMaps) {
140             save_perm_map(dirtyMaps[i]);
141         }
142     }
143 }
144
145 dojo.addOnUnload( save_them_all );
146