If an overdue is returned after a closed date, the generate_fines code
will not generate fines for those items because the section of code that
checks for closed dates returns from the function if a closed date is
encountered.
For example, if an item is due on June 29th, but is not returned until
after July 1st (Canada Day), then when fines are generated for the item,
generate_fines creates a fine for the 30th of June, but when it
gets to the 1st of July it encouters a closed date and executes a
'return' statement which exits the generate_fines code causing the
fine from June 30th to be rolled back as well as preventing further
fines from being created.
This fix replaces the 'return' statements inside the 'for' loop
that is nested within the eval with 'next' statements.
Signed-off-by: Liam Whalen <whalen.ld@gmail.com> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Mike Rylander [Tue, 25 Jun 2013 11:44:22 +0000 (07:44 -0400)]
Only attempt to map copies once per hold
The development of Calculated Proximity Adjustment (CPA) for 2.4 added a "prox"
column to action.hold_copy_map (ahcm) to store on variant of copy proximity. That
value is calculated at the same time that certain other data structures are
set up, and is conceptually tied to them, so the resulting combined data
set is used to insert values into the ahcm. However, user configuration
can cause that data set to contain non-unique values, where the data structure
used previous to CPA was guaranteed to be unique. This lack of uniqueness
would then violate a constraint on the achm table. This commit restores the
required uniqueness for the purpose of creating the ahcm rows.
Bill Erickson [Mon, 13 May 2013 17:22:37 +0000 (13:22 -0400)]
LP1179609 ACQ lineitem identifier inline update
When the identifier value for a linetiem is changed, apply the change
and refresh the lineitem in real time instead of requiring users to
click the 'Apply Lineitem Identifier' link.
The 'Apply Lineitem Identifier' link has also been removed, since it is
no longer needed.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Dan Scott [Mon, 24 Jun 2013 14:12:50 +0000 (10:12 -0400)]
Avoid Z39.50 search warning for uninit var
The debug log blindly attempts to access list members that might not
exist (if, for example, an event code was returned from the attempt to
run do_service_search()), thus generating spurious log warnings.
Instead, move the debug line to only generate output when we have
created the list item in question.
Dan Scott [Fri, 21 Jun 2013 18:49:27 +0000 (14:49 -0400)]
Prevent JavaScript error on non-Novelist sites
Unless the Evergreen site in question is signed up and configured to
support Novelist added content, every details page will generate a
JavaScript error due to the reference to an undefined JavaScript
function. Guard against that by testing for the presence of the Novelist
URL.
Dan Scott [Fri, 21 Jun 2013 03:39:21 +0000 (23:39 -0400)]
return, not next, from eval BLOCK
Per perldoc eval, exiting an eval BLOCK is not allowed. And it generates
warnings - 37,000 of them in one day - on a system on which the fine
generator runs every 15 minutes. Simply returning from the block
achieves the same goal without generating scads of warnings.
Dan Scott [Fri, 21 Jun 2013 03:11:20 +0000 (23:11 -0400)]
Silence uninit var warnings from query normalizer
$field_info can return undef from the search for a matching ID from the
list of normalizers, which in turn generates several uninit var warnings
when attempts are made to access members of the undef variable. We saw
6700 occurrences of these warnings during a typical day of operations.
Dan Scott [Thu, 20 Jun 2013 16:55:30 +0000 (12:55 -0400)]
Quick delete UI
For mass deletion efforts, go to http://hostname/eg/cat/moveto/delete in
a web browser and start scanning barcodes. Each barcode will be deleted
immediately. Note that call numbers and bib records will not be deleted
if the copy was the last one, but the records will no longer show up in
search results for regular patrons... and one could always follow up
with a clean up SQL job to delete call numbers and records where
appropriate.
Dan Scott [Wed, 19 Jun 2013 20:49:14 +0000 (16:49 -0400)]
Silence QP warning due to inappropriate cmp op
In QueryParser, we're comparing two strings, but using the numeric !=
operator. Switching to the 'ne' operator silences a warning that came up
7,000 today in our logs so far...
Dan Scott [Tue, 18 Jun 2013 16:17:40 +0000 (12:17 -0400)]
Prevent uninit var warnings in Search/Biblio.pm
The logger messages in Search/Biblio.pm throw _many_ uninitialized
variable warnings. With a little care, we can prevent those warnings and
return our attention to more important log messages.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Ben Shum <bshum@biblio.org>
Dan Scott [Mon, 17 Jun 2013 04:38:43 +0000 (00:38 -0400)]
Support script-based circ in nearest_hold()
The nearest_hold() implementation recently changed to pull in the circ
library ID; however, if circulation runs through scripts, the circ
library on the copy object has been fleshed, and the nearest hold
routine gets very confused.
Check to see if we do, in fact, have an object instead of a plain
scalar, and assign the value to a placeholder variable accordingly.
Thanks to Jeff Godin for his great assistance on debugging this!
Dan Scott [Sun, 16 Jun 2013 13:19:09 +0000 (09:19 -0400)]
Prevent undefined var warning for username
EGCatLoader could generate undefined var warnings if submitted without a
username. Probably should just bail early rather than trying to log the
user in.
Dan Scott [Thu, 13 Jun 2013 05:16:23 +0000 (01:16 -0400)]
Retain index granularity with minimal bloat
The previous approach to reducing index bloat arguably went too far, in
that analytics such as separately catalogued songs for an album were all
simply aggregated together in a single metabib.title_field_entry row,
rather than being added as separated metabib.title_field_entry rows for
each unique value.
To avoid the original problem of exact duplicate rows being inserted, we
now check for an existing matching row before inserting into the index.
A good test record is title "Cello concerto." which results in 1 title
proper row and 4 added entry title rows in metabib.title_field_entry
after this change.
Mike Rylander [Wed, 12 Jun 2013 15:17:08 +0000 (11:17 -0400)]
Bring back "split-brain" indexing normalization
Before 2.4-era changes to indexing and search, normalizers were applied
in a way that resulted in different effects on the value and index_vector
columns of metabib.*field_entry tables. This behavior was lost during
the changes mentioned above, but we need it for several things to work
properly, phrase search and (likely) facets among them. This commit
brings that behavior back.
See here for the original behavioral documentation:
Bob Wicksall [Thu, 13 Jun 2013 05:06:10 +0000 (01:06 -0400)]
Reduce index bloat involving non-search_field values
Rows in metabib.title_field_entry, subject_field_entry,
series_field_entry, and author_field_entry are doubled or tripled due to
bad logic in biblio.extract_metabib_field_entry. This results in these
tables being 2 or more times their correct size.
This was introduced in 2.2.0 when the logic for browse_field and
facet_field were added to biblio.extract_metabib_field_entry. 2.1 is not
affected.
The duplicates are caused when biblio.extract_metabib_field_entry
returns TRUE in the search_field column for all rows even if they should
just be facet_field or browse_field after the first search_field value
is returned.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Bill Erickson [Mon, 27 Aug 2012 14:38:48 +0000 (10:38 -0400)]
Repair fine generator memory leak
Calling "next" from within a "try" block results in a memory leak,
presumably because "try" is a tangled nest of subs and evals.
Replacing the "try" with a good ol' "eval" avoids the leak.
This particular leak in the fine generator is onerous when the fine
generator is run often (e.g. every 15 mins), which means circs that
have already been processed for the day are re-analzyed over and over,
causing the code to continue early (next) to the next loop iteration
for large numbers of circs. It also happens when a circs are skipped
because they have no fine interval, rate, or max fine.
You know this is happening because you will see something like this in
the storage stderr log:
Exiting eval via next at
/usr/local/share/perl/5.10.1/OpenILS/Application/Storage/Publisher/action.pm
line 820.
Exiting subroutine via next at
/usr/local/share/perl/5.10.1/OpenILS/Application/Storage/Publisher/action.pm
line 820.
This patch does not avoid the "exiting eval via next" warning, since
we're still next'ing out of the eval. It just avoids the memory leak
(and the "Exiting subroutine" warning). More extensive refactoring is
needed to to completely remove the second warning.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Tue, 11 Jun 2013 20:44:35 +0000 (16:44 -0400)]
Use the centralized initialization method for QP
QueryParser maintains an effective singleton for internal configuration of
the driver in order to avoid going to the database on every search request
to gather configuration parameters. There is also a centralized sub that
has the task of properly configuring said singleton. Previous to this commit
we were not using that centralized initializer in one case, and that case
happened to be the most important initialization of QP in all of Evergreen.
The fallout from that was that some configuration was not being gathered
and passed to QueryParser, resulting in incorrect search SQL being generated.
This is rectified by using the centralized initializer everywhere that it
is needed and can be used -- and particularly in the effected case.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Mike Rylander [Tue, 30 Apr 2013 20:45:55 +0000 (16:45 -0400)]
Search clicked /and/ preceding sf values
When looking for authority records to control a bib field, we currently
search using exactly, and only, the subfield that was clicked. This
commit changes that so that the full field up to and including the clicked
subfield is used in the simple authority heading search we perform to find
the best-match (pivot) authority record.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Conflicts:
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm
(Just whitespace conflicts on tab vs space -- repaired by hand.)
Ben Shum [Sat, 2 Mar 2013 07:21:58 +0000 (02:21 -0500)]
TPAC - set autofocus to user input when placing holds in staff client
When placing holds in TPAC via the staff client, the focus had been on the
basic search field above. Change this to have autofocus on the input field
for the hold user by default.
This can potentially save staff from having to perform an extra click to
select the input field. Now they can immediately begin entering the barcode
of the user they plan to create a hold on behalf of.
Signed-off-by: Ben Shum <bshum@biblio.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Acq: Be fuzzy about case when retrieving EDI documents
The edi_fetcher relies on a routine in OpenILS::Acq::EDI to, among
other things, try to avoid fetching the same EDI document multiple times
when many rows in acq.edi_account refer to the same host and login
credentials.
Since in practice most vendors seem to run FTP servers for EDI on
Windows, not UNIX, and pathnames are therefore case-insensitive, that
test for other occurrences ought also to be case-insensitive.
If I were to look at this as a purist, I could argue that vendor servers
might sometimes by run on UNIX, and that for some reason it is possible
that different vendor-to-buyer EDI documents (order responses or
invoices) could have pathnames that differ only in the case of some
characters. But that seems wildly unlikely. If anyone does take this
possibility seriously, perhaps acq.edi_account needs a Boolean column to
indicate the remote host's case [in]sensitivity.
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Dan Scott [Thu, 6 Jun 2013 13:40:59 +0000 (09:40 -0400)]
Fedora RPM for bzip2 headers is bzip2-devel
There was an attempt to add the right RPM for the bzip2 headers in
Makefile.install, but that failed on Fedora 19. Swap in bzip2-devel
instead to correct that.
Bill Erickson [Thu, 23 May 2013 13:11:25 +0000 (09:11 -0400)]
LP1183340 selectivly apply editable funds sorting
Avoid sorting editable funds to the front of the fund list when there
are no org units at which the user has the ADMIN_ACQ_FUND permission.
Otherwise, we are sorting on an empty 'IN' list in pcrud, which results
in an error.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Kathy Lussier [Sat, 25 May 2013 00:52:01 +0000 (20:52 -0400)]
Acquisitions Admin updates
Updates to the chapter on acquisitions administration, including 1) the
reintroduction of the Providers section, which appears to have dropped out
of the docs after 2.1 2) the new default # copies and improvements to
distributions formulas introduced in 2.4 and 3) minor copy editing.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Ben Shum [Thu, 23 May 2013 20:32:49 +0000 (16:32 -0400)]
LP1081576 - fix utf8 characters in searches using portal page
Replace escape() with encodeURIComponent() on the portal page to allow utf8
characters to be passed more appropriately to the subsequent search in catalog.
Thanks Dan Scott for pointing this out.
Signed-off-by: Ben Shum <bshum@biblio.org> Signed-off-by: Pasi Kallinen <pasi.kallinen@pttk.fi>
Bill Erickson [Thu, 23 May 2013 13:43:52 +0000 (09:43 -0400)]
LP1183357 Pass locale to bib search (tpac)
Pass the TPAC locale value, which is collected at each page load, to the
bib search API call. This allows us to take advantage of language-based
relevance bumps.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Pasi Kallinen <pasi.kallinen@pttk.fi> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Dan Scott [Fri, 10 May 2013 17:12:55 +0000 (13:12 -0400)]
TPAC: Death date missing from authors in record details
The trailing period prescribed by ISBD punctuation for x00 $d subfields
in certain circumstances confounds the regex that was expected the $d
subfield to match ^\s*\d{4}-\d{4}\s*$. As a result, death dates were
often being omitted from the record detail display. Relaxing the regex
to match against a trailing .* instead of \s* resolves the issue.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Pasi Kallinen <pasi.kallinen@pttk.fi> Signed-off-by: Ben Shum <bshum@biblio.org>
Clicking on an author with a dash or dates in the name on the search
results page comes up with 0 results. It looks like the dash is stripped
from the date and/or name.
Clicking on such a link from the record view actually works because
the dash is replaced with a space.
This branch changes table.tt2 to replace special characters in author
output with a space in the same way that authors.tt2 does.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Mike Rylander [Fri, 19 Apr 2013 20:14:13 +0000 (16:14 -0400)]
Correct subfield format for authority lookup
The Authority Control Set code expects the format of subfields
that it will be used to build a MARC.Field object to be of the
form: [[code,value],...] This commit makes that true.
Additionally, dojo.filter over a list of lists can cause the
nested array set to be flattened. So, instead, we loop directly.
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Bill Erickson [Thu, 16 May 2013 13:11:50 +0000 (09:11 -0400)]
Repair faulty MARC editor authority validation
Repair how the JS inspects the results of
open-ils.search.authority.simple_heading.from_xml.batch.atomic, which is
used to look up matches for authority validation. It returns a more
complex structure in the brave new world of authority control sets.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Dan Scott [Tue, 29 Jan 2013 16:04:33 +0000 (11:04 -0500)]
Apply all 2.2 upgrades prior to running 2.3.0 upgrade
If users are expected to run all of the 2.2 upgrade scripts, then let's
make it easy for them. As PostgreSQL 9.1 does not include the \ir
"include relative path" command, we have to pause at the beginning of
the upgrade process to ensure that the user is running the script from
the right directory.
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Galen Charlton [Tue, 14 May 2013 19:33:54 +0000 (15:33 -0400)]
LP#118066: fix searches that failed because punctuation was a token in query
When building the text array literal to pass to evergreen.rel_bump,
make sure that tokens that get {search_}normalize{d} away
don't result in syntax errors.
With this patch, searches like the following will work again:
Ben Shum [Mon, 13 May 2013 18:19:06 +0000 (14:19 -0400)]
LP1179614 - fix Export All Records action
In the record buckets, the button for 'Export All Records' would work up
to the point where you chose where to save the file. After clicking where
to save, it would not show any saved files or prompts indicating it completed
the export process.
This fix changes the location of where to find the export tool and properly
exports the bibs as the file format selected.
Signed-off-by: Ben Shum <bshum@biblio.org> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Serials: MFHD::get_compressed_holdings() can reach infinite loop
Even controlled serials holdings involve the internal creation of MFHD
fields, upon which caculations are performed for such purposes as the
display of holdings summaries in the OPAC.
There are too many ways that incorrect MFHD (or MFHD that our code just
can't yet handle) can lead our MFHD routines to crash. We can't address
all these possibilities in a single bug fix. But we can avoid this
infinite loop.
A subroutine within open-ils.serial (_summarize_contents()) relies on
MFHD::get_compressed_holdings(). When the latter went into an infinite
loop the result would be an open-il.serial drone process consuming CPU
time indefinitely and, depending on the data that provoked the loop,
potentially writing repeating messages to stderr indefinitely.
End users will still see the item receiving fail in these cases, and be
obliged to work around the issue as before until more robust
holdings summarization code can be written, but at least the overall
condition of the running Evergreen system won't be affected, and there
will be better information in the error logs.
Galen Charlton [Fri, 3 May 2013 21:20:21 +0000 (17:20 -0400)]
LP#1176206: improve deadlock handling in 2.3-2.4-supplemental.sh
- make sure that it doesn't attempt to create more than one
index at a time for a given table
- if deadlocks occur (because of a PostgreSQL bug whose fix
isn't slated for release until after April 2013), find
and recreate the affected indexes.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Art Rhyno [Fri, 24 May 2013 15:24:53 +0000 (11:24 -0400)]
Add support for CAS intro in tpac for rel_2_4_mergery
These changes allow a CAS intro to be put in place before
a patron is sent off to the CAS service from the tpac. CAS
logins can be a jarring experience since the interface is
controlled by the validating organization.
Signed-off-by: Art Rhyno <art632000@yahoo.ca> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Art Rhyno [Mon, 13 Aug 2012 21:22:17 +0000 (17:22 -0400)]
TPAC: Make "Show more details" in results optional
Academic sites typically handle a lot of electronic content and want to
bring most details about entries, such as availability, status, and
URLs, on a results screen to the front.
This adds a 'show_more_details.default' option in 'config.tt2' that can
have the values 'true', 'false' and 'hide'. The 'true' and 'false'
values set the default for the button to more and less respectively, and
'hide' suppresses the button from showing at all.
Signed-off-by: Art Rhyno <art632000@yahoo.ca> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Dan Scott [Thu, 30 Aug 2012 14:48:32 +0000 (10:48 -0400)]
Add an ou_host_name parameter for TPAC login forms
If set, and the incoming username does not already include an '@' symbol
(a very simple attempt to detect if we're already dealing with an email
address), then append '@' + the ou_host_name value to the username for
authentication purposes.
The rationale is that in a large consortium, you might want to enable
users to log in with short usernames (like 'fred'), but you also want to
avoid conflicts between short usernames at different organizational
units. Thus, create the users with the email equivalent of their
usernames, like 'fred@br1.example.com' and 'fred@br4.example.com', and
let the templates for the TPAC in br1 and br4 contain a hidden input
field to append the appropriate email hostname.
Truth be told, this is probably most appropriate for a large consortium
containing two or more academic institutions that hope to use LDAP
authentication rather than native authentication, and therefore have
LDAP CNs that map to email addresses of CN@hostname that can then be
mapped to actor.usr.usrname (and actor.usr.email, of course).
Dan Scott [Mon, 27 Aug 2012 22:38:51 +0000 (18:38 -0400)]
Very rough LDAP authentication enablement for OSUL
Currently requires that the user enters their email address at the
username prompt; we then just use the local-part of the email address to
authenticate against the LDAP server.
In the VirtualHost sections of Apache, we can use SetEnv to force the
physical_loc to match the org unit ID(s) specified in opensrf.xml; for
example:
Dan Scott [Mon, 30 May 2011 19:23:09 +0000 (15:23 -0400)]
Add "Move to storage" quick UI for bulk location moves
This simplistic interface accepts a barcode and immediately returns
some bibliographic information if the barcode was found - and the
item is moved immediately to the specified location. Goal was to
minimize clicking, this pretty much requires just scan scan scan.
Dan Scott [Tue, 14 Feb 2012 15:46:24 +0000 (10:46 -0500)]
Prevent renew if item already is targeted for a hold
From http://biblio.laurentian.ca/tickets/conifer/wiki/devHolds
apparently I missed this in moving our customizations from SVN (or it
was only ever local?)
Dan Scott [Thu, 10 Jan 2013 19:17:33 +0000 (14:17 -0500)]
Generic patron barcode generation (OpenSRF and DB)
Laurentian University needed the ability to generate barcodes as part of
its LDAP integration work, and the first generation (so to speak) of the
was specific to LU - including hard-coded prefixes and database
functions that include the "lu" name.
This commit makes the functionality much more generic and thus more
likely to be able to be adopted by other institutions. The principle
components are:
Database functions:
evergreen.actor_generate_barcode([prefix TEXT]) - returns a 14-digit
barcode from the evergreen.actor_barcode_seq sequence with a prefix of
'AUTOBC' or the specific prefix of up to 6 characters. If the
resulting barcode is all digits, then the 14th character will be a
mod10 check digit; otherwise the 14th digit will be '0'.
evergreen.actor_update_barcode(usr_id INTEGER[, prefix TEXT]) -
generates a new barcode for the specified user, with the optional
barcode prefix.
evergreen.mod10(barcode TEXT) - given a barcode, generates a mod10
check digit and returns the barcode with the appended check digit
OpenSRF method:
open-ils.actor.generate_patron_barcode([usr_id INT[, prefix TEXT]]) -
generates a new barcode for the patron
Dan Scott [Wed, 14 Sep 2011 20:02:14 +0000 (16:02 -0400)]
Add and use a patron search that overrides opt-in invisibility
Something like this is required for API calls that need to operate
against a number of libraries in a given instance that are using opt-in;
otherwise, attempts to search for users will fail and you may end up
creating near-duplicates etc.
The implementation adds an
open-ils.actor.search.patron.advanced.opt_in_override method to
open-ils.actor, which, if invoked, checks to see if the caller has the
OPT_IN_OVERRIDE permission. If so, then the crazy_search ignores the
normal opt-in limits and searches all pertinent users in the database.
As a global permission, OPT_IN_OVERRIDE is a blunt instrument. Others
might want to put together a more refined version that uses OU depths to
define boundaries.
Signed-off-by: Dan Scott <dscott@laurentian.ca>
Conflicts:
Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/actor.pm
Dan Scott [Tue, 9 Oct 2012 16:21:10 +0000 (12:21 -0400)]
Remove extraneous spaces from bib email template
Various email servers refuse to send email that begins with blank lines,
so use TT's [%- and -%] to eat up whitespace. Also, remove the extra
linefeeds (_ "\n") as the linefeed is already generated by virtue of
being on its own line.
Art Rhyno [Mon, 1 Oct 2012 02:50:09 +0000 (22:50 -0400)]
Add option for host value in URLs
The ability to link back to a bib record for print and e-mail displays
from tpac is very useful, esp. for e-mail where there is a good chance
that the mail system will make it an active link. It looks possible to
wire in environmental variables with the template toolkit but that's
probably as complicated as it is to modify the template directly.
Art Rhyno [Thu, 27 Sep 2012 02:34:48 +0000 (22:34 -0400)]
Add call number and location info to TPAC e-mail and print option
I haven't figured out how to get the hostname properly, I am guessing
it needs to be passed as a parameter somehow. I also need to test
URIs but this is a start.
Art Rhyno [Tue, 12 Feb 2013 16:25:08 +0000 (11:25 -0500)]
Make Date Addition for Hold Receipt Configurable on Client
As per Dan Scott's suggestion, this changes the print_win.js
function for formatting the holds date receipt to allow
the number of days to be specified with the "add_days" attribute.
Art Rhyno [Wed, 30 Jan 2013 13:34:24 +0000 (08:34 -0500)]
Hold Slip Formatting for Windsor
The Leddy Library used some custom javascript for adding a due date
to the Hold Slip in a previous version of Evergreen. This uses the
far cleaner print_win.js setup to bring this back.