Owen Leonard [Thu, 14 Feb 2019 15:46:24 +0000 (15:46 +0000)]
Bug 22318: Extend Koha news feature to include other content areas
This patch lays the groundwork for using the Koha news tool to replace
OPAC system preferences which embed HTML content in the Koha interface.
This will allow multiple translations of these content blocks to be
created.
This adds a new template plugin, KohaNews. It has a single subroutine,
get(), which takes three parameters:
- "location" -- the area of the template where the content will appear.
This will correspond to the system preference it replaces:
OpacMainUserBlock, OpacNavRight, etc.
- "lang" -- the user's currently-selected language.
- "library" -- the user's home library (if they are logged in)
A new "koha_news_block" block is added to the OPAC templates'
html_helpers include. The content area is activated in the template
using this syntax:
[% PROCESS koha_news_block news => KohaNews.get( location =>
"OpacNavRight", lang => news_lang, library => branchcode ) %]
Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Katrin Fischer [Tue, 9 Apr 2019 22:33:48 +0000 (00:33 +0200)]
Bug 6730: Rename 'basket' filter to 'basket name' on receive page
This way it's clear that you can search for the name here, but
not for the number. It also matches the labelling of the
other filter: Basket group name below.
To test:
- Receive shipment
- Enter invoice number and go to receive page
- Look at the filters on the left
- Confirm the changed label and that basket name is searched
Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Josef Moravec [Wed, 20 Mar 2019 15:29:32 +0000 (15:29 +0000)]
Bug 13795: Remove occurences of unused columns in code
These patch removes these two columns from backfill_statstics script
and from columns.def - this file is used to create description in guided
reports
Test plan:
1. Run installer/data/mysql/backfull_statistics.pl
--> without this patch, there are associatedborrower and usercode errors
reported
--> with patch, these two columns are not reported
Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Josef Moravec [Wed, 20 Mar 2019 15:26:38 +0000 (15:26 +0000)]
Bug 13795: Make database update idempotent
Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Nicole [Tue, 2 Feb 2016 14:33:46 +0000 (09:33 -0500)]
Bug 13795: Delete unused columns from statistics table
The following 2 fields are never used in the statistics table:
associatedborrower
usercode
This patch removes them.
To test:
* check the database and make sure columns are gone
Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Nick Clemens [Wed, 5 Dec 2018 21:05:32 +0000 (21:05 +0000)]
Bug 21957: Add a flag to ModBiblio to avoid linking auths if called from linker
To test:
1 - prove -v t/db_dependent/Biblio.t
2 - Set BiblioAddsAuthoorities and AutoCreateAuthorities
3 - Modify a biblio to add a heading with no existing auth record
4 - Ensure the record was created on saving
5 - Ensure that editing works as normal otherwise
6 - Run link_bibs_to_authorities
7 - Ensure results are as expected
Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Katrin Fischer [Sat, 16 Mar 2019 12:19:11 +0000 (13:19 +0100)]
Bug 8701: Remove links to OpacHiddenItems.txt in favor of wiki page
Removes the OpacHiddenItems.txt file from Koha as this is not
accessible for most people and replaces it with links to the wiki
page like it's already done from the system preference editor.
For reporting and the initial patch Thanks-to: Jane Sandberg <sandbej@linnbenton.edu>
To test:
- Changes are invisible from the GUI
- Apply patch and run database update
- SELECT * FROM systempreferences WHERE variable = "OpacHiddenItems";
- Verify the description has the wiki link
- Verify that docs/opac/OpacHiddenItems.txt has been removed
Signed-off-by: Hayley Mapley <hayleymapley@catalyst.net.nz> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Bug 22139: Fields of ACCTDETAILS email not populating
To test:
* Make sure AutoEmailOpacUser is set to "send"
* Create a new patron with a username and password, and an email address
* In Kohadevbox, check the mail (usually you can type "mail" and go down
to the last message) - these do not go into the message queue and they
are processed immediately.
notice that the email does not have
<<borrowers.title>> <<borrowers.firstname>> <<borrowers.surname>>
Apply this patch, restart the things, retest as above.
Signed-off-by: Hayley Mapley <hayleymapley@catalyst.net.nz> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Martin Renvoize [Wed, 10 Apr 2019 13:39:40 +0000 (14:39 +0100)]
Bug 22461: Clarify and correct the hash reduction
There were a couple of bugs in the previous patch which meant it wasn't
working as intended. This patch corrects those bugs and simplifies the
code a little along the way.
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Alex Arnaud <alex.arnaud@biblibre.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Jonathan Druart [Thu, 21 Mar 2019 17:05:49 +0000 (14:05 -0300)]
Bug 22461: Filter ldap mapping before inserting patron's info
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Alex Arnaud <alex.arnaud@biblibre.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Jonathan Druart [Fri, 15 Mar 2019 23:16:41 +0000 (20:16 -0300)]
Bug 22461: Fix LDAP user replication
From bug 20287:
- $borrowernumber = C4::Members::AddMember(%borrower) or die "AddMember failed";
+ Koha::Patron->new( \%borrower )->store;
C4::Members::Messaging::SetMessagingPreferencesFromDefaults( { borrowernumber => $borrowernumber, categorycode => $borrower{'categorycode'} } );
$borrowernumber is not updated with the value of the newly created patron
This patch restores the previous behavior (as well as the die)
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Alex Arnaud <alex.arnaud@biblibre.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Kyle M Hall [Thu, 11 Apr 2019 19:11:45 +0000 (15:11 -0400)]
Bug 22521: (QA follow-up) Update number of tests in Circulation.t
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Martin Renvoize [Fri, 29 Mar 2019 10:04:46 +0000 (10:04 +0000)]
Bug 22521: (QA follow-up) Update 'Offsets' test
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Martin Renvoize [Wed, 27 Mar 2019 11:39:30 +0000 (11:39 +0000)]
Bug 22521: (QA follow-up) Corrections to tests
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Martin Renvoize [Fri, 22 Mar 2019 11:46:36 +0000 (11:46 +0000)]
Bug 22521: Update existing accounttypes
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Martin Renvoize [Fri, 29 Mar 2019 14:31:22 +0000 (14:31 +0000)]
Bug 22521: Update UI to use accountlines.status
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Martin Renvoize [Fri, 29 Mar 2019 14:31:06 +0000 (14:31 +0000)]
Bug 22521: Update fines handling to use accountline.status
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Martin Renvoize [Tue, 19 Mar 2019 14:24:35 +0000 (14:24 +0000)]
Bug 22521: Increase varchar size for accounttype
accountlines.accounttype is currently a short varchar(5) field for to
store accounttype codes. Koha is moving towards more descriptive codes
which require a larger capacity varchar(16).
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Martin Renvoize [Wed, 20 Mar 2019 11:46:38 +0000 (11:46 +0000)]
Bug 22547: Add tests for C4::Overdues->UpdateFine
Add tests for UpdateFine, in particular testing the functionality of
MaxFine.
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Martin Renvoize [Thu, 21 Mar 2019 10:16:34 +0000 (10:16 +0000)]
Bug 20128: (QA follow-up) Corrections to haspermission
The haspermission routine wrongly assumed that get_user_subpermissions
would return a list of all subpermissions if the user had the top level
permission, but instead if just returns 1.
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Nick Clemens [Wed, 6 Mar 2019 17:21:38 +0000 (12:21 -0500)]
Bug 20128: Add permission for advanced cataloging editor
To test:
1 - Have a borrower with edit_catalogue permission and one with
editcatalogue top level
2 - Confirm they can both access the advanced editor from the
'Cataloguing' home page or from the basic editor
3 - Apply patch
4 - Update database
5 - Confirm borrower with 'edit_catalogue' has 'advanced_editor'
permission
6 - Confirm borrowers can access advanced editor as above
7 - Remove 'advanced_editor' permission from borrower
8 - Ensure they cannot access the advanced editor
9 - Ensure links to 'Edit record' from search results go to basic editor
Signed-off-by: Liz Rea <wizzyrea@gmail.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Liz Rea [Mon, 1 Apr 2019 19:38:17 +0000 (19:38 +0000)]
Bug 17171: (QA follow-up) Using patron-title.inc for names
Signed-off-by: Liz Rea <wizzyrea@gmail.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Kyle M Hall [Tue, 27 Mar 2018 14:11:27 +0000 (10:11 -0400)]
Bug 17171: (QA follow-up) Add message to batch checkout template
Signed-off-by: Liz Rea <wizzyrea@gmail.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Kyle M Hall [Sun, 11 Jun 2017 09:10:17 +0000 (09:10 +0000)]
Bug 17171: Add a syspref to allow currently issued items to be issued to a new patron without staff confirmation
Some libraries don't want to force the librarians to manually confirm
each checkout when the item is checked out to another. Instead, they
would prefer to be alerted after the fact.
Test Plan:
1) Apply this patch
2) Run updatedatabase.pl
3) Enable the new syspref AutoReturnCheckedOutItems
4) Check an item out to a patron
5) Check the same item out to another patron
6) Note you are not prompted to confirm the checkout,
but are instead alerted that is had been checked out to another patron!
Signed-off-by: Christopher Brannon <cbrannon@cdalibrary.org> Signed-off-by: BWS Sandboxes <ByWaterSandboxes@gmail.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Liz Rea <wizzyrea@gmail.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Removes the deprecated script and changes the hint on the
PatronSelfRegistrationExpireTemporaryAccountsDelay sytem preference.
To test:
- Make sure the script misc/cronjobs/delete_expired_opac_registrations.pl
was deleted
- Make sure the hint on the PatronSelfRegistrationExpireTemporaryAccountsDelay
system preference is correct
- Make sure there are no other reference to the removed script
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Agustin Moyano [Wed, 20 Mar 2019 03:16:05 +0000 (00:16 -0300)]
Bug 22538: Add a noticeable alert about waiting holds
In SCO, bug 21772 introduced holds information, but it lacked the
capability to attract atention when any of those holds was in waiting
status. Because SCO and opac-user uses the same include file for holds
table, this bug applies to both modules.
To test:
1) Have a patron with holds in waiting status and pending status.
2) Enable SCO module.
3) Holds tab label contains holds count, but doesn't inform that there
is something that requires attention.
5) Holds tab content has no visual aid to recognize without reading
effort which holds are in waiting status.
6) Apply this patch
=> SUCCESS: Holds tab label has a visual aid to indicate that
something requires attention, and in
holds table it's easy to recognize waiting holds without reading
effort.
7) Sign off
Sponsored-by: Theke Solutions Signed-off-by: Owen Leonard <oleonard@myacpl.org> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Owen Leonard [Wed, 6 Mar 2019 19:59:53 +0000 (19:59 +0000)]
Bug 3766: Cities/Towns only on one address
This patch ties the alternate address and alternate contact address
fields in the patron entry form to the cities and towns data. This
provides a dropdown of predefined city data to these address fields.
To test, apply the patch and edit a patron record.
Test city selection for all three address fields: Main address,
alternate address, and alternate contact. Confirm that city selection
works correctly and that your changes are saved correctly.
Perform these tests with all AddressFormat options: French, German, and
US.
Signed-off-by: Liz Rea <wizzyrea@gmail.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Owen Leonard [Tue, 26 Mar 2019 13:51:47 +0000 (13:51 +0000)]
Bug 11969: Show patrons star rating on their reading history
This patch adds display of a user's ratings to their reading history in
the OPAC.
Also changed: Removed obsolete "border" attribute from the template, and
removed obsolete JavaScript include from opac-results.tt
To test, apply the patch and rebuild the OPAC CSS. OpacStarRatings
should be set to all (results and details).
- Log in to the OPAC as a user with a reading history and titles in
that history which have ratings.
- Under the "your reading history" tab, your ratings should show under
rated titles with the date of the rating.
- Test also with OpacStarRatings set to a value other than "all."
Signed-off-by: Hayley Mapley <hayleymapley@catalyst.net.nz>
Star ratings are displayed in Reading History with OpacStarRatings
enabled, and are not displayed when OpacStarRatings is disabled, as
expected.
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Kyle M Hall [Fri, 22 Feb 2019 13:00:33 +0000 (08:00 -0500)]
Bug 22311: Add a SysPref to allow adding content to the #moresearches div in the opac
The idea of this development would be to match the syspref 'OPACSearchForTitleIn' but
for populating the search headers (#moresearches) on the opac page to allow staff to
easily add links without jQuery.
Test Plan:
1) Apply this patch
2) Run updatedatabase.pl
3) Update the new OpacMoreSearches system preference to include the following line:
<li><a href="https://duckduckgo.com/">Duck Duck Go</a></li>
4) Browse to the OPAC
5) Note your new link displays in the "moresearches" area of the OPAC.
Signed-off-by: Liz Rea <wizzyrea@gmail.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Bug 22372: Add available location to Holds awaiting pickup
Test plan:
- Go to Circulation, Holds awaiting pickup (circ/waitingreserves.pl)
- Note the additional column for available location.
Signed-off-by: Jose-Mario Monteiro-Santos <jose-mario.monteiro-santos@inLibro.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Bug 21899: Update MARC21 frameworks to Update 27 (November 2018)
This bug updates MARC21 english frameworks to Update 27
Bibliographic
-------------
* New fields 251, 341 and 532 with corresponding subfields
* New subfields 041$p, 041$q and 041$r
* Renamed subfield 041$j
Authorities
-----------
* New subfield 055$2
To test:
1) Remove all your frameworks
2) Check mandatory bibliographic and authority files load without problem
3) Check new fields/subfields
Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Josef Moravec [Mon, 8 Apr 2019 06:03:42 +0000 (06:03 +0000)]
Bug 22656: Fix charts in reports
This reverts a change on Create chart button in report toolbar made by
bug 22023
1) Confirm the bug
a) Create some SQL report
b) Run it and click on "Show chart settings" button
c) There is no modal or other way to actually draw the chart
2) Apply the patch
3) Go through 1) again - the modal and chart should work
Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Owen Leonard <oleonard@myacpl.org> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Owen Leonard [Mon, 11 Mar 2019 13:41:49 +0000 (13:41 +0000)]
Bug 21943: (follow-up) Fix float error with sidebar menu
This patch makes a minor change to the staff client CSS to fix a float
clearing problem when the <main> element contains only a floated element
like <fieldset>. It is a global change, but shouldn't cause unwanted
effects because a non-clearing <main> isn't used in any
float-dependent layouts.
To test, apply the patch and regenerate the staff client CSS. View the
place hold screen and confirm that the sidebar menu looks correct at
narrower browser widths.
Signed-off-by: Liz Rea <wizzyrea@gmail.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Owen Leonard [Tue, 4 Dec 2018 16:27:00 +0000 (16:27 +0000)]
Bug 21943: Clean up holds template
This patch makes a few markup corrections to the holds template in the
staff client: Replace some YUI markup with Bootstrap; Replace invalid
"alt" attributes with "title."
To test, apply the patch and test the process of placing a hold, both
single and multiple holds. At each step of the process the page should
look correct and adjust well at various browser widths.
Signed-off-by: Liz Rea <wizzyrea@gmail.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Liz Rea [Fri, 29 Mar 2019 16:31:14 +0000 (16:31 +0000)]
Bug 22616: Updating error text messages
To test:
Apply this patch
Go to a borrower that doesn't exist, check that the error message is
displayed and looks correct. (i.e. http://127.0.0.1:8081/cgi-bin/koha/members/moremember.pl?borrowernumber=9999999999999999)
Go to an item, subscription, biblio that don't exist, check that the
error message is correct and the links work
Go to a borrower that the logged in user doesn't have permission to see, check that the error message is correct and the links work.
Signed-off-by: Bin Wen <bin.wen@inlibro.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Liz Rea [Thu, 21 Mar 2019 17:59:59 +0000 (17:59 +0000)]
Bug 22576: OPAC password text refresh
To test:
Create a patron with a username and password
Make sure that password resets on OPAC are allowed in your system
preferences (OpacPasswordChange -> Allow)
Log into the OPAC with this patron
Click the "Change password" tab
Change the password - notice that the button to submit the changes says
"Submit Changes" and also that the success page says "Return to my
record"
Apply this patch
Reset the password again, noticing that the button to submit the new
password says "Change password" and the success page says "Return to my
account"
Signed-off-by: Marie-Luce Laflamme <marie-luce.laflamme@inlibro.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Marcel de Rooy [Fri, 29 Mar 2019 08:30:06 +0000 (08:30 +0000)]
Bug 21336: (QA follow-up) Add column_exists in db revision
As requested by Josef on comment70.
Test plan:
Run db revision twice. No warnings.
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Marcel de Rooy [Mon, 17 Dec 2018 08:15:29 +0000 (09:15 +0100)]
Bug 21336: (follow-up) Handle strict SQL mode in _anonymize_column
When a field is not nullable we should pass empty string, zero or today
to a char, numeric or date column.
The mandatory parameter does not refer to a database constraint but a Koha
preference. Only for strings we generate a random value.
Test plan:
Enable strict_sql_modes.
Run t/db_dependent/Koha/Patrons.t again.
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Marcel de Rooy [Fri, 26 Oct 2018 10:21:13 +0000 (12:21 +0200)]
Bug 21336: (follow-up) Fix last line after PatronRemovalDelay in pref file
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Add the new Patron routines to this cron job. Actions are performed only if
preferences are set.
Note: No specific command line flags for these actions are added here
(and probably not needed too). So no crontab changes too.
Test plan:
Add a new patron.
Enable GDPR_Policy and refuse consent on OPAC for this patron.
Set only the first delay to zero (0) for immediate action.
Run cleanup_database.pl --logs (or any other flag) for the first time.
Check lock and expiration.
Set the second delay to zero (0) for immediate action.
Run cleanup_database.pl --logs for the second time. Check anonymization.
Set the third delay to zero (0) for immediate action.
Run cleanup_database.pl --logs for the third time. Check removal.
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Amended: Added the warn $@ line in cleanup_database.pl
Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Add Koha::Patron->lock and anonymize.
Add Koha::Patrons methods search_unsubscribed, search_anonymize_candidates
and search_anonymized. And wrappers for lock and anonymize.
Add unit tests.
Test plan:
Run t/db_dependent/Koha/Patrons.t
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Marcel de Rooy [Wed, 3 Oct 2018 13:36:46 +0000 (15:36 +0200)]
Bug 21336: Introduce administrative lockout
As a preparation for Koha::Patron->lock, we add the concept of administrative
lockout. The account is locked just as it would have been by too much
failed login attempts.
This is handled by a negative value in borrowers.login_attempts.
Test plan:
Run t/db_dependent/Auth.t
Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Marcel de Rooy [Mon, 1 Oct 2018 12:46:15 +0000 (14:46 +0200)]
Bug 21336: Do not increase login_attempts after locking
If an account has been locked, there is no use to keep increasing this
number. It is not true too; after the pref number has been reached,
we can not really speak of login attempts anymore. The credentials are
just ignored.
Adding a dbrev to put existing values in line. And a simple test in
Auth.t to confirm that login_attempts stop increasing.
Note: It feels safe to keep the '>=' condition in account_locked. But it
could obviously be changed to '=='. (Added a test for that.)
Note: Adding a mock_preference in Auth.t too for GDPR_Policy. Since not all
tests will pass when the pref is enabled (though disabled by default).
Test plan:
Run dbrev with updatedatabase.pl.
Run t/db_dependent/Koha/Patrons.t
Run t/db_dependent/Auth.t
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
This patch adds three new prefs:
- UnsubscribeReflectionDelay
- PatronAnonymizeDelay
- PatronRemovalDelay
Test plan:
Run upgrade.
Check patrons pref page. Look under Privacy.
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Bug 21336: Database revision for borrowers.flgAnonymized
This new flag should speak for itself ;)
Test plan:
Run installer or updatedatabase.
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Owen Leonard [Tue, 16 Apr 2019 16:34:13 +0000 (16:34 +0000)]
Bug 22716: Use gender-neutral pronouns in system preference descriptions
This patch makes a few corrections to the .pref files which provide
descriptions for system preferences. Language like "him or her" is
replaced with "they/them" pronouns.
To test, apply the patch and check the following preferences:
Signed-off-by: Lisette <lisettes@latahlibrary.org> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Owen Leonard [Thu, 11 Apr 2019 15:12:30 +0000 (15:12 +0000)]
Bug 22274: (follow-up) Use one CSS file for SCO and SCI
This patch makes the self-checkin CSS created in Bug 22638 the CSS for
self-checkout as well. The interfaces have the same requirements.
This patch also replaces some old image-based icons with Font Awesome
icons.
To test, apply the patch and rebuild the OPAC CSS. Clear your browser
cache if necessary.
- Enable both self checkout (WebBasedSelfCheck) and self checkin
(SelfCheckInModule).
- Test both interfaces, confirming that the style is consistent for
each and looks correct.
Signed-off-by: Liz Rea <wizzyrea@gmail.com> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Bug 22274: Self-checkout/checkin pages not covered by OPAC CSS changes
This patch updates the Self-checkout pages to match the new OPAC style.
Signed-off-by: Owen Leonard <oleonard@myacpl.org> Signed-off-by: Liz Rea <wizzyrea@gmail.com> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Owen Leonard [Thu, 11 Apr 2019 13:50:12 +0000 (13:50 +0000)]
Bug 22638: (follow-up) Convert SCI CSS to SCSS
This patch makes a number of follow-up changes, including:
- Covert remaining icons to Font Awesome
- Convert CSS to SCSS
- Move SCSS which is common to both the OPAC and SCI into separate
files to be including in each during compilation.
- Make minor correction to opac.scss to fix SCSS build warning
To test, apply the patch and rebuild the OPAC CSS. Clear your browser
cache if necessary.
- Enable the self checkin module using using the SelfCheckInModule
system preference.
- Open the self checkin interface and test the checkin process.
Everything should look correct.
- After submitting barcodes for checkin, the "Finish" button should
show a Font Awesome icon instead of an image icon.
- Enable multiple translations and set the OpacLangSelectorMode
preference to show the language menu in the footer.
- Confirm that the language menu looks correct.
- View the regular OPAC to make sure the changes to opac.scss didn't
result in unintended changes to the interface.
Signed-off-by: Liz Rea <wizzyrea@gmail.com> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
This patch updates the Self-Checkin CSS to match tne new OPAC design.
Signed-off-by: Owen Leonard <oleonard@myacpl.org> Signed-off-by: Liz Rea <wizzyrea@gmail.com> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Jonathan Druart [Tue, 7 Aug 2018 20:06:41 +0000 (17:06 -0300)]
Bug 21172: Remove warning from addbiblio.pl
Argument "01e" isn't numeric in numeric ne (!=) at
/home/vagrant/kohaclone/cataloguing/addbiblio.pl line 507.
A tagfield can be 01e and so raise a warning is compared with == or !=
This patch also fixes few inconsistencies:
- tagfield for items.itemnumber must be retrieved with GetMarcFromKohaField
(to support other marcflavours)
- do not use $_
- loop only once on $usedTagsLib
Test plan:
For devs only, read the code and confirm the changes make sense.
Signed-off-by: Liz Rea <wizzyrea@gmail.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Nick Clemens [Fri, 21 Dec 2018 19:19:05 +0000 (19:19 +0000)]
Bug 22044: Set default and add NoRenewalBeforePrecision preference for new/affected installs
I am not sure the correct answer - for upgraded installs the pref was
set to date, which changed behaviour
For new installs the pref was unset, behaved as if 'exact_time' so we
shouldn't change behaviour?
If the perceived default is date then the code should be changed, or
this shouldn't be a pref at all?
To test:
1 - Have a new system missing this pref
2 - Note when searchign the pref in staff client if appears as 'date'
3 - Check the db to confirm value is 'NULL'
4 - Apply patch and run update
5 - Pref is now set to 'exact_time'
Signed-off-by: Hayley Mapley <hayleymapley@catalyst.net.nz> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Björn Nylén [Wed, 13 Mar 2019 11:28:55 +0000 (12:28 +0100)]
Bug 14457: (QA follow-up) Fix QA script complaints and amend system preference text
Pod coverage for 'NAME'.
Moved sysprefs in order and moved semicolon to last line.
Replaced tab indentation with spaces.
Added "Swedish service for spellchecking" to the syspref description.
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
This patch makes it possible to configure LIBRIS spellchecker as a
"did you mean" feature. When searching for a word or phrase and misspelling
the query will be sent to LIBRIS and if they have a suggestion it will
be shown in the yellow did you mean box in the results page.
The API is not very quick so this type of implementation was chosen to not
disrupt the real-time feeling of the search.
To test:
1. Apply the patch.
2. Go to http://api.libris.kb.se/bibspell/, enter the koha servers IP and click
on the "Generera nyckel" button.
3. Under "Nyckel" you can copy the value that looks like this: E47B44829E265607274B677BC17B8D78,
and enter it into the LibrisKey syspref (cgi-bin/koha/admin/preferences.pl?tab=searching).
4. In cgi-bin/koha/admin/didyoumean.pl check the box for using the LIBRIS API. It is only implemented for OPAC.
5. Perform some searches:
tset - Did you mean should suggest: test
jeg är på smester - suggestion: jag är på semester
dantes inferna - suggestion: dantes inferno
Restored opac-search.pl
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Seems to work, of course I can't tell if it is giving me accurate
suggestions :)
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Josef Moravec [Wed, 27 Mar 2019 08:27:13 +0000 (08:27 +0000)]
Bug 22588: Simplify getting fines information in opac and selfcheckout
Test plan:
0) Have patron with some fines and credits
1) Go to opac and log in
2) Go to 'your summary' page and confirm it shows the right amount and
description for both, credit and debit
3) Go to 'your fines' page and confirm it show right information
4) Go to self checkout page and confirm the fines are right here
Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Owen Leonard <oleonard@myacpl.org> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Owen Leonard [Tue, 26 Mar 2019 16:34:34 +0000 (16:34 +0000)]
Bug 22698: Fix incorrect button classes
This patch builds on Bug 22023 in making further corrections to toolbar
button classes.
To test, apply the patch and view the following pages to confirm that
toolbar buttons are consistent:
- Acquisitions -> Vendor -> View basket.
- Administration -> Additional fields -> Select a table.
- Administration -> Audio alerts.
- Catalog -> Advanced search -> More/fewer options link
- Cataloging -> Edit record -> Advanced editor -> Advanced search.
- Cataloging -> Edit record -> Advanced editor -> Macros.
- Cataloging -> Edit record -> MARC21 008 value builder.
- Cataloging -> Search results.
- Circulation -> Checkout notes.
- Circulation: Sticky due date clear button, view restrictions, override
restrictions temporarily, add message, delete message
- Course reserves: Toolbar buttons on that page and the course reserve
detail page.
- ILL requests -> View ILL requests. The "New ILL request" and "List
requests" button.
- Lists and Lists -> View list.
- Patrons -> Search -> Merge patrons.
- Patrons -> View patron -> "Edit" button on patron image (patronimages
must be enabled).
- Patrons -> View patron -> "More" menu -> Manage API keys.
- Patrons -> View patron -> "More" menu -> Set permissions.
- Patrons -> View patron -> Delete circulation message link.
- Patrons -> View patron -> Edit patron.
- Patrons -> View patron -> Housebound.
- Reports -> Dictionary.
- Serials -> Numbering patterns.
- Serials -> Subscription -> Receive.
- Tools -> Labels -> Manage -> Label batches: Export selected.
- Tools -> Patron card creator -> Manage -> Card batches -> Edit batch.
- Tools -> Patron card creator. The "New" and "Manage" buttons.
- Tools -> Patron clubs.
- Tools -> Quote editor -> Import quotes.
- Tools -> Rotating collections. Toolbar buttons on that page and the
collection view page.
- Tools -> Tags.
- Tools -> Upload local cover image.
Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Katrin Fischer [Thu, 4 Apr 2019 01:36:47 +0000 (01:36 +0000)]
Bug 22154: Fix search for Braille from Advanced search page
When you do an advanced search and choose the Format subtype
Braille, it looks for l-format:fk, but that is not the right
code for Braille.
fk does not exist. It should be fb for Tactile material/Braille
OR tc for Text/Braille
To test:
0) Catalog 2 records, one with 007 tc and another with fb
Use value builder to verify both are for Braille.
1) In Administration > System preferences, make sure 'Subtypes'
is checked in either OpacAdvSearchMoreOptions or OpacAdvSearchOptions
2) Go to Advanced search
3) If necessary, click on 'More options'
4) In the 'Subtype limits' section, choose 'Braille' from the 'Format'
drop-down menu
5) Click on 'Search'
6) Verify both records were found
Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Bug 21975: (follow-up) get item datas from previous SQL query
Forced by removal of C4::Items::GetItem from Bug 21206
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Fridolin Somers [Fri, 7 Dec 2018 15:05:52 +0000 (16:05 +0100)]
Bug 21975: Avoid unnecessary substitutions in automatic item modification by age
Automatic item modification by age cronjob is based on rules with conditions and substitutions.
When substitution value is equal to actual item value, the code should not call C4::Items::ModItem. It adds unnecessary action log and entry in zebraqueue.
With a rule than can impact all catalogue you can explode your database with action logs.
Test plan :
1) Run prove t/db_dependent/Items/AutomaticItemModificationByAge.t
2) Define a item modification by age with no condition
3) Run several times misc/cronjobs/automatic_item_modification_by_age.pl
4) Check it creates only one entry in action_logs and zebraqueue
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Fridolin Somers [Fri, 7 Dec 2018 14:21:48 +0000 (15:21 +0100)]
Bug 21975: add Unit Test
Added missing transaction rollback
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Fridolin Somers [Fri, 7 Dec 2018 14:58:54 +0000 (15:58 +0100)]
Bug 21975: get item field in substitutions
substitutions field stores the item field with 'items.' prefix.
Looks like call of C4::Items::ModItem() works but it will not if ORM object is used in the futur.
So I prefer fix it now and it is needed for main patch.
Test plan :
Run t/db_dependent/Items/AutomaticItemModificationByAge.t
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Owen Leonard [Fri, 12 Apr 2019 12:52:52 +0000 (12:52 +0000)]
Bug 22695: Remove non-XSLT search results view from the staff client
This patch removes the option to select non-XSLT search results in the
staff client. The patch removes the markup from the template, updates
the system preference options, and modifies Search.pm so that OPAC and
staff client results XSLT functions are not tied together.
To test, apply the patch and set the XSLTResultsDisplay to a blank
value. Run the database update. The value of the XSLTResultsDisplay
system preference should now be "default."
Perform a catalog search in the staff client. The results should be
shown using the XSLT view.
Test that OPAC search results respect the OPACXSLTResultsDisplay
preference when enabled and disabled.
Signed-off-by: Pierre-Marc Thibault <pierre-marc.thibault@inLibro.com> Signed-off-by: Bin Wen <bin.wen@inlibro.com> Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Owen Leonard [Fri, 12 Apr 2019 11:04:06 +0000 (11:04 +0000)]
Bug 18011: Enrollment period date on patron category can be set in the past without any error/warning messages
This patch modifies the patron category edit form so that the enrollment
period datepicker widget cannot be used to select a date in the past.
The <input> element had a "datepicker" class, which triggers a default
datepicker configuration. This was overriding the configuration in the
page-specific JavaScript file.
To test, apply the patch and go to Administration -> Patron categories.
Click the "Enrollment period -> Until date" field and verify that dates
before today are disabled.
Signed-off-by: Pierre-Marc Thibault <pierre-marc.thibault@inLibro.com> Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Ere Maijala [Thu, 7 Mar 2019 14:35:30 +0000 (16:35 +0200)]
Bug 22474: Clone field config before adding fields to it
Test plain:
1. Reindex both authorities and biblios with the -d flag to recreate the index, e.g. "perl misc/search_tools/rebuild_elastic_search.pl -v -d"
2. Check that authorities only contains authority-specific fields in Elasticsearch e.g. by fetching http://localhost:9200/koha_dev_authorities/_mappings
3. Reindex both without the -d flag and verify it works, e.g. "perl misc/search_tools/rebuild_elastic_search.pl -v"
Signed-off-by: Björn Nylén <bjorn.nylen@ub.lu.se> Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Katrin Fischer [Sun, 7 Apr 2019 18:23:32 +0000 (18:23 +0000)]
Bug 22090: Add missing information to cash register CSV file
Some information was missing from the CSV export file
of the Cash register report: manager surname, patron surname
and payment notes.
Also pretties up the column headers a bit and makes the
sequence between GUI and CSV export match.
To test:
- Make sure you have some fines and fees and payments in
your system
- Make a search with the Cash register report
- Export results as CSV
- Proof read hader line and make sure contents match headings
- Verify first name and surname are shown for manager and patron
- Verify notes show up
Signed-off-by: Michal Denar <black23@gmail.com> Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Katrin Fischer [Sun, 7 Apr 2019 17:51:13 +0000 (17:51 +0000)]
Bug 22069: Make log viewer find item renewals
Without this patch renewals for checkouts wouldn't
show in the log viewer. The log viewre was using
RENEW, which we use for patrons, but for issue
RENEWAL is used.
The patch adds RENEWAL to the search params, when
Renew was selected in the form, so both terms are
included in the query.
To test:
- Make sure you have RenewalLog turned on
- Make a patron renewal
- Check something out and renew it
- Go to Tools > Log viewer and test different
searches
- Modules All - Actions All
- Modules All - Actions Renew
- Modules Circulation - Actions Renew
...
- Make sure results show as expected
Signed-off-by: Liz Rea <wizzyrea@gmail.com> Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Bug 22688: (QA follow-up) Use search_params as all() does
It looks like selected would be passed all the way down to
Koha::Libraries->search and this would fail all the time.
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Kyle M Hall [Thu, 11 Apr 2019 13:52:29 +0000 (09:52 -0400)]
Bug 22688: TT plugin for pickup locations code wrong
Test Plan:
1) Apply this patch
2) prove t/db_dependent/Koha/Libraries.t
Signed-off-by: Agustín Moyano <agustinmoyano@theke.io> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Kyle M Hall [Thu, 11 Apr 2019 14:13:58 +0000 (10:13 -0400)]
Bug 22688: Unit tests
Signed-off-by: Agustín Moyano <agustinmoyano@theke.io> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Josef Moravec [Tue, 26 Feb 2019 13:54:28 +0000 (13:54 +0000)]
Bug 22451: Use Asset everywhere
Test plan:
Use installer and onboaarding tool, make sure the js and css files are
loaded
Signed-off-by: Hayley Mapley <hayleymapley@catalyst.net.nz> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>