These display well as tabs since there are only two tabs to display. Probably
inadvisable to replace these tabs with menus as we did in other places because
there are already menus on these screens to perform actions on selected
checkouts/holds.
Dan Scott [Tue, 24 Sep 2013 05:55:37 +0000 (01:55 -0400)]
TPAC: Streamline facet display
Rather than including a DIV containing only a non-breaking space to
clear the lines of the facets, just use CSS to clear each facet and set
a bottom margin appropriately.
Also, take advantage of wide screens by allowing facets to display
more broadly rather than being limited to a 10% width of the screen.
Dan Scott [Tue, 24 Sep 2013 05:29:19 +0000 (01:29 -0400)]
TPAC: Advanced search - add line break
The header and form for numeric search and expert search were being
displayed inline with the tabs on the advanced search page; push those
down where they should be.
Dan Scott [Tue, 24 Sep 2013 05:15:39 +0000 (01:15 -0400)]
TPAC: Draw a border under the result header bar
Particularly needed in mobile mode, where the background has been set to
inherit, draw a bottom border to separate the result header actions from
the pagination controls.
Dan Scott [Tue, 24 Sep 2013 05:07:00 +0000 (01:07 -0400)]
TPAC: Define result header padding by contents
Rather than defining padding for the result header bar and then defining
margins for the contained labels and buttons, rely strictly on the
buttons and labels to position themselves.
Dan Scott [Tue, 24 Sep 2013 04:46:27 +0000 (00:46 -0400)]
TPAC: Make result label text consistent size
The text on the result header buttons was all 100%, while the text
labels for the sort and limit to available widgets for some reason were
set to a smaller font size, despite appearing on the same line.
Dan Scott [Tue, 24 Sep 2013 03:03:05 +0000 (23:03 -0400)]
Mobile TPAC: Cleaner Refine/Return to hits behaviour
Have the Refine results / Return to results button be the target ID, so
that clicking the link leaves the opposite action at the top of the page
(giving users a quick exit path back to where they came from).
Dan Scott [Tue, 24 Sep 2013 02:55:04 +0000 (22:55 -0400)]
TPAC: Consistent results paginator font size
It is weird to have two different font sizes appearing on the same line
in the regular TPAC, and it introduces slight inconsistency for the left
padding of the results pagination in mobile mode.
Dan Scott [Tue, 24 Sep 2013 02:44:18 +0000 (22:44 -0400)]
TPAC: Avoid paginator HTML rather than hiding it
Rather than generating HTML and then hiding it via CSS, just don't
generate the HTML at all. In this case, avoid generating the Previous /
Next links in those cases where we're on either page one or the last page
of results respectively.
Dan Scott [Tue, 24 Sep 2013 02:33:09 +0000 (22:33 -0400)]
TPAC: Align results pagination in mobile mode
The results summary and results paginator had been using hard-coded
pixel values for the padding-left value; amusingly, they were different
values. Now that the paginator is part of the CSS stylesheet, switch to
using a standard 1 em so that we can also respond to the chosen font
size of both the stylesheet and the user's preference.
Dan Scott [Tue, 24 Sep 2013 02:29:23 +0000 (22:29 -0400)]
TPAC: Reduce vertical space in results paginator
An unnecessary span element with inline CSS results in additional blank
vertical space being generated for searches with only one page of
results. Avoid creating the span (which would normally contain the list
of pages), move the CSS to the style sheet, and use ems rather than
hard-coded px values for the padding to adjust relative to the font
size.
Dan Scott [Mon, 23 Sep 2013 19:16:16 +0000 (15:16 -0400)]
Mobile TPAC: Show Advanced Search button in results header
Now that the advanced search UI is reasonably mobile-friendly, make it
visible. At the same time, make the wrapping behaviour more friendly by
giving a little bit of vertical margin between wrapped buttons (because
adding "Advanced Search" is almost guaranteed to cause wrapping).
Dan Scott [Mon, 23 Sep 2013 19:02:04 +0000 (15:02 -0400)]
TPAC: More responsive search result header buttons
Rather than having a specific height of 40px, which is crazy, remove the
specific height. This enables the buttons contained in the search result
header to wrap without overlapping the bottom border in strange
patterns.
Replace prefs tabs with select menu in mobile view
There are too many account preference tabs to display cleanly on a small
screen resolution, so let's replace them with a select menu for
navigation. At the same time, we remove hardcoded values used for the
navigation tabs so that we do not need to maintain links/labels for the
menus in two different places.
Bill Ott [Fri, 20 Sep 2013 13:13:05 +0000 (09:13 -0400)]
Reactive tables for myopac circ and holds.
Initial stab at trying to restructure the table data to fit into a vertical table'ish design.
Also took a machete to the nth display:none portions of the previous style so we could see all
the glory that needed to be restructured.
Dan Scott [Fri, 20 Sep 2013 00:28:32 +0000 (20:28 -0400)]
Restore facet-first loading, add breakpoint for results
Facet first loading should be faster on slow servers, so do that rather
than loading them after the results and forcing a page render when we
dump them into place on wide screens.
Also add an 800px breakpoint to prevent results from getting pushed
underneath the facets; at 800px, we go into "hide facets" mode instead.
This gets picked up by the 600px breakpoint, so it's all good.
Dan Scott [Thu, 19 Sep 2013 15:45:44 +0000 (11:45 -0400)]
Mobile: group advanced search rows with a border
We want advanced search rows to wrap on mobile, but also want to group
the elements in some way. This adds a simple border on the bottom of
each row to suggest that things are together.
Dan Scott [Thu, 19 Sep 2013 15:11:22 +0000 (11:11 -0400)]
Bump up the default font size, use consistent font sizes
opac/parts/css/fonts.tt2 defines all of the font sizes we should be
using for consistency throughout the TPAC. There was a need felt to bump
up the default font size in the mobile UI from 12px to 12pt, which was
matched by a number of sites who had also bumped the normal UI up to
14px or 15px. Rather than having a weird font-size jump when you narrow
a browser window to < 600px, keep the same base font size... but bump it
up.
Also, replace hardcoded 100% etc font sizes with the templated font
sizes for consistency.
Dan Scott [Thu, 19 Sep 2013 14:38:40 +0000 (10:38 -0400)]
Respect adv_break with clear: both
This keeps the old behaviour, in all ways, but rather than using a specific
/ arbitrary pixel width it uses clear:both to start a new line for a new
adv_break.
Dan Scott [Thu, 19 Sep 2013 14:02:45 +0000 (10:02 -0400)]
More responsive advanced search
By default, rather than having blocks of search filters with an explicit
width of 800px or 850px, just have one line of filters that wraps
according to the width of the page (truly responsive).
Also move all inline styles into style.css so we can more easily
manipulate them based on media queries. And notice silly styles that can
be easily swapped out with clean styles.
Ben Shum [Thu, 19 Sep 2013 03:56:00 +0000 (23:56 -0400)]
Resize advanced search filters to allow more space by default
By default, the space allotted was perfect at 800px which worked in
Chrome browser just fine. But viewing in Firefox rendered the elements
slightly larger and wrapped some filters instead of displaying four
in a row as expected.
Increase the adv_search_filters from 800px to 850px to allow for more
space.
Ben Shum [Wed, 18 Sep 2013 21:57:00 +0000 (17:57 -0400)]
Some CSS tweaks
1) Remove the login height to prevent problems with larger fonts at entry
2) Add some top and bottom padding between search results
3) Make the titles larger by default in search results
4) Add some right padding to the results block
Tweak the padding and margins for My Account buttons so that they fit on
one line for small screens. Also fits well for users with very, very long
names.
Bill Ott [Wed, 18 Sep 2013 18:55:40 +0000 (14:55 -0400)]
Various mobile style and display changes.
Try to reduce the size of the search bar and search type option links.
Remove completely from login page (problem or make user rely on back button?)
Introduce mobile_hide class for cheap/easy method to alter pieces for mobile.
Dan Scott [Wed, 18 Sep 2013 17:55:40 +0000 (13:55 -0400)]
Improve rdetail action formatting when no cover art
When there is no cover art, the format label gets the actions hung oddly
to the right in the record detail view. Just wrap the whole block in a
div and float that instead.
Dan Scott [Wed, 18 Sep 2013 17:36:15 +0000 (13:36 -0400)]
Set explicit width for result metadata in main view
We were getting ragged edges for search results with titles longer than
the "# of # available copies..." statement and the placement of the
place hold action buttons, so set an explicit width, and then deset that
in mobile mode.
Bill Ott [Wed, 18 Sep 2013 11:31:58 +0000 (07:31 -0400)]
De-table the advanced search to allow for mobile resizing.
A first stab at allowing the advanced search page to resize for mobile use.
Much of the style included was borrowed from Jason Boyer. Critical changes
occur in the adv_search_xxx type id's in the non-mobile style.
to-do: See if there's any hope for the search rows. Not sure what can be
done to make them fit any better.
Signed-off-by: Bill Ott <bott@grpl.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Conflicts:
Open-ILS/src/templates/opac/css/style.css.tt2
Open-ILS/src/templates/opac/parts/advanced/search.tt2
Dan Scott [Wed, 18 Sep 2013 13:35:47 +0000 (09:35 -0400)]
Move search result "actions" below result metadata
Rather than the tabular layout, add the place hold / add to my list
actions underneath the record metadata for each result. This results in
a narrower required width and enables us to actually display the actions
in mobile mode.
Dan Scott [Wed, 18 Sep 2013 13:09:20 +0000 (09:09 -0400)]
Just use a format label in results + pubdate
Rather than having the format icon, which requires either hovering (not
generally available in mobile) or guessing what the strange symbol
means, just use the plain text format label.
In addition, move the brief pubdate from beside the author name to
beside the format label. This avoids confusion if the author name
already has birth or death dates beside it, like "Scott, Dan 1972-
2006". He's not dead yet!
As a bonus, this enables us to remove one table cell from the search
results.
Dan Scott [Tue, 17 Sep 2013 19:16:49 +0000 (15:16 -0400)]
Facets after results, then DOMinate them into place
We can use a media query in JavaScript to detect a given width and then
drop the facets into their left-hand column if needed; if the browser
window resizes, then potentially put the facets back on the bottom.
Also add a rudimentary "Refine these results" link at the top of the
page that is only visible when the facets are at the bottom to
facilitate navigation.
Mike Rylander [Wed, 28 Aug 2013 19:05:36 +0000 (15:05 -0400)]
Stream facet data
For certain shapes of facet datasets, the .atomic version of the
json_query call can produce an XMPP message large enough to cause
ejabberd to fall over unceremoniously. Switch to a streaming
CStoreEditor-based call instead to avoid this.
Ideally, this would use message bundling (aka, chunking) as well,
but the C parts of OpenSRF don't seem to support that yet.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Dan Wells [Fri, 6 Sep 2013 20:36:47 +0000 (16:36 -0400)]
'Opportunistic' Acq In-process Copy Overlay
It is both normal and common to overlay brief acquisitions bib
records with more complete records, and it is simple to create
copies as part of the overlay process, but there is no *simple* way
to have the imported copies overlay the acq copies.
This code builds off the existing copy overlay code (which matches
and overlays using specified IDs), but uses broader matching criteria.
By selecting the new option, "Auto Overlay In-process Acquisitions
Copies", the system will potentially overlay copies which:
* have associated lineitem details (that is, they were created
by the acquisitions process), and
* that lineitem detail has the same owning_lib as the incoming
copy's owning_lib
* the current copy associated with that lineitem detail is "In
process"
Also, fix two small bugs, one which prevented overlay using the
'Available' status (change 'if $val' to 'if defined $val', since
'Available' is '0'), and another which prevented item overlay when
selecting the match record manually (as_imported was null in the DB).
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Bill Erickson [Thu, 8 Aug 2013 20:47:28 +0000 (16:47 -0400)]
LP1210291 Long Overdue Standing Penalty
Adds a new PATRON_EXCEEDS_LONGOVERDUE_COUNT patron standing penalty.
It behaves the same as the PATRON_EXCEEDS_LOST_COUNT penalty for
long-overdue circulations.
Release notes included.
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Conflicts [resolved, normal seed data order stuff]:
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Dan Wells [Fri, 13 Sep 2013 16:59:59 +0000 (12:59 -0400)]
Tweaks to 'my lists' paging code
1) Don't set and refetch the 'my lists' settings if nothing changed.
(minor nit)
2) Get the count through the same code where we get the bookbag data.
For #2, I am concerned with the current duplication of logic. At best
we are doing things twice, and at worst we end up counting a set which
is slightly different than our actual bookbag search results.
In the updated code, I think the count accuracy is subject to
search/superpage limit settings, so lists are effectively limited by
the search settings. If that is a valid concern, we can beef up the
settings for this query.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Clear the cancel reason when a canceled lineitem is marked as received.
With items, clear the cancel reason and re-generate fund debits if they
were removed during cancelation (because the keep_debits flag in the
cancel reason was set to false).
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Bill Erickson [Wed, 14 Aug 2013 13:44:45 +0000 (09:44 -0400)]
Billing UI style lost and longoverdue circulations
When a LOST or LONGOVERDUE circulation, which has not yet been returned,
appears in the patron's list of billed transactions, style them
differently from other not-yet-returned items.
Similar to regular not-yet-returned items, display a helpful message to
staff indicating what colors map to what types of circulations.
The default colors are maroon for LOST and organge for LONGOVERDUE.
To change the colors, a change to circ.css (for the style) and lang.dtd
(for the hint) are required.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Added pagination with page numbers when viewing the items in
a list. Also made the number of list items per page a user
setting, per the suggestions of Pasi Kallinen and Jason
Stephenson.
The setting is located in, Account Preferences -> My Lists Preferences
Update: Added i18n part to allow for translation. Removed hard-coded
bre.source.
Signed-off-by: Kyle Tomita <ktomita@catalystitservices.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Bill Erickson [Fri, 30 Aug 2013 20:49:58 +0000 (16:49 -0400)]
LP#856688 OUS to disable org unit as hold pickup lib
YAOUS that removes an org unit from consideration as a hold pickup
library. This setting only affects the OPAC display and does not
otherwise affect the display of the org unit in the OPAC. (In other
words, it's not the same thing as actor.org_unit.opac_visible). It also
has no affect on hold targeting / capturing.
[LFW: Numbered upgrade script.]
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Remington Steed [Mon, 5 Aug 2013 13:57:04 +0000 (09:57 -0400)]
Allow action trigger events to be repeated
Currently, there is no way to repeat an event (action/trigger) when a
real-world event occurs more than once for the same target. This only
matters for targets that are persistent (such as a library card)
combined with events that can reoccur (such as expiration, if the
expiration can be removed). To address this, we add a new field to the
action_trigger.event_definition table that sets the amount of time
after which the event is allowed to repeat.
This commit adds the new field to the IDL, database schema and template
files and also provides the simple db upgrade script. It is worth noting
that we chose to base the repeatability on the start_time of the previous
event, which is more predictable than complete_time (which could be null
if the event fails).
Signed-off-by: Remington Steed <rjs7@calvin.edu> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Jason Etheridge [Wed, 12 Dec 2012 01:02:38 +0000 (20:02 -0500)]
P.V. SUPA GoodStuff integration
This impliments a "Server Add-ons" module for integrating P.V. Supa's RFID
product known as GoodStuff with the Evergreen staff client.
To activate it, you should add the identifier "pv_supa_goodstuff" (without the
quotes) to the list managed by the Admin->Workstation Administration->Server
Add-ons menu action within the staff client. You will need the
ADMIN_SERVER_ADDON_FOR_WORKSTATION permission to do this.
After doing this and clicking the Update Active Add-Ons button, the interface
will refresh and show a GoodStuff tab in the Add-on Preferences section. Within
this tab you will have the option of specifying the hostname and port for the
GoodStuff hardware. There is also an "Enabled" setting that needs to be checked.
Currently three interfaces have been integrated:
* Circulation -> Check In Items
* Circulation -> Check Out Items (where you scan the patron barcode)
* Circulation -> Check Out Items (where you scan the item barcodes)
Each interface gets an RFID checkbox if the "Enabled" preference has been set,
that can activate/deactivate the functionality on a per interface basis. The
checkbox states persist (i.e. are sticky).
Signed-off-by: Jason Etheridge <jason@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Jason Etheridge [Fri, 21 Dec 2012 05:19:37 +0000 (00:19 -0500)]
JSAN module autoloader for "add-ons"
This adds a "Server Add-ons" menu entry under Admin -> Workstation
Administration in the staff client. Choosing this allows you to edit or set a
list of identifiers that correspond to JSAN-style modules found in
/server/addons/, and is meant mainly for activating 3rd party modules within the
staff client on a per-workstation basis. You need the
ADMIN_SERVER_ADDON_FOR_WORKSTATION permission to use it.
Configuration options for activated add-ons may also show up in this interface.
More technical details:
This Server Add-ons list is stored as a JSON array in the Mozilla preference
'oils.addon.autoload.list'.
We also add an addon.autoloader module that gets called in most XUL interfaces
via the util_overlay file. This autoloader will loop through the modules
specified in 'oils.addon.autoload.list' and instantiate each, storing a
reference to each of the newly created objects in a data structure in
window.oils_autoloaded.
So, as an example, let's say there is a module: /xul/server/addon/uber_scan.js
And we have the identifier 'uber_scan' in our Server Add-ons list. Then, on
every page load of a XUL interface using the stock util overlay, we will
effectively call:
new addon.uber_scan();
Causing the code in the module to execute. It is up to the module to determine
whether it needs to do anything within a given interface.
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Conflicts [permission numbering]:
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Jason Etheridge [Thu, 20 Dec 2012 21:10:57 +0000 (16:10 -0500)]
internal: default_focus not called
Minor bug. Was being called in an else clause dependent on some help context
logic for new tabs, but should be called for every new tab. Shouldn't result
in any end-user visible change, but if interfaces wrapped in browser.js were
to have a default_focus function, then this could come into play.
Signed-off-by: Jason Etheridge <jason@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Mike Rylander [Thu, 12 Sep 2013 17:13:23 +0000 (13:13 -0400)]
Optimize container filters in QueryParser
When a container filter is used at the top level of a QueryParser
query (that is, in a simple query with no OR-logic branches or explicit
nesting groups) we can use an INNER join instead of LEFT + IS NOT NULL.
On some production datasets this showed an increase in performance from
20+ seconds to 1ms for the core query.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Bill Erickson [Wed, 11 Sep 2013 17:49:07 +0000 (13:49 -0400)]
LP#1084758 store staff client tpac (etc) zoom pref
Staff client pages loaded via browser.xul which have a name (via
internal XUL URL param) now have the ability to store and load a per-
page zoom value preference. This includes (at minimum) the embedded
TPAC.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>