[open-ils-commits] r13954 - in trunk/Open-ILS/xul/staff_client/server: circ locale/en-US (phasefx)
svn at svn.open-ils.org
svn at svn.open-ils.org
Thu Sep 3 04:24:41 EDT 2009
Author: phasefx
Date: 2009-09-03 04:24:36 -0400 (Thu, 03 Sep 2009)
New Revision: 13954
Added:
trunk/Open-ILS/xul/staff_client/server/circ/alternate_copy_summary.js
trunk/Open-ILS/xul/staff_client/server/circ/alternate_copy_summary.xul
Modified:
trunk/Open-ILS/xul/staff_client/server/circ/copy_status.js
trunk/Open-ILS/xul/staff_client/server/circ/copy_status.xul
trunk/Open-ILS/xul/staff_client/server/circ/copy_status_overlay.xul
trunk/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties
Log:
Alternate Item Status View
This is a work in process and I expect a lot of churn; I promise to I18N-ize it before it leaves trunk. Some stuff like Rolling Counter is more mock-up than anything; I have no idea what a Rolling Counter is. :D
The main notion here is that we want a quick toggle in Item Status for a denser view of information for a single item. Something less like the current Actions -> Show Item Details and more like the MARC View button in the Z39.50
interface. Note, you can scan in new barcodes while remaining in this view. In general, I want to move away from pop-up dialogs and interfaces in any case, and this sort of deck swapping is probably the future.
Feedback welcome.
Added: trunk/Open-ILS/xul/staff_client/server/circ/alternate_copy_summary.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/alternate_copy_summary.js (rev 0)
+++ trunk/Open-ILS/xul/staff_client/server/circ/alternate_copy_summary.js 2009-09-03 08:24:36 UTC (rev 13954)
@@ -0,0 +1,192 @@
+var error;
+var network;
+
+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'); error = new util.error();
+ error.sdump('D_TRACE','my_init() for alternate_copy_summary.xul');
+
+ JSAN.use('util.network'); network = new util.network();
+
+ setTimeout( function() { load_item(); }, 1000 ); // timeout so xulG gets a chance to get pushed in
+
+ } catch(E) {
+ try { error.standard_unexpected_error_alert('main/test.xul',E); } catch(F) { alert(E); }
+ }
+}
+
+function set(name,value) {
+ var nodes = document.getElementsByAttribute('name',name);
+ for (var i = 0; i < nodes.length; i++) {
+ if (value) { nodes[i].setAttribute('value',value); nodes[i].value = value; };
+ }
+}
+
+function load_item() {
+ if (! xulG.barcode) return;
+ var details = network.simple_request('FM_ACP_DETAILS_VIA_BARCODE.authoritative', [ ses(), xulG.barcode ]);
+ // Should get back .mvr, .copy, .volume, .transit, .circ, .hold
+
+ if (details.mvr) {
+ set('title', details.mvr.title());
+ set('author', details.mvr.author());
+ set('doc_id', details.mvr.doc_id());
+ set('doc_type', details.mvr.doc_type());
+ set('pubdate', details.mvr.pubdate());
+ set('isbn', details.mvr.isbn());
+ set('publisher', details.mvr.publisher());
+ set('tcn', details.mvr.tcn());
+ set('subject', details.mvr.subject());
+ set('types_of_resource', details.mvr.types_of_resource());
+ set('call_numbers', details.mvr.call_numbers());
+ set('edition', details.mvr.edition());
+ set('online_loc', details.mvr.online_loc());
+ set('synopsis', details.mvr.synopsis());
+ set('physical_description', details.mvr.physical_description());
+ set('toc', details.mvr.toc());
+ set('copy_count', details.mvr.copy_count());
+ set('series', details.mvr.series());
+ set('serials', details.mvr.serials());
+ }
+
+ if (details.copy) {
+ set("stat_cat_entries", details.copy.stat_cat_entries());
+ set("age_protect", details.copy.age_protect());
+ set("alert_message", details.copy.alert_message());
+ set("barcode", details.copy.barcode());
+ set("call_number", details.copy.call_number());
+ set("circ_as_type", details.copy.circ_as_type());
+ set("circ_lib" , details.copy.circ_lib());
+ set("circ_modifier", details.copy.circ_modifier());
+ set("circulate", details.copy.circulate());
+ set("copy_number", details.copy.copy_number());
+ set("create_date", details.copy.create_date());
+ set("creator", details.copy.creator());
+ set("deleted", details.copy.deleted());
+ set("deposit", details.copy.deposit());
+ set("deposit_amount", details.copy.deposit_amount());
+ set("dummy_author", details.copy.dummy_author());
+ set("dummy_title", details.copy.dummy_title());
+ set("edit_date", details.copy.edit_date());
+ set("editor", details.copy.editor());
+ set("fine_level", details.copy.fine_level());
+ set("holdable", details.copy.holdable());
+ set("copy_id", details.copy.id());
+ set("loan_duration", details.copy.loan_duration());
+ set("location", details.copy.location());
+ set("opac_visible", details.copy.opac_visible());
+ set("price", details.copy.price());
+ set("ref", details.copy.ref());
+ set("status", details.copy.status());
+ set("notes", details.copy.notes());
+ set("stat_cat_entry_copy_maps", details.copy.stat_cat_entry_copy_maps());
+ set("circulations", details.copy.circulations());
+ set("total_circ_count", details.copy.total_circ_count());
+ set("holds", details.copy.holds());
+ }
+
+ if (details.volume) {
+ set("copies", details.volume.copies());
+ set("create_date", details.volume.create_date());
+ set("creator", details.volume.creator());
+ set("deleted", details.volume.deleted());
+ set("edit_date", details.volume.edit_date());
+ set("editor", details.volume.editor());
+ set("volume_id", details.volume.id());
+ set("label", details.volume.label());
+ set("owning_lib" , details.volume.owning_lib());
+ set("record", details.volume.record());
+ set("notes", details.volume.notes());
+ set("uri_maps", details.volume.uri_maps());
+ set("uris", details.volume.uris());
+ }
+
+ if (details.transit) {
+ set("copy_status", details.transit.copy_status());
+ set("dest", details.transit.dest());
+ set("dest_recv_time", details.transit.dest_recv_time());
+ set("transit_id", details.transit.id());
+ set("persistant_transfer", details.transit.persistant_transfer());
+ set("prev_hop", details.transit.prev_hop());
+ set("source", details.transit.source());
+ set("source_send_time", details.transit.source_send_time());
+ set("target_copy", details.transit.target_copy());
+ set("hold_transit_copy", details.transit.hold_transit_copy());
+ }
+
+ if (details.circ) {
+ set("checkin_lib", details.circ.checkin_lib());
+ set("checkin_staff", details.circ.checkin_staff());
+ set("checkin_time", details.circ.checkin_time());
+ set("circ_lib" , details.circ.circ_lib());
+ set("circ_staff", details.circ.circ_staff());
+ set("desk_renewal", details.circ.desk_renewal());
+ set("due_date", details.circ.due_date());
+ set("duration", details.circ.duration());
+ set("duration_rule", details.circ.duration_rule());
+ set("fine_interval", details.circ.fine_interval());
+ set("circ_id", details.circ.id());
+ set("max_fine", details.circ.max_fine());
+ set("max_fine_rule", details.circ.max_fine_rule());
+ set("opac_renewal", details.circ.opac_renewal());
+ set("phone_renewal", details.circ.phone_renewal());
+ set("recuring_fine", details.circ.recuring_fine());
+ set("recuring_fine_rule", details.circ.recuring_fine_rule());
+ set("renewal_remaining", details.circ.renewal_remaining());
+ set("stop_fines", details.circ.stop_fines());
+ set("stop_fines_time", details.circ.stop_fines_time());
+ set("target_copy", details.circ.target_copy());
+ set("usr", details.circ.usr());
+ set("xact_finish", details.circ.xact_finish());
+ set("xact_start", details.circ.xact_start());
+ set("create_time", details.circ.create_time());
+ set("workstation", details.circ.workstation());
+ set("billings", details.circ.billings());
+ set("payments", details.circ.payments());
+ set("billable_transaction", details.circ.billable_transaction());
+ set("circ_type", details.circ.circ_type());
+ set("billing_total", details.circ.billing_total());
+ set("payment_total", details.circ.payment_total());
+ }
+
+ if (details.hold) {
+ set("status", details.hold.status());
+ set("transit", details.hold.transit());
+ set("capture_time", details.hold.capture_time());
+ set("current_copy", details.hold.current_copy());
+ set("email_notify", details.hold.email_notify());
+ set("expire_time", details.hold.expire_time());
+ set("fulfillment_lib", details.hold.fulfillment_lib());
+ set("fulfillment_staff", details.hold.fulfillment_staff());
+ set("fulfillment_time", details.hold.fulfillment_time());
+ set("hold_type", details.hold.hold_type());
+ set("holdable_formats", details.hold.holdable_formats());
+ set("hold_id", details.hold.id());
+ set("phone_notify", details.hold.phone_notify());
+ set("pickup_lib", details.hold.pickup_lib());
+ set("prev_check_time", details.hold.prev_check_time());
+ set("request_lib", details.hold.request_lib());
+ set("request_time", details.hold.request_time());
+ set("requestor", details.hold.requestor());
+ set("selection_depth", details.hold.selection_depth());
+ set("selection_ou", details.hold.selection_ou());
+ set("target", details.hold.target());
+ set("usr", details.hold.usr());
+ set("cancel_time", details.hold.cancel_time());
+ set("notify_time", details.hold.notify_time());
+ set("notify_count", details.hold.notify_count());
+ set("notifications", details.hold.notifications());
+ set("bib_rec", details.hold.bib_rec());
+ set("eligible_copies", details.hold.eligible_copies());
+ set("frozen", details.hold.frozen());
+ set("thaw_date", details.hold.thaw_date());
+ set("shelf_time", details.hold.shelf_time());
+ set("cancel_cause", details.hold.cancel_cause());
+ set("cancel_note", details.hold.cancel_note());
+ set("notes", details.hold.notes());
+ }
+}
Added: trunk/Open-ILS/xul/staff_client/server/circ/alternate_copy_summary.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/alternate_copy_summary.xul (rev 0)
+++ trunk/Open-ILS/xul/staff_client/server/circ/alternate_copy_summary.xul 2009-09-03 08:24:36 UTC (rev 13954)
@@ -0,0 +1,191 @@
+<?xml version="1.0"?>
+<!-- Application: Evergreen Staff Client -->
+<!-- Screen: Alternate Copy Summary -->
+
+<!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
+<!-- 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="alt_copy_summary_win"
+ onload="try { my_init(); font_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"/>
+
+ <script type="text/javascript" src="/xul/server/main/JSAN.js"/>
+ <script type="text/javascript" src="alternate_copy_summary.js"/>
+
+ <groupbox flex="1">
+
+ <caption label="Alternate View" />
+
+ <grid id="grid0" flex="0">
+ <columns>
+ <column />
+ <column flex="1" />
+ <column />
+ <column />
+ </columns>
+ <rows>
+ <row>
+ <label value="Title" />
+ <textbox name="title" readonly="true" />
+ <spacer />
+ <spacer />
+ </row>
+ <row>
+ <label value="Author" />
+ <textbox name="author" readonly="true" />
+ <label value="Edition" />
+ <textbox name="edition" readonly="true" />
+ </row>
+ <row>
+ <label value="Call Number" />
+ <textbox name="call_number" readonly="true" />
+ <label value="Pub Date" />
+ <textbox name="pubdate" readonly="true" />
+ </row>
+ </rows>
+ </grid>
+
+ <tabbox flex="1">
+ <tabs>
+ <tab label="Quick Summary" />
+ <tab label="Circulation History" />
+ <tab label="Holds/Transit" />
+ <tab label="Cataloging Info" />
+ </tabs>
+ <tabpanels flex="1">
+ <tabpanel orient="vertical">
+ <grid id="grid1" flex="0">
+ <columns>
+ <column id="g1column1"/>
+ <column />
+ <column />
+ <column />
+ <column />
+ <column />
+ <column />
+ <column />
+ </columns>
+ <rows>
+ <row>
+ <label value="Barcode" />
+ <textbox name="barcode" readonly="true"/>
+ <label value="Owning Library" />
+ <textbox name="owning_lib" readonly="true"/>
+ <label value="Call Number" />
+ <textbox name="call_number" readonly="true"/>
+ <label value="Status" />
+ <textbox name="status" readonly="true"/>
+ </row>
+ <row>
+ <label value="Price" />
+ <textbox name="price" readonly="true"/>
+ <label value="Copy Location" />
+ <textbox name="location" readonly="true"/>
+ <label value="Author" />
+ <textbox name="author" readonly="true"/>
+ <label value="Due Date" />
+ <textbox name="due_date" readonly="true"/>
+ </row>
+ <row>
+ <label value="ISBN" />
+ <textbox name="isbn" readonly="true"/>
+ <label value="Loan Duration" />
+ <textbox name="loan_duration" readonly="true"/>
+ <label value="Publisher" />
+ <textbox name="publisher" readonly="true"/>
+ <label value="Checkout Date" />
+ <textbox name="checkout_date" readonly="true"/>
+ </row>
+ <row>
+ <label value="Date Created" />
+ <textbox name="date_created" readonly="true"/>
+ <label value="Reference" />
+ <textbox name="reference" readonly="true"/>
+ <label value="Pub Date" />
+ <textbox name="pubdate" readonly="true"/>
+ <label value="Checkout Library" />
+ <textbox name="checkout_lib" readonly="true"/>
+ </row>
+ <row>
+ <label value="Copy ID" />
+ <textbox name="copy_id" readonly="true"/>
+ <label value="OPAC Visible" />
+ <textbox name="opac_visible" readonly="true"/>
+ <label value="Edition" />
+ <textbox name="edition" readonly="true"/>
+ <label value="Checkin Date" />
+ <textbox name="checkin_date" readonly="true"/>
+ </row>
+ <row>
+ <label value="TCN" />
+ <textbox name="tcn" readonly="true"/>
+ <label value="Holdable" />
+ <textbox name="holdable" readonly="true"/>
+ <label value="Total Circs" />
+ <textbox name="total_circs" readonly="true"/>
+ <label value="Checkin Library" />
+ <textbox name="checkin_lib" readonly="true"/>
+ </row>
+ <row>
+ <spacer />
+ <spacer />
+ <label value="Circ Modifier" />
+ <textbox name="circ_mod" readonly="true"/>
+ <label value="Rolling Counter" />
+ <textbox name="rolling_counter" readonly="true"/>
+ <label value="Remaining Renewals" />
+ <textbox name="remaining_renewals" readonly="true"/>
+ </row>
+ <row>
+ <spacer />
+ <spacer />
+ <spacer />
+ <spacer />
+ <spacer />
+ <spacer />
+ <label value="Hold Shelf Location" />
+ <textbox name="hold_shelf_loc" readonly="true"/>
+ </row>
+ </rows>
+ </grid>
+ <grid id="grid2" flex="1">
+ <columns>
+ <column id="g2column1" />
+ <column flex="1" />
+ </columns>
+ <rows>
+ <row>
+ <label value="Alert" />
+ <textbox name="alert_message" multiline="true" />
+ </row>
+ </rows>
+ </grid>
+ </tabpanel>
+ <tabpanel />
+ <tabpanel />
+ <tabpanel />
+ </tabpanels>
+ </tabbox>
+ </groupbox>
+
+</window>
+
Modified: trunk/Open-ILS/xul/staff_client/server/circ/copy_status.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/copy_status.js 2009-09-03 04:14:48 UTC (rev 13953)
+++ trunk/Open-ILS/xul/staff_client/server/circ/copy_status.js 2009-09-03 08:24:36 UTC (rev 13954)
@@ -15,6 +15,7 @@
circ.copy_status.prototype = {
'selection_list' : [],
'list_copyid_map' : {},
+ 'detail_map' : {},
'init' : function( params ) {
@@ -53,6 +54,7 @@
);
obj.error.sdump('D_TRACE','circ/copy_status: selection list = ' + js2JSON(obj.selection_list) );
if (obj.selection_list.length == 0) {
+ obj.controller.view.cmd_alt_view.setAttribute('disabled','true');
obj.controller.view.sel_checkin.setAttribute('disabled','true');
obj.controller.view.cmd_replace_barcode.setAttribute('disabled','true');
obj.controller.view.sel_edit.setAttribute('disabled','true');
@@ -76,6 +78,7 @@
obj.controller.view.cmd_mark_library.setAttribute('disabled','true');
obj.controller.view.cmd_transfer_volume.setAttribute('disabled','true');
} else {
+ obj.controller.view.cmd_alt_view.setAttribute('disabled','false');
obj.controller.view.sel_checkin.setAttribute('disabled','false');
obj.controller.view.cmd_replace_barcode.setAttribute('disabled','false');
obj.controller.view.sel_edit.setAttribute('disabled','false');
@@ -125,6 +128,40 @@
],
'sel_clip' : [ ['command'], function() { obj.list.clipboard(); obj.controller.view.copy_status_barcode_entry_textbox.focus(); } ],
'save_columns' : [ ['command'], function() { obj.list.save_columns(); obj.controller.view.copy_status_barcode_entry_textbox.focus(); } ],
+ 'alt_view_btn' : [
+ ['render'],
+ function(e) {
+ e.setAttribute('label', document.getElementById("circStrings").getString('staff.circ.copy_status.alt_view.label'));
+ e.setAttribute('accesskey', document.getElementById("circStrings").getString('staff.circ.copy_status.alt_view.accesskey'));
+ }
+ ],
+ 'cmd_alt_view' : [
+ ['command'],
+ function(ev) {
+ try {
+ var n = obj.controller.view.alt_view_btn;
+ if (n.getAttribute('toggle') == '1') {
+ document.getElementById('deck').selectedIndex = 0;
+ n.setAttribute('toggle','0');
+ n.setAttribute('label', document.getElementById("circStrings").getString('staff.circ.copy_status.alt_view.label'));
+ n.setAttribute('accesskey', document.getElementById("circStrings").getString('staff.circ.copy_status.alt_view.accesskey'));
+ //document.getElementById('results').focus();
+ } else {
+ document.getElementById('deck').selectedIndex = 1;
+ n.setAttribute('toggle','1');
+ n.setAttribute('label', document.getElementById("circStrings").getString('staff.circ.copy_status.list_view.label'));
+ n.setAttribute('accesskey', document.getElementById("circStrings").getString('staff.circ.copy_status.list_view.accesskey'));
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
+ var f = obj.browser.get_content();
+ xulG.barcode = obj.selection_list[0].barcode;
+ f.xulG = xulG;
+ f.load_item();
+ }
+ } catch(E) {
+ alert('Error in copy_status.js, cmd_alt_view handler: ' + E);
+ }
+ },
+ ],
'sel_checkin' : [
['command'],
function() {
@@ -932,6 +969,18 @@
this.controller.render();
this.controller.view.copy_status_barcode_entry_textbox.focus();
+ JSAN.use('util.browser');
+ obj.browser = new util.browser();
+ obj.browser.init(
+ {
+ 'url' : 'alternate_copy_summary.xul',
+ 'push_xulG' : true,
+ 'alt_print' : false,
+ 'browser_id' : 'copy_status_frame',
+ 'passthru_content_params' : xulG,
+ }
+ );
+
},
'test_barcode' : function(bc) {
@@ -1072,6 +1121,17 @@
}
var result = obj.network.simple_request('FM_ACP_DETAILS_VIA_BARCODE.authoritative', [ ses(), barcode ]);
handle_req({'getResultObject':function(){return result;}}); // used to be async
+ if (result.copy && document.getElementById('deck').selectedIndex == 1) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
+ var f = obj.browser.get_content();
+ xulG.barcode = result.copy.barcode(); // FIXME: We could pass the already-fetched data, but need to figure out how to manage that and honor Trim List, the whole point of which is to limit memory consumption
+ if (f) {
+ f.xulG = xulG;
+ f.load_item();
+ } else {
+ alert('hrmm');
+ }
+ }
obj.controller.view.copy_status_barcode_entry_textbox.value = '';
obj.controller.view.copy_status_barcode_entry_textbox.focus();
Modified: trunk/Open-ILS/xul/staff_client/server/circ/copy_status.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/copy_status.xul 2009-09-03 04:14:48 UTC (rev 13953)
+++ trunk/Open-ILS/xul/staff_client/server/circ/copy_status.xul 2009-09-03 08:24:36 UTC (rev 13954)
@@ -101,6 +101,7 @@
<command id="cmd_copy_status_submit_barcode" />
<command id="cmd_copy_status_upload_file" />
<command id="cmd_copy_status_print" />
+ <command id="cmd_alt_view" disabled="true" />
<command id="save_columns" />
<command id="sel_copy_details" disabled="true"/>
<command id="sel_mark_items_damaged" disabled="true"/>
Modified: trunk/Open-ILS/xul/staff_client/server/circ/copy_status_overlay.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/circ/copy_status_overlay.xul 2009-09-03 04:14:48 UTC (rev 13953)
+++ trunk/Open-ILS/xul/staff_client/server/circ/copy_status_overlay.xul 2009-09-03 08:24:36 UTC (rev 13954)
@@ -85,7 +85,10 @@
<groupbox id="cmgb1" flex="2">
<caption label="&staff.circ.copy_status_overlay.last_scanned.caption;" />
<hbox id="copy_status_top_ui" />
- <tree id="copy_status_list" flex="1" enableColumnDrag="true" context="copy_status_actions" />
+ <deck id="deck" flex="1">
+ <tree id="copy_status_list" flex="1" enableColumnDrag="true" context="copy_status_actions" />
+ <browser id="copy_status_frame" src="" flex="1" />
+ </deck>
<hbox id="copy_status_bottom_ui" />
</groupbox>
</vbox>
@@ -105,6 +108,7 @@
accesskey="&staff.circ.copy_status_overlay.copy_status_upload_file.accesskey;"
command="cmd_copy_status_upload_file"/>
<spacer flex="1"/>
+ <button id="alt_view_btn" command="cmd_alt_view" />
<menubar>
<menu label="&staff.circ.copy_status_overlay.cataloger_actions.label;" accesskey="&staff.circ.copy_status_overlay.cataloger_actions.accesskey;">
<menupopup>
Modified: trunk/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties 2009-09-03 04:14:48 UTC (rev 13953)
+++ trunk/Open-ILS/xul/staff_client/server/locale/en-US/circ.properties 2009-09-03 08:24:36 UTC (rev 13954)
@@ -136,6 +136,10 @@
staff.circ.copy_status.status.hold=Item is captured for a Hold.
staff.circ.copy_status.status.transit=Item is in Transit.
staff.circ.copy_status.status.circ=Item is circulating.
+staff.circ.copy_status.alt_view.label=Alternate View
+staff.circ.copy_status.alt_view.accesskey=V
+staff.circ.copy_status.list_view.label=List View
+staff.circ.copy_status.list_view.accesskey=V
staff.circ.hold_capture.print.to_printer=To Printer
# pad this with whitespace to align with the rest of the staff.circ.hold_capture.print.* entries
staff.circ.hold_capture.print.barcode= Barcode:
More information about the open-ils-commits
mailing list