dbs [Wed, 2 Feb 2011 03:28:33 +0000 (03:28 +0000)]
Apply autogenerate barcode trigger to serial.unit to enable serial checkin
Serial checkin tried to use the '@@AUTO' macro to autogenerate barcodes,
but unfortunately the required trigger had only been defined on the parent
table asset.copy and not on the child table serial.unit. Here we define the
trigger on serial.unit to resolve that problem.
erickson [Tue, 1 Feb 2011 23:39:00 +0000 (23:39 +0000)]
make sure that inline overdue fines generation completes before we attempt to void overdues fines in checkin, otherwise it's possible to create multiple services (storage and cstore) competing for the same DB row mid-transaction, resulting in cstore timeouts and rollback of checkin. This could happen with backdated or amnesty checkins
senator [Tue, 1 Feb 2011 21:39:06 +0000 (21:39 +0000)]
Acq: Improving on r19351, don't let showCreatePane() be issued repeatedly to
fill the window with redundant dialogs, since a) it looks silly, and b) the
dialogs don't work when there are more than one of them. Thanks again Dan.
senator [Tue, 1 Feb 2011 21:15:22 +0000 (21:15 +0000)]
Acq: make the "new provider" button under Admin -> Server Admin ->
Acquisitions -> Providers not produce a dialog with a ton of mysterious
whitespace. Spotted by Dan Scott.
phasefx [Mon, 31 Jan 2011 18:53:20 +0000 (18:53 +0000)]
In actor.usr_purge_data, default destination user to admin (id=1).
Destination user is where we move things like reports and acq picklists when
purging staff members. However, if we tried to purge a patron that used to be
a staff member, then destination user was being set to null, which won't work
when updating things like requestor on holds. The purge UI checks for the
STAFF_LOGIN permission on the user to be purged for determining whether to
prompt for a destination user or not.
Some alternatives to this change might include:
1) always asking for a destination user (and defaulting to admin or the
logged in staff member), or
2) robustifying the stored procedure and surrounding code to raise an
expected exception whenever this edge case hits, prompting the UI to try
again after asking for a destination user.
dbs [Mon, 31 Jan 2011 03:30:42 +0000 (03:30 +0000)]
Add basic unit tests for Evergreen Perl modules
By "basic", I mean, "Can we use them without provoking a
syntax error?" and the answer is... all but one appear to
be clean, or have a legit reason for not being able to be
used normally. Stay tuned for the culprit...
dbs [Mon, 31 Jan 2011 02:14:37 +0000 (02:14 +0000)]
Make Evergreen Perl modules installable via Module::Build to match OpenSRF
Build.PL gives us an install-time check on dependencies; right now
the required versions are not set, but we can update these easily
to start catching some of the problematic modules that have tripped
sites up in the past.
Build.PL really seems to want a top-level "OpenILS.pm" so add a placeholder
accordingly.
Adjust references to /src/perlmods/ to /src/perlmods/lib/ even though
a number of the affected scripts are probably cruft.
Use autoconf to provide the default paths in O:WWW:Web and O:WWW:Method;
next step is probably to teach autoconf to ask Build.PL to do that for
us to make the OpenILS Perl modules more independent.
dbs [Sun, 30 Jan 2011 04:31:56 +0000 (04:31 +0000)]
Use the browse method instead of startwith for Manage Authorities, too
Now that the browse method is working properly, adopt it for the
Manage Authorities interface as well so that context around the
search term can be provided.
dbs [Sun, 30 Jan 2011 04:22:08 +0000 (04:22 +0000)]
Correct authority browsing for reals
First, restore the >= enable before and after ranges in
authority_tag_sf_browse(), after I mistakenly removed it in
r19131; the second storage request for $after does not
stomp on the prior $before results, it simply gets pushed
onto the carefully constructed list of $before results,
ensuring that our target is in the middle of page 0.
Second, we're treating all of the "tag" members in the
method registration as list references now (for the purpose
of searching against 4xx/5xx in the .refs. variants), but
that was blowing up when we registered just a single tag as
a string and tried to treat the scalar as a list reference.
I could have checked to see if what we had incoming was a
reference and dance accordingly, but opted to just define
all single-tag entries as single-element arrays instead.
Applied the same to startwith.
Finally, in r19331 I had used chop() to ensure that an
exact match for startwith would be returned as element 1 on
page 0, instead of appearing as the last element of page -1.
I had said that the right way to do this would be to naco_normalize()
the value to match the normalized afr.value, and so this is what
I have done. Rather than torturously using O:A:Storage:FTS to get
at the naco_normalize() definition, I moved the function into its
own Utils package and adjusted its usage accordingly through the
affected code. One step closer to single-sourcing the function
in the database, as well?
dbs [Sat, 29 Jan 2011 18:03:26 +0000 (18:03 +0000)]
For more predictable authority browse results, use startwith until browse is sorted out
authority_tag_sf_browse() was returning unexpected results when only a small
set of authority records was loaded. This may be an indication of a corner
case, but until we sort that out the more straightforward startwith should
be used.
Also, chop the final character of the incoming search value to ensure
that an exact match is returned on page 0 instead of page -1. For example,
'Bacon, Jono.' becomes 'Bacon, Jono' for the search. (The right thing to
do, come to think of it, is probably to naco_normalize the incoming value;
perhaps next patch).
senator [Fri, 28 Jan 2011 20:51:58 +0000 (20:51 +0000)]
Serials: Add some missing permacrud permissions to IDL
7 classes (sdistn, siss, sunit, sin, sbsum, sssum, sisum) were missing IDL
perms. Appropriate permissions were added to all but sin (serial_item_note).
For the sin class, since it's several leaps away from anything that points at
an org unit, and since no existing code deals with it via PermaCrud, its
PermaCrud section was simply removed.
Some classes retain open <retrieve /> permissions, and others do not.
No new permissions were created for this. All permissions are reused from
"higher" serials objects.
Credit to Mike Rylander for spotting the omissions.
phasefx [Fri, 28 Jan 2011 19:38:57 +0000 (19:38 +0000)]
Replace the native dump() function with a wrapper function that takes an optional 2nd parameter for log level (defaults to debug)
Log level: 0 None, 1 Error, 2 Warning, 3 Info, 4 debug
A global _dump_level variable gets consulted when the function is used. The default is 2, Warning.
So by default, until we start changing things, this will suppress most of the existing dump statements. Some are slipping through the cracks based on when the function replacement happens, but I'm happy with it. We also prepend the dump msg with a label for the log level.
_dump_level could be locally customized with server/skin/custom.js
miker [Fri, 28 Jan 2011 14:58:37 +0000 (14:58 +0000)]
Patch from Thomas Berezansky addressing logical importance of various circulation and hold matrix matchpoint components.
Previous to this commit, INDB circ and holds use a pre-defined weighting set for rule ordering. This can be changed via replacing the relevant "find" functions in the database, but this is not easily done for most people.
The weight set for circ matchpoints is obtained based on the context ou of the circ (aka, where the circ is happening).
The weight set for hold matchpoints is obtained based on the item's circ library (aka, where the item lives).
Optionally, add an enabled circ.holds.weight_owner_not_circ internal flag to have the weight set for hold matchpoints be obtained based on the item's owning library (owner of the call number).
TODO: discuss promotion of circ.holds.weight_owner_not_circ to a Global Flag; wikified or docbook'd documentation and use-case examples.
phasefx [Thu, 27 Jan 2011 20:58:41 +0000 (20:58 +0000)]
Make window.print() configurable. The "Mozilla Print" strategy is internally identified as 'webBrowserPrint', and it uses XPCOM for printing the contents of an HTML document. However, in some cases we override this with a 'window.print' strategy to workaround bugs. A problem with this has been that an actual bare javascript window.print() does not honor any of configured "gPrintSettings". However, it is informed by (and in turn informs) a Mozilla preference called print.print_printer. Right now window.print (if used from within the JSAN util.print library) only gets called in when in the Default printer context/role. So we force print.print_printer to equal the configured printer for the Default role. Have I mentioned that I hate printing in Mozilla?
senator [Wed, 26 Jan 2011 23:04:56 +0000 (23:04 +0000)]
Serials: add "clone subscription" functionality to alt serials control
This feature clones subscriptions and all the objects related to them
that don't describe holdings. Should help speed users' workflow when setting
up subscriptions.
gmc [Wed, 26 Jan 2011 21:58:47 +0000 (21:58 +0000)]
patch to edi4r
This is a patch to edi4r which has been submitted; sticking
it here temporarily since at the moment it's unclear whether
edi4r still has an active maintainer.
This patch fixes a bug where question marks in the bibiographic
description ended up being escaped three times over.
gmc [Wed, 26 Jan 2011 19:05:52 +0000 (19:05 +0000)]
remove redundant finalize
Already handled by OpenILS::Mapper, and has the effect
of making a parsing bug in edi4r worse by causing
question marks in the EDI data to be escaped multiple
times.
phasefx [Wed, 26 Jan 2011 15:36:49 +0000 (15:36 +0000)]
Staff client portal page replacement by Michael Peters, with a few tweaks.
Thanks!
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
Signed-off-by: Michael Peters <mrpeters@library.in.gov>
git-svn-id: svn://svn.open-ils.org/ILS/trunk@19305 dcc99617-32d9-48b4-a31d-7c20da2025e4
dbs [Tue, 25 Jan 2011 19:18:02 +0000 (19:18 +0000)]
Update README to include --admin-user / --admin-pass options for eg_db_config.pl
As the default Evergreen administrator account is now created with
a randomized user name and password, we have added the options to
eg_db_config.pl to reset those to something known and specific to
a given instance.
Also, Fedora 13 is getting close to retirement, update to Fedora 14 for
supported distros.
dbs [Tue, 25 Jan 2011 06:17:46 +0000 (06:17 +0000)]
Teach the i18n Makefile how to handle serial.properties
Also check in the POT for serial.properties and some other
foobar.label matches for foobar.accesskey (does not have
an effect on properties files but hopefully if we're
consistent then the pattern will be evident for entities).
Noting in passing that there are a number of "foobar(s)"
comined singular/plural labels that should be split to
support translation.
dbs [Tue, 25 Jan 2011 03:09:18 +0000 (03:09 +0000)]
Fix existing serial entities that didn't provide .label partners for .accesskey
The translate-toolkit project generates a POT file from an input DTD
that requires entities ending in .accesskey to have a corresponding
.label entity; this is a Mozilla convention for localization. Fix up
the serial interface strings that are localized to match this expectation.
Also remove two duplicate entities in lang.dtd that were flagged by
the build/i18n/tests/check_entities.py script (and which cause Launchpad
translation imports to break).
senator [Mon, 24 Jan 2011 22:14:57 +0000 (22:14 +0000)]
Serials: A batch of improvements to the caption/pattern wizard
- Using a numeric frequency ($w) now pre-selects the regularity page
- Switch the regularity page from a box layout to a grid layout for legibility
- Simplify and unify month/date control pairs, enforcing correct limits
on days in each month
- Scrollbars!
- If the user creates $y data in the regularity page, but then unchecks the
"use specific regularity information" box, the $y stuff will be correctly
excluded from the compiled pattern code.
- "Display in Holding Field" replaced with text that better explains what it
means
- The wizard's dialog window has a title now
- In alternate serials control -> subscription details -> captions/patterns tab,
if the user has already typed something in the Pattern Code field, they
now get a warning that using the wizard will erase their existing work
if they click the Wizard button
- The captions/pattern tab now treats pattern codes as immutable once created,
which is what was apparently intended from the beginning. See
http://list.georgialibraries.org/pipermail/open-ils-dev/2010-May/006079.html
dbs [Sun, 23 Jan 2011 18:43:22 +0000 (18:43 +0000)]
i18n support for a few OPAC strings
Enable translation of the "More copies listed in full record details"
message for the search results library / call number / item /status
lines
Also provide translation support for the hold queue status message,
including singular / plural variants (most languages do not provide
the equivalent of the "item(s)" idiom in English).
Instead of burying the display of hold queue status with a hard
coded "if (false)" test, turn it into a top-level variable for
a bit more exposure.
phasefx [Fri, 21 Jan 2011 22:22:53 +0000 (22:22 +0000)]
more overzealous unsaved data prompts
onKeypress catches all sorts of stuff, like the control+w for closing tabs. Not good. Ideally we'd test event.isChar, but that's broken in Mozilla:
https://bugzilla.mozilla.org/show_bug.cgi?id=312552
Instead we look to see if control, alt, or meta are being held down. Not perfect, but good enough for now. For example, won't ignore tabs for jumping from field to field, and won't realize the hotkey for clipboard pasting should trigger the unsaved data state.
phasefx [Fri, 21 Jan 2011 16:58:44 +0000 (16:58 +0000)]
fix spurious unsaved data prompt with repeated use of same patron editor (only set tab lock once with patron editor, since we only unlock once upon save)
dbs [Fri, 21 Jan 2011 03:13:14 +0000 (03:13 +0000)]
Part 3 of a more secure default set up
With this commit, the hardcoded default barcode is replaced by an
MD5 hash of a random string of numbers, preventing the barcode from
being used as a known login name in the OPAC interface (which would
remove one of the factors required in a brute forcing of the account
credentials).
You probably don't want to change the barcode for the admin user,
but if you feel the need you can use the usual patron editor in
the staff client.
Thanks to Thomas Berezansky for suggesting this additional change.
senator [Thu, 20 Jan 2011 22:37:13 +0000 (22:37 +0000)]
Acq: use the acqlimad table instead of its ancestor acqliad table to
populate a dropdown for the Export Single Attribute List function of lists
of lineitems
The acqliad table may appear to have duplicate entries since it's a parent, and
the point of the function that's trying to use it is just to export lists of
ISBNs or UPCs, so acqlimad is a better fit.
senator [Wed, 19 Jan 2011 21:52:28 +0000 (21:52 +0000)]
Booking: Robert Soulliere spotted and fixed a bug in processing reservation-
related overdue fines. See https://bugs.launchpad.net/evergreen/+bug/705061
This patch tests successfully for me. Thanks Robert!
miker [Wed, 19 Jan 2011 19:50:47 +0000 (19:50 +0000)]
Build and flatten a tree, correcting a sorting issue in some OU dropdowns.
The previous code assumed that work org units would be delivered in hierarchical order, but alas, they are not. Thus, we build the hierarchy and then flatten it, sorting at each level. This will be non-fast with many work OUs, but the common case is a small set, which is not painful.
Further improvement is warranted when the above proves false.
dbs [Wed, 19 Jan 2011 14:53:48 +0000 (14:53 +0000)]
Avoid escaping issues in authority.normalize_heading() by parameterizing the query
Long story short: MARC subfield values containing backslashes caused noise
and in some cases painful errors. Using spi_prepare/spi_exec_query is the
safest way of handling escaping, rather than adding more regexes and munging
the data before it even gets to naco_normalize().
Most painful case was <subfield code="a">Foo, Bar\</subfield> - the trailing
slash ended up escaping the enclosing single quote (because PostgreSQL isn't
configured by default with strict conformance to SQL escaping rules yet) and
threw an error.
dbs [Wed, 19 Jan 2011 04:41:15 +0000 (04:41 +0000)]
Part 2 of creating a more secure default setup
With this commit, the user name and password for the administrative
user will be MD5 hashes of a random string of numbers. You can set
the user name and password to your liking using the --admin-user and
--admin-pass switches for eg_db_config.pl (this will be the
documented method in the install docs) or via straight SQL as:
UPDATE actor.usr SET usrname = 'FOO', passwd = 'BAR' WHERE id = 1;
dbs [Wed, 19 Jan 2011 04:24:49 +0000 (04:24 +0000)]
Towards a more secure default setup
Shipping with a default account user name and password is considered
an authentication anti-pattern; see
http://code.google.com/p/owasp-development-guide/wiki/WebAppSecDesignGuide_D2
By making the user select an admin user name and password at the time
they create the database, we avoid the chance that they will forget to
change the default password and leave their system open to access.
Next step is to change the seed data to insert random values for the
admin username and password, then update the documentation accordingly.
senator [Tue, 18 Jan 2011 18:35:04 +0000 (18:35 +0000)]
Make EditPane objects built of AutoFieldWidget objects (such as those used
for create/edit dialogs with AutoGrid) enforce required fields more forcefully.
Before, if a field was marked required either in the IDL or by the
requirdFields attribute of an AutoGrid, you'd get a yellow widget with a caution
sign for that field, but you could still click save and the system would
attempt to save your object.
Sometimes this is stopped when pcrud can't save the object due to
required="true" in the IDL and/or a "not null" constraint in the schema, but
there may be cases where a given interface wants to require a value in a given
field even though that's not necessarily enforced at lower levels.
Serials: Specifically use this new feature in the distribution pane of the
Alternate Serial Control view, to prevent the creation of issues without a
"receive unit template" field, as you can't receive items in the Batch
Receive interface without one.
dbwells [Mon, 17 Jan 2011 23:34:49 +0000 (23:34 +0000)]
Auto-generation of placeholder barcodes
This commit implements a very basic trigger for auto-generating placeholder barcodes, as discussed at the Dec. 14 2010 IRC developer meeting. The 1.6.1-2.0 upgrade script has not been changed, as backporting this to 2.0 is pending review.
dbwells [Sat, 15 Jan 2011 04:04:23 +0000 (04:04 +0000)]
Postpone advanced serial call-number handling until after 2.0
Sharing of a single call-number for multiple volumes, while well intentioned, was not ready for primetime for various reasons. This commit:
1) harmonizes and unifies call-number handling in Serial.pm, sticking with current practices
2) adds a very basic and now necessary prompt to the Serial Control view
senator [Sat, 15 Jan 2011 03:03:45 +0000 (03:03 +0000)]
Serials: a regularity (i.e. 85X subfield $y) page for the caption/pattern wizard
This adds a new page to the caption/pattern wizard that allows the user to
enter regularity information (specific published, omitted, and combined issues)
by chronology. Doing the same by enumeration is possible in MFHD but not yet
supported in the wizard.
You still have to be a serials librarian who understands MFHD and the 85X tags
in order to really benefit from this, but it beats hand-entering the MARC tags.
Still to-do to perfect this:
- suggest (pre-enable) the regularity page when numeric $w is used
- use grid layout instead of hbox and vbox elements for neatness
- support enumeration codes
- days of month widget should be smarter than to always allow 31 days
- the whole caption/pattern wizard still needs scrollbars
- more limitations to prevent the user from entering patterns that
don't make sense
- make sure that if a user fills out a page of the wizard, including
this new one, but then unchecks the whole page, that whatever
work they did is not included in the compiled result
- more testing, general cleanup
dbs [Fri, 14 Jan 2011 02:49:33 +0000 (02:49 +0000)]
Enable truncation attribute in Z39.50 queries to be left out entirely
Per https://bugs.launchpad.net/evergreen/+bug/702695, some Z39.50
servers hate the truncation attribute (@attr 5=anything) and always
return 0 hits.
This gives you the ability to specify a negative value for the
truncation attribute and thereby prevent the truncation attribute
from being included in the Z39.50 query for a given server.
senator [Wed, 12 Jan 2011 22:50:16 +0000 (22:50 +0000)]
Serials: In the holding code mini wizard of the alt serials controls, pre-
populate any Year, Season, Month or Day fields based on issuance.date_published
to reduce the need for redundant user input.