]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/server/serial/scap_editor.js
Reduce hard-coded strings in Serial Control interfaces
[Evergreen.git] / Open-ILS / xul / staff_client / server / serial / scap_editor.js
1 dump('entering serial/scap_editor.js\n');
2 // vim:noet:sw=4:ts=4:
3
4 JSAN.use('serial.editor_base');
5
6 if (typeof serial == 'undefined') serial = {};
7 serial.scap_editor = function (params) {
8     try {
9         netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
10         JSAN.use('util.error'); this.error = new util.error();
11         JSAN.use('OpenILS.data'); this.data = new OpenILS.data(); this.data.init({'via':'stash'});
12         JSAN.use('util.network'); this.network = new util.network();
13     } catch(E) {
14         dump('serial/scap_editor: ' + E + '\n');
15     }
16
17     /* This keeps track of what fields have been edited for styling purposes */
18     this.changed = {};
19
20     /* This holds the original values for prepopulating the field editors */
21     this.editor_values = {};
22
23 };
24
25 serial.scap_editor.prototype = {
26     // we could do this with non-standard '__proto__' property instead
27     'editor_base_init' : serial.editor_base.editor_base_init,
28     'editor_base_apply' : serial.editor_base.editor_base_apply,
29     'editor_base_save' : serial.editor_base.editor_base_save,
30
31     'fm_type' : 'scap',
32     'fm_type_plural' : 'scaps',
33
34     'init' : function (params) {
35         var obj = this;
36
37         params.retrieve_function = 'FM_SCAP_BATCH_RETRIEVE.authoritative';
38
39         obj.editor_base_init(params);
40
41         /* Do it */
42         obj.summarize( obj.scaps );
43         obj.render();
44     },
45
46     /******************************************************************************************************/
47     /* Restore backup copies */
48
49     'reset' :  serial.editor_base.editor_base_reset,
50
51     /******************************************************************************************************/
52     /* Apply a value to a specific field on all the copies being edited */
53
54     'apply' : function(field,value) {
55         var obj = this;
56
57         obj.editor_base_apply(field, value);
58     },
59
60     /******************************************************************************************************/
61
62     'init_panes' : function () {
63         var obj = this;
64         obj.panes_and_field_names = {
65
66         /* These get shown in the left panel */
67         'scap_editor_left_pane' :
68         [
69             [
70                 'id',
71                 { 
72                     //input: 'c = function(v){ obj.apply("distribution",v); if (typeof post_c == "function") post_c(v); }; x = document.createElement("textbox"); x.addEventListener("apply",function(f){ return function(ev) { f(ev.target.value); } }(c), false);',
73
74                 }
75             ],
76             [
77                 'create_date',
78                 {
79                     render: 'fm.create_date() == null ? "" : util.date.formatted_date( fm.create_date(), "%F");',
80                 }
81             ],
82             [
83                 'type',
84                 {
85                     input: 'c = function(v){ obj.apply("type",v); if (typeof post_c == "function") post_c(v); }; x = util.widgets.make_menulist( [ ["basic", "basic"], ["index", "index"], ["supplement", "supplement"] ] ); x.setAttribute("value",obj.editor_values.type); x.addEventListener("apply",function(f){ return function(ev) { f(ev.target.value); } }(c), false);',
86                     value_key: 'type'
87                 }
88             ],
89             [
90                 'active',
91                 {
92                     render: 'fm.active() == null ? $("catStrings").getString("staff.cat.copy_editor.field.unset_or_null") : ( get_bool( fm.active() ) ? $("catStrings").getString("staff.cat.copy_editor.field.circulate.yes_or_true") : $("catStrings").getString("staff.cat.copy_editor.field.circulate.no_or_false") )',
93                     input: 'c = function(v){ obj.apply("active",v); if (typeof post_c == "function") post_c(v); }; x = util.widgets.make_menulist( [ [ $("catStrings").getString("staff.cat.copy_editor.field.circulate.yes_or_true"), get_db_true() ], [ $("catStrings").getString("staff.cat.copy_editor.field.circulate.no_or_false"), get_db_false() ] ] ); x.setAttribute("value",obj.editor_values.active); x.addEventListener("apply",function(f){ return function(ev) { f(ev.target.value); } }(c), false);',
94                     value_key: 'active',
95                     dropdown_key: 'fm.active()'
96                 }
97             ],
98             [
99                 'pattern_code',
100                 { 
101                     input: 'c = function(v){ obj.apply("pattern_code",v); if (typeof post_c == "function") post_c(v); }; x = document.createElement("textbox"); x.setAttribute("value",obj.editor_values.pattern_code); x.addEventListener("apply",function(f){ return function(ev) { f(ev.target.value); } }(c), false);',
102                     value_key: 'pattern_code'
103                 }
104             ]
105         ]
106
107         };
108     },
109
110     /******************************************************************************************************/
111     /* This loops through all our fieldnames and all the copies, tallying up counts for the different values */
112
113     'summarize' :  serial.editor_base.editor_base_summarize,
114
115     /******************************************************************************************************/
116     /* Display the summarized data and inputs for editing */
117
118     'render' :  serial.editor_base.editor_base_render,
119
120     /******************************************************************************************************/
121     /* This actually draws the change button and input widget for a given field */
122     'render_input' : serial.editor_base.editor_base_render_input,
123
124     /******************************************************************************************************/
125     /* save the caption/patterns */
126
127     'save' : function() {
128         var obj = this;
129         obj.editor_base_save('open-ils.serial.caption_and_pattern.batch.update');
130     },
131
132     /* Pattern/caption wizard */
133     "pattern_wizard": function() {
134         var obj = this;
135
136         var onsubmit = function(value) {
137             obj.apply("pattern_code", value);
138             obj.summarize(obj.scaps);
139             obj.render();
140         };
141         netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
142         window.openDialog(
143             xulG.url_prefix("/xul/server/serial/pattern_wizard.xul"),
144             "pattern_wizard",
145             "width=800",
146             onsubmit
147         );
148     },
149
150     /******************************************************************************************************/
151     'save_attributes' : serial.editor_base.editor_base_save_attributes
152 };
153
154 dump('exiting serial/scap_editor.js\n');