LP#1361900 Move Acquistions Admin Menu This patch fills a wishlist request to have the Acquisitions Admin functions moved out of "Server Options" and into their own adminitrative menu. They can now be accessed via Admin > Acquisitions > Currency Type, etc. Signed-off-by: Michael Peters <mpeters@emeralddata.net> Signed-off-by: Jennifer Pringle <jpringle@sitka.bclibraries.ca> Signed-off-by: Ben Shum <bshum@biblio.org>
Floating Groups Convert the floating bool to a link to floating groups. Each group contains zero or more members that define how copies can float. See the included documentation file for an overview. Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Dan Wells <dbw2@calvin.edu>
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
Z39.50 Batch Search/Overlay Z-Index Admin UI Admin -> Server Admin -> Z-Index Field Maps Signed-off-by: Bill Erickson <berick@esilibrary.com>
Allow translating more strings in xul-files. Signed-off-by: Pasi Kallinen <pasi.kallinen@pttk.fi> Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Import bib trash field group admin UI Staff client admin UI for managing MARC import trash fields. Admin => Server Admin => MARC Import Remove Fields Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Remote Account Conify UI Admin interface for config.remote_account. To date, remote accounts have been managed solely as EDI accounts, which have their own interface. If one wishes to add/manage non-EDI remote accounts, then this new UI is needed. Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com> Conflicts: Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul [minor, related to adjacent addition]
Custom best-hold selection sort order The ranking algorithm that chooses the best hold to target a copy in hand at a capture time used to be fairly simple. It had two modes, FIFO and not-FIFO, and that was it. This change allows full configuration of that algorithm. In other words, when the system captures a copy and sets out to evaluate what hold, if any, that copy might best fulfull, site staff of sufficient permission level are now empowered to choose exactly which comparisons the systems makes in what order. This gives said staff much greater flexibililty than they have today over holds policy. For more information, see the included tech spec documents. Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com> Conflicts: Open-ILS/src/sql/Pg/002.schema.config.sql Open-ILS/src/sql/Pg/950.data.seed-values.sql Signed-off-by: Mike Rylander <mrylander@gmail.com>
Calculated Proximity Adjustments, a new feature Allows customization to the way that Evergreen measures the distance between org units for the purposes of 1) determining what copy at what org unit is best suited for targeting a title-level hold, and 2) determining what hold is best suited for fulfillment by a copy-in-hand at capture (checkin) time. The customization is based on a table 'actor.org_unit_proximity_adjustment', with certain matching criteria that the system compares to properties of the holds and copies in question. This feature is actually side-ported from the FulfILLment project, where it was originally developed by Mike Rylander. Lebbeous Fogle-Weekley was responsible for integration into current Evergreen code, some testing and bug-fixing, and minor refinement of documentation. Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Add config interfaces For metabib class, class ts maps, field, and field ts maps. Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Link checker: user interface and supporting fixes (part 2) Started verification review UI, also SCHEMA CHANGES It just doesn't work for me to not have url_verify.url directly related to url_verify.session. When dealing with the "root" URL in a redirect chain, you can get the related session through url_selector, but not when you have any later URL in the chain. The only way for IDL perms to work would be to have a link to a view using a CTE to find the "root" URL. That's too complex, so instead of that I've just added a session fkey on url_verify.url. Corrections to the preceding commit Vertical scrolling UI glitches fixed Fix broken display of verification attempt in progress Implement the "process immediately" switch, hitherto unhooked up Verify-all now means all-matching-my-search-terms, not necessarily all-in-uvs let's do filter sets a little more generalized-like Permission fixing Filter set loading works. Filter loading: gracefully skip unknown fields, remove inital empty row Saving filter sets Fix filter dialog for pkey fields, scrolliness issue, saved filters issue Pretty start page for staff client menu to land on Staff client menu entry User settings for saved columns Session cloning, working and rather tested show name of session on url select page ... ... and link back to that on review attempt page IN / NOT IN for filter somewhat working, but doesn't save/load yet Saving/loading filter rows for IN, NOT IN operators Printing Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
LP1066158 - Add associated permissions to admin menu commands For the admin menu, we had already begun to check for specific permissions to allow staff to access the menu options. However, it is not complete. This is a first attempt to add additional permissions to various local and server admin options. Signed-off-by: Ben Shum <bshum@biblio.org> Signed-off-by: Mark Cooper <markchristophercooper@gmail.com>
LP#1102472: add about:about to staff client developer menu The about:about page contains many XULRunner diagnostic tools. Some useful ones include: about:buildconfig - Get information about how the staff client is built. about:config - Tweak XULRunner settings. about:memory - Get detailed information about staff client memory usage. Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Admin -> Local Admin -> Item Attribute Editor Main purpose is to allow you to spawn the Item Attribute Editor for the purpose of configuring templates and using the Hide Fields feature without actually finding an item to work and putting it at risk of accidental modification. Signed-off-by: Jason Etheridge <jason@esilibrary.com> Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Allow staff to pick search/pref libraries This adds a workstation-level set of settings for search and preferred libraries. These override the default search library and the preferred library individually, allowing staff to default searching at one OU but still get copy information for a different one. Original use case is "search everywhere, but show my local copies". Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Jason Etheridge <jason@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Search filter groups admin UI staff menu entry Admin -> Local Administration -> Search Filter Groups Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Dan Scott <dscott@laurentian.ca>
Improve Firefox/XULRunner Support XULRunner/Firefox 4+ change the rules significantly, and to support them significant changes have to be made in Evergreen. This commit covers a number of things: 1 - Remote XUL Issues Later versions of XULRunner disable support for Remote XUL without using a whitelist entry, and whitelisting may stop working eventually as well. The solution here is the addition of a new protocol wrapper that allows Remote XUL to act like Local XUL. The wrapper is oils:// and acts like HTTPS for the most part. The "host" the client connects to is always "remote", however, and use of the wrapper has multiple effects. The first of these effects is the enabling of Remote XUL content, with as close to the Local XUL security level as I could manage. This means that nearly anything Local XUL can do, Remote XUL should be able to do too. The second of these effects is the disabling of JavaScript-visible cookies. XUL doesn't have cookies, and as such a side effect of the wrapper allowing remote content to appear to be local content is the lack of cookies. This does *not* affect server side visibility of cookies, however, so things like TPac can still see cookies. This required fixing a lot of places that were built to read data like authtokens out of cookies. The third of these effects is the "hiding" of the hostname for anything going through the wrapper. This prevents oils_persist from saving things correctly. I thus made oils_persist check for the wrapper and use the data stash to get the hostname instead. I suspect that we can get rid of the location.hostname check entirely at this point, but have not done so. The wrapper also sets a request header of OILS-Wrapper, value of 'true'. That allows the server to know that the request came through the wrapper. I used that ability to have TPac go into "Staff" mode when the wrapper is in use. This will enhance extension use, where the same authtoken will be seen by both the staff client and Firefox browsing. I willi also note that I rigged the wrapper to be easily adjusted for a second, hard-coded host for selfcheck use, using oils://selfcheck instead of oils://remote, that could be very easily turned into a minimal Firefox extension. That would enable the selfcheck code to have permission to work with printers and such without enablePrivilege (see next section). 2 - enablePrivilege Deprecation The enablePrivilege security model has been removed and no longer functions, and the staff client depended heavily upon it. The Remote XUL fix provided us with a way to fix the enablePrivilege issues, however. Because the Remote XUL has the Local XUL security context it doesn't need enablePrivilege anymore. However, because enablePrivilege no longer functions for those things *not* loaded through the wrapper some things had to be changed. For one, because if you are loaded through the wrapper you can't see cookies, and if you can see cookies you can't do "XUL" things, the "XUL" cookie has been removed. However, the wrapper can be detected by the protocol you are using, so I added protocol checking to the isXUL checks I know of. I am unsure about what, if anything, to do about the IAMXUL flag that is set by the browser code, though. For two, the JavaScript OPAC needs to be passed through the wrapper for some staff functions to work currently. This has the additional side effect of effectively forcing SSL mode for JSPac regardless of other settings. For three, I went ahead and removed all enablePrivilege calls I could find outside of the selfcheck code. As they no longer work they were just extra cruft. 3 - Component changes Component loading has changed significantly, and the easiest way to accommodate the changes was to re-write our components. The command line handler and force external components (the latter from another branch of mine) were simple enough, especially as they aren't interacted with by other code in the system (and as I wrote them I understood them anyway). While I was at it I made the force external component more extension-friendly. The data stash, however, was using a hack to accomplish what a singleton component could do more easily. That and I couldn't get it to function as it was. My solution was to re-write it as a singleton, removing the interface definition that was not needed. As I changed how it functioned so significantly I had to update all calls to it. In addition, I hid a window loading routine in the data stash component for easier loading of a *single* main Evergreen window from the Firefox overlays. 4 - Extension changes First off, Venkman, the DOM Inspector, and Chrome List are not guaranteed compatible with XULRunner anymore. As such, I have removed the out of date versions. Instead, I have added routines for loading Venkman and the DOM Inspector as Extensions. This keeps them easy to update to later versions, and makes us play much nicer when we are an extension. Also, now the buttons/menu items for loading these interfaces disable themselves if the extensions don't appear to be loaded. A side effect of that was that Windows installers compressed with zlib were unhappy. I switched to solid lzma, which in theory will get us smaller file sizes too. Secondly, Extensions have changed significantly in Firefox 4+, and Evergreen had to be adjusted to deal with some of the changes. I adjusted the overlay to take into account the new application menu, and I re-wrote the hotkey set loading routines to deal with the fact that extensions don't get extracted by default. 5 - Staff Client Build Process XULRunner has some changes that needed accounting for, such as a root level chrome.manifest being needed. Extension mode, as mentioned above, needed tweaks as well, and other issues were run into along the way. Both XULRunner and Firefox version support has been extended to 14.* and the base XULRunner download has been bumped to 14.0.1. In addition to the changes needed to support later XULRunner versions, I also included alternate application name support and support for OS-specific branding folders. Mainly because I ended up using all of them in testing, and decided to leave them in afterwards. 6 - Miscellaneous fixes MARC View was building a data URL and dumping it into an attribute without escaping it. Apparently this made XULRunner unhappy, so I added in escaping. 7 - Miscellaneous tweaks In addition to everything else, while I was running through my various tests I changed a few other things. I enabled the navigation buttons on the OPAC interface embedded in the patron overview for hold placement. With Remote XUL having the same security context as Local XUL they now work. I removed all non-SSL authtoken cookie assignments I could find, and flagged all the SSL ones I could find as being "secure" cookies. On the subject of cookies, I also told the logoff code to not erase every cookie, as those running in extension mode might dislike all cookies going away. I know that during my testing I disliked it, anyway. I removed the code that messes with the user agent. Extensions are basically not allowed to do that, and I don't think we need, or should rely on, a modified user agent elsewhere, so adding a check specifically for when we are not an extension didn't make a lot of sense to me. I also made it so that the automatic login command line options will work after a logoff (but they won't trigger a logoff) during a testing run where I was logging off, clearing cache, and logging in again repeatedly. To deal with CSS changes I changed most (but not all) popup elements to menupop elements. Popups in later XULRunners are transparent by default. Also for CSS changes, a menubar CSS entry in global.css was causing issues with menu visibility on Linux. Things look fine without it, so I went ahead and removed it outright. In the reporter I found that "class" was being used as a variable name, but that is a reserved keyword. I changed it to aClass. To make things easier for url_prefix use I made it so that the urls hash is checked by the url_prefix function. It looks for names up to the first of several characters: /, ?, |. If urls contains that name it is replaced into place. For | the | itself is removed in this process. Signed-off-by: Thomas Berezansky <tsbere@mvlc.org> Signed-off-by: Dan Scott <dscott@laurentian.ca>
menu entry Circulation->Clear Shelf-Expired Holds This spawns the Browse Hold Shelf interface but automatically triggers the View Shelf-Expired Holds and Clear these Holds options. Signed-off-by: Jason Etheridge <jason@esilibrary.com> Signed-off-by: Michael Peters <mrpeters@library.in.gov> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Custom Org Tree : Admin UI New UI for managing custom org unit trees. (Only OPAC is supported for now). Custom trees default to the same shape as the full org unit tree. Staff can remove nodes and re-order nodes. Staff can also replace deleted nodes by dragging them from the reference tree on the left. Admin -> Server Admin -> Custom Org Unit Trees Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Revert "Org unit sibling display sort order : admin UI" This reverts commit 1108cfc0b3978dc0fd80566a2b654edcf6b99d55. Signed-off-by: Bill Erickson <berick@esilibrary.com>