sel,
function(o) { return o.getAttribute('retrieve_id'); }
);
+ if (g.sel_list.length > 0) {
+ document.getElementById('retrieve_p').disabled = false;
+ } else {
+ document.getElementById('retrieve_p').disabled = true;
+ }
}
}
);
+ document.getElementById('retrieve_p').disabled = true;
+ document.getElementById('ml').focus();
}
function refresh() {
function retrieve_patron() {
try {
- if (typeof window.xulG == 'object' && typeof window.xulG.new_tab == 'function') {
- for (var i = 0; i < g.sel_list.length; i++) {
- try {
- var url = urls.XUL_PATRON_DISPLAY
- + '?id=' + window.escape( g.sel_list[i] );
- window.xulG.new_tab(
- url, { 'tab_name' : 'Retrieving Patron..' }, {}
- );
- } catch(E) {
- g.error.standard_unexpected_error_alert('Failed to retrieve patron.',E);
- }
+ if (! g.sel_list ) return;
+ if (typeof window.xulG == 'object' && typeof window.xulG.new_tab == 'function') {
+ for (var i = 0; i < g.sel_list.length; i++) {
+ try {
+ var url = urls.XUL_PATRON_DISPLAY
+ + '?id=' + window.escape( g.sel_list[i] );
+ window.xulG.new_tab(
+ url, { 'tab_name' : 'Retrieving Patron..' }, {}
+ );
+ } catch(E) {
+ g.error.standard_unexpected_error_alert('Failed to retrieve patron.',E);
}
}
+ }
} catch(E) {
g.error.standard_unexpected_error_alert('Failed to retrieve patrons.',E);
}
loc += '?doit=1&query=' + window.escape(js2JSON(s));
xulG.new_tab( loc, {}, {} );
} catch(E) {
- g.error.standard_unexpected_error_dialog('spawn search',E);
+ g.error.standard_unexpected_error_alert('spawn search',E);
}
}
if (c) {
var robj = g.network.simple_request('FM_AU_NEW_USERGROUP', [ ses(), g.patron_id, 't' ]);
if (typeof robj.ilsevent != 'undefined') {
- g.error.standard_unexpected_error_dialog('error removing patron from usergroup',robj);
+ g.error.standard_unexpected_error_alert('error removing patron from usergroup',robj);
}
refresh();
alert('Patron removed from group.');
}
}
+ function link_patron(direction) {
+ try {
+ if (direction == null) throw('null paramater not allowed');
+ var first_msg; var second_msg;
+ switch(direction) {
+ case true: first_msg = "Move into this patron's usergroup..."; break;
+ case false: first_msg = "Move this patron into the current usergroup..."; break;
+ default: throw('Invalid parameter. Expected boolean.'); break;
+ }
+ var barcode = window.prompt('Please scan a patron barcode:','',first_msg);
+ JSAN.use('patron.util');
+ var patron_b = patron.util.retrieve_fleshed_au_via_barcode(ses(),barcode);
+ if (typeof patron_b.ilsevent != 'undefined') throw(patron_b);
+ var patron_a = patron.util.retrieve_fleshed_au_via_id(ses(),g.patron_id);
+ if (typeof patron_a.ilsevent != 'undefined') throw(patron_a);
+ switch(direction) {
+ case true: second_msg = "Move patron " + patron_a.card().barcode() + " into patron " + patron_b.card().barcode() + "'s usergroup..."; break;
+ case false: second_msg = "Move patron " + patron_b.card().barcode() + " into patron " + patron_a.card().barcode() + "'s usergroup..."; break;
+ }
+
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
+ var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: auto"><description>' + second_msg + '</description><hbox><spacer flex="1"/><button label="Move" accesskey="M" name="fancy_submit"/><button label="Done" accesskey="D" name="fancy_cancel"/></hbox></vbox>';
+ var xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: vertical"><hbox flex="1">';
+ /************/
+ xml += '<vbox flex="1">';
+ xml += '<hbox><spacer flex="1"/>';
+ if (direction) {
+ xml += '<image src="/xul/server/skin/media/images/patron_right_arrow.png"/>';
+ } else {
+ xml += '<image src="/xul/server/skin/media/images/patron_left_arrow.png"/>';
+ }
+ xml += '</hbox>';
+ xml += '<iframe style="min-height: 100px" flex="1" src="' + xulG.url_prefix( urls.XUL_PATRON_SUMMARY );
+ xml += '?show_name=1&id=' + g.patron_id + '"/>';
+ xml += '</vbox>';
+ xml += '<vbox flex="1">';
+ xml += '<hbox>';
+ if (direction) {
+ xml += '<image src="/xul/server/skin/media/images/patron_right_arrow.png"/>';
+ } else {
+ xml += '<image src="/xul/server/skin/media/images/patron_left_arrow.png"/>';
+ }
+ xml += '<spacer flex="1"/></hbox>';
+ xml += '<iframe style="min-height: 100px" flex="1" src="' + xulG.url_prefix( urls.XUL_PATRON_SUMMARY );
+ xml += '?show_name=1&id=' + patron_b.id() + '"/>';
+ xml += '</vbox>';
+ /************/
+ xml += '</hbox></vbox>';
+
+ var bot_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: auto"><hbox>';
+ bot_xml += '</hbox></vbox>';
+
+ g.data.temp_top = top_xml; g.data.stash('temp_top');
+ g.data.temp_mid = xml; g.data.stash('temp_mid');
+ g.data.temp_bot = bot_xml; g.data.stash('temp_bot');
+ window.open(
+ urls.XUL_FANCY_PROMPT
+ + '?xml_in_stash=temp_mid'
+ + '&top_xml_in_stash=temp_top'
+ + '&bottom_xml_in_stash=temp_bot'
+ + '&title=' + window.escape('Move Patron into a Usergroup'),
+ 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500'
+ );
+ g.data.init({'via':'stash'});
+ if (g.data.fancy_prompt_data == '') { alert('No data'); }
+ else {
+ var patron_c;
+ switch(direction) {
+ case true:
+ patron_a.usrgroup( patron_b.usrgroup() );
+ patron_a.ischanged( '1' );
+ patron_c = patron_a;
+ break;
+ case false:
+ patron_b.usrgroup( patron_a.usrgroup() );
+ patron_b.ischanged( '1' );
+ patron_c = patron_b;
+ break;
+ }
+ var robj = g.network.simple_request('FM_AU_UPDATE',[ ses(), patron_c ]);
+ if (typeof robj.ilsevent != 'undefined') throw(robj);
+ alert('User groups updated.');
+ }
+ refresh();
+ } catch(E) {
+ g.error.standard_unexpected_error_alert('error linking patrons',E);
+ refresh();
+ }
+ }
+
]]>
</script>
<vbox flex="1" class="my_overflow" id="group_panel">
<groupbox>
<caption label="Group Actions"/>
- <menulist id="ml">
- <menupopup>
- <menuitem label="Choose an action..." value="0"/>
- <menuitem label="Register a new Group Member by Cloning this Patron" oncommand="try{clone_patron();}catch(E){alert('FIXME:'+E);}"/>
- <menuitem label="Remove this Patron from the Group" oncommand="try{remove_patron();}catch(E){alert('FIXME:'+E);}"/>
- <menuitem label="Link an existing Patron to this Group" oncommand="try{link_patron();}catch(E){alert('FIXME:'+E);}"/>
- </menupopup>
- </menulist>
+ <menubar id="ml">
+ <menu label="Choose an Action..." accesskey="A" value="0">
+ <menupopup>
+ <menuitem accesskey="N" label="Register a New Group Member by Cloning this Patron" oncommand="try{clone_patron();}catch(E){alert('FIXME:'+E);}"/>
+ <menuitem accesskey="R" label="Remove this Patron from the Group" oncommand="try{remove_patron();}catch(E){alert('FIXME:'+E);}"/>
+ <menuitem accesskey="T" label="Link THIS patron to ANOTHER patron's group." oncommand="try{link_patron(true);}catch(E){alert('FIXME:'+E);}"/>
+ <menuitem accesskey="A" label="Link ANOTHER patron to THIS patron's group." oncommand="try{link_patron(false);}catch(E){alert('FIXME:'+E);}"/>
+ </menupopup>
+ </menu>
+ </menubar>
</groupbox>
<groupbox flex="1">
<caption label="Group Members"/>
<hbox>
<spacer flex="1"/>
- <button label="Retrieve Selected Patrons" accesskey="P" oncommand="try{retrieve_patron();}catch(E){alert(E);}"/>
+ <button id="retrieve_p" label="Retrieve Selected Patrons" accesskey="P" oncommand="try{retrieve_patron();}catch(E){alert(E);}"/>
</hbox>
<tree id="patron_list" flex="1" enableColumnDrag="true" seltype="multiple"/>
</groupbox>