</links>
<permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
<actions>
- <retrieve permission="ADMIN_TOOLBAR VIEW_TOOLBAR" context_field="org">
+ <retrieve permission="ADMIN_TOOLBAR STAFF_LOGIN" context_field="org">
<context link="usr" field="home_ou" />
<context link="ws" field="owning_lib" />
</retrieve>
<!ENTITY staff.admin.survey.save_question.label "Save this Question">
<!ENTITY staff.admin.survey.staff_client.label "Staff Client:">
<!ENTITY staff.admin.survey.start.label "Start:">
+<!ENTITY staff.admin.toolbar.new_toolbar.label "New Toolbar">
+<!ENTITY staff.admin.toolbar.new_toolbar.accesskey "N">
+<!ENTITY staff.admin.toolbar.delete_toolbar.label "Delete Toolbar">
+<!ENTITY staff.admin.toolbar.delete_toolbar.accesskey "">
+<!ENTITY staff.admin.toolbar.add_toolbar_button.label "-->">
+<!ENTITY staff.admin.toolbar.add_toolbar_button.accesskey "a">
+<!ENTITY staff.admin.toolbar.remove_toolbar_button.label "<--">
+<!ENTITY staff.admin.toolbar.remove_toolbar_button.accesskey "r">
+<!ENTITY staff.admin.toolbar.move_toolbar_button_up.label "Up">
+<!ENTITY staff.admin.toolbar.move_toolbar_button_up.accesskey "U">
+<!ENTITY staff.admin.toolbar.move_toolbar_button_down.label "Down">
+<!ENTITY staff.admin.toolbar.move_toolbar_button_down.accesskey "D">
+<!ENTITY staff.admin.toolbar.permission_context.label "Permission Context">
+<!ENTITY staff.admin.toolbar.permission_context.accesskey "P">
+<!ENTITY staff.admin.toolbar.cancel_changes.label "Cancel Changes">
+<!ENTITY staff.admin.toolbar.cancel_changes.accesskey "C">
+<!ENTITY staff.admin.toolbar.save_toolbar.label "Save Toolbar">
+<!ENTITY staff.admin.toolbar.save_toolbar.accesskey "S">
+<!ENTITY staff.admin.toolbar.header.available "Available">
+<!ENTITY staff.admin.toolbar.header.selected "Selected">
<!ENTITY staff.admin.work_log.list1.header "Most Recently Logged Staff Actions">
<!ENTITY staff.admin.work_log.list2.header "Most Recently Affected Patrons for Logged Staff Actions and Last Action for each">
<!ENTITY staff.admin.work_log.refresh_btn.label "Refresh">
<!ENTITY staff.main.auth.status "Status">
<!ENTITY staff.main.auth.version "Version">
<!ENTITY staff.main.auth.workstation "Workstation">
-<!ENTITY staff.main.button_bar.none "None">
-<!ENTITY staff.main.button_bar.circ "Circulation">
-<!ENTITY staff.main.button_bar.cat "Cataloging">
<!ENTITY staff.main.button_bar.check_out.label "Check Out">
<!ENTITY staff.main.button_bar.check_out.accesskey "">
<!ENTITY staff.main.button_bar.check_in.label "Check In">
<!ENTITY staff.main.menu.admin.client.hotkeys.clearworkstation.accesskey "">
<!ENTITY staff.main.menu.admin.client.toolbars "Toolbars">
<!ENTITY staff.main.menu.admin.client.toolbars.current "Current">
+<!ENTITY staff.main.menu.admin.client.toolbars.config.label "Configure Toolbars">
+<!ENTITY staff.main.menu.admin.client.toolbars.config.accesskey "">
<!ENTITY staff.main.menu.admin.client.toolbars.setworkstation.label "Set Workstation Default to Current">
<!ENTITY staff.main.menu.admin.client.toolbars.setworkstation.accesskey "">
<!ENTITY staff.main.menu.admin.client.toolbars.clearworkstation.label "Clear Workstation Default">
this.chain.push(
function() {
var f = gen_fm_retrieval_func(
+ 'atb',
+ [
+ api.FM_ATB_RETRIEVE_VIA_PCRUD.app,
+ api.FM_ATB_RETRIEVE_VIA_PCRUD.method,
+ [
+ obj.session.key,
+ {
+ "-or": [
+ { "ws" : obj.list.au[0].wsid() },
+ { "usr" : obj.list.au[0].id() },
+ { "org" : util.functional.map_list( obj.list.my_aou, function(o) { return o.id(); } ) }
+ ]
+ },
+ {
+ "order_by":{"atb":"label"}
+ }
+ ],
+ false
+ ]
+ );
+ try {
+ f();
+ } catch(E) {
+ var error = 'Error: ' + js2JSON(E);
+ obj.error.sdump('D_ERROR',error);
+ throw(E);
+ }
+ }
+ );
+
+
+ this.chain.push(
+ function() {
+ var f = gen_fm_retrieval_func(
'acnp',
[
api.FM_ACNP_RETRIEVE_VIA_PCRUD.app,
'FM_ACNC_RETRIEVE_VIA_PCRUD' : { 'app' : 'open-ils.pcrud', 'method' : 'open-ils.pcrud.search.acnc.atomic' },
'FM_ACNP_RETRIEVE_VIA_PCRUD' : { 'app' : 'open-ils.pcrud', 'method' : 'open-ils.pcrud.search.acnp.atomic' },
'FM_ACNS_RETRIEVE_VIA_PCRUD' : { 'app' : 'open-ils.pcrud', 'method' : 'open-ils.pcrud.search.acns.atomic' },
+ 'FM_ATB_RETRIEVE_VIA_PCRUD' : { 'app' : 'open-ils.pcrud', 'method' : 'open-ils.pcrud.search.atb.atomic' },
'FM_ACP_DETAILS' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.copy_details.retrieve' },
'FM_ACP_DETAILS_VIA_BARCODE' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.copy_details.retrieve.barcode' },
'FM_ACP_DETAILS_VIA_BARCODE.authoritative' : { 'app' : 'open-ils.circ', 'method' : 'open-ils.circ.copy_details.retrieve.barcode.authoritative' },
'XUL_STAT_CAT_EDIT' : '/xul/server/admin/stat_cat_editor.xhtml',
'XUL_SURVEY_WIZARD' : 'chrome://open_ils_staff_client/content/admin/survey_wizard.xul',
'XUL_TIMESTAMP_DIALOG' : '/xul/server/util/timestamp.xul',
+ 'XUL_TOOLBAR_CONFIG' : '/xul/server/admin/toolbar.xul',
'XUL_TRIGGER_EVENTS' : '/xul/server/patron/trigger_events.xul',
'XUL_USER_BUCKETS' : '/xul/server/patron/user_buckets.xul',
'XUL_VERIFY_CREDENTIALS' : '/xul/server/main/verify_credentials.xul',
eval( r.responseText );
}
- // Try workstation pref for button bar
- var button_bar = xulG.pref.getCharPref('open-ils.menu.toolbar');
-
- if (!button_bar) // No workstation pref? Try org unit pref.
- button_bar = String( obj.data.hash.aous['ui.general.button_bar'] );
-
- if (button_bar) {
- var x = document.getElementById('toolbar_' + button_bar);
- if (x) x.setAttribute('hidden','false');
- this.toolbar = button_bar;
- }
-
- // Check for alternate Size pref
- var toolbar_size = xulG.pref.getCharPref('open-ils.menu.toolbar.iconsize');
- if(toolbar_size) this.toolbar_size = toolbar_size;
- // Check for alternate Mode pref
- var toolbar_mode = xulG.pref.getCharPref('open-ils.menu.toolbar.mode');
- if(toolbar_mode) this.toolbar_mode = toolbar_mode;
- // Check for alternate Label Position pref
- var toolbar_labelpos = xulG.pref.getBoolPref('open-ils.menu.toolbar.labelbelow');
- if(toolbar_labelpos) this.toolbar_labelpos = toolbar_labelpos;
-
- if(button_bar || toolbar_size || toolbar_mode || toolbar_labelpos) {
- var toolbox = document.getElementById('main_toolbox');
- var toolbars = toolbox.getElementsByTagName('toolbar');
- for(var i = 0; i < toolbars.length; i++) {
- if(toolbars[i].id == 'toolbar_' + button_bar)
- toolbars[i].setAttribute('hidden', 'false');
- else
- toolbars[i].setAttribute('hidden', 'true');
- if(toolbar_mode) toolbars[i].setAttribute('mode', toolbar_mode);
- if(toolbar_size) toolbars[i].setAttribute('iconsize', toolbar_size);
- if(toolbar_labelpos) addCSSClass(toolbars[i], 'labelbelow');
- }
- }
-
- if(button_bar) {
- var x = document.getElementById('main.menu.admin.client.toolbars.current.popup');
- if (x) {
- var selectitems = x.getElementsByAttribute('value',button_bar);
- if(selectitems.length > 0) selectitems[0].setAttribute('checked','true');
- }
- }
-
- if(toolbar_size) {
- var x = document.getElementById('main.menu.admin.client.toolbars.size.popup');
- if (x) {
- var selectitems = x.getElementsByAttribute('value',toolbar_size);
- if(selectitems.length > 0) selectitems[0].setAttribute('checked','true');
- }
- }
-
- if(toolbar_mode) {
- var x = document.getElementById('main.menu.admin.client.toolbars.mode.popup');
- if (x) {
- var selectitems = x.getElementsByAttribute('value',toolbar_mode);
- if(selectitems.length > 0) selectitems[0].setAttribute('checked','true');
- }
- }
-
- if(toolbar_labelpos) {
- var x = document.getElementById('main.menu.admin.client.toolbars.label_position.popup');
- if (x) {
- var selectitems = x.getElementsByAttribute('value',"under");
- if(selectitems.length > 0) selectitems[0].setAttribute('checked','true');
- }
- }
+ this.button_bar_init();
var cl_first = xulG.pref.getBoolPref('oils.copy_editor.copy_location_name_first');
var menuitems = document.getElementsByAttribute('command','cmd_copy_editor_copy_location_first_toggle');
['oncommand'],
function(event) {
var newToolbar = event.explicitOriginalTarget.getAttribute('value');
- var toolbox = document.getElementById('main_toolbox');
- var toolbars = toolbox.getElementsByTagName('toolbar');
- for(var i = 0; i < toolbars.length; i++) {
- if(toolbars[i].id == 'toolbar_' + newToolbar)
- toolbars[i].setAttribute('hidden', 'false');
- else
- toolbars[i].setAttribute('hidden', 'true');
- }
+ obj.render_toolbar(newToolbar);
obj.toolbar = newToolbar;
}
],
obj.toolbar_labelpos = (altPosition ? "under" : "side");
}
],
+ 'cmd_toolbar_configure' : [
+ ['oncommand'],
+ function(event) {
+ var url = obj.url_prefix( urls.XUL_TOOLBAR_CONFIG );
+ obj.command_tab(event,url,{},{});
+ }
+ ],
'cmd_toolbar_setworkstation' : [
['oncommand'],
function() {
}
},
+ 'button_bar_init' : function() {
+ try {
+
+ var obj = this;
+
+ JSAN.use('util.widgets');
+
+ // populate the menu of available toolbars
+ var x = document.getElementById('main.menu.admin.client.toolbars.current.popup');
+ if (x) {
+ util.widgets.remove_children(x);
+
+ function create_menuitem(label,value,checked) {
+ var menuitem = document.createElement('menuitem');
+ menuitem.setAttribute('name','current_toolbar');
+ menuitem.setAttribute('type','radio');
+ menuitem.setAttribute('label',label);
+ menuitem.setAttribute('value',value);
+ menuitem.setAttribute('command','cmd_toolbar_set');
+ if (checked) menuitem.setAttribute('checked','true');
+ return menuitem;
+ }
+
+ x.appendChild(
+ create_menuitem(
+ offlineStrings.getString('staff.main.button_bar.none'),
+ 'none',
+ true
+ )
+ );
+
+ for (var i = 0; i < this.data.list.atb.length; i++) {
+ var def = this.data.list.atb[i];
+ x.appendChild(
+ create_menuitem(
+ def.label(),
+ def.id()
+ )
+ );
+ }
+ }
+
+ // Try workstation pref for button bar
+ var button_bar = xulG.pref.getCharPref('open-ils.menu.toolbar');
+
+ if (!button_bar) { // No workstation pref? Try org unit pref.
+ if (obj.data.hash.aous['ui.general.button_bar']) {
+ button_bar = String( obj.data.hash.aous['ui.general.button_bar'] );
+ }
+ }
+
+ if (button_bar) {
+ this.render_toolbar(button_bar);
+ this.toolbar = button_bar;
+ }
+
+ // Check for alternate Size pref
+ var toolbar_size = xulG.pref.getCharPref('open-ils.menu.toolbar.iconsize');
+ if(toolbar_size) this.toolbar_size = toolbar_size;
+ // Check for alternate Mode pref
+ var toolbar_mode = xulG.pref.getCharPref('open-ils.menu.toolbar.mode');
+ if(toolbar_mode) this.toolbar_mode = toolbar_mode;
+ // Check for alternate Label Position pref
+ var toolbar_labelpos = xulG.pref.getBoolPref('open-ils.menu.toolbar.labelbelow');
+ if(toolbar_labelpos) this.toolbar_labelpos = toolbar_labelpos;
+
+ if(button_bar || toolbar_size || toolbar_mode || toolbar_labelpos) {
+ var toolbar = document.getElementById('toolbar_main');
+ if(toolbar_mode) toolbar.setAttribute('mode', toolbar_mode);
+ if(toolbar_size) toolbar.setAttribute('iconsize', toolbar_size);
+ if(toolbar_labelpos) addCSSClass(toolbar, 'labelbelow');
+ }
+
+ if(button_bar) {
+ var x = document.getElementById('main.menu.admin.client.toolbars.current.popup');
+ if (x) {
+ var selectitems = x.getElementsByAttribute('value',button_bar);
+ if(selectitems.length > 0) selectitems[0].setAttribute('checked','true');
+ }
+ }
+
+ if(toolbar_size) {
+ var x = document.getElementById('main.menu.admin.client.toolbars.size.popup');
+ if (x) {
+ var selectitems = x.getElementsByAttribute('value',toolbar_size);
+ if(selectitems.length > 0) selectitems[0].setAttribute('checked','true');
+ }
+ }
+
+ if(toolbar_mode) {
+ var x = document.getElementById('main.menu.admin.client.toolbars.mode.popup');
+ if (x) {
+ var selectitems = x.getElementsByAttribute('value',toolbar_mode);
+ if(selectitems.length > 0) selectitems[0].setAttribute('checked','true');
+ }
+ }
+
+ if(toolbar_labelpos) {
+ var x = document.getElementById('main.menu.admin.client.toolbars.label_position.popup');
+ if (x) {
+ var selectitems = x.getElementsByAttribute('value',"under");
+ if(selectitems.length > 0) selectitems[0].setAttribute('checked','true');
+ }
+ }
+
+ // stash the available toolbar buttons for later use in the toolbar editing interface
+ if (typeof this.data.toolbar_buttons == 'undefined') {
+ this.data.toolbar_buttons = {};
+ var nl = $('palette').childNodes;
+ for (var i = 0; i < nl.length; i++) {
+ var id = nl[i].getAttribute('templateid');
+ var label = nl[i].getAttribute('label');
+ if (id && label) {
+ this.data.toolbar_buttons[ id ] = label;
+ }
+ }
+ this.data.stash('toolbar_buttons');
+ }
+
+ } catch(E) {
+ alert('Error in menu.js, button_bar_init(): ' + E);
+ }
+ },
+
'spawn_search' : function(s) {
var obj = this;
obj.error.sdump('D_TRACE', offlineStrings.getFormattedString('menu.spawn_search.msg', [js2JSON(s)]) );
content_params.network_meter = obj.network_meter;
content_params.page_meter = obj.page_meter;
content_params.get_barcode = obj.get_barcode;
+ content_params.render_toolbar_layout = function(layout) { return obj.render_toolbar_layout(layout); };
content_params.set_statusbar = function(slot,text,tooltiptext,click_handler) {
var e = document.getElementById('statusbarpanel'+slot);
if (e) {
'stop_observing' : function() {
xulG.pref.removeObserver('oils.copy_editor.*', this);
+ },
+
+ 'render_toolbar' : function(button_bar) {
+ try {
+
+ this.last_sanctioned_toolbar = button_bar;
+
+ var toolbar = document.getElementById('toolbar_main');
+
+ if (button_bar == 'none' || typeof button_bar == 'undefined') {
+ toolbar.setAttribute('hidden','true');
+ return;
+ }
+
+ // find the layout
+ var layout;
+ JSAN.use('util.widgets'); JSAN.use('util.functional');
+ var def = this.data.hash.atb[ button_bar ];
+ if (!def) def = util.functional.find_list( this.data.list.atb, function(e) { return e.label == button_bar; } );
+ if (!def) {
+ dump('Could not find layout for specified toolbar. Defaulting to a stock toolbar.\n');
+ layout = [ 'circ_checkin', 'toolbarseparator', 'toolbarspacer', 'hotkeys_toggle' ];
+ } else {
+ layout = JSON2js(def.layout());
+ }
+
+ this.render_toolbar_layout(layout);
+
+ } catch(E) {
+ alert('Error in menu.js, render_toolbar('+button_bar+'): ' + E);
+ }
+ },
+
+ 'render_toolbar_layout' : function(layout) {
+ try {
+
+ if (!layout) {
+ this.data.stash_retrieve();
+ this.render_toolbar( this.last_sanctioned_toolbar );
+ return;
+ }
+
+ var toolbar = document.getElementById('toolbar_main');
+
+ // destroy existing toolbar
+ util.widgets.remove_children(toolbar);
+
+ // create new one
+ for (var i = 0; i < layout.length; i++) {
+ var e = layout[i];
+ switch(e) {
+ case 'toolbarseparator':
+ toolbar.appendChild( document.createElement('toolbarseparator') );
+ break;
+ case 'toolbarspacer':
+ var spacer = document.createElement('toolbarspacer');
+ spacer.setAttribute('flex','1');
+ toolbar.appendChild( spacer );
+ break;
+ default:
+ var templates = $('palette').getElementsByAttribute('templateid',e);
+ var template = templates.length > 0 ? templates[0] : null;
+ if (template) {
+ var clone = template.cloneNode(true);
+ toolbar.appendChild( clone );
+ } else {
+ var label = document.createElement('label');
+ label.setAttribute('value',e);
+ toolbar.appendChild( label );
+ }
+ }
+ }
+ toolbar.setAttribute('hidden','false');
+
+ } catch(E) {
+ alert('Error in menu.js, render_toolbar_layout('+layout+'): ' + E);
+ }
}
}
<command id="cmd_hotkeys_set" />
<command id="cmd_hotkeys_setworkstation" />
<command id="cmd_hotkeys_clearworkstation" />
+ <command id="cmd_toolbar_configure" />
<command id="cmd_toolbar_set" />
<command id="cmd_toolbar_setworkstation" />
<command id="cmd_toolbar_clearworkstation" />
<menupopup id="main.menu.admin.client.toolbars.popup">
<menu id="main.menu.admin.client.toolbars.current" label="&staff.main.menu.admin.client.toolbars.current;">
<menupopup id="main.menu.admin.client.toolbars.current.popup">
- <menuitem name="current_toolbar" type="radio" label="&staff.main.button_bar.none;" value="none" command="cmd_toolbar_set" checked="true"/>
- <menuitem name="current_toolbar" type="radio" label="&staff.main.button_bar.circ;" value="circ" command="cmd_toolbar_set"/>
- <menuitem name="current_toolbar" type="radio" label="&staff.main.button_bar.cat;" value="cat" command="cmd_toolbar_set"/>
</menupopup>
</menu>
<menu id="main.menu.admin.client.toolbars.mode" label="&staff.main.menu.admin.client.toolbars.mode;">
</menupopup>
</menu>
<menuseparator />
+ <menuitem label="&staff.main.menu.admin.client.toolbars.config.label;" accesskey="&staff.main.menu.admin.client.toolbars.config.accesskey;" command="cmd_toolbar_configure"/>
+ <menuseparator />
<menuitem label="&staff.main.menu.admin.client.toolbars.setworkstation.label;" accesskey="&staff.main.menu.admin.client.toolbars.setworkstation.accesskey;" command="cmd_toolbar_setworkstation"/>
<menuitem label="&staff.main.menu.admin.client.toolbars.clearworkstation.label;" accesskey="&staff.main.menu.admin.client.toolbars.clearworkstation.accesskey;" command="cmd_toolbar_clearworkstation"/>
</menupopup>
</tooltip>
</box>
+<toolbarpallete id="palette">
+ <toolbarbutton
+ templateid="circ_checkout"
+ command="cmd_circ_checkout"
+ label="&staff.main.button_bar.check_out.label;"
+ tooltiptext="&staff.main.button_bar.check_out.label;"
+ type="menu-button">
+ <menupopup tooltiptext=""> <!-- Little note on this first one - The blank tooltiptext stops the button's tooltiptext from applying to the menu and items -->
+ <menuitem label="&staff.main.menu.circ.checkout.label;" accesskey="&staff.main.menu.circ.checkout.accesskey;" command="cmd_circ_checkout"/>
+ <menuitem label="&staff.main.menu.circ.in_house.label;" accesskey="&staff.main.menu.circ.in_house.accesskey;" command="cmd_in_house_use"/>
+ </menupopup>
+ </toolbarbutton>
+ <toolbarbutton
+ templateid="circ_checkin"
+ command="cmd_circ_checkin"
+ label="&staff.main.button_bar.check_in.label;"
+ tooltiptext="&staff.main.button_bar.check_in.label;"
+ type="menu-button">
+ <menupopup tooltiptext="">
+ <menuitem label="&staff.main.menu.circ.checkin.label;" accesskey="&staff.main.menu.circ.checkin.accesskey;" command="cmd_circ_checkin"/>
+ <menuitem label="&staff.main.menu.circ.hold_capture.label;" accesskey="&staff.main.menu.circ.hold_capture.accesskey;" command="cmd_circ_hold_capture"/>
+ </menupopup>
+ </toolbarbutton>
+ <toolbarbutton
+ templateid="search_opac"
+ command="cmd_search_opac"
+ label="&staff.main.button_bar.search_opac.label;"
+ tooltiptext="&staff.main.button_bar.search_opac.label;"
+ type="menu-button">
+ <menupopup tooltiptext="">
+ <menuitem label="&staff.main.menu.cat.bib_search.label;" accesskey="&staff.main.menu.cat.bib_search.accesskey;" command="cmd_search_opac"/>
+ <menuitem label="&staff.main.menu.cat.search_tcn.label;" accesskey="&staff.main.menu.cat.search_tcn.accesskey;" command="cmd_search_tcn" />
+ <menuitem label="&staff.main.menu.cat.search_bib_id.label;" accesskey="&staff.main.menu.cat.search_bib_id.accesskey;" command="cmd_search_bib_id" />
+ </menupopup>
+ </toolbarbutton>
+ <toolbarbutton
+ templateid="copy_status"
+ command="cmd_copy_status"
+ label="&staff.main.button_bar.item_status.label;"
+ tooltiptext="&staff.main.button_bar.item_status.label;"
+ type="menu-button">
+ <menupopup tooltiptext="">
+ <menuitem label="&staff.main.menu.circ.barcode.show_item;" accesskey="&staff.main.menu.circ.barcode.show_item.accesskey;" command="cmd_copy_status"/>
+ <menuitem label="&staff.main.menu.replace_barcode.label;" command="cmd_replace_barcode"/>
+ </menupopup>
+ </toolbarbutton>
+ <toolbarbutton
+ templateid="patron_search"
+ command="cmd_patron_search"
+ label="&staff.main.button_bar.patron_search.label;"
+ tooltiptext="&staff.main.button_bar.patron_search.label;"
+ type="menu-button">
+ <menupopup tooltiptext="">
+ <menuitem label="&staff.main.menu.search.patrons.label;" accesskey="&staff.main.menu.search.patrons.accesskey;" command="cmd_patron_search" />
+ <menuitem label="&staff.main.menu.search.patrons_barcode.label;" accesskey="&staff.main.menu.search.patrons_barcode.accesskey;" command="cmd_circ_checkout"/>
+ <menuitem label="&staff.main.menu.search.patron_db_id.label;" accesskey="&staff.main.menu.search.patron_db_id.accesskey;" command="cmd_search_usr_id"/>
+ </menupopup>
+ </toolbarbutton>
+ <toolbarbutton
+ templateid="patron_register"
+ command="cmd_patron_register"
+ label="&staff.main.button_bar.patron_registration.label;"
+ tooltiptext="&staff.main.button_bar.patron_registration.label;"
+ type="menu-button">
+ <menupopup tooltiptext="">
+ <menuitem label="&staff.main.menu.circ.patron_registration.label;" accesskey="&staff.main.menu.circ.patron_registration.accesskey;" command="cmd_patron_register"/>
+ <menuitem label="&staff.main.menu.circ.staged_patrons.label;" accesskey="&staff.main.menu.circ.staged_patrons.accesskey;" command="cmd_staged_patrons"/>
+ </menupopup>
+ </toolbarbutton>
+ <toolbarbutton
+ templateid="create_marc"
+ command="cmd_create_marc"
+ label="&staff.main.button_bar.create_marc;"
+ tooltiptext="&staff.main.button_bar.create_marc;"
+ type="menu-button">
+ <menupopup tooltiptext="">
+ <menuitem label="&staff.main.menu.cat.create_marc.label;" accesskey="&staff.main.menu.cat.create_marc.accesskey;" command="cmd_create_marc"/>
+ <menuitem label="&staff.main.menu.cat.z39_50_import.label;" accesskey="&staff.main.menu.cat.z39_50_import.accesskey;" command="cmd_z39_50_import"/>
+ <menuitem label="&staff.main.menu.cat.vandelay.label;" command="cmd_open_vandelay"/>
+ </menupopup>
+ </toolbarbutton>
+ <toolbarbutton
+ templateid="authority_manage"
+ command="cmd_authority_manage"
+ label="&staff.main.button_bar.authority_manage;"
+ tooltiptext="&staff.main.button_bar.authority_manage;" />
+ <toolbarbutton
+ templateid="retrieve_last_record"
+ command="cmd_retrieve_last_record"
+ label="&staff.main.button_bar.retrieve_last_record;"
+ tooltiptext="&staff.main.button_bar.retrieve_last_record;" />
+ <toolbarbutton
+ templateid="portal"
+ command="cmd_portal"
+ label="&staff.main.menu.file.portal.label;"
+ tooltiptext="&staff.main.menu.file.portal.label;" />
+ <toolbarbutton
+ id="cmd_edit_copy_buckets"
+ command="cmd_edit_copy_buckets"
+ label="&staff.main.menu.edit.buckets.copies;"
+ tooltiptext="&staff.main.menu.edit.buckets.copies;" />
+ <toolbarbutton
+ templateid="edit_record_buckets"
+ command="cmd_edit_record_buckets"
+ label="&staff.main.menu.edit.buckets.records;"
+ tooltiptext="&staff.main.menu.edit.buckets.records;" />
+ <toolbarbutton
+ label="&staff.main.menu.circ.renew.label;"
+ tooltiptext="&staff.main.menu.circ.renew.label;"
+ templateid="circ_renew"
+ command="cmd_circ_renew"/>
+ <toolbarbutton
+ label="&staff.main.menu.circ.hold_pull.label;"
+ tooltiptext="&staff.main.menu.circ.hold_pull.label;"
+ command="cmd_circ_hold_pull_list"
+ templateid="circ_hold_pull_list" />
+ <toolbarbutton
+ label="&staff.main.menu.circ.hold_browse.label;"
+ tooltiptext="&staff.main.menu.circ.hold_browse.label;"
+ command="cmd_browse_holds_shelf"
+ templateid="browse_holds_shelf" />
+ <toolbarbutton
+ label="&staff.main.menu.circ.patron_retrieve.label;"
+ tooltiptext="&staff.main.menu.circ.patron_retrieve.label;"
+ command="cmd_retrieve_last_patron"
+ templateid="retrieve_last_patron" />
+ <toolbarbutton
+ label="&staff.main.menu.acq.unified_search.label;"
+ tooltiptext="&staff.main.menu.acq.unified_search.label;"
+ command="cmd_acq_unified_search"
+ templateid="acq_unified_search" />
+ <toolbarbutton
+ label="&staff.main.menu.acq.view_my_pl.label;"
+ tooltiptext="&staff.main.menu.acq.view_my_pl.label;"
+ command="cmd_acq_view_my_pl"
+ templateid="acq_view_my_pl" />
+ <toolbarbutton
+ label="&staff.main.menu.acq.brief_record.label;"
+ tooltiptext="&staff.main.menu.acq.brief_record.label;"
+ command="cmd_acq_new_brief_record"
+ templateid="acq_new_brief_record" />
+ <toolbarbutton
+ label="&staff.main.menu.acq.user_requests.label;"
+ tooltiptext="&staff.main.menu.acq.user_requests.label;"
+ command="cmd_acq_user_requests"
+ templateid="acq_user_requests" />
+ <toolbarbutton
+ label="&staff.main.menu.acq.bib_search.label;"
+ tooltiptext="&staff.main.menu.acq.bib_search.label;"
+ command="cmd_acq_bib_search"
+ templateid="acq_bib_search" />
+ <toolbarbutton
+ label="&staff.main.menu.acq.upload.label;"
+ tooltiptext="&staff.main.menu.acq.upload.label;"
+ command="cmd_acq_upload"
+ templateid="acq_upload" />
+ <toolbarbutton
+ label="&staff.main.menu.acq.create_po.label;"
+ tooltiptext="&staff.main.menu.acq.create_po.label;"
+ command="cmd_acq_create_po"
+ templateid="acq_create_po" />
+ <toolbarbutton
+ label="&staff.main.menu.acq.claim_eligible.label;"
+ tooltiptext="&staff.main.menu.acq.claim_eligible.label;"
+ command="cmd_acq_claim_eligible"
+ templateid="acq_claim_eligible" />
+ <toolbarbutton
+ label="&staff.main.menu.acq.create_invoice.label;"
+ tooltiptext="&staff.main.menu.acq.create_invoice.label;"
+ command="cmd_acq_create_invoice"
+ templateid="acq_create_invoice" />
+ <toolbarbutton
+ label="&staff.main.menu.booking.reservation.label;"
+ tooltiptext="&staff.main.menu.booking.reservation.label;"
+ command="cmd_booking_reservation"
+ templateid="booking_reservation" />
+ <toolbarbutton
+ label="&staff.main.menu.booking.pull_list.label;"
+ tooltiptext="&staff.main.menu.booking.pull_list.label;"
+ command="cmd_booking_pull_list"
+ templateid="booking_pull_list" />
+ <toolbarbutton
+ label="&staff.main.menu.booking.capture.label;"
+ tooltiptext="&staff.main.menu.booking.capture.label;"
+ command="cmd_booking_capture"
+ templateid="booking_capture" />
+ <toolbarbutton
+ label="&staff.main.menu.booking.reservation_pickup.label;"
+ tooltiptext="&staff.main.menu.booking.reservation_pickup.label;"
+ command="cmd_booking_reservation_pickup"
+ templateid="booking_reservation_pickup" />
+ <toolbarbutton
+ label="&staff.main.menu.booking.reservation_return.label;"
+ tooltiptext="&staff.main.menu.booking.reservation_return.label;"
+ command="cmd_booking_reservation_return"
+ templateid="booking_reservation_return" />
+ <toolbarspacer flex="1" />
+ <toolbarbutton
+ templateid="hotkeys_toggle"
+ command="cmd_hotkeys_toggle"
+ type="checkbox"
+ autocheck="false"
+ label="&staff.main.button_bar.hotkeys_toggle;"
+ tooltiptext="&staff.main.button_bar.hotkeys_toggle;"/>
+</toolbarpallete>
+
<!-- The main top level menubar -->
<toolbox id="main_toolbox">
<menubar id="main_menubar">
<menu id="main.menu.admin" />
<menu id="main.menu.help" />
</menubar>
- <toolbar id="toolbar_circ" hidden="true">
- <toolbarbutton
- command="cmd_circ_checkout"
- label="&staff.main.button_bar.check_out.label;"
- tooltiptext="&staff.main.button_bar.check_out.label;"
- type="menu-button">
- <menupopup tooltiptext=""> <!-- Little note on this first one - The blank tooltiptext stops the button's tooltiptext from applying to the menu and items -->
- <menuitem label="&staff.main.menu.circ.checkout.label;" accesskey="&staff.main.menu.circ.checkout.accesskey;" command="cmd_circ_checkout"/>
- <menuitem label="&staff.main.menu.circ.in_house.label;" accesskey="&staff.main.menu.circ.in_house.accesskey;" command="cmd_in_house_use"/>
- </menupopup>
- </toolbarbutton>
- <toolbarbutton
- command="cmd_circ_checkin"
- label="&staff.main.button_bar.check_in.label;"
- tooltiptext="&staff.main.button_bar.check_in.label;"
- type="menu-button">
- <menupopup tooltiptext="">
- <menuitem label="&staff.main.menu.circ.checkin.label;" accesskey="&staff.main.menu.circ.checkin.accesskey;" command="cmd_circ_checkin"/>
- <menuitem label="&staff.main.menu.circ.hold_capture.label;" accesskey="&staff.main.menu.circ.hold_capture.accesskey;" command="cmd_circ_hold_capture"/>
- </menupopup>
- </toolbarbutton>
- <toolbarseparator />
- <toolbarbutton
- command="cmd_search_opac"
- label="&staff.main.button_bar.search_opac.label;"
- tooltiptext="&staff.main.button_bar.search_opac.label;"
- type="menu-button">
- <menupopup tooltiptext="">
- <menuitem label="&staff.main.menu.cat.bib_search.label;" accesskey="&staff.main.menu.cat.bib_search.accesskey;" command="cmd_search_opac"/>
- <menuitem label="&staff.main.menu.cat.search_tcn.label;" accesskey="&staff.main.menu.cat.search_tcn.accesskey;" command="cmd_search_tcn" />
- <menuitem label="&staff.main.menu.cat.search_bib_id.label;" accesskey="&staff.main.menu.cat.search_bib_id.accesskey;" command="cmd_search_bib_id" />
- </menupopup>
- </toolbarbutton>
- <toolbarbutton
- command="cmd_copy_status"
- label="&staff.main.button_bar.item_status.label;"
- tooltiptext="&staff.main.button_bar.item_status.label;"
- type="menu-button">
- <menupopup tooltiptext="">
- <menuitem label="&staff.main.menu.circ.barcode.show_item;" accesskey="&staff.main.menu.circ.barcode.show_item.accesskey;" command="cmd_copy_status"/>
- <menuitem label="&staff.main.menu.replace_barcode.label;" command="cmd_replace_barcode"/>
- </menupopup>
- </toolbarbutton>
- <toolbarseparator />
- <toolbarbutton
- command="cmd_patron_search"
- label="&staff.main.button_bar.patron_search.label;"
- tooltiptext="&staff.main.button_bar.patron_search.label;"
- type="menu-button">
- <menupopup tooltiptext="">
- <menuitem label="&staff.main.menu.search.patrons.label;" accesskey="&staff.main.menu.search.patrons.accesskey;" command="cmd_patron_search" />
- <menuitem label="&staff.main.menu.search.patrons_barcode.label;" accesskey="&staff.main.menu.search.patrons_barcode.accesskey;" command="cmd_circ_checkout"/>
- <menuitem label="&staff.main.menu.search.patron_db_id.label;" accesskey="&staff.main.menu.search.patron_db_id.accesskey;" command="cmd_search_usr_id"/>
- </menupopup>
- </toolbarbutton>
- <toolbarbutton
- command="cmd_patron_register"
- label="&staff.main.button_bar.patron_registration.label;"
- tooltiptext="&staff.main.button_bar.patron_registration.label;"
- type="menu-button">
- <menupopup tooltiptext="">
- <menuitem label="&staff.main.menu.circ.patron_registration.label;" accesskey="&staff.main.menu.circ.patron_registration.accesskey;" command="cmd_patron_register"/>
- <menuitem label="&staff.main.menu.circ.staged_patrons.label;" accesskey="&staff.main.menu.circ.staged_patrons.accesskey;" command="cmd_staged_patrons"/>
- </menupopup>
- </toolbarbutton>
- <toolbarspacer flex="1" />
- <toolbarbutton
- command="cmd_hotkeys_toggle"
- type="checkbox"
- autocheck="false"
- label="&staff.main.button_bar.hotkeys_toggle;"
- tooltiptext="&staff.main.button_bar.hotkeys_toggle;"/>
- </toolbar>
- <toolbar id="toolbar_cat" hidden="true">
- <toolbarbutton
- command="cmd_circ_checkin"
- label="&staff.main.button_bar.check_in.label;"
- tooltiptext="&staff.main.button_bar.check_in.label;"
- type="menu-button">
- <menupopup tooltiptext="">
- <menuitem label="&staff.main.menu.circ.checkin.label;" accesskey="&staff.main.menu.circ.checkin.accesskey;" command="cmd_circ_checkin"/>
- <menuitem label="&staff.main.menu.circ.hold_capture.label;" accesskey="&staff.main.menu.circ.hold_capture.accesskey;" command="cmd_circ_hold_capture"/>
- </menupopup>
- </toolbarbutton>
- <toolbarseparator />
- <toolbarbutton
- command="cmd_search_opac"
- label="&staff.main.button_bar.search_opac.label;"
- tooltiptext="&staff.main.button_bar.search_opac.label;"
- type="menu-button">
- <menupopup tooltiptext="">
- <menuitem label="&staff.main.menu.cat.bib_search.label;" accesskey="&staff.main.menu.cat.bib_search.accesskey;" command="cmd_search_opac"/>
- <menuitem label="&staff.main.menu.cat.search_tcn.label;" accesskey="&staff.main.menu.cat.search_tcn.accesskey;" command="cmd_search_tcn" />
- <menuitem label="&staff.main.menu.cat.search_bib_id.label;" accesskey="&staff.main.menu.cat.search_bib_id.accesskey;" command="cmd_search_bib_id" />
- </menupopup>
- </toolbarbutton>
- <toolbarbutton
- command="cmd_copy_status"
- label="&staff.main.button_bar.item_status.label;"
- tooltiptext="&staff.main.button_bar.item_status.label;"
- type="menu-button">
- <menupopup tooltiptext="">
- <menuitem label="&staff.main.menu.circ.barcode.show_item;" accesskey="&staff.main.menu.circ.barcode.show_item.accesskey;" command="cmd_copy_status"/>
- <menuitem label="&staff.main.menu.replace_barcode.label;" command="cmd_replace_barcode"/>
- </menupopup>
- </toolbarbutton>
- <toolbarseparator />
- <toolbarbutton
- command="cmd_create_marc"
- label="&staff.main.button_bar.create_marc;"
- tooltiptext="&staff.main.button_bar.create_marc;"
- type="menu-button">
- <menupopup tooltiptext="">
- <menuitem label="&staff.main.menu.cat.create_marc.label;" accesskey="&staff.main.menu.cat.create_marc.accesskey;" command="cmd_create_marc"/>
- <menuitem label="&staff.main.menu.cat.z39_50_import.label;" accesskey="&staff.main.menu.cat.z39_50_import.accesskey;" command="cmd_z39_50_import"/>
- <menuitem label="&staff.main.menu.cat.vandelay.label;" command="cmd_open_vandelay"/>
- </menupopup>
- </toolbarbutton>
- <toolbarbutton
- command="cmd_authority_manage"
- label="&staff.main.button_bar.authority_manage;"
- tooltiptext="&staff.main.button_bar.authority_manage;" />
- <toolbarbutton
- command="cmd_retrieve_last_record"
- label="&staff.main.button_bar.retrieve_last_record;"
- tooltiptext="&staff.main.button_bar.retrieve_last_record;" />
- <toolbarspacer flex="1" />
- <toolbarbutton
- command="cmd_hotkeys_toggle"
- type="checkbox"
- autocheck="false"
- label="&staff.main.button_bar.hotkeys_toggle;"
- tooltiptext="&staff.main.button_bar.hotkeys_toggle;"/>
- </toolbar>
+ <toolbar id="toolbar_main" hidden="true"/>
+ <toolbarpallete id="palette" hidden="true"/>
</toolbox>
</overlay>
barcode_choice.asset_label=Item : %1$s
barcode_choice.serial_label=Serial : %1$s
barcode_choice.booking_label=Booking : %1$s
+staff.main.button_bar.none=None
--- /dev/null
+var g = {};
+
+function my_init() {
+ try {
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+ if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+ JSAN.errorLevel = "die"; // none, warn, or die
+ JSAN.addRepository('/xul/server/');
+ JSAN.use('util.error'); g.error = new util.error();
+ g.error.sdump('D_TRACE','my_init() for toolbar.xul');
+
+ JSAN.use('OpenILS.data'); g.data = new OpenILS.data();
+ g.data.stash_retrieve();
+
+ JSAN.use('util.widgets');
+ JSAN.use('util.functional');
+
+ dojo.require('openils.PermaCrud');
+
+ g.pcrud = new openils.PermaCrud({
+ authtoken :ses()
+ });
+
+ if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
+ try { window.xulG.set_tab_name($('adminStrings').getString('staff.admin.toolbar.tab_name')); } catch(E) { alert(E); }
+ }
+
+ init_lists();
+ $('list_actions').appendChild( g.list1.render_list_actions() );
+ g.list1.set_list_actions();
+ populate_list1();
+ render_lib_menu();
+
+ // toolbutton manipulators
+ $('Add').addEventListener('command',Add,'false');
+ $('Remove').addEventListener('command',Remove,'false');
+ $('Up').addEventListener('command',Up,'false');
+ $('Down').addEventListener('command',Down,'false');
+
+ // toolbar manipulators
+ $('Delete').addEventListener('command',Delete,'false');
+ $('New').addEventListener('command',New,'false');
+ $('Cancel').addEventListener('command',Cancel,'false');
+ $('Save').addEventListener('command',Save,'false');
+
+ // restore the toolbar selection
+ window.addEventListener(
+ 'unload',
+ function(ev) {
+ xulG.render_toolbar_layout();
+ },
+ false
+ );
+
+ // i18n
+ $('context_org').setAttribute('label', fieldmapper.IDL.fmclasses.atb.field_map.org.label);
+ $('context_usr').setAttribute('label', fieldmapper.IDL.fmclasses.atb.field_map.usr.label);
+ $('context_ws').setAttribute('label', fieldmapper.IDL.fmclasses.atb.field_map.ws.label);
+
+ } catch(E) {
+ try { g.error.standard_unexpected_error_alert('admin/toolbar.xul',E); } catch(F) { alert(E); }
+ }
+}
+
+function init_lists() {
+ try {
+ JSAN.use('util.list'); JSAN.use('patron.util');
+
+ // list1 = main list containing the action.toolbar entries
+ // list2 = left list containing available toolbar buttons
+ // list3 = right list containing selected toolbar buttons
+
+ init_list1();
+ init_list2();
+ init_list3();
+
+ } catch(E) {
+ alert('Error in toolbar.js, init_lists(): ' + E);
+ }
+}
+
+function init_list1() {
+ try {
+ g.list1 = new util.list('atb_tree');
+
+ var list1_columns = g.list1.fm_columns('atb',{
+ '*':{'hidden':true, 'flex':0},
+ 'atb_usr' : {
+ 'hidden' : false,
+ 'render' : function(my) {
+ if (! my.atb.usr()) return;
+ return my.atb.usr() == ses('staff_id')
+ ? ses('staff_usrname')
+ : patron.util.retrieve_au_via_id(ses(),my.atb.usr()).usrname();
+ }
+ },
+ 'atb_org' : {
+ 'hidden' : false,
+ 'fleshed_display_field' : 'shortname'
+ },
+ 'atb_ws' : {
+ 'hidden' : false,
+ 'render' : function(my) {
+ if (! my.atb.ws()) return;
+ return my.atb.ws() == ses('ws_id')
+ ? ses('ws_name')
+ : my.atb.ws();
+ }
+ },
+ 'atb_label' : { 'hidden' : false, 'flex' : 1 },
+ 'atb_layout' : { 'hidden' : false, 'flex' : 2 }
+ });
+
+ g.list1.init({
+ 'columns' : list1_columns,
+ 'on_select' : handle_list1_selection
+ });
+ } catch(E) {
+ alert('Error in toolbar.js, init_list1(): ' + E);
+ }
+}
+
+function handle_list1_selection(ev) {
+ try {
+ if (oils_lock > 0) {
+ if (g.list1.node.currentIndex != g.list1_last_index) {
+ alert( $('adminStrings').getString('staff.admin.toolbar.unsaved_changes') );
+ g.list1.node.view.selection.select( g.list1_last_index );
+ }
+ return util.widgets.stop_event(ev);
+ }
+ g.list1_last_index = g.list1.node.currentIndex;
+ g.selected_atb = get_atb_from_selection();
+ if (!g.selected_atb) { return; }
+ if (g.selected_atb.org()) {
+ $('lib_menu').value = g.selected_atb.org();
+ $('context').selectedIndex = 0;
+ }
+ if (g.selected_atb.ws()) { $('context').selectedIndex = 1; }
+ if (g.selected_atb.usr()) { $('context').selectedIndex = 2; }
+ g.layout = JSON2js(g.selected_atb.layout());
+ populate_list2_list3();
+ xulG.render_toolbar_layout(g.layout);
+ } catch(E) {
+ alert('Error in toolbar.js, handle_list1_selection(): ' + E);
+ }
+}
+
+function get_atb_from_selection() {
+ try {
+
+ var selected = g.list1.retrieve_selection();
+ if (selected.length > 0) {
+ var treeitem = selected[0]; // seltype="single", so can be only one
+ return g.list1_map[ treeitem.getAttribute('unique_row_counter') ].row.my.atb;
+ } else {
+ return null;
+ }
+
+ } catch(E) {
+ alert('Error in toolbar.js, get_atb_id_from_selection(): ' + E);
+ }
+}
+
+function init_list2() {
+ try {
+ g.list2 = new util.list('left');
+
+ var list2_columns = [
+ {
+ 'id' : 'value',
+ 'label' : $('adminStrings').getString('staff.admin.toolbar.button_id.header'),
+ 'render' : function(my) { return my.value; },
+ 'flex' : 1
+ },
+ {
+ 'id' : 'label',
+ 'label' : $('adminStrings').getString('staff.admin.toolbar.label.header'),
+ 'render' : function(my) { return my.label; },
+ 'flex' : 1
+ }
+ ];
+
+ g.list2.init({
+ 'columns' : list2_columns
+ });
+
+ } catch(E) {
+ alert('Error in toolbar.js, init_list2(): ' + E);
+ }
+}
+
+function get_list2_values_from_selection() {
+ try {
+ var values = [];
+ var selected = g.list2.retrieve_selection();
+ for (var i = 0; i < selected.length; i++) {
+ var treeitem = selected[i];
+ values.push( g.list2_map[ treeitem.getAttribute('unique_row_counter') ].row.my.value );
+ }
+ return values;
+ } catch(E) {
+ alert('Error in toolbar.js, get_list2_values_from_selection(): ' + E);
+ }
+}
+
+function init_list3() {
+ try {
+ g.list3 = new util.list('right');
+
+ var list3_columns = [
+ {
+ 'id' : 'value',
+ 'label' : $('adminStrings').getString('staff.admin.toolbar.button_id.header'),
+ 'render' : function(my) { return my.value; },
+ 'flex' : 1
+ },
+ {
+ 'id' : 'label',
+ 'label' : $('adminStrings').getString('staff.admin.toolbar.label.header'),
+ 'render' : function(my) { return my.label; },
+ 'flex' : 1
+ }
+ ];
+
+ g.list3.init({
+ 'columns' : list3_columns
+ });
+
+ } catch(E) {
+ alert('Error in toolbar.js, init_list2(): ' + E);
+ }
+}
+
+function get_list3_values_from_selection() {
+ try {
+ var values = [];
+ var selected = g.list3.retrieve_selection();
+ for (var i = 0; i < selected.length; i++) {
+ var treeitem = selected[i];
+ values.push( g.list3_map[ treeitem.getAttribute('unique_row_counter') ].row.my.value );
+ }
+ return values;
+ } catch(E) {
+ alert('Error in toolbar.js, get_list3_values_from_selection(): ' + E);
+ }
+}
+
+function populate_list1() {
+ try {
+ g.list1.clear();
+ g.list1_map = {};
+ for (var i = 0; i < g.data.list.atb.length; i++) {
+ var rdata = g.list1.append({
+ 'row' : {
+ 'my' : {
+ 'atb' : g.data.list.atb[i]
+ }
+ }
+ });
+ g.list1_map[ rdata.unique_row_counter ] = rdata;
+ }
+ } catch(E) {
+ alert('Error in toolbar.js, populate_list1(): ' + E);
+ }
+}
+
+function populate_list2_list3(list3_idx) {
+ try {
+
+ g.list2.clear(); g.list2_map = {};
+ g.list3.clear(); g.list3_map = {};
+
+ var seen = {};
+
+ // populate list3, keep track of what to filter from list2
+ for (var i = 0; i < g.layout.length; i++) {
+
+ var value = g.layout[i];
+ var label;
+
+ switch(value) {
+ case 'toolbarseparator':
+ label = $('adminStrings').getString('staff.admin.toolbar.toolbar_separator.list_entry');
+ break;
+ case 'toolbarspacer':
+ label = $('adminStrings').getString('staff.admin.toolbar.toolbar_spacer.list_entry');
+ break;
+ default:
+ label = g.data.toolbar_buttons[value];
+ seen[value] = true;
+ break;
+ }
+
+ var rdata3 = g.list3.append({
+ 'row' : {
+ 'my' : {
+ 'value' : value,
+ 'label' : label
+ }
+ },
+ 'to_bottom' : true,
+ 'no_auto_select' : typeof list3_idx != 'undefined' ? true : undefined
+ });
+ g.list3_map[ rdata3.unique_row_counter ] = rdata3;
+ }
+
+ if (list3_idx) {
+ if (list3_idx < 0) { list3_idx = 0; }
+ g.list3.node.view.selection.select(list3_idx);
+ }
+
+ // populate list2
+ var list2_data = [];
+ for (var value in g.data.toolbar_buttons) {
+ if (seen[value]) { continue; }
+ list2_data.push( { 'value' : value, 'label' : g.data.toolbar_buttons[value] } );
+ }
+ list2_data.sort(
+ function(a,b) {
+ if (a.label < b.label) { return -1; }
+ if (a.label > b.label) { return 1; }
+ return 0;
+ }
+ );
+ list2_data = [
+ { 'value' : 'toolbarseparator', 'label' : $('adminStrings').getString('staff.admin.toolbar.toolbar_separator.list_entry') },
+ { 'value' : 'toolbarspacer', 'label' : $('adminStrings').getString('staff.admin.toolbar.toolbar_spacer.list_entry') }
+ //,{ 'value' : null, 'label' : '---' } // if we want to visually separate the spacer/separator from the other actions
+ ].concat(list2_data);
+
+ for (var i = 0; i < list2_data.length; i++) {
+ var rdata2 = g.list2.append({
+ 'row' : {
+ 'my' : list2_data[i]
+ },
+ 'to_bottom' : true
+ });
+ g.list2_map[ rdata2.unique_row_counter ] = rdata2;
+ }
+
+ } catch(E) {
+ alert('Error in toolbar.js, populate_list2_list3(): ' + E);
+ }
+}
+
+function render_lib_menu() {
+ try {
+ var list = util.functional.map_list(
+ g.data.list.aou,
+ function(o) {
+ var sname = o.shortname(); for (i = sname.length; i < 20; i++) sname += ' ';
+ return [
+ o.name() ? sname + ' ' + o.name() : o.shortname(),
+ o.id(),
+ false,
+ ( g.data.hash.aout[ o.ou_type() ].depth() * 2),
+ ];
+ }
+ );
+ var ml = util.widgets.make_menulist( list, ses('ws_ou') );
+ ml.setAttribute('id','lib_menu');
+
+ var x = $('lib_menu_placeholder');
+ if (x) {
+ util.widgets.remove_children(x);
+ x.appendChild(ml);
+ }
+
+ } catch(E) {
+ alert('Error in toolbar.js, render_lib_menu(): ' + E);
+ }
+}
+
+function lock_top_buttons() {
+ try {
+ oils_lock_page();
+ $('New').disabled = true;
+ $('Delete').disabled = true;
+ $('Save').disabled = false;
+ $('Cancel').disabled = false;
+ } catch(E) {
+ alert('Error in toolbar.js, lock_top_buttons(): ' + E);
+ }
+}
+
+function unlock_top_buttons() {
+ try {
+ oils_unlock_page();
+ $('New').disabled = false;
+ $('Delete').disabled = false;
+ $('Save').disabled = true;
+ $('Cancel').disabled = true;
+ } catch(E) {
+ alert('Error in toolbar.js, lock_top_buttons(): ' + E);
+ }
+}
+
+function Add(ev) {
+ try {
+ lock_top_buttons();
+ var values_to_add = get_list2_values_from_selection();
+ var temp = get_list3_values_from_selection();
+ var add_after_this_value = temp[ temp.length - 1 ]; // last selected value from list3
+ var add_after_this_position = g.layout.indexOf(add_after_this_value) + 1;
+
+ for (var i = values_to_add.length - 1; i >= 0; i--) { // iterate backwards so that we add them forwards
+ if (!values_to_add[i]) { continue; }
+ g.layout.splice(add_after_this_position,0,values_to_add[i]);
+ }
+
+ populate_list2_list3();
+ xulG.render_toolbar_layout(g.layout);
+
+ } catch(E) {
+ alert('Error in toolbar.js, Add(): ' + E);
+ }
+}
+
+function Remove(ev) {
+ try {
+ lock_top_buttons();
+ var values_to_remove = get_list3_values_from_selection();
+ for (var i = 0; i < values_to_remove.length; i++) {
+ var idx = g.layout.indexOf(values_to_remove[i]);
+ g.layout.splice(idx,1);
+ }
+
+ populate_list2_list3();
+ xulG.render_toolbar_layout(g.layout);
+
+ } catch(E) {
+ alert('Error in toolbar.js, Remove(): ' + E);
+ }
+}
+
+function Up(ev) {
+ try {
+ lock_top_buttons();
+ var values_to_move = get_list3_values_from_selection();
+ var idx;
+ for (var i = 0; i < values_to_move.length; i++) {
+ idx = g.layout.indexOf(values_to_move[i]);
+ if (idx == 0) { continue; }
+ g.layout.splice(idx,1);
+ g.layout.splice(idx-1,0,values_to_move[i]);
+ }
+
+ populate_list2_list3(idx-1);
+ xulG.render_toolbar_layout(g.layout);
+
+ } catch(E) {
+ alert('Error in toolbar.js, Up(): ' + E);
+ }
+}
+
+function Down(ev) {
+ try {
+ lock_top_buttons();
+ var values_to_move = get_list3_values_from_selection();
+ var idx;
+ for (var i = values_to_move.length - 1; i >= 0; i--) {
+ idx = g.layout.indexOf(values_to_move[i]);
+ g.layout.splice(idx+2,0,values_to_move[i]);
+ g.layout.splice(idx,1);
+ }
+
+ populate_list2_list3(idx+1);
+ xulG.render_toolbar_layout(g.layout);
+
+ } catch(E) {
+ alert('Error in toolbar.js, Down(): ' + E);
+ }
+}
+
+function Delete(ev) {
+ try {
+ g.selected_atb.isdeleted(1);
+
+ g.pcrud.apply(g.selected_atb);
+
+ delete g.data.hash.atb[ g.selected_atb.id() ];
+
+ var idx;
+ for (var i = 0; i < g.data.list.atb.length; i++) {
+ if ( g.data.list.atb[i].id() == g.selected_atb.id() ) { idx = i; }
+ }
+ g.data.list.atb.splice(idx,1);
+
+ g.data.stash('hash','list');
+
+ unlock_top_buttons();
+
+ populate_list1();
+
+
+ } catch(E) {
+ alert('Error in toolbar.js, Delete(): ' + E);
+ }
+}
+
+function New(ev) {
+ try {
+ var name = window.prompt('Enter label for toolbar:');
+ if (!name) { return; }
+
+ var new_atb = new atb();
+ new_atb.isnew('1');
+ new_atb.label(name);
+ new_atb.layout('[]');
+ new_atb.usr(ses('staff_id'));
+
+ var rdata = g.list1.append({
+ 'row' : {
+ 'my' : {
+ 'atb' : new_atb
+ }
+ }
+ });
+ g.list1_map[ rdata.unique_row_counter ] = rdata;
+
+ setTimeout(
+ function() {
+ lock_top_buttons();
+ }, 1000
+ );
+
+ } catch(E) {
+ alert('Error in toolbar.js, New(): ' + E);
+ }
+}
+
+function Cancel(ev) {
+ try {
+ unlock_top_buttons();
+ g.selected_atb = get_atb_from_selection();
+ if (!g.selected_atb) { return; }
+
+ if (g.selected_atb.id()) { // existing atb
+
+ g.layout = JSON2js(g.selected_atb.layout());
+ populate_list2_list3();
+ xulG.render_toolbar_layout(g.layout);
+
+ } else { // new atb
+
+ populate_list1();
+ populate_list2_list3();
+ }
+
+ } catch(E) {
+ alert('Error in toolbar.js, Cancel(): ' + E);
+ }
+}
+
+function Save(ev) {
+ try {
+ g.selected_atb.layout( js2JSON( g.layout ) );
+ switch($('context').selectedIndex) {
+ case 0: // org
+ g.selected_atb.org($('lib_menu').value);
+ g.selected_atb.ws(null);
+ g.selected_atb.usr(null);
+ break;
+ case 1: // ws
+ g.selected_atb.org(null);
+ g.selected_atb.ws(ses('ws_id'));
+ g.selected_atb.usr(null);
+ break;
+ case 2: // usr
+ g.selected_atb.org(null);
+ g.selected_atb.ws(null);
+ g.selected_atb.usr(ses('staff_id'));
+ break;
+ }
+ g.selected_atb.ischanged(1);
+
+ g.pcrud.apply(g.selected_atb);
+
+ setTimeout( // is pcrud implicitly authoritative?
+ function() {
+ JSAN.use('util.network');
+ var net = new util.network;
+ var r = net.simple_request(
+ 'FM_ATB_RETRIEVE_VIA_PCRUD',
+ [
+ ses(),
+ {
+ "-or": [
+ { "ws" : g.data.list.au[0].wsid() },
+ { "usr" : g.data.list.au[0].id() },
+ { "org" : util.functional.map_list( g.data.list.my_aou, function(o) { return o.id(); } ) }
+ ]
+ },
+ {
+ "order_by":{"atb":"label"}
+ }
+ ]
+ );
+ g.data.hash.atb = util.functional.convert_object_list_to_hash(r,null);
+ g.data.list.atb = r;
+
+ g.data.stash('hash','list');
+
+ unlock_top_buttons();
+
+ populate_list1();
+ }, 1000
+ );
+
+ } catch(E) {
+ alert('Error in toolbar.js, Save(): ' + E);
+ }
+}
+
+
--- /dev/null
+<?xml version="1.0"?>
+<!-- Application: Evergreen Staff Client -->
+<!-- Screen: Example Template for remote xul -->
+
+<!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
+<!-- STYLESHEETS -->
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="/xul/server/skin/global.css" type="text/css"?>
+
+<!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
+<!-- LOCALIZATION -->
+<!DOCTYPE window PUBLIC "" ""[
+ <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
+]>
+
+<!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
+<!-- OVERLAYS -->
+<?xul-overlay href="/xul/server/OpenILS/util_overlay.xul"?>
+
+<window id="main_toolbar_win"
+ onload="try { my_init(); font_helper(); persist_helper(); } catch(E) { alert(E); }"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
+ <!-- BEHAVIOR -->
+ <script type="text/javascript">
+ var myPackageDir = 'open_ils_staff_client'; var IAMXUL = true;
+ </script>
+ <scripts id="openils_util_scripts"/>
+ <messagecatalog id="adminStrings" src='/xul/server/locale/<!--#echo var="locale"-->/admin.properties'/>
+
+ <script type="text/javascript" src="/xul/server/main/JSAN.js"/>
+ <script type="text/javascript" src="toolbar.js"/>
+
+ <vbox flex="1">
+
+ <hbox>
+ <spacer flex="1"/>
+ <button id="Delete"
+ label="&staff.admin.toolbar.delete_toolbar.label;"
+ accesskey="&staff.admin.toolbar.delete_toolbar.accesskey;"
+ />
+ <button id="New"
+ label="&staff.admin.toolbar.new_toolbar.label;"
+ accesskey="&staff.admin.toolbar.new_toolbar.accesskey;"
+ />
+ </hbox>
+ <tree id="atb_tree" flex="1" enableColumnDrag="true" seltype="single"/>
+ <hbox id="list_actions"/>
+ <splitter><grippy/></splitter>
+ <hbox flex="1">
+ <vbox flex="1">
+ <label value="&staff.admin.toolbar.header.available;" />
+ <tree id="left" flex="1" enableColumnDrag="true" />
+ </vbox>
+ <splitter/>
+ <vbox>
+ <spacer flex="1"/>
+ <button id="Remove"
+ label="&staff.admin.toolbar.remove_toolbar_button.label;"
+ accesskey="&staff.admin.toolbar.remove_toolbar_button.accesskey;"
+ />
+ <button id="Add"
+ label="&staff.admin.toolbar.add_toolbar_button.label;"
+ accesskey="&staff.admin.toolbar.add_toolbar_button.accesskey;"
+ />
+ <spacer flex="1"/>
+ <button id="Up"
+ label="&staff.admin.toolbar.move_toolbar_button_up.label;"
+ accesskey="&staff.admin.toolbar.move_toolbar_button_up.accesskey;"
+ />
+ <button id="Down"
+ label="&staff.admin.toolbar.move_toolbar_button_down.label;"
+ accesskey="&staff.admin.toolbar.move_toolbar_button_down.accesskey;"
+ />
+ <spacer flex="1"/>
+ </vbox>
+ <splitter/>
+ <vbox flex="1">
+ <label value="&staff.admin.toolbar.header.selected;" />
+ <tree id="right" flex="1" enableColumnDrag="true" />
+ </vbox>
+ </hbox>
+ <hbox>
+ <label control="context"
+ value="&staff.admin.toolbar.permission_context.label;"
+ accesskey="&staff.admin.toolbar.permission_context.accesskey;"
+ />
+ <hbox id="lib_menu_placeholder" />
+ <radiogroup id="context" orient="horizontal">
+ <radio id="context_org" />
+ <radio id="context_ws" />
+ <radio id="context_usr" />
+ </radiogroup>
+ <spacer flex="1"/>
+ <button id="Cancel" disabled="true"
+ label="&staff.admin.toolbar.cancel_changes.label;"
+ accesskey="&staff.admin.toolbar.cancel_changes.accesskey;"
+ />
+ <button id="Save" disabled="true"
+ label="&staff.admin.toolbar.save_toolbar.label;"
+ accesskey="&staff.admin.toolbar.save_toolbar.accesskey;"
+ />
+ </hbox>
+
+ </vbox>
+
+</window>
+
staff.admin.font_settings.status_msg.ALL_FONTS_16PT=Global Font set to 16pt
staff.admin.font_settings.status_msg.ALL_FONTS_17PT=Global Font set to 17pt
staff.admin.font_settings.status_msg.ALL_FONTS_18PT=Global Font set to 18pt
+staff.admin.toolbar.unsaved_changes=Unsaved changes. Choose either Save Toolbar or Cancel Changes if you wish to select a different toolbar.
+staff.admin.toolbar.tab_name=Toolbars
+staff.admin.toolbar.button_id.header=Button ID
+staff.admin.toolbar.label.header=Label
+staff.admin.toolbar.toolbar_separator.list_entry=Toolbar Separator
+staff.admin.toolbar.toolbar_spacer.list_entry=Toolbar Spacer
staff.admin.transit_list.missing_list=Missing library list.
staff.admin.transit_list.no_match=No matching transits.
staff.admin.transit_list.invalid_date=Invalid Date (%1$s), setting to Today