31 May 2020
Koha is the first free and open source software library automation package (ILS). Development is sponsored by libraries of varying types and sizes, volunteers, and support companies from around the world. The website for the Koha project is:
Koha 20.05.00 can be downloaded from:
Installation instructions can be found at:
Koha 20.05.00 is a major release, that comes with many new features.
It includes 13 new features, 275 enhancements, 592 bugfixes.
A new Technical highlights section is included at the bottom of these notes for those seeking a short summary of the more technical changes included in this release
Koha is continuously tested against the following configurations and as such, these are the recommendations for deployment:
Additional notes:
[24347] Add a 'search to order' function
Sponsored by Athens County Public Libraries
This new feature allows staff to add items to an order via a new 'Search to order' function accessible from the basket. The order can then be created either directly from the result list or the detail pages of the catalog. This replaces the former search functionality for existing records within the acquisitions module and makes it possible to use all search features and information shown in the normal catalog.
[13881] Add ability to defined circulation desks
Sponsored by Bibliothèque Universitaire des Langues et Civilisations (BULAC)
When enabled, this feature makes it possible to define circulation desks per library.
Future developments are planned to allow associating hold pickup locations with desks and other features.
New system preference:
UseCirculationDesks
defaults to disabled.
[24846] Add a tool to enable bulk edit of due dates
Sponsored by BibLibre, ByWater Solutions and PTFS Europe
With events sometimes leading to unforeseen library closures, (Coronavirus for example), this new tool allows librarians to update due dates in bulk based on library and current due date of the materials on loan.
Access to the tool requires a new permission
batch_extend_due_dates
.
[23354] Add a 'Point of sale' screen to allow anonymous payments
Sponsored by Cheshire Libraries Shared Services and PTFS Europe
The new feature adds point of sale functionality to Koha.
When enabled, a new "Point of sale" screen will be available from the staff client home page. From this screen, one can build up a transaction consisting of various items defined in the account debit types administration area and then process the transaction anonymously making a 'sale' to the end-user. The payment type, cash register and staff user id's are all stored for later auditing purposes.
New system preference:
EnablePointOfSale
defaults to disabled.
[23355] Add a 'cashup' process to accounts
Sponsored by Cheshire Libraries Shared Services and PTFS Europe
This new feature complements the new 'Point of sale' page introduced in bug 23354 by adding a page to display historic transactions that have taken place on the selected cash register since the last 'cashup' event. One can record a 'cashup' from this page by comparing the summary values displayed on the page to the actual amounts found in the cash register and then clicking the 'cashup' button to record that this process has taken place.
[23442] Add a 'refund' process to accounts
Sponsored by Cheshire Libraries Shared Services and PTFS Europe
This enhancement adds a workflow that allows staff with the new
refund
permission to refund/reimburse patrons when they have been incorrectly charged for a transaction. It records an audit trail for the process.
[24080] Add a 'payout' process to accounts
Sponsored by Cheshire Libraries Shared Services and PTFS Europe
This new feature adds an audited process for paying out excess credits on a patrons account.
[23112] Add circulation process to inter-library loans
Sponsored by Loughborough University
This new feature, when enabled, adds the option for library staff to immediately issue a received inter-library loan item to the patron who requested it. The checkout is immediate and due date is set, either as a fixed date entered by the librarian or based upon the standard circulation rules.
New system preference:
CirculateILL
defaults to disabled.
[4461] Add a context-sensitive report a problem process
Sponsored by Catalyst
This new feature, when enabled, lets patrons report problems using the OPAC.
It adds a link to each page of the OPAC to a form so that patrons can report problems. Problems are then available via a new problem report management area in the staff interface.
New system preference:
OPACReportProblem
defaults to disabled.
[23975] Add ability to search and install plugins from GitHub
This patch makes public plugins discoverable from within Koha itself via a search box at the top of the plugin management page.
One can search for plugins and install them directly from their source.
WARNING: Plugins are not yet verified by the community, use at your own risk. The feature is disabled by default; to enable it an administrator must uncomment, or add new lines to, the relevant configuration lines inside the
plugin_repos
config block within koha-conf.xml.
[24302] Add a way to specify nested objects to embed in OpenAPI
This development introduces a way to define embeddable objects on API routes. On the path specs, they will be specified using dot notation for nested embeddings:
"x-koha-embed": [ 'biblio', 'biblio.items', 'fund' ]
The consumer will need to add a header to the request, specifying the things they want to embed using comma-separated values like this:
x-koha-embed: 'biblio,fund'
This header will be validated against the endpoint spec and an error code will be returned if the request is not appropriate.
[14567] Add an elasticsearch driven browse interface to the OPAC
This is an interface for quick and efficient browsing through records with Elasticsearch.
It presents a page at /cgi-bin/koha/opac-browse.pl that allows you to enter the prefix of an author, title, or subject and it'll give you a list of the options that begin with the text you entered. You can then scroll forward through these and select the one you're after.
Selecting a result provides a list of records that match that particular search.
New system preference:
OpacBrowseSearch
defaults to disabled.
[24369] Add ability to set CORS header in Koha
This development adds support for setting the Access-Control-Allow-Origin header in Koha using the new AccessControlAllowOrigin system preference. This is especially useful for integrating data from the services provided by Koha on sites other than Koha itself.
New system preference:
AccessControlAllowOrigin
defaults to empty.
[12502] Add columns for note, order number and ISBN to late orders page
This adds the internal note, vendor note, order number and ISBN to the late orders table. The notes are editable directly from the table using a modal dialog.
[14963] Add the ability to suggest purchase from existing titles
Sponsored by Bibliothèque Universitaire des Langues et Civilisations (BULAC)
This enhancement adds the ability to create a new purchase suggestion from an existing catalogue record.
[14973] Add an alert during purchase suggestion submissions to warn the user when an existing biblio appears to satisfy the request
Sponsored by Bibliothèque Universitaire des Langues et Civilisations (BULAC)
This enhancement to the suggestions process adds a warning to alert the user to the presence of an apparent holding that already satisfies the suggestion they are about to submit.
[22774] Add ability to limit the number of purchase suggestions a patron may submit in a specified time period
This enhancement allows the library to limit the number of purchase suggestions a user may submit within a given time period.
New system preferences:
MaxTotalSuggestions
defaults to empty (unrestricted) andNumberOfSuggestionDays
defaults to empty (disabled).
[22784] Add the ability to archive purchase suggestions
Sponsored by Bibliothèque Universitaire des Langues et Civilisations (BULAC)
This enhancements to the suggestions process adds a way to archive completed purchase suggestions.
[23590] Add the ability to change the manager of a suggestion and notify the new manager
Sponsored by Bibliothèque Universitaire des Langues et Civilisations (BULAC)
This enhancement to the purchase suggestions process adds the ability to modify the manager of a suggestion.
When assigning a suggestion to a new manager, the new notice
NOTIFY_MANAGER
will be sent to the manager to alert them.To keep track of the different modifications, 2 new columns are added to the suggestion table:
lastmodificationby
andlastmodificationdate
, which will be updated automatically when a suggestion is edited.
[23591] Add a new "Suggestions details" tab on bibliographic record
This enhancement adds a new 'Suggestion details' tab to the bibliographic record details view.
[23592] Add a shortcut from suggestion details to the bibliographic details in the staff client
Sponsored by Bibliothèque Universitaire des Langues et Civilisations (BULAC)
[23593] Add a shortcut from suggestion details to the bibliographic record in the OPAC
Sponsored by Bibliothèque Universitaire des Langues et Civilisations (BULAC)
[23594] Add ability to batch modify itemtypes from the suggestions page
Sponsored by Bibliothèque Universitaire des Langues et Civilisations (BULAC)
This enhancement allows users to update the item types for selected suggestions on the suggestions management page.
[23596] Add ability to modify the suggestions 'reason' field when receiving the item
Sponsored by Bibliothèque Universitaire des Langues et Civilisations (BULAC)
The suggestion 'reason' field is often used to communicate additional information about a suggestion between the patron making the suggestion and the staff member acting upon it.
This enhancement allows staff to update the field upon receipt of the item and thus update the patron regarding the current state of the new material.
[24158] Add ability to receive items in multiple currencies
Sponsored by Athlone Institute of Technology
This enhancement adds a currency dropdown to the actual cost field on the accounting details panel at the point of receipt.
[24161] Add ability to track the claim dates of later orders
Sponsored by Cork Institute of Technology
This enhancement adds the ability to track multiple claim dates for a late order and exposes this audit record via the late orders and basket pages.
[24162] Add quantity column to the late orders table
Sponsored by Cork Institute of Technology
This enhancement adds a quantity column to the late orders table.
[24163] Add ability to define a CSV profile for late orders export
Sponsored by Institute of Technology Tralee
[24308] Add ability to sort by dates in the suggestions table
Separates information about dates and roles into separate columns so they can be sorted nicely.
[18936] Move issuingrules into circulation_rules
As part of ongoing efforts to simplify and enhance the circulation rules system, the
issuingrules
table has been removed and replaced by a newcirculation_rules
table.Any reports that may have used the issueingrules table will need to be updated to utilise the updated database structure.
[19735] Move Perl deps definitions into a cpanfile
This enhancement moves us away from custom-built dependency management and to the widely adopted cpanfile format for perl dependency listing.
If you are running koha from git for development purposes you can now install perl dependencies using standard perl tooling and the included cpanfile.
This patch also introduces the ability to set maximum versions in our dependancy listing (and excluded versions too), which should help us better track our compatibility.
[22823] Koha::Library needs a method for obtaining the inbound email address
This patch adds a new
inbound_email_address
method to the Koha::Library class. This allows for a consistent way of getting a libraries branch email address for incoming mail.
[24103] Add option to dump built search query to templates
This enhancement allows you to view the search query used by Zebra or Elasticsearch, to help with troubleshooting. To use, enable the new system preference DumpSearchQueryTemplate, enable
DumpTemplateVarsIntranet
andDumpTemplateVarsOpac
, and then search the page source in the staff interface or OPAC for 'search_query'.New system preference:
DumpSearchQueryTemplate
defaults to disabled.
[24149] Add new Koha::Statistic[s] classes
Sponsored by Association KohaLa
[24252] Add credits, debits, credit_offsets and debit_offsets relationships to Koha::Account::Line
Sponsored by Cheshire Libraries Shared Services and PTFS Europe
This enhancement allows for fetching related credits, debits and offsets directly from an existing Koha::Account::Line object and includes compatibility for prefetching of relations for performance.
[24255] Add totals methods Koha::Account::Lines
Sponsored by Cheshire Libraries Shared Services and PTFS Europe
This enhancement completes the set of summation methods available from a Koha::Account::Lines resultset object, complimenting the existing
total_outstanding
method.It introduces the following methods:
total
- Sum of allamount
fields in the accountlines set.credits_total
- Sum of allamount
fields for credits in the accountlines set.debits_total
- Sum of allamount
fields for debits in the accountlines set.
[24356] objects.search prefetch
This enhancement makes the Koha::Object(s) derived classes expose information about prefetch-able relations. This is then used by a new helper to generate the prefetch information for the DBIC query.
[24455] Add ability to apply Koha formatting to dates from Javascript
This patchset lays the foundations for applying date formatting as described in the Koha system preferences to datetimes returned by the API in RFC3339 format.
[24545] Replace Franklin Street by gnu.org/licenses in copyright
This enhancement updates the GNU GPL license and copyright statement in all files so they are the same. It also updates the QA check to catch all new files.
[24561] Add a datatables API wrapper
This patch adds a datatables wrapper that allows using datatables against Koha's API. It implements:
- Server side pagination
- Filtering/searching
- Embedding related objects in the request
- Sorting and filtering by nested objects
[25045] Add a way to restrict anonymous access to public routes (OpacPublic behaviour)
This enhancement allows libraries to distinctly disable the OPAC but allow the public facing API's to be enabled.
New system preference:
RESTPublicAnonymousRequests
defaults to enabled.
[21190] Add logging of successful/unsuccessful login attempts
This enhancement adds two new logging preferences
AuthFailureLog
andAuthSuccessLog
in order to keep track of bad login attempts and successful ones.NOTE: In some countries, this may be a requirement as a local application of GDPR legislation.
New system preferences:
AuthFailureLog
andAuthSuccessLog
both default to disabled.
[3426] Add support for multiple tags to the itemcallnumber system preference
The itemcallnumber system preference now allows to specify multiple fields from which Koha can pull a suggestion for the itemcallnumber to use when adding items.
[7882] Add ability to move and reorder fields and subfields in MARC editor
This feature allows to change the sequence of tags and subfields in the cataloguing editor usind drag & drop.
[8643] Add ability to mark some MARC tags and subfields as important and alert on saving the record if they are found to be empty
Sponsored by Centre collégial des services regroupés
This feature allows tags and subfields in bibliographic frameworks to be marked as important. The important attribute will trigger a confirmation message on saving the record, but will allow you to save the record without filling the fields.
[23349] Add batch operations to staff interface catalog search results
With this enhancement there is a new "Edit" menu on the catalog search that allows to "Batch edit", "Batch delete," and "Merge" selected records from the result list.
[24173] Add subtitle
& published date
to the search page in the advanced editor
This enhancement adds subtitle (all parts) and date published to the results that come up for the Advanced editor search.
[24452] Add visual cue for whitespace in the advanced editor
Multiple spaces will now be highlighted by a red dotted underline in the editor.
[21443] Add ability to exclude holidays when calculating rentals fees by time period
Allows to configure on item type level, if the calendar will be taken into account when calculating hourly or daily rental fees.
[23051] Add ability to optionally renew fine accruing items when all fines on item are paid off
Sponsored by Loughborough University
With the addition of a new
RenewAccruingItemWhenPaid
system preference, we gain the ability to automatically renew items with accruing fines at the point of payment of those fines.New system preferences:
RenewAccruingItemWhenPaid
andRenewAccruingItemInOpac
both default to disabled.
[24287] Add ability to record what triggered a given transfer
With the addition of the
reason
field to thebranchtransfers
table this allows us to track what triggered a transfer which is helpful both for later audit and for later use in code where we may want to cancel or replace existing transfers.
comments
to reason
[25188] Make circulation notes more prominent on the patron details tab
Sponsored by PTFS Europe
[18414] Add ability to pass a file of borrowernumbers for deletion to delete_patrons.pl
Adds the ability to specify a file with the --file flag that should be a list of borrowernumbers for deletion.
If used without other flags it will delete the list of borrowers, if used with other flags it will treat the other criteria as filters for the list.
[19008] Add more options to cleanup database script
The cleanup_database.pl cronjob now also includes options for deleting:
- entries from the statistics table
- deleted bibliographic records and items (deletedbiblio, deletedbiblioitems, deletedbiblio_metadata, deleteditems)
- deleted patrons (deleted_patrons)
- returend checkouts (old_issues)
- filled and cancelled holds (old_reserves)
- finished transfers between libraries (branchtransfers)
remove_unused_authorities.pl
[23571] Add measures to prevent concurrent execution of fines.pl
Sponsored by Orex Digital
search_for_data_inconsistencies.pl
[24340] Add ability to disable SIP using koha-sip
This enhancement adds --enable and --disable options to the koha-sip Debian package command.
Usage:
- koha-sip --enable instancename => Enables the Koha SIP server
- koha-sip --disable instancename => Disables and stops the Koha SIP server
[24526] Add verbose and test modes to the automatic_renewals.pl
cronjob
This patchset adds new options to the automatic_renewals.pl script to allow test and verbose modes.
Important: The patches make the --confirm switch required, without it script will be run in test mode. Existing scheduled cronjobs will need to be updated to supply this switch.
Running without --confirm will default in verbose mode as well.
[24651] Add --maxdays option to the fines.pl
cronjob to reduce the chance of re-processing very old, already capped, fines.
Improve the performances of the fines.pl cronjob by reducing the number of accountlines it targets by this new
--maxdays
option.
[24883] Add misc/load_yaml.pl
utility script to allow manual loading of yaml data files
During the 20.05 cycle a number of improvements were made to the installation mechanisms to enhance the translation workflows for this area. As part of that work many existing translated .sql files were moved to a yaml based file.
[15377] Add ability to remove 'checked out' items from course reserves
This enhancement allows the removal of items that are listed on a course reserve and are checked out. Previously, checked out items could not be removed.
[22630] Add ability to change the homebranch in course reserves
Sponsored by Université Jean Moulin Lyon 3
[22970] Add ability to change homebranch in batch add course reserves
Sponsored by Université Jean Moulin Lyon 3
[24774] Specify 2 space indentation for JSON files in .editorconfig
Sponsored by Hypernova Oy
[6508] Show indication of existing 'Charges' on tab of the same name
With this enhancement the amount of pending charges/credits will be shown in the tab description on the checkouts and details pages of a patron account in the staff interface. When there are no pending charges, the tab won't be visible.
[17702] Create configuration for account credit types
This adds a new configuration page for credit types to the administration module. It shows all internal credit types used by Koha and allows to configure additional credit types. Additional credit types might be used for anonymous transactions with the Point of sale feature.
[24081] Add a 'discount' process to accounts
Allows to specify and apply a discount on a patron's charges. Staff will require the new permission 'discount' to use this new functionality.
[24380] Add option to recalculate fines upon a backdated return distinctly from CalculateFinesOnReturn
This enhancement allows libraries to set the option to calculate fines upon a backdated return distinctly from the broader option to always recalculate fines on return option.
New system preference:
CalculateFinesOnBackdate
defaults to enabled on new installations or the value ofCalucalteFinesOnReturn
during upgrades.
[24492] Add a 'library cashup' workflow to the point of sale system
This enhancement adds a new 'library details' page to the POS system which displays a summary of the cash register transactions for a library since each register was last cashed up. It also allows for cashing up individual registers or cashing up all registers at a given library in one transaction.
[16547] Can't place item level hold directly from search results screen
This enhancement lets you place and an item level hold from a search results list.
[22284] Add ability to define groups of locations for hold pickup
Sponsored by Vermont Organization of Koha Automated Libraries
Adds the ability to define groups of libraries for use in holds policy.
[24547] Add more action logs for holds
Trapping and filling holds will now create entries in the logs, when HoldsLog system preference is activated.
[24063] Add Sami language characters to Zebra
This patch adds some additional characters to the default zebra mappings for Sami languages to aid in searching on systems with such data present.
[23173] ILL should be able to search third party sources prior to request creation
Sponsored by Public Health England
This feature adds the required infrastructure to enable ILL availability plugins to intercept the request creation process and, using the supplied metadata, search for and display possible relevant items from whichever availability plugins are installed.
New system preference:
ILLCheckAvailability
defaults to disabled.
[22655] Add setup of a hold rule to the onboarding tool
Sponsored by Catalyst
[24707] Remove AMICUS from default fr-CA z39.50 servers
This removes AMICUS from the fr-CA sample z39.50 servers list as it is no longer valid.
[24708] Update Z39.50 server attribute in fr-CA installation file
This enhancement adds a PQF attribute to the BANQ entry in the fr-CA sample z39.50 servers list, enabling the search to work correctly.
[7468] Add label to batch by barcode range
This enhancement to the label creator tool adds an option to let you generate a range of barcode numbers (for example, from 05000 to 05500) and save these as a PDF, ready for printing.
[23783] Add display of languages from MARC21 field 041 to the OPAC
This enhancement adds display handling for the 041 MARC21 languages field, into the OPAC results and item details pages.
[25011] Improve display of Production credits (MARC21 508) in OPAC and staff
This change makes some tiny changes to improve the display and consistency between the OPAC and staff interface:
- Capitalization: Production Credits --> Production credits.
- Change div to span to avoid display issues.
- Make sequence of fields in display match (505, 508, 586).
[10269] Add a way to utilise a specific replyto email address for some notices
This patchset adds the foundations needed to make use of a reply-to address if passed when calling EnqueueLetter.
Further bugs will be used to add interfaces for adding such addresses.
[23673] Separate time sent from time created in message_queue table
The time a message was created and the time it was sent are now separate columns in the message_queue table and will shown in the patron's account on the notice tab.
Sponsored by: Northeast Kansas Library System (NEKLS)
Mailer-X
and MessageID
mail headers to reduce the likelihood of Koha mail being marked as spam[7611] Show the NOT_LOAN authorised values for item status in XSLT OPAC search results
Sponsored by Centre collégial des services regroupés
[13121] Move search results "action" links ("Place hold," "Add tag," etc) into include file
This patch moves markup for controls repeated across several OPAC templates into a single include (making it easier to maintain in the future): Place hold, Request article, Add tag, Save to lists, and Add to cart.
[13388] Add library pages to the OPAC
This adds a new link "Libraries" or "Library" to the navigation in the OPAC. The new page it links to gives information about all libraries in the Koha installation, using the data from the library configuration.
[13547] Item field 'Materials specified' would be useful to see in OPAC
This enhancement allows you to make a new column visible on the OPAC. The new column shows the materials specified field after the call number column. You have to turn the column on in the "Columns settings" section.
[14715] Results per page setting for catalog search in staff client and OPAC
Sponsored by Region Halland
This enhancement adds a 'results per page' dropdown list to catalog search results pages in the OPAC and staff interface. This lets you set the number of results to show (20, 40, 60, 80, and so on).
This is enabled by two new system preferences:
OPACnumSearchResultsDropdown
for the OPAC, andnumSearchResultsDropdown
for the staff interface.The default number of search results is set using existing system preferences:
OPACnumSearchResults
for the OPAC, andnumSearchResults
for the staff interface.This enhancement works for both Zebra and Elasticsearch search engines.
New system preferences:
OPACnumSearchResultsDropdown
andnumSearchResultsDropdown
both default to disabled.
[15775] Show message on OPAC summary if holds are blocked due to fines
Sponsored by Catalyst
This adds a note to the patron account in the OPAC if the user is over the maxoutstanding fines limit and can no longer place holds.
[23261] RecordedBooks - notify patron of need to login / register to see availability
This enhancement makes the RBDigital Recorded Books subscription more discoverable to library patrons by adding a notice to the OPAC for patrons to register and login with RBDigital if they have not already done so.
[23913] Use a single menu to sort lists in the OPAC
This enhancement modifies the sorting form on the OPAC list contents view so that the two menus (sort field and direction) are combined into one.
This makes it consistent with the sort menu on the search results page.
[23915] Replace OPAC list sort menu with Bootstrap menu button
This patch adds JavaScript to the list contents page which converts the resort form's
[24913] Add option to require users to enter email address twice during self-registration.
Sponsored by Bibliotheksservice-Zentrum Baden-Württemberg (BSZ)
This enhancement, when enabled, requires users self-registering via the OPAC to manually enter their primary email address twice. This is to prevent users from incorrectly entering their email address and consequentially never receiving a verification email from the library.
New system preference:
PatronSelfRegistrationConfirmEmail
defaults to disabled.
[25110] Allow patrons to add star ratings to titles on their summary/checkout page
This enhancement lets logged-in patrons add star ratings to titles listed on their current checkouts and reading history pages.
[3137] Allow to collapse areas of the patron add form by default
Sponsored by Catalyst
This enhancement, when utilised, allows administrators to control which field sets are collapsed by default on the add patron form.
Each collapsed section can still easily be uncollapsed by clicking on the section heading.
New system preference:
CollapseFieldsPatronAddForm
defaults to empty.
[20847] Add main address, phone, and mobile fields to the Batch patron modification tool
Sponsored by PTFS Europe
With this enhancement the fields of the main address, telephone and mobile of patrons can be changed using the batch patron modification tool.
[22534] Add ability to choose which fields are copied from guarantor to guarantee
Sponsored by Waitaki Distict Council
This enhancement allows administrators to configure which fields from the guarantor's patron record will be copied to the guarantees record when the link between the accounts is created.
New system preference:
PrefillGuaranteeField
defaults tophone,email,streetnumber,address,city,state,zipcode,country
.
[24476] Allow patrons to opt-out of auto-renewal
This development will allow a patron to opt-out of auto-renewals - the regular job will ignore these checkouts and items will remain renewable both via the staff interface and OPAC.
Patrons will be able to set this flag themselves, staff will also be able to.
New system preference:
AllowPatronToControlAutorenewal
defaults to disabled.
[24183] Introduce before_send_messages
hook
This patch adds a new
plugin hook
to allow pre-processing of the message queue prior to sending messages.
[18731] Add routes for acquisition orders
Sponsored by Camden County
This development adds API routes to perform CRUD operation on acquisition order lines.
[23893] Add ->new_from_api and ->set_from_api methods to Koha::Object
This development introduces generic methods to deal with API-to-DB attribute names translations, and some data transformations (dates and booleans).
With this design we can overload this methods to handle specific cases without repeating the code as we did on initial implementations of API controllers.
Testing becomes easier as well.
[24228] Add a parameter to recursively embed objects in Koha::Object(s)->to_api
This patch introduces a parameter to the Koha::Object class ('embed') that should be a hashref pointing to a data structure following what's documented in the code. This parameter allows the caller to specify things to embed recursively in the API representation of the object. For example: you could request a biblio object with its items attached, like this:
$biblio_json = $biblio->to_api({ embed => { items => {} } });
The names specified for embedding, are used as attribute names on the resulting JSON object, and are expected to be class accessors.
The main use of this is the API, as introduced by bug 24302.
Koha::Objects->to_api is adjusted to pass its parameters down to the Koha::Object.
[24321] Make objects.search use mappings from Koha::Object(s)
This development takes advantage of the mappings that have been added to the Koha::Object level, and refactors the objects.search Mojolicious helper so it uses it internally.
This allows us to remove the 'to_model' parameter, and makes the need of any kind of mapping on the controllers irrelevant. All the existing mappings are removed and the controllers simplified in this move.
[24528] Add a syntax for specifying counts on x-koha-embed
Sponsored by ByWater Solutions
[24700] Improve Mojo startup speed for REST APIs
Sponsored by National Library of Finland
[25032] Generic unhandled exception handling
The current code in the controllers is a bit heterogeneous regarding how unhandled exceptions are treated. This enhancement introduces a generic way to write 'something happened' as a fallback after expected exceptions handling. This way the catch blocks are easier to read, and devs can follow this simple pattern when writing their endpoints.
[18433] Allow to select results to export in item search
This enhancement to the item search in the staff interface (Home > Search > Item search) adds the ability to export selected items. Before this enhancement the only option available was to export all the search results.
[16962] Remove the use of "onclick" from serial collection template
This patch removes the use of event attributes like "onclick" from the serial collection template. Events are now defined in JavaScript. This is a behind the scenes improvement - everything should continue to work as it did before.
[17674] Allow UI to delete serials issues in batch
Sponsored by Centre collégial des services regroupés
This allows to select multiple issues to be deleted from the 'serial collection' page in the serials module. A checkbox allows to optionally delete linked items as well.
[24877] Add link from vendor to linked subscriptions
Adds a link on the vendor detail page to a subscription search for the vendor's name to get a list of all linked subscriptions.
[17374] Make use of fields from syspref 'DefaultPatronSearchFields' in patron search fields dropdown
This patch preserves the current dropdown choices for patron search, but adds fields additionally defined in the DefaultPatronSearchFields system preference to the list of available options.
[23601] Middle clicking a title from search results creates two tabs or a new tab and a new window in Firefox
This fixes an issue in Firefox where middle-clicking or CTRL-clicking a title in the results screen of the staff client opens two new tabs.
[4944] Create separate noItemTypeImages preferences for OPAC and staff client
With this patch the noItemTypeImages preference will be used for the staff interface, while a new preference OpacNoItemTypeImages is added for the OPAC. For existing installations, the OpacnoItemTypeImages will be set to the same value as noItemTypeImages on update, so there is no change in behaviour.
New system preference:
OpacNoItemTypeImages
defaults to disabled.
[5614] Add sections/headings to Patron system preferences tab
This enhancement organizes the patron system preferences into sections. This makes them easier to find, instead of being one long unorganized list.
[17016] Button to clear all fields in budget planning
Sponsored by Catalyst
[20415] Remove UseKohaPlugins system preference
UseKohaPlugins
system preferences is removed. Koha plugins now only depends on config keyenable_plugins
.
[21520] More complex OAI sets mappings
Prior to this patchset, the rules used to create OAI sets are processed with the 'or' boolean operator between each rule.
This patch allows to use 'or' or 'and' between the rules.
The evaluation of the rules is done according to the boolean operators precedence: AND has a higher precedence than OR.
[24193] Add CodeMirror linting of JavaScript, CSS, HTML, and YAML system preferences
This enhancement adds CodeMirror plugins for linting system preferences that include JS, CSS, HTML, and YAML. When invalid data is entered in a linted CodeMirror editor an icon is displayed in the editor's "gutter." Hovering over the icon displays the error message.
[24291] Explanation next to limit item types by library is confusing
This enhancement updates the explanation on the item type add and edit form for the 'Library limitation' field. The text now says "Select 'All libraries' if all libraries use this item type. Otherwise, select the specific libraries that use this item type."
[24844] Focus on the system preferences searchbar when going to admin home
Sponsored by Catalyst
[23889] Improve style of menu header in advanced cataloging editor
This enhancement updates the styling of dropdown menu headers to make them apply more consistently across the system.
[25416] Add information about anonymous session for XSLT use
Sponsored by Universidad ORT Uruguay
[18127] Add ability to add batch modified records to an existing list
Sponsored by Catalyst
With this enhancement you can add all the records of a batch record modification to an existing list after successful modification.
[19793] Add email to batch patron modification
Sponsored by PTFS Europe
With this enhancement the primary email of patrons can be changed using the batch patron modification tool.
[21959] Add ability to apply regular expressions to text fields in the batch item modification tool
Sponsored by City of Nîmes
This adds a 'RegEx' link to the fields on the batch item modification form that allows you to rewrite the content of the fields using regular expressions. For example this could be used to add prefix or suffixes to callnumbers and barcodes or to rewrite item URLs.
[23473] Add option to import/overwrite passwords when using the patron import tool
Sponsored by ByWater Solutions
This adds a new checkbox to the patron import tool that will allow to overwrite patrons' passwords with the password from the import file.
[24384] Add Access-Control-Allow-Origin support to OPAC reports svc
Using the foundations laid with bug 24369 this enhancement allows the CORS headers to be set on the OPAC Reports SVC routes.
[24537] Add support for IP ranges in ILS-DI:AuthorizedIPs using Net::Netmask
It's now possible to not only allow a single IP, but multiple IPs, IP ranges and subnets access to the ILS-DI API.
(This list includes all bugfixes since the previous major version. Most of them have already been fixed in maintainance releases)
[13193] Make Memcached usage fork safe
Sponsored by National Library of Finland
Important Note: You will need to make sure you install
Cache::Memcached::Fast::Safe
to continue to use memcached after this.
[23290] XSLT system preferences allow administrators to exploit XML and XSLT vulnerabilities
This patchset refines the XSLT processing configuration such that we are more secure by disallowing the processing of external stylesheets by default and adding a configuration option to re-enable the functionality.
[24669] Editing circulation rule breaks holds when total holds unlimited
Sponsored by National Library of Finland
[25184] Items with a negative notforloan status should not be captured for holds
New system preference:
TrapHoldsOnOrder
defaults to enabled.
[25086] OPAC Self Registration - Field 'changed_fields' doesn't have a default value
Sponsored by Orex Digital
[24191] Sorting doesn't use to_model
Sponsored by ByWater Solutions
[25411] Plugin routes cannot have anonymous access
Sponsored by ByWater Solutions
[24713] JavaScript error on staff client catalog search results page
This patch modifies the output of template toolkit variables so that values in the in-page JavaScript are quoted. This avoids JavaScript errors when the template variable is empty.
[24900] Fix 'MARC modification templates' to not assume that 'from field' will match 'conditional field'
Sponsored by Catalyst
This patch ensures MARC modification template actions work as expected when the 'from field' doesn't match the 'conditional field'.
[24769] DataTable error on patron hold page when hold placed (ILS-DI and other bugs)
This fixes a problem introduced by another patch in this release cycle. The patron's hold page now correctly lists holds where holds are placed using ILS-DI (and in some other situations).
(This list includes all bugfixes since the previous major version. Most of them have already been fixed in maintainance releases)
[25130] Reason for accepting/rejecting a suggestion is not visible when viewing (not editing)
Sponsored by PTFS Europe
[17532] koha-shell -c does not propagate the error code
Before this development, the koha-shell script would always return a successful error code, making it hard for the callers to notice there was a problem with the command being run inside the instance's shell.
This development makes koha-shell propagate the running scripts' error code so the caller can take the required actions.
Note: this implies a behaviour change (for good) but a warning should be added to the release notes.
Right now it always returns
[18308] Default value of minPasswordLength should be increased
This patch increases the value of minPasswordLength to 8 characters to encourage more secure passwords, for all new installs.
[20370] Misleading comment for bcrypt - #encrypt it; Instead it should be #hash it
Sponsored by PTFS Europe
[22943] The in_ipset C4::Auth function name can be confusing
Sponsored by Catalyst
[24016] manager_id in Koha::Patron::Message->store should not depend on userenv alone
Sponsored by Koha-Suomi Oy
Using
userenv
within Koha::* object classes is deprecated in favour of passing parameters.
[24150] Add missing Koha::Old::*[s] classes
Sponsored by Association KohaLa
[5103] Dates in MARC details not formatted correctly
Sponsored by Catalyst
This fixes how dates are displayed for the list of items on the MARC view pages (in the OPAC and staff interface) and the add item page (staff interface) so that they use the 'dateformat' system preference.
[8595] Link to 'host item' confusing
Sponsored by Catalyst
[16683] Help links to fields 59X in cataloguing form are broken
This fix updates the help links for 09x, 59x, and 69x fields in the basic and advanced MARC21 editor. The links now go to the correct Library of Congress documentation pages.
[24789] Remove 'ITS' macro format
During the initial Rancor (advanced cataloging editor) development an existing macro language was copied. As development continued a Rancor macro language was developed. The new language accomplished all needs of the prior language. The old macro language was intended to be removed before submission to community, but was missed. These patches remove the legacy support in favour of the Koha specific model.
[24266] Noisy error in reconcile_balances.pl
Sponsored by Horowhenua District Council
[24640] quotes.timestamp should default to NULL
This fixes a problem with the QOTD tool - you can now add and edit quotes again.
[24495] Reword change collection feature
This patch changes the text "Collect from patron" to "Amount tendered" for all payment options in the patron record, and in the Point of Sale screen.
[25138] Terminology: Point of sale should use library instead of branch
This fixes menu items and messages for the point of sale feature so that it uses 'library' instead of 'branch'.
[24688] Hold priority isn't adjusted correctly if checking out a middle priority hold
Sponsored by Chartered Accountants Australia and New Zealand
[23119] MARC21 added title 246, 730 subfield i should display before subfield a
Sponsored by PTFS Europe
[13327] OPACPopupAuthorsSearch doesn't work with XSLT views
This enhancement improves the OPACPopupAuthorsSearch feature so that it works in both the normal and XSLT views (OPACXSLTDetailsDisplay).
[17221] Orphan comma in shelf browser
Sponsored by California College of the Arts
[17938] XSLT: Label of 583 is repeated for multiple tags and private notes don't display in staff
This fixes the display for records with multiple 583s. Previously the label "Action note" was repeated, now the label appears once and multiple fields are separated by a |. There is now a space between $z and other subfields.
Private notes are now displayed in the staff interface.
Notes: Indicator 1 = private: These will not display in the OPAC. Indicator 1 = 0 or empty: These will display in the OPAC. The staff interface will display all 583s.
[18933] Unable to set SMS number in OPAC messaging preferences to empty
Sponsored by Catalyst
[22821] Use reply-to address for item notes notifications if available to avoid being flagged as spam
Prior to this patch when a patron added an item note the system would send a notification email to the branchemail with a from address of the patrons email.
This patch updates the notification system to use the 'reply-to' address in preference to the 'branchemail' if it is defined and it also sets the 'from' address to the 'branchemail' and adds the patron email as a 'reply-to' as this was the intended functionality.
[24206] Change URLs for default options in OPACSearchForTitleIn
Updates URLs for the default entries (sites now use https, and an update to the Open Library's URL search pattern).
[24212] OPAC send list dialog opens too small in IE
Sponsored by Toi Ohomai Institute of Technology
[24249] OPAC lists page should require login for login-dependent operations
Enhancements to lists:
- Log in links to create a new list now take you to the 'Create a new list' form after you log in, instead of to your account summary page.
- Logging in is required for any action other the viewing public lists.
[23808] Creating Child Guarantee doesn't populate Guarantor Information
Sponsored by South Taranaki District Council
[25046] C4::Utils::DataTables::Members does not SELECT othernames from borrowers table
Sponsored by Eugenides Foundation Library
[25099] Sending a LANG variable to plug-in template
Sponsored by Bibliothèque Universitaire des Langues et Civilisations (BULAC)
[24862] Wrong behaviour on anonymous sessions
Sponsored by ByWater Solutions
[24976] Guided report - "Save" button on last step is misleading
Sponsored by PTFS Europe
[24121] Item types icons in intra search results are requesting icons from opac images path
Sponsored by Governo Regional dos Açores
[22771] Sort by title does not consider second indicator of field 245 (MARC21)
This Elasticsearch enhancement strips the initial characters from search fields in accordance with nonfiling character indicators.
[25149] The Zebra language option for Greek should be 'el', not 'gr'
Please note that the configuration file (/etc/koha/koha-sites.conf) of existing installations that have been set up using ZEBRA_LANGUAGE="gr" will not be affected by this change.
[7046] subscription renewal period should be a pull down
This enhancement changes the form for the serials renewal period for a subscription into a drop down list - this is consistent with the create subscription form.
[23246] Record detail page jumps into the 'images' tab if no holdings
Sponsored by American Numismatics Society
[24516] Column Configuration does not hide Return Date
This fixes an issue where hiding the return date column for the "Pay Fines" and "Account Fines" screens does not work.
[25007] AmazonCoverImages doesnt check for ISBN in details.tt
This fixes the display of cover images in the staff interface where there is no ISBN and both Amazon and local cover images are enabled.
Covers different combinations:
- Amazon cover present, no local cover.
- No Amazon cover, local cover image present.
- Both Amazon and local cover image present.
[23113] members/pay.tt account_grp is not longer used
This patch removes markup that is no longer required in the pay.tt template (this template is used in the accounting section for patrons).
[23885] Move staff client search results JavaScript into separate file
As part of the coding guidelines (JS1 - Whenever possible JavaScript should be placed in a separate file), this patch patch moves most of the JavaScript embedded in results.tt for the staff interface into a separate file.
[24098] Standardize Fines/Fees & Charges
This patch implements a terminology change - using 'charges' instead of 'fines' or 'fees' (this is also the same terminology used in the OPAC).
[24363] Datepicker calendar is not always sexy
This bug fixes display issues with the date picker and some other style changes that were inadvertently introduced by bug 24181.
[25016] Coce should not return a 1-pixel Amazon cover image
This patch improves the display of cover images where Coce is enabled and Amazon is a source. Where the image from Amazon is a 1x1 pixel placeholder (meaning Amazon has no image) it is no longer displayed.
[14647] When exporting records, the file name extension should match the selected export format
Sponsored by Catalyst
This enhancement to the catalog export data tool automatically changes the file extension in the file name to the selected export format (such as as CSV, or XML), rather than leaving it as .mrc.
[19475] Calendar copy creates duplicates
Sponsored by Koha-Suomi Oy
[24484] Add explanatory text to batch patron deletion
Sponsored by PTFS Europe
[24982] Update the log viewer to use checkboxes instead of select lists
Sponsored by Catalyst
This patch changes the dropdowns in the Log viewer to checkboxes so that the user can see all of their available options and select multiple options more easily.
[23531] ILS-DI doesn't implement needed_before_date and pickup_expiry_date parameters (renamed start_date and expiry_date)
This patch implements the documented "start_date" and "expiry_date" parameters for hold requests using Koha's ILS-DI service.
Note: the previously documented but not implemented parameter names were changed:
- needed_before_date => start_date
- pickup_expiry_date => expiry_date
Some significant technical changes were made behind the scenes in this release and it was felt that they should be additionally highlighted in the notes as they could be easily missed above.
A number of developer tools and processes have been refined - misc/devel/update_dbix_class_files.pl learned a new option --koha-conf to use values from koha-conf.xml so you are not required to always append parameters now to run the script - The installer files are now translatable using the pootle process - A new YAML format has been migrated to for the installer files - A new command line script may be used to load the new yaml formatted installer files manually where required - Work is ongoing to migrate and remove the original .SQL files which are still supported during the period of the migration (bug 24897 is a good example of the process) - Work is underway to add a 'localization' process to the installer allowing for localization to be applied distinctly to translation
Strings found inside JavaScript are now directly translatable
Prior to bug 21156 a translatable string would have taken the form
var my_string = _("my string");
# Within the .tt
alert(my_string);
# Within the .jsNow we can simply use
alert(__("my string");
# Note the double underscore
The database update script now outputs timestamps and skeleton.perl has an updated simplified syntax to follow
A number of improvements have been made to the plugins system to allows better discoverability and code interaction
- One can configure the new plugin_repos
config option to point to their github organisation to allow plugins to be discovered by end users in the koha staff client
- Additional hooks have been added in this release, please see the 'Plugin architecture' section above.
The code that is used to implement the REST API has seen many relevant structural changes on this release.
Several generic methods have been added to the Koha::Object(s) classes: - to_api [23770] [23843] - new_from_api [23893] - set_from_api [23893] - attributes_from_api - from_api_mapping
They are designed to simplify DB <-> API attribute name mapping. They allowed us to make our controllers thin and really simple to read and understand (and thus maintain). Tests become easier to write as well. One of the goals behind this move to Koha::Object-level, was that we intended to embed arbitrary data on the responses. So the attribute mapping responsibility (between the DB and our OpenAPI spec) was moved from the controllers to the Koha::Object(s) level (i.e. for an arbitrary object you can now ask for its API representation like in $patron->to_api).
This 'to_api' method is designed to be passed parameters. Right now it only accepts the 'embed' parameter which expects a hashref representing the recursive data structures we would like to embed in the object representation (see POD for more details). For example: my $api = $patron->to_api({ embed => { children => { checkouts => {} } } }) will make the resulting $api variable contain the representation of the Koha::Patron object, with the added 'checkouts' attribute, which will be the result of calling $patron->checkouts->to_api and so on (if more nested objects need to be included). [24228]. A special syntax has been added for requiring counts (for result sets). And there is a plan to add a 'for_opac' parameter so we know what kind of representation we need to generate. There's been some discussion about having a 'brief' representation of objects as well, for some use cases but that's an ongoing discussion.
The API spec got its counter-part additions: an 'x-koha-embed' attribute that specifies what things are allowed to be requested for embedding on a route. A special syntax was added to request counts (for example, x-koha-embed: [ checkouts+count] will be interpreted as a request to get the count, and will be placed in an attribute called checkouts_count) [24302] [24321] [24528].
Now we are embedding things, it was natural to think we would like to: - automatically build DBIC queries that would prefetch the required tables [24356] - filter by those nested objects in a WHERE condition [[24487]](http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=24487) - order by those nested properties [24615]
All the above features have been introduced as well.
And the last bit, we introduced a 'q' parameter that allows building DBIC-ish queries on the resources we are fetching, as well as on the nested resources. [24487] [24502]
The Koha manual is maintained in Sphinx. The home page for Koha documentation is
As of the date of these release notes, only the English version of the Koha manual is available:
The Git repository for the Koha manual can be found at
Complete or near-complete translations of the OPAC and staff interface are available in this release for the following languages:
Partial translations are available for various other languages.
The Koha team welcomes additional translations; please see
For information about translating Koha, and join the koha-translate list to volunteer:
The most up-to-date translations can be found at:
The release team for Koha 20.05.00 is
Release Manager: Martin Renvoize
Release Manager assistants:
QA Manager: Katrin Fischer
QA Team:
Topic Experts:
Bug Wranglers:
Packaging Manager: Mason James
Documentation Managers:
Documentation Team:
Translation Manager: Bernardo González Kriegel
Release Maintainers:
Release Maintainer mentors:
We thank the following libraries who are known to have sponsored new features in Koha 20.05.00:
We thank the following individuals who contributed patches to Koha 20.05.00.
We thank the following libraries, companies, and other institutions who contributed patches to Koha 20.05.00
We also especially thank the following individuals who tested patches for Koha.
We thank the following individuals who mentored new contributors to the Koha project.
It has been a privilege and an honour to have served as the Release Manager for the past 12 months.
I would like to extend my personal thanks to PTFS Europe for their support in allowing me to take on this role, my family for putting up with me running the late night meetings and finally I'd like to thank the team around me for doing such a great job. Katrin has been fantastic managing an excellent quality assurance team and it's been brilliant having a close group of allies whom I could trust to get things done, experiment alongside me and work quickly on fixes when bugs inevitably happen. For this release, Tomas Cohen, Jonathan Druart and Mason James also deserve special mention for their diligent efforts in the last weeks of the cycle to ensure Debian packaging issues were resolved.
We regret any omissions. If a contributor has been inadvertently missed, please send a patch against these release notes to koha-patches@lists.koha-community.org.
The Koha project uses Git for version control. The current development version of Koha can be retrieved by checking out the master branch of:
The branch for this version of Koha and future bugfixes in this release line is 19.12.x.
Bug reports and feature requests can be filed at the Koha bug tracker at:
He rau ringa e oti ai. (Many hands finish the work)
Autogenerated release notes updated last on 31 May 2020 20:36:02.