Adding some Unicode stuff.
And missing txn couple.
Test plan:
Run t/db_dependent/Koha/BackgroundJob.t
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Test plan:
Run t/db_dependent/Koha/BackgroundJob.t
Run t/db_dependent/Koha/BackgroundJobs.t
Prove t/db_dependent/Koha/BackgroundJobs
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Making the disabling utf8 flag explicit instead of depending on
the default of the CPAN module.
Incorporating the change in background_jobs_worker too.
Test plan:
See next patches when we look at unit tests.
Restart koha-worker.
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Our database connections have been set up so that they will
automatically convert perl encoded strings to utf8 encoded strings
when sending data to database tables and decode the utf8 encoded
strings from the tables back to internal perl strings. As we can see
from a call in Koha/BackgroundJob.pm we are encoding the perl internal
string to utf8 and then decoding it back to perl internal string:
my $data_dump = decode_json encode_utf8 $self->data;
We can skip this unnecessary encode<->decode step (as the database
object has done the decoding for us) by simply calling the
JSON->new->decode() method which doesn't perform any string decoding.
Furthermore, the original code was buggy and didn't always remember to
encode the unencoded strings, in Koha::BackgroundJob::process we can
see
my $context = decode_json($self->context);
is missing the encode step. Now after this change encoding before
decoding is not necessary as we are using the methods from the JSON
module that do not perform any transcoding.
Note to those concerned whether the old data in the database is
compatible with this new code:
Luckily our database connection object seems to be smart and
didn't utf8 encode the utf8 returned data from the old encode_json()
calls (probably checks the utf8 flag for the string (Encode::is_utf8($str))).
To test whether this fixes the original bug reported of not being able
to schedule background jobs with koha user having non-ASCII letters in
their surname:
1) Change your staff users surname/lastname to "ääää"
2) Log out and back in.
3) Go to a biblio record detail page and click "Select all" in the
items table
4) Click Delete selected items and proceed with the deletion
5) Notice the batch item deletion job has failed status
6) Apply patch and repeat but this time the deletion job should finish.
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This makes sure that all entries on the administration start page
have a matching entry in the administration sidebar that shows
on the left side if you are on any of the administration sub pages.
Changes made:
* Rename 'Classification sources' to 'Classification configuration'
* Make Plugins entry show and appear in correct spot
This relied on the variable plugins_enabled that wasn't available
in all the different templates. I therefore moved it to Auth.pm
and cleaned up the code for the admin start page.
* Move 'MARC overlay rules' and rename to 'Record overlay rules'
To test:
* Make sure plugins are enabled and visible on admin start page
* Compare admin start page and sidebar
* Sequence should be the same
* All entries should appear on both pages
* Naming should be the same
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This patch changes the "Ignore" button to use an X icon and the "Cancel"
button to use a "Trash" icon.
Signed-off-by: Barbara Johnson <barbara.johnson@bedfordtx.gov>
Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This patch adds 'Ignore' to the 'Hold already waiting' modal
To test:
To recreate:
1 - Place a hold for pickup at library A
2 - Checkin the item at Library A
3 - Note the modal has 'Ignore' option
4 - Click it, nothing happens
5 - Check in the item again, same modal
6 - Click 'Confirm'
7 - Check in the item again
8 - Now 'Ignore' is replaced by 'Cancel'
9 - Click 'Confirm' to dismiss modal
10 - Apply patch
11 - Check the item in again
12 - Note 'Ignore' button before 'Cancel' button with '-' icon
13 - Go to biblio holds page
14 - Revert waiting status
15 - Check item in again
16 - Note ignore now has '-' (minus) icon
Signed-off-by: Barbara Johnson <barbara.johnson@bedfordtx.gov>
Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
To test:
0 - Have Koha using Elasticsearch
1 - Set QueryRegexEscapeOptions to 'unescape escaped'
2 - Attempt to add a new 'GENRE/FORM' authority record
3 - On save you get a 500 error
Unable to understand your search query, please rephrase and try again.
at /kohadevbox/koha/Koha/SearchEngine/Elasticsearch/Search.pm line 102
4 - Apply patch, restart all
5 - Attempt to add a new 'GENRE/FORM' authority record
6 - Success!
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This fixes an error where we send a blank string to
Marc::Field->as_string
The subroutine fails as the regex is marked as incomplete as there is
nothing between the brackets
Also fixes a missing hidden input for 'item_action' when no items are
staged during import
1 - Define a new matching rule with no subfields
Match-threshold: 1000
Record type: bibliographic record
Search-index: Other-control-number
Score: 1000
Tag: 035
Subfields:
Offset:
Length:
2 - Attempt to stage a record with an 035 using this rule (i will
attach example to bug)
3 - Staging fails
4 - Stage again with no matching rule
5 - Manage the staged record, try to apply the matching rule
6 - It fails, 500 error
7 - Apply patch
8 - Restart all the things
9 - Apply rule again, it works!
10 - Stage the record again using the rule for matching
11 - It stages and matches!
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Made so the numbering sequence does not need to require full
permission.
1. Edit number patterns a confirm you don't need full permission
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
When adding a new patron category, the focus/cursor should be
in the first input field of the form: Category code
To test:
* Add a new patron category in administration > patron categories
- cursur is in no field
* Apply patch
* Add another new patron category
- cursor is now in the first input field of the form: Category code
Signed-off-by: Barbara Johnson <barbara.johnson@bedfordtx.gov>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
When adding a new patron attribute, the focus/cursor should be
in the first input field of the form: Patron attribute type code
To test:
* Add a new patron attribute - cursur is in no field
* Apply patch
* Add another new patron attribute - cursor is now in
the first input field: Patron attribute type code
Signed-off-by: Barbara Johnson <barbara.johnson@bedfordtx.gov>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
When adding a new SQL report, the focus/cursor should be
in the first input field of the form: Report name
To test:
* Add a new SQL report in reports > new from SQL
- cursur is in no field
* Apply patch
* Add another new SQL report
- cursor is now in the first input field of the form: Report name
Signed-off-by: Barbara Johnson <barbara.johnson@bedfordtx.gov>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
When adding a new authority type the focus should be on the
first field of the input form: Authority type
* Add a new authority type from administration > authority types
* Verify the focus is not on any of the form fields/inputs
* Apply patch
* Add another new authority type
* Verify the focus/cursor is now in the Authority type field
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This makes sure the cursor/focus is always in the first form
field when adding an entry on the classification configuration page.
* Got to administration > classification sources
* Verify for each of the three "New ..." buttons on top that
the entry form has no focus on any field
* Apply patch
* Repeat testing the new forms and the focus now should always
be in the first input field of the entry form
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
When adding a new matching rule the cursor/focus should be in
the first input field of the form: Matching rule code
* Add a new matching rule form administration > matching rules
* Verify the cursor is in the search form on top of the page
* Apply patch
* Add another new matching rule
* Verify the cursor is now in the first input field of the form
Signed-off-by: Barbara Johnson <barbara.johnson@bedfordtx.gov>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
When adding a new bibliographic framework, the focus/cursor should be
in the first input field of the form: Framework code
To test:
* Add a new bibliographic framework from adminsitration > bibliographic
MARC frameworks
- cursur is in no field
* Apply patch
* Add another new framework
- cursor is now in the first input field of the form: Framework code
https://bugs.koha-community.org/show_bug.cgi?id=27191
Signed-off-by: Barbara Johnson <barbara.johnson@bedfordtx.gov>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Test plan:
1. Visit Administration > Accounting > Cash registers and notice the
cursor is not focussed in the first input field (Name)
2. Apply patch
3. Refresh the new cash registers page and confirm your cursor is
focussed in the first input field (name)
Sponsored-by: Catalyst IT, New Zealand
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
To test:
1. Apply patch and restart services
2. Go to Acquistions -> Suggestions -> New Purchase suggestion
3. Notice the new 'Non-public notes:' textarea
4. Make sure you 'Set a patron' so we can later look at the suggestion from the OPAC
5. Make a new suggestion and make sure you add some Non-public notes
6. Back on the 'Suggestions management' page you should see a new column for 'Non-public note'
7. Go to table settings and make sure you can properly hide the column
8. Change the status and make sure it shows up on the table with all statuses (pending, accepted, rejected, etc )
9. Check the API by going to (/api/v1/suggestions). Your suggestion should show up and 'privatenote' should include your non-public note.
10. Log in to the OPAC as the patron we set the suggestion to earlier. You should not see anything related to the non-public note displaying from the OPAC
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
We are adding one column (the one with the checkboxes) at the beginning
of each row if it's possible to export the report to CSV.
However the column settings were not modified. We need to append one
object representing this column.
Test plan:
To test:
* Create a CSV profile of type SQL for exporting lost items
* Make sure you have some lost items
* Run Reports > Items lost
=> You can hide the notes (last column)
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
* Removed the leading space from the new entries as this could
lead to another string to translate and they are not needed
* Removed some doubled up whitespaces from the <a> tags and
a stray -
* Removed title from Article requests since it was the same text
as the link itself, not adding information
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This patch syncs the content of the circulation sidebar navigation with
the content of the circulation homepage
Test plan
1. Enable the `CircSidebar` system preference
2. Compare the sidebar navigation on circulation pages with the content
of the circulation homepage.
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This patch corrects the terminology for staff interface in the record overlay rules administration page.
To test:
1) Apply patch
2) Enable the MARCOverlayRules system preference
3) Go to Administration > Record overlay rules
4) Open the 'Filter' drop-down menu
=> The second option should read 'Staff interface MARC editor'
Signed-off-by: Michaela Sieber <michaela.sieber@kit.edu>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
To test:
1) Enable EnableExpiredPasswordReset
2) Find a patron and change their password so you know what it is supposed to be
3) In the database, expire the patron's password, e.g.
UPDATE borrowers SET password_expiration_date = '2022-08-22' where borrowernumber = 21;
4) Go to the OPAC, try to log in with the patron's credentials
5) Click Reset your password
=> Note that the form is in the grey breadcrumbs box, you can compare with any other OPAC page, the grey box should only contain the breadcrumbs
Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This patch makes the script use the Koha::DateUtils tools instead.
To test:
1. Run:
$ kshell
k$ perl misc/cronjobs/batch_anonymise.pl --verbose --days 7
=> SUCCESS: You see (the date may vary):
Checkouts and holds before 2022-02-15 will be anonymised.
2. Apply this patch
3. Repeat 1
=> SUCCESS: Same output
4. Sign off :-D
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
to test...
- apply patch, rebuild new package
- install new koha-common pkg successfully
Signed-off-by: Magnus Enger <magnus@libriotech.no>
I did not build packages, just grep'ed the source to check that
these modules are no longer used. Please set back to "Needs
signoff" if this is not considered good enough.
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
For kohaTable these are the default values.
Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Our calls to instantiate a kohaTable from JS were inconsistent in how
they pass table_settings where no table_settings exist.
This patch replaces empty arrays and empty hashrefs with a consistent
'null' being passed to ake it clear we don't have any settings to pass
yet.
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This patch adds a check for table_settings to prevent the display of
'Configure this table' when table settings are not passed to the
datatable wrapper.
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Suggested test plan:
* Without patch:
* Go to Administration > SMTP servers
* Verify the configure button shows, but doesn't work
* Apply patch
* Reload the SMTP servers page
* The configure button will no longer show
Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
The multiple systempreferences are always defined as an empty array at
the minimum, so in order to determine whether we need to remove all
the selections from the systempreference we should check whether the
array is empty and not whether the array doesn't exist.
To test:
1) Set at least 1 value for OPACHoldsIfAvailableAtPickupExceptions
2) Remove all the values for OPACHoldsIfAvailableAtPickupExceptions
and notice you get the message "Nothing to save"
3) Apply patch and repeat, removing all the values should work now.
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This changes text from "you have checked out too many items" to
"You have reached the maximum limit of items checked out".
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
As this has not been released yet, we can also fix the database
update to not introduce the wrong capitalization in the first
place.
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
I changed "Overdue Item Fine Description" to "Overdue item fine
description" for both the name and title.
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
With the different bug reports we removed the calls for those 3
subroutines. We can remove them now.
Test plan:
git grep their names and you should not find any occurrences in the code
base
Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
When using zebra with IncludeSeeFromInSearches on, with traced series, the rejected
forms (4XX) of series entries are visible in result lists, both in OPAC and intra
interfaces.
Test plan:
=========
1. Have a MARC 21 installation with zebra, and with IncludeSeeFromInSearches on.
Have an authority records for series (130, or 100/110/111 with
title) with rejected forms (4XX fields). So the auth record should
contain at least:
130 _0 $a Series title
430 _0 $a Some other title under which the series in known
Use (each) authority record in at least two biblio records (in appropriate
fields, i.e. 800/810/811/830 or even deprecated 440, if it makes use
of UNIF_TITLE).
Don't forget to properly input also 490 (for 8XX). So the biblio record
shold contain at least:
245 nn $a Work title.
490 1_ $a Series title
830 _0 $a Series entry $9 <koha_id>
Reindex.
2. Perform a simple biblio search (in OPAC and in intra) with the title
from auth record.
3. You shold get a list of results. See the Series information--you
shold see not only the accepted entry from 1XX in auth but also the
rejected forms from 4XX.
4. Apply the patch.
5. Repeat 3. You shold see only the entry form of series now.
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
The Talking Tech outbound script currently just adds the
ReservesMaxPickUpDelay to the waiting date to calculate the
"expiration date", but it should use the actual hold expiration
date which may differ from this naive calculation based on
various system preference values.
Test Plan:
1) Create a holiday for tomorrow
2) Set ReservesMaxPickUpDelay to 5
3) Set "Days mode" to "Same week day"
4) Enable ExcludeHolidaysFromMaxPickUpDelay
5) Enable TalkingTechItivaPhoneNotification
6) Create a hold and fill the hold so it is waiting
7) Enable "Hold filled" phone notices for that patron
8) Create a 'phone' version of the HOLD notice
9) Run ./misc/cronjobs/thirdparty/TalkingTech_itiva_outbound.pl --type RESERVE -w 0
10) Note the output has the expiration date ( 15th colume ) 5 days from now which is *not* the hold's expiration date
11) Apply this patch
12) Repeat the command from step 9
13) Note the expiration date column now matches the holds actual expiration date!
Signed-off-by: Kyle Hall <kyle@bywatersolutions.com>
Signed-off-by: Joonas Kylmälä <joonas.kylmala@iki.fi>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>