]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/server/cat/copy_notes.xul
Improve Firefox/XULRunner Support
[working/Evergreen.git] / Open-ILS / xul / staff_client / server / cat / copy_notes.xul
1 <?xml version="1.0"?>
2 <!-- Application: Evergreen Staff Client -->
3 <!-- Screen: Patron Display -->
4 <!--
5  vim:noet:sw=4:ts=4
6 -->
7
8 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
9 <!-- STYLESHEETS -->
10 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
11 <?xml-stylesheet href="/xul/server/skin/global.css" type="text/css"?>
12 <?xml-stylesheet href="/xul/server/skin/patron_display.css" type="text/css"?>
13
14 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
15 <!-- LOCALIZATION -->
16 <!DOCTYPE window PUBLIC "" ""[
17     <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
18 ]>
19
20 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
21 <!-- OVERLAYS -->
22 <?xul-overlay href="/xul/server/OpenILS/util_overlay.xul"?>
23
24 <window id="copy_notes_win" width="700" height="550"
25     oils_persist="height width sizemode"
26     title="&staff.cat.copy_editor.copy_notes.label;"
27     onload="try{ my_init(); font_helper(); persist_helper(); } catch(E) { alert(E); }"
28     xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
29
30     <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
31     <!-- BEHAVIOR -->
32         <script type="text/javascript">var myPackageDir = 'open_ils_staff_client'; var IAMXUL = true; var g = {};</script>
33         <scripts id="openils_util_scripts"/>
34
35     <script type="text/javascript" src="/xul/server/main/JSAN.js"/>
36     <script>
37     <![CDATA[
38
39         function $(id) { return document.getElementById(id); }
40
41         function my_init() {
42             try {
43                 if (typeof JSAN == 'undefined') { 
44                     throw( $("commonStrings").getString('common.jsan.missing') );
45                 }
46                 JSAN.errorLevel = "die"; // none, warn, or die
47                 JSAN.addRepository('/xul/server/');
48
49                 JSAN.use('util.error'); g.error = new util.error();
50                 JSAN.use('util.network'); g.network = new util.network();
51                 JSAN.use('util.date'); JSAN.use('util.money'); 
52                 JSAN.use('OpenILS.data'); g.data = new OpenILS.data(); g.data.init({'via':'stash'});
53
54                 g.error.sdump('D_TRACE','my_init() for copy_notes.xul');
55
56                 g.copy_id = xul_param('copy_id',{'modal_xulG':true});
57
58                 refresh();
59
60             } catch(E) {
61                 var err_msg = $("commonStrings").getFormattedString('common.exception', ['cat/copy_notes.xul', js2JSON(E)]);
62                 try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
63                 alert(err_msg);
64             }
65         }
66
67         function refresh() {
68             retrieve_notes(); render_notes();
69         }
70
71         function retrieve_notes() {
72             g.notes = g.network.simple_request('FM_ACPN_RETRIEVE_ALL',[ { 'authtoken' : ses(), 'itemid' : g.copy_id } ]).reverse();
73         }
74
75         function apply(node,field,value) {
76             util.widgets.apply(
77                 node,'name',field,
78                 function(n) {
79                     switch(n.nodeName) {
80                         case 'description' : n.appendChild( document.createTextNode( value ) ); break;
81                         case 'label' : n.value = value; break;
82                         default : n.value = value; break;
83                     }
84                 }
85             );
86         }
87
88         function render_notes() {
89             JSAN.use('util.widgets'); util.widgets.remove_children('notes_panel');
90             var np = $('notes_panel');
91                 var hbox = document.createElement('hbox'); np.appendChild(hbox);
92                     var btn = document.createElement('button'); hbox.appendChild(btn);
93                         btn.setAttribute('label', $('catStrings').getString('staff.cat.copy_notes.render_notes.label'));
94                         btn.setAttribute('accesskey', $('catStrings').getString('staff.cat.copy_notes.render_notes.accesskey'));
95                         btn.setAttribute('oncommand','new_note()');
96
97             for (var i = 0; i < g.notes.length; i++) {
98
99                 /* template */
100                 var node = $('note_template').cloneNode(true); np.appendChild(node); node.hidden = false;
101                 apply(node,'create_date', util.date.formatted_date( g.notes[i].create_date(), '%{localized}' ));
102                 util.widgets.apply(node,'name','create_date',
103                     function(n) {
104                         n.setAttribute(
105                             "tooltiptext",
106                             $('catStrings').getString('staff.cat.copy_notes.widgets_apply.note_id') + " "
107                             + g.notes[i].id() + " " 
108                             + $('catStrings').getString('staff.cat.copy_notes.widgets_apply.creator_id') + " "
109                             + g.notes[i].creator()
110                         );
111                     }
112                 );
113                 apply(node,'title',g.notes[i].title());
114                 apply(node,'pub',get_bool( g.notes[i].pub() ) ? $('catStrings').getString('staff.cat.copy_notes.widgets.public') : $('catStrings').getString('staff.cat.copy_notes.widgets.private'));
115                 apply(node,'value',g.notes[i].value());
116                 apply(node,'id',g.notes[i].id());
117                 apply(node,'creator',g.notes[i].creator());
118
119                 /* button bar */
120                 var hb = document.createElement('hbox'); np.appendChild(hb);
121                     var btn1 = document.createElement('button'); hb.appendChild(btn1);
122                         btn1.setAttribute('label', $('catStrings').getString('staff.cat.copy_notes.delete_note.label'));
123                         btn1.setAttribute('image',"/xul/server/skin/media/images/up_arrow.gif");
124
125                         btn1.addEventListener(
126                             'command',
127                             function(id){ return function() { 
128                                 var r = g.error.yns_alert(
129                                     $('catStrings').getFormattedString('staff.cat.copy_notes.delete_note.prompt.msg', [g.notes[id].title(), util.date.formatted_date( g.notes[id].create_date(), '%{localized}')]),
130                                     $('catStrings').getString('staff.cat.copy_notes.delete_note.prompt.title'),
131                                     $('catStrings').getString('staff.cat.copy_notes.delete_note.prompt.yes'),
132                                     $('catStrings').getString('staff.cat.copy_notes.delete_note.prompt.no'),
133                                     null,
134                                     $('commonStrings').getString('common.confirm')
135                                 ); 
136                                 if (r == 0) {
137                                     g.network.simple_request('FM_ACPN_DELETE',[ses(),g.notes[id].id()]);
138                                     setTimeout(function() { 
139                                         alert($('catStrings').getString('staff.cat.copy_notes.delete_note.success'));
140                                         refresh(); },0
141                                     );
142                                 }
143                             } }(i),
144                             false
145                         );
146                     var spacer = document.createElement('spacer'); hb.appendChild(spacer); spacer.flex = 1;
147                     var btn2 = document.createElement('button'); hb.appendChild(btn2);
148                         btn2.setAttribute('label', $('catStrings').getString('staff.cat.copy_notes.delete_note.close_window'));
149                         btn2.setAttribute('accesskey', $('catStrings').getString('staff.cat.copy_notes.delete_note.close_window.accesskey'));
150                         btn2.setAttribute('oncommand','window.close();');
151             }
152
153         }
154         
155         function new_note() {
156             try {
157                 var xml = '<groupbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1"> \
158                     <caption label="' + $('catStrings').getString('staff.cat.copy_notes.new_note.label') + '"/> \
159                     <grid flex="1"><columns><column/><column flex="1"/></columns> \
160                         <rows> \
161                             <row><label value="' + $('catStrings').getString('staff.cat.copy_notes.new_note.public') + '"/><checkbox id="pub" name="fancy_data" checked="false"/></row> \
162                             <row><label value="' + $('catStrings').getString('staff.cat.copy_notes.new_note.title') + '"/><textbox id="title" name="fancy_data" context="clipboard"/></row> \
163                             <row><label value="' + $('catStrings').getString('staff.cat.copy_notes.new_note.note') + '"/><textbox multiline="true" id="note" name="fancy_data" context="clipboard"/></row>';
164                 var show_initials = String( g.data.hash.aous['ui.staff.require_initials'] ) == 'true';
165                 if (show_initials) {
166                     xml += '<row><label value="'+$("catStrings").getString('staff.cat.copy_notes.new_note.initials')+'"/><textbox id="initials" name="fancy_required_data" context="clipboard"/></row>';
167                 }
168                 xml += '<row><spacer/><hbox> \
169                                 <button label="' + $('catStrings').getString('staff.cat.copy_notes.new_note.cancel.label') + '" name="fancy_cancel" accesskey="' + $('catStrings').getString('staff.cat.copy_notes.new_note.cancel.accesskey') + '"/> \
170                                 <button label="' + $('catStrings').getString('staff.cat.copy_notes.new_note.add_note.label') + '" accesskey="' + $('catStrings').getString('staff.cat.copy_notes.new_note.add_note.accesskey') + '" name="fancy_submit"/></hbox></row> \
171                         </rows></grid></groupbox>';
172                 JSAN.use('util.window'); var win = new util.window();
173                 var fancy_prompt_data = win.open(
174                     urls.XUL_FANCY_PROMPT,
175                     'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
176                     { 'xml' : xml, 'focus' : 'title', 'title' : $('catStrings').getString('staff.cat.copy_notes.new_note.add_note.label') }
177                 );
178                 if (fancy_prompt_data.fancy_status == 'complete') {
179                     //alert(js2JSON(g.data.fancy_prompt_data));
180                     var note = new acpn();
181                     note.isnew(1);
182                     note.title( fancy_prompt_data.title );
183                     if (fancy_prompt_data.initials) {
184                         fancy_prompt_data.note = fancy_prompt_data.note 
185                             + $("commonStrings").getFormattedString('staff.initials.format',[fancy_prompt_data.initials,util.date.formatted_date(new Date(),'%{localized_date}'), ses('ws_ou_shortname')]);
186                     }
187                     note.value( fancy_prompt_data.note );
188                     note.pub( get_bool( fancy_prompt_data.pub ) ? get_db_true() : get_db_false() );
189                     note.owning_copy( g.copy_id );
190                     var r = g.network.simple_request('FM_ACPN_CREATE',[ ses(), note ]);
191                     if (typeof r.ilsevent != 'undefined') throw(r);
192                     setTimeout(function() {
193                         refresh();},0
194                     );
195                 }
196             } catch(E) {
197                 g.error.standard_unexpected_error_alert($('catStrings').getString('staff.cat.copy_notes.new_note.error'),E);
198             }
199         }
200
201     ]]>
202     </script>
203
204     <messagecatalog id="catStrings" src="/xul/server/locale/<!--#echo var='locale'-->/cat.properties" />
205     <messagecatalog id="circStrings" src="/xul/server/locale/<!--#echo var='locale'-->/circ.properties" />
206
207     <stack hidden="true" id="note_template" flex="1">
208         <groupbox flex="1" style="background-color: black;"/>
209         <groupbox flex="1" style="background-color: #FFDE00; -moz-border-radius-topright: 35px;" >
210             <hbox>
211                 <description name="title" class="copyable" style="font-weight: bold"/>
212                 <spacer flex="1"/>
213                 <description name="create_date" class="copyable" style="font-weight: bold"/>
214                 <description name="pub" class="copyable" style="font-weight: bold"/>
215             </hbox>
216             <description class="copyable" name="value"/>
217         </groupbox>
218     </stack>
219
220     <vbox flex="1" class="my_overflow" id="notes_panel">
221     </vbox>
222
223
224 </window>
225