]> git.koha-community.org Git - koha.git/log
koha.git
18 months agoBug 32484: Enable plugins when UseACQFrameworkForBiblioRecords is set
Julian Maurice [Thu, 22 Sep 2022 07:53:46 +0000 (09:53 +0200)]
Bug 32484: Enable plugins when UseACQFrameworkForBiblioRecords is set

Test plan:
1. Do not apply the patch yet
2. Make sure you have an ACQ biblio framework with some framework
   plugins enabled. Create it if you don't.
3. Enable UseACQFrameworkForBiblioRecords system preference
4. Create a new acquisition basket.
5. On this new basket, click on "+ Add to basket", then "From a new
   (empty) record"
6. You should see a simplified MARC editor based on ACQ framework.
   Confirm that the plugins are not enabled (no visible buttons, nothing
   happening on focus/blur)
7. Apply patch
8. Repeat step 5
9. You should now see the plugins' buttons (only if you enabled plugins
   that use the 'click' event)
10. Confirm that the enabled plugins work correctly

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 31432: Make 245$n$p visible by default in frameworks
Katrin Fischer [Sat, 18 Feb 2023 11:53:49 +0000 (11:53 +0000)]
Bug 31432: Make 245$n$p visible by default in frameworks

$n (part_number) and $p (part_name) now have their own
columns in the database, but we are still hiding them
by default. It woudl ease testing and cataloguig if
we changed them to be visible by default in new installations.

To test:
* Check that in your current frameworks when adding a new
  record, 245 n and p are hidden
* Apply the patch and start over: drop your db and run the
  web installer
* Verify that the fields are now visible

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33210: (Bug 31963 follow-up) No hold fee message on OPAC should be displayed...
Janusz Kaczmarek [Mon, 13 Mar 2023 14:06:52 +0000 (15:06 +0100)]
Bug 33210: (Bug 31963 follow-up) No hold fee message on OPAC should be displayed when there is no fee

After resolving Bug 31963 everything works as expected when there is
hold fee defined (!= 0).  But in case when the fee for given patron
category is set to 0.00, the user will always see the message "You will
be charged a hold fee of 0,00 ...", which is obviously not intended.

This is because categories.reservefee is returned from database as
'0.000000' and as such, without type casting, is interpreted as string
in Perl. Prior to Bug 31963 the result was compared to 0 before sending
anything to the template, so the casting was done, now it is not.

To test:
========
1. Go to Administration -> Patron categories
2. Edit your patron category and give a hold fee of 0.
3. HoldFeeMode does not matter - you can set it to any value.
4. In another tab, open the OPAC.
5. Search the OPAC for any record with an item.
6. Go to place a hold on this record.  You will see "You will be
   charged a hold fee of 0,00" --> This is a bug.
7. Apply patch and restart services.
6. Repeat step 6.
8. You should NOT see the hold fee message.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Nick <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33210: Add unit test
Janusz Kaczmarek [Fri, 24 Mar 2023 16:17:20 +0000 (17:17 +0100)]
Bug 33210: Add unit test

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Nick <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 26967: Correctly format patron address in autocomplete
Jonathan Druart [Tue, 28 Feb 2023 08:51:20 +0000 (09:51 +0100)]
Bug 26967: Correctly format patron address in autocomplete

We should use the JS function to format patron's address in the
autocomplete result

Test plan:
Search for patron using the autocomplete feature, using the different values
of addressformat.
The address should be formatted correctly, like other places in Koha.
You should also notice that the street number is now displayed.

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>
18 months agoBug 32642: (QA follow-up) Activate spinner early
Marcel de Rooy [Fri, 21 Apr 2023 08:58:50 +0000 (08:58 +0000)]
Bug 32642: (QA follow-up) Activate spinner early

See comment on former patch too. We need to activate the spinner
early and we can simplify the code to remove it.

Note: unfortunately this is kind of a workaround, since using
load would be nicer but currently hard to implement since the cover
image code is scattered/widespread.

This code still checks the complete attribute, we could argue that
it should just remove the spinner. Note too that the spinner belongs
to a div where multiple img may be part of. If we do not remove the
spinner now, something went wrong at load time, but if you can
actually see the spinner is another thing.

Test plan:
See former patch.
Check few cover images on detail page, enable various providers.
Bonus: I tested with a sleep statement in opac-image.pl.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 32642: Loading spinner always visible when cover image is short (OPAC)
Hammat Wele [Thu, 6 Apr 2023 23:38:22 +0000 (23:38 +0000)]
Bug 32642: Loading spinner always visible when cover image is short (OPAC)

We noticed that if the cover image is somewhat short (i.e. the height is under 80-90 px), the loading spinner indicating that the image is currently loading still appears after the image is loaded.

this patch remove the spinner when the image is loaded,.

To test:
1. Make sure the OPACLocalCoverImages system preference is enabled
   1.1. Go to Administration > Global system preferences
   1.2. Search for Coverimages
   1.3. Set OPACLocalCoverImages to 'Show'
   1.4. Click 'Save all Enhanced content preferences'
2. Add a short local cover image to a record (I added one which is just a grey rectangle with the size printed on it, to facilitate the test)
   2.1. Download the attached image
   2.2. Find a record without an image
   2.3. Click the 'Images' tab
   2.4. Click 'Upload'
   2.5. Click 'Drop files here or click to select a file' and choose the downloaded image
   2.6. Click 'Process images'
3. View the record in the OPAC
   3.1. From the image upload page, click on the title of the record in the page heading to access the detailed record in the staff interface
   3.2. Click on 'OPAC view: Open in new window.'
   --> Note that the image is displayed normally, but the spinner is also displayed
4. Apply the patch
5. View the record in the OPAC
    --> Note that the spinner is no more displayed

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
This needs a follow-up; the code in this template activates the spinner
actually when the job has been done already and did not remove it.
And we did not see that but only with a short image like above.
The construction with .one, .each is not needed given the execution
context.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33127: Use template wrapper for breadcrumbs: Administration part 5
Owen Leonard [Mon, 9 Jan 2023 11:56:17 +0000 (11:56 +0000)]
Bug 33127: Use template wrapper for breadcrumbs: Administration part 5

This patch updates several administration templates so that they
use the new WRAPPER for displaying breadcrumbs.

To test, apply the patch and test each page and its variations.
Breadcrumbs should look correct, and each link should be correct.

Administration ->
 - Record overlay rules
 - Search filters (must have SavedSearchFilters enabled)
 - System preferences
   -> OverDriveAuthName -> OverDrive library authnames table
 - MARC bibliographic framework -> MARC structure (list, new, edit,
   delete confirm).
 - Record matching rules (list, new, edit, delete confirm)
 - OAI sets configuration (list, new, edit)
   -> Define mappings
 - Patron attribute types (list, new, edit, delete confirm)
 - Patron restrictions (list, new, edit, delete confirm)

Signed-off-by: Andrew Auld <andrew.auld@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33310: Use template wrapper for tabs: Suggestions
Owen Leonard [Thu, 13 Apr 2023 16:56:07 +0000 (16:56 +0000)]
Bug 33310: Use template wrapper for tabs: Suggestions

This patch updates the suggestions template so that it uses the new
WRAPPER directive to build tabbed navigation.

To test, apply the patch and go to the suggestions page in the staff
interface.

- By default you suggestions should be organized by status, with a
  separate tab for each status (pending, accepted, etc).
- Use the "Organize by" form in the sidebar to change how suggestions
  are listed. In each case confirm that the tabs are redisplayed
  correctly.

Works as advertised. 3/3

Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33388: Use template wrapper for breadcrumbs: Patrons part 4
Owen Leonard [Tue, 4 Apr 2023 11:51:22 +0000 (11:51 +0000)]
Bug 33388: Use template wrapper for breadcrumbs: Patrons part 4

This patch updates several patron templates so that they use the
new WRAPPER for displaying breadcrumbs.

To test, apply the patch and test each page and its variations.
Breadcrumbs should look correct, and each link should be correct.

- Patrons ->
  - Patron details
    - Notices
    - Accounting
  - Edit patron
  - Add patron
  - Patrons requesting modification (submit patron update via the OPAC)

Signed-off-by: Andrew Auld <andrew.auld@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33439: Use template wrapper for breadcrumbs: Reports part 4
Owen Leonard [Mon, 17 Apr 2023 18:58:18 +0000 (18:58 +0000)]
Bug 33439: Use template wrapper for breadcrumbs: Reports part 4

This patch updates several reports templates so that they use the new
WRAPPER for displaying breadcrumbs.

To test, apply the patch and test each page and its variations.
Breadcrumbs should look correct, and each link should be correct.

- Reports ->
  - Reports home
    - Orders by fund
      - Results
    - Holds statistics wizard
      - Results
    - Serials statistics wizard
      - Results

Signed-off-by: Andrew Auld <andrew.auld@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33438: Use template wrapper for breadcrumbs: Reports part 3
Owen Leonard [Mon, 17 Apr 2023 17:57:20 +0000 (17:57 +0000)]
Bug 33438: Use template wrapper for breadcrumbs: Reports part 3

This patch updates several reports templates so that they use the new
WRAPPER for displaying breadcrumbs.

To test, apply the patch and test each page and its variations.
Breadcrumbs should look correct, and each link should be correct.

- Reports ->
  - Average loan time
    - Results
  - Circulation statistics
    - Results
  - Lost items
    - Results
  - Catalog by item type
    - Results

Signed-off-by: Andrew Auld <andrew.auld@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33555: Use template wrapper for breadcrumbs: Rotating collections
Owen Leonard [Tue, 18 Apr 2023 12:31:37 +0000 (12:31 +0000)]
Bug 33555: Use template wrapper for breadcrumbs: Rotating collections

This patch updates rotating collections templates so that they use the
new WRAPPER for displaying breadcrumbs.

To test, apply the patch and test each page and its variations.
Breadcrumbs should look correct, and each link should be correct.

- Tools ->
  - Rotating collections
    - New rotating collection
    - Edit collection
    - Delete collection
    - Manage items
    - Transfer collection

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33558: Use template wrapper for breadcrumbs: Serials part 1
Owen Leonard [Tue, 18 Apr 2023 13:16:26 +0000 (13:16 +0000)]
Bug 33558: Use template wrapper for breadcrumbs: Serials part 1

This patch updates several serials templates so that they use the new
WRAPPER for displaying breadcrumbs.

To test, apply the patch and test each page and its variations.
Breadcrumbs should look correct, and each link should be correct.

- Serials ->
  - Claims
    - Claims for a vendor
  - Check expiration
  - Subscription details ->
    - Serial collection
    - Create routing list
    - Edit routing list
    - Preview routing list

Signed-off-by: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 12029: DBRev 22.12.00.022
Tomas Cohen Arazi [Thu, 20 Apr 2023 18:38:55 +0000 (15:38 -0300)]
Bug 12029: DBRev 22.12.00.022

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 12029: DBIC schema
Tomas Cohen Arazi [Thu, 20 Apr 2023 18:36:51 +0000 (15:36 -0300)]
Bug 12029: DBIC schema

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 12029: Remove 'params' from filter_by_unread
Jonathan Druart [Thu, 23 Mar 2023 11:28:31 +0000 (12:28 +0100)]
Bug 12029: Remove 'params' from filter_by_unread

It's not used and not needed, you can chain methods.

Also remove unused C4::Koha module and useless statement in tests.

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 12029: Ability for patrons to dismiss OPAC messages
Aleisha Amohia [Wed, 15 Feb 2023 08:57:08 +0000 (21:57 +1300)]
Bug 12029: Ability for patrons to dismiss OPAC messages

This enhancement adds the ability for patrons to dismiss an OPAC
message, marking it as read to remove it from their summary page.

To test:
1) Update database and restart services
2) Log into the staff interface and go to your patron account
3) Click the Add message button
4) Add a message for the OPAC and Save
5) Log into the OPAC. Note there is a message on the homepage saying you
have a message. Go to your user summary and confirm the message
displays.
6) Click the button to dismiss the message. A confirmation box should
pop up - hitting Cancel should stop the action.
7) Dismiss the message again and this time Confirm. Make sure the
message is gone from the OPAC user summary and from the homepage.
8) Confirm tests pass t/db_dependent/Koha/Patron/Messages.t
9) Create a few more messages for the OPAC
10) Log into the OPAC and dismiss one of the messages
11) Confirm the count of unread messages on the OPAC home page is
correct

Sponsored-by: Koha-US
Signed-off-by: Christopher Brannon <cbrannon@cdalibrary.org>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 12029: Tests
Aleisha Amohia [Wed, 15 Feb 2023 08:56:35 +0000 (21:56 +1300)]
Bug 12029: Tests

Signed-off-by: Christopher Brannon <cbrannon@cdalibrary.org>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 12029: Adding messages.patron_read_date column
Aleisha Amohia [Wed, 15 Feb 2023 05:10:29 +0000 (18:10 +1300)]
Bug 12029: Adding messages.patron_read_date column

Signed-off-by: Christopher Brannon <cbrannon@cdalibrary.org>
JD Amended patch: Fix QA failure "File must have the exec flag"

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33103: DBRev 22.12.00.021
Tomas Cohen Arazi [Thu, 20 Apr 2023 18:27:59 +0000 (15:27 -0300)]
Bug 33103: DBRev 22.12.00.021

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33574: DBIC schema
Tomas Cohen Arazi [Thu, 20 Apr 2023 18:20:52 +0000 (15:20 -0300)]
Bug 33574: DBIC schema

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33103: Prevent vendors to be displayed several times in the search result
Jonathan Druart [Tue, 11 Apr 2023 09:44:16 +0000 (11:44 +0200)]
Bug 33103: Prevent vendors to be displayed several times in the search result

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33103: Fix accessibility issues
Jonathan Druart [Tue, 11 Apr 2023 07:53:15 +0000 (09:53 +0200)]
Bug 33103: Fix accessibility issues

* Add spaces
* Add 'Add' and 'Remove' in addition of the icons
* Do not submit the form when enter is hit
* Fix translatability

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33103: Deal with html tags
Jonathan Druart [Tue, 7 Mar 2023 11:54:31 +0000 (12:54 +0100)]
Bug 33103: Deal with html tags

HTML tags won't be interpreted. However <script> will still break the
display, but it's by nature, JS will execute it even if it's in a
string.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33103: Display the aliases in the dropdown list in ERM
Jonathan Druart [Wed, 1 Mar 2023 13:03:38 +0000 (14:03 +0100)]
Bug 33103: Display the aliases in the dropdown list in ERM

Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33103: Add REST API tests
Jonathan Druart [Thu, 2 Mar 2023 13:08:29 +0000 (14:08 +0100)]
Bug 33103: Add REST API tests

Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33103: Embed aliases in GET /vendors
Jonathan Druart [Wed, 1 Mar 2023 11:43:44 +0000 (12:43 +0100)]
Bug 33103: Embed aliases in GET /vendors

Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33103: Make vendors searchable by aliases
Jonathan Druart [Wed, 1 Mar 2023 11:31:17 +0000 (12:31 +0100)]
Bug 33103: Make vendors searchable by aliases

Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33103: Add the ability to create vendor aliases
Jonathan Druart [Wed, 1 Mar 2023 10:57:23 +0000 (11:57 +0100)]
Bug 33103: Add the ability to create vendor aliases

This patchset is adding the ability to create aliases for vendors. It
will then be easier to search for vendors.

* new DB table aqbookseller_aliases(id, vendor_id, alias)
* new pair of Koha classes Koha::Acquisition::Bookseller::Alias[es]
* new method to retrieve the aliases from the vendor
Koha::Acquisition::Bookseller->aliases
* The api spec changes to allow aliases to be embeded on
GET /acquisitions/vendors
* Add/Delete alias when editing a vendor
* Display the aliases on the vendor show view
* Search vendors by aliases
* Display the aliases in the dropdown list of the vendors in the ERM
module

Test plan:
- Create a vendor, add it some aliases
- Edit the vendor, remove some aliases
=> Behaviour must be consistent
- Search the vendor in the acquisition module by its aliases
=> The vendor must be returned in the result
- Go to the ERM module, add a new agreement or license
=> Notice that the dropdown list of the vendors is displaying the
aliases, that make vendors searchable by their aliases

Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33103: Add tests for Aliases Koha classes
Jonathan Druart [Thu, 2 Mar 2023 12:54:37 +0000 (13:54 +0100)]
Bug 33103: Add tests for Aliases Koha classes

Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33103: Koha classes
Jonathan Druart [Wed, 1 Mar 2023 14:17:56 +0000 (15:17 +0100)]
Bug 33103: Koha classes

Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33103: DB changes
Jonathan Druart [Wed, 1 Mar 2023 10:06:46 +0000 (11:06 +0100)]
Bug 33103: DB changes

Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33574: Correct pointer for restrict_type.code
Martin Renvoize [Thu, 20 Apr 2023 16:09:50 +0000 (17:09 +0100)]
Bug 33574: Correct pointer for restrict_type.code

Somehow this was missed during QA of bug 31095.. likely during a rebase.

Test plan:
1) Check that manual restriction types are now saved.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33447: Make *->pickup_locations methods throw an exception on missing parameter
Tomas Cohen Arazi [Thu, 20 Apr 2023 18:04:29 +0000 (15:04 -0300)]
Bug 33447: Make *->pickup_locations methods throw an exception on missing parameter

This patch fixes the FIXME for making the methods throw an exception.

Tests are added, and POD is adapted as well.

To test:
1. Apply this patch
2. Run:
   $ ktd --shell
  k$ prove t/db_dependent/api/v1/patrons* \
           t/db_dependent/api/v1/holds.t \
           t/db_dependent/Reserves* \
           t/db_dependent/Hold* \
           t/db_dependent/Koha/Hold* \
           t/db_dependent/Items*

=> SUCCESS: Tests pass!
3. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33447: (follow-up) Fix tests and make assumption explicit
Nick Clemens [Thu, 20 Apr 2023 15:44:53 +0000 (15:44 +0000)]
Bug 33447: (follow-up) Fix tests and make assumption explicit

The patches made an assumption that patron would always be passed. It is
within Koha, but not in the Biblios tests.

There is no scenario where we can determine pickup locations that are not in
reference to a patron (who is picking it up?) so we should always have
this parameter

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33416: Fix Searchbar_spec.ts
Tomas Cohen Arazi [Wed, 19 Apr 2023 12:19:29 +0000 (09:19 -0300)]
Bug 33416: Fix Searchbar_spec.ts

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33416: Fix Agreements.ts
Jonathan Druart [Wed, 5 Apr 2023 08:29:01 +0000 (10:29 +0200)]
Bug 33416: Fix Agreements.ts

<failure message="Timed out retrying after 10000ms: Expected to find element: `#agreements_list table tbody tr:first`, but never found it." type="AssertionError"><![CDATA[AssertionError: Timed out retrying a
fter 10000ms: Expected to find element: `#agreements_list table tbody tr:first`, but never found it.

Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33533: Translatability: Do not separate "Patron" or "Organization" and "identity...
Caroline Cyr La Rose [Thu, 13 Apr 2023 18:55:25 +0000 (14:55 -0400)]
Bug 33533: Translatability: Do not separate "Patron" or "Organization" and "identity" in memberentrygen.tt

This patch corrects the HTML markup in order to reunite "Patron
identity" or "Organization identity" for translatability.

To test:
1. Apply patch
2. Update translation files
./misc/translator/translate update xx-XX
3. Check the xx-XX-staff-prog.po file, the line for memberentrygen.tt:275
   should look like

\#: koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt:275
\#, c-format
msgid "Organization %sPatron %sidentity"
msgstr "Identité de l'organisme %sIdentité de l'utilisateur %s"

4. Optionally, translate the string, install translation and check the
   page (Patrons > New patron), trying a institutional patron and a
   regular patron
./misc/translator/translate install xx-XX

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33447: (QA follow-up) Add comment for flushing cache
Marcel de Rooy [Tue, 18 Apr 2023 11:28:45 +0000 (11:28 +0000)]
Bug 33447: (QA follow-up) Add comment for flushing cache

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33447: Adjust tests
Nick Clemens [Fri, 7 Apr 2023 21:46:24 +0000 (21:46 +0000)]
Bug 33447: Adjust tests

Signed-off-by: emlam <emily.lamancusa@montgomerycountymd.gov>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33447: Add Cache to Biblio->pickup_locations
Nick Clemens [Fri, 7 Apr 2023 21:08:30 +0000 (21:08 +0000)]
Bug 33447: Add Cache to Biblio->pickup_locations

This is going to have the most effect on records with large numbers of items
held by the same library, serial records and the like

To test:
1 - Add 500 items to a biblio by select myltiple copies on the add item page
2 - Place a hold via the API and note response time, I found ~3-5 seconds
3 - Apply patch
4 - Restart all
5 - Place hold using api again
6 - Note improved response time, less than 1/2 a second in my tests

Signed-off-by: emlam <emily.lamancusa@montgomerycountymd.gov>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33491: Fix UI issues in EHoldingsEBSCOPackageAgreements
Jonathan Druart [Tue, 11 Apr 2023 19:39:02 +0000 (21:39 +0200)]
Bug 33491: Fix UI issues in EHoldingsEBSCOPackageAgreements

Signed-off-by: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33354: Show all form error messages in the warning dialog
Pedro Amorim [Wed, 29 Mar 2023 15:11:43 +0000 (15:11 +0000)]
Bug 33354: Show all form error messages in the warning dialog

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33354: Add error if related user open but user is missing
Pedro Amorim [Wed, 29 Mar 2023 15:09:37 +0000 (15:09 +0000)]
Bug 33354: Add error if related user open but user is missing

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33354: Add 'required' UI elements
Pedro Amorim [Wed, 29 Mar 2023 15:07:25 +0000 (15:07 +0000)]
Bug 33354: Add 'required' UI elements

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33216: Catch and handle RegisterRequired exceptions for SIP fee paid messages
Kyle Hall [Tue, 14 Mar 2023 11:06:21 +0000 (07:06 -0400)]
Bug 33216: Catch and handle RegisterRequired exceptions for SIP fee paid messages

If registers are being used in Koha, they are required. If a SIP account has no register and a fee paid message is sent, the SIP server crashes and the client never gets a response. It would be much better if Koha would response with 38 response where "payment accepted" is N, and an AF field stating that the SIP account needs to be associated with a register.

Test Plan:
1) Enable UseCashRegisters, set RequireCashRegister to "always require a
   cash register". Do *not* set a cash register for the SIP account you
   will be testing with.
2) Using the SIP cli tester, send a fee paid message for a patron owing
   fees.
3) Note the lack of a SIP response
4) Apply this patch
5) Restart the SIP server
6) Repeat step 2, you should now get a SIP response with the error
   message in it!

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33483: Prevent 400 when more than 1 agreement is linked
Jonathan Druart [Wed, 12 Apr 2023 14:59:29 +0000 (16:59 +0200)]
Bug 33483: Prevent 400 when more than 1 agreement is linked

We were passing package_agreements.agreement and the server returned
Object { message: "Properties not allowed: agreement.", path: "/body/package_agreements/0" }

Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33483: (follow-up) Update the way we distinguish if AgreementsList is called...
Jonathan Druart [Tue, 11 Apr 2023 19:19:46 +0000 (21:19 +0200)]
Bug 33483: (follow-up) Update the way we distinguish if AgreementsList is called from EHoldingsEBSCOPackageAgreements or not

Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33483: Restore 'select'
Jonathan Druart [Tue, 11 Apr 2023 19:14:25 +0000 (21:14 +0200)]
Bug 33483: Restore 'select'

We are not supposed to see edit and delete buttons, but select instead,
to pick an agreement.

Regression introduced by
  commit 809f90d394fdef8142fdf8f4a6e825dc14a132d4
  Bug 33066: Remove build_datatable

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33483: Make KohaTable accept customizable actions button
Jonathan Druart [Tue, 11 Apr 2023 19:11:48 +0000 (21:11 +0200)]
Bug 33483: Make KohaTable accept customizable actions button

We have hardcoded some buttons: edit, delete
But we could need specific buttons.

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33483: Update the way we distinguish if AgreementsList is called from EHoldingsEB...
Pedro Amorim [Tue, 11 Apr 2023 16:33:39 +0000 (16:33 +0000)]
Bug 33483: Update the way we distinguish if AgreementsList is called from EHoldingsEBSCOPackageAgreements or not

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33483: Fix link EBSCO package with local agreements
Jonathan Druart [Tue, 11 Apr 2023 12:13:35 +0000 (14:13 +0200)]
Bug 33483: Fix link EBSCO package with local agreements

Bug 33066 broke that, we need to set 'initialized'.

Test plan:
Turn on EBSCO provider, search for a package and click "Add new
agreement". The modal must open with the list of agreements.

Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33229: (follow-up) Adjust tests to set anonymous patron before setting patron...
Nick Clemens [Mon, 17 Apr 2023 12:52:34 +0000 (12:52 +0000)]
Bug 33229: (follow-up) Adjust tests to set anonymous patron before setting patron privacy to 2

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 23824: Add a "Save and run" button to reports
Magnus Enger [Sat, 1 Apr 2023 09:27:26 +0000 (11:27 +0200)]
Bug 23824: Add a "Save and run" button to reports

This will save one click every time you want to save and then run
a report.

To test:
- Apply this patch
- Create a new report
- Click the new "Update and run SQL" button
- Verify the report was saved and the results are displayed

Signed-off-by: Laura Escamilla <laura.escamilla@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33038: Add classes to patroncategorycode for easier customization
Lucas Gass [Wed, 22 Feb 2023 15:00:19 +0000 (15:00 +0000)]
Bug 33038: Add classes to patroncategorycode for easier customization

To test:
1. Pull up a patron and look at the patroncategory inside the patronbriefinfo. Description and code are together in one HTML element, they are hard to seperate.
2. Apply patch.
3. Look again and notice the new classes.

Signed-off-by: Barbara Johnson <barbara.johnson@bedfordtx.gov>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33238: Fix bad suggestions query (Bug 29886 follow-up)
Janusz Kaczmarek [Wed, 15 Mar 2023 19:25:53 +0000 (20:25 +0100)]
Bug 33238: Fix bad suggestions query (Bug 29886 follow-up)

With IndependentBranches Koha explodes with Error 500 when a non
superlibrarian tries to add to basket from suggestions.  In errorlog you
would find "DBIx::Class::Storage::DBI::_dbh_execute(): DBI Exception:
DBD::mysql::st execute failed: Column 'branchcode' in where clause is
ambiguous".

Test plan:
==========
1. Have a Koha instance with IndependentBranches, some accepted
   suggestions, and a vendor defined.
2. Be a non superlibrarian librarian with permissions to
   manage acquisitions.
3. Create a new basket and try to add an item to the basket
   "From a suggestion".
4. Koha would generate error 500.
5. Apply the patch.
6. Try to add an item to the basket "From a suggestion".
7. You should succeed.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 18829: (QA follow-up) Replace forbidden indirect syntax
Tomas Cohen Arazi [Mon, 17 Apr 2023 11:24:12 +0000 (08:24 -0300)]
Bug 18829: (QA follow-up) Replace forbidden indirect syntax

This pattern is forbidden and was overlooked by QA.

To test:
1. Run:
   $ ktd --shell
  k$ prove t/00-testcritic.t
=> FAIL: Tests fail with 'Subroutine "new" called using indirect
syntax...'
2. Apply this patch
3. Repeat 1
=> SUCCESS: Tests pass
4. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 18829: (QA follow-up) I18N, test character and breadcrumbs
Katrin Fischer [Mon, 10 Apr 2023 17:00:21 +0000 (17:00 +0000)]
Bug 18829: (QA follow-up) I18N, test character and breadcrumbs

* Removes a 'heart' character from the file, probably added for testing
* Corrects breadbrumbs to make QA test tool happy
* Makes JS message translatable (test by manipulating the link to an invalid record number in DOM)

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 18829: (follow-up) Don't messup record encoding
Nick Clemens [Mon, 27 Mar 2023 12:04:56 +0000 (12:04 +0000)]
Bug 18829: (follow-up) Don't messup record encoding

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 18829: (follow-up) Return 404 when record cannot be loaded
Nick Clemens [Mon, 27 Mar 2023 11:53:45 +0000 (11:53 +0000)]
Bug 18829: (follow-up) Return 404 when record cannot be loaded

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 18829: (QA follow-up) Fix punctuation, capitalization and page title
Katrin Fischer [Sat, 22 Aug 2020 10:05:19 +0000 (10:05 +0000)]
Bug 18829: (QA follow-up) Fix punctuation, capitalization and page title

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 18829: Elasticsearch - Put a better display for the view of ES indexed record
Axel Amghar [Mon, 29 Apr 2019 09:27:49 +0000 (11:27 +0200)]
Bug 18829: Elasticsearch - Put a better display for the view of ES indexed record

To test:
- apply the patch
- go to global sysPref
- make sure that SearchEngine have "ElasticSearch" as value
- Search whatever you want in Search the catalog and select a record
- Search the link (Ctrl f) : "Elasticsearch Record :" , click on the link
- make sure that the pop-up open and you should see the elasticsearch result in JSON (the pop-up look the same as MARC preview)
- note fields are alphabetized
- from the command line delete the es record:
    curl -XDELETE es:9200/koha_kohadev_biblios/data/5
- click the preview link, it syas record not found
- check the logs - you see the error on missing record

Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33229: Remove unecessary txn
Jonathan Druart [Wed, 22 Mar 2023 13:34:28 +0000 (14:34 +0100)]
Bug 33229: Remove unecessary txn

We don't need a transaction here.

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33229: Clear patron reading history when privacy is set to never
Nick Clemens [Tue, 14 Mar 2023 20:02:10 +0000 (20:02 +0000)]
Bug 33229: Clear patron reading history when privacy is set to never

This patch adds a check to patron store routine. When privacy is changed
to 'Never' we should immediately clear their history

To test:
1 - Set system preferences:
   AnonymousPatron - to a valid borrowernumber
   OPACPrivacy - Allow
2 - Checkout some items to a patron with priacy set to default, return them
3 - Log in to opac as patron
4 - Confirm you can see your history
5 - Change history to Never
6 - Confirm history still viewable
7 - Apply patch, restart all
8 - Set privacy to Default
9 - Confirm you can still see history, not deleted when not set as Never
10 - Set privacy to 'Never'
11 - Confirm history is anonymized

Signed-off-by: Sally <sally.healey@cheshiresharedservices.gov.uk>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33181: Use template wrapper for tabs on record merge pages
Owen Leonard [Thu, 9 Mar 2023 15:43:24 +0000 (15:43 +0000)]
Bug 33181: Use template wrapper for tabs on record merge pages

This patch updates the include file which is used by both the
bibliographic and authority recrd merge pages. The markup is updated to
use the new tab WRAPPER directives.

To test, apply the patch and perform a catalog search which will return
more than one record.

 - Select two or more records and choose "Merge records" from the edit
   menu at the top of the search results.
 - On the following page you should see one tab for each record you
   selected from the search results.
 - Clicking each tab should show you the correct bibliographic details.

Perform the same tests from the authority search results page.

Signed-off-by: Andrew Auld <andrew.auld@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33187: Use template wrapper for tabs article requests and holds awaiting pickup...
Owen Leonard [Thu, 9 Mar 2023 19:28:47 +0000 (19:28 +0000)]
Bug 33187: Use template wrapper for tabs article requests and holds awaiting pickup pages

This patch updates the article requests management and holds awaiting
pickup templates in the staff interface so that they use the new WRAPPER
directive for building tabs.

To test, apply the patch and make sure the ArticleRequests system
preference is enabled.

- Go to Circulation -> Article requests
- You should see three tabs, "New," "Pending," and "Processing."
- The tabs should look correct and work correctly.
- Go to Circulation -> Holds awaiting pickup
- You should see three tabs, "Holds waiting", "Holds waiting over X
  days," and "Holds with cancellation requests." ("X" is the value in
  the ReservesMaxPickUpDelay system preference)

Signed-off-by: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33129: Use template wrapper for breadcrumbs: Administration part 6
Owen Leonard [Fri, 3 Mar 2023 16:01:41 +0000 (16:01 +0000)]
Bug 33129: Use template wrapper for breadcrumbs: Administration part 6

This patch updates several administration templates so that they
use the new WRAPPER for displaying breadcrumbs.

To test, apply the patch and test each page and its variations.
Breadcrumbs should look correct, and each link should be correct.

Administration ->
 - Search engine configuration (Elasticsearch)
 - Share content with Mana KB
 - Circulation and fine rules
 - SMS cellular providers (SMSSendDriver preference must be set)
 - System preferences -> Local use (list, add, edit, confirm delete)
 - Library transfer limits (Advanced editor)
 - Transport cost matrix
 - Usage statistics
 - Z39.50/SRU servers administration (list, add, edit, both Z39.50 and
   SRU servers)

Signed-off-by: Andrew Auld <andrew.auld@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33191: AutoEmailPrimaryAddress options don't match labels in memberentry
Caroline Cyr La Rose [Mon, 13 Mar 2023 19:32:38 +0000 (15:32 -0400)]
Bug 33191: AutoEmailPrimaryAddress options don't match labels in memberentry

This patch changes the wording for the EmailFieldPrimary system
preference to make it clearer.

To test:
1. Go to Administration > Global system preferences
2. Search for EmailFieldPrimary
3. Read the sentence and choices, make sure it makes sense, grammar and
   spelling are correct
4. Optionally, try the different options, they should work as before

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33192: DBRev 22.12.00.020
Tomas Cohen Arazi [Fri, 14 Apr 2023 14:31:04 +0000 (11:31 -0300)]
Bug 33192: DBRev 22.12.00.020

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33192: (QA follow-up) Add execution bit
Tomas Cohen Arazi [Fri, 14 Apr 2023 14:29:22 +0000 (11:29 -0300)]
Bug 33192: (QA follow-up) Add execution bit

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33192: (QA follow-up) Fix it-IT sample data and unit tests
Katrin Fischer [Mon, 10 Apr 2023 14:40:56 +0000 (14:40 +0000)]
Bug 33192: (QA follow-up) Fix it-IT sample data and unit tests

To test:
* prove t/db_dependent/Message.t
* Run the it-IT web installer and make sure 'email' is set.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33192: Update all occurrences of AutoEmailPrimaryAddress
Martin Renvoize [Mon, 13 Mar 2023 14:05:51 +0000 (14:05 +0000)]
Bug 33192: Update all occurrences of AutoEmailPrimaryAddress

This patch updates all references to AutoEmailPrimaryAddress to refer to
EmailFieldPrimary instead.

Signed-off-by: Caroline Cyr La Rose <caroline.cyr-la-rose@inlibro.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33192: Update AutoEmailPrimaryAddress to EmailFieldPrimary
Martin Renvoize [Mon, 13 Mar 2023 14:04:45 +0000 (14:04 +0000)]
Bug 33192: Update AutoEmailPrimaryAddress to EmailFieldPrimary

This patch updates the database to reflect the new name for the
AutoEmailPrimaryAddress system preferences

Signed-off-by: Caroline Cyr La Rose <caroline.cyr-la-rose@inlibro.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33509: Don't show Other holdings when there are no alternate holdings
Katrin Fischer [Wed, 12 Apr 2023 19:58:03 +0000 (19:58 +0000)]
Bug 33509: Don't show Other holdings when there are no alternate holdings

With bug 33509 alternate holdings defined in AlternateHoldingsField
are shown in the staff interface result list. This works greatly
when there are items or when there is are alternate holdings (the
configured field/subfields exist in the record), but not when there
are no items and no alternate holdings.

To test:
* Add 100a to AlternateHoldingsField
* Make a search with some records without items
  Sample data: perl
* Make sure the alternate holdings show when there are no items
  and 100a exists
* Change to 100z
* Verify the result list now shows "Other holdings:" with nothing below
* Apply patch
* Repeat
  * Alternate holdings should still show nicely
  * Without alternate holdings 'no items' is displayed

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33231: (QA follow-up) Simplify conditional for date display
Nick Clemens [Thu, 13 Apr 2023 16:27:57 +0000 (16:27 +0000)]
Bug 33231: (QA follow-up) Simplify conditional for date display

This patch simply checks if we have a value for copyrighydate and
displays publicationyear if not. Even if copyrightdate is requested (MARC21)
but isn't populated, the publicatoinyear won't replace it because we
haven't transformed that field.

I think this read a bit easier, but RM can weigh in

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33231: (Bug 30813 follow-up) No publication date nor edition statements in Z39...
Janusz Kaczmarek [Tue, 14 Mar 2023 21:30:31 +0000 (22:30 +0100)]
Bug 33231: (Bug 30813 follow-up) No publication date nor edition statements in Z39.50 biblio search results

After executing Z39.50 search, the result table is not populated
with publication dates.  This is the result of code refactoring
made by Bug 30813.  The removed function _add_rowdata treated
in special way the publication date putting it in $row in under
special, non MARC variant dependent key 'date'--since
the z3950_search.tt looks under breeding_loo.date.

Same effect (no data in the result table) with edition statement.
Reason: editionstatement coming from TransformMarcToKoha vs edition
expected by z3950_search.tt.

Test plan:
==========
1. Have a Koha instance with some Z39.50 servers defined.
2. In Cataloging, perform a Z39.50 search for any term.
3. In the result table you would not get the publication dates nor
   edition statement (if present in the record).
4. Apply the patch.
5. Repeat the search.
6. You should see the publication dates (according to the current
   mapping, i.e. for MARC 21 coming from 260 $c or 264 $c subfield)
   and edition statements from the records found.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 31695: Type standard number is missing field ci_raw in field_config.yaml
Fridolin Somers [Wed, 5 Oct 2022 20:21:14 +0000 (10:21 -1000)]
Bug 31695: Type standard number is missing field ci_raw in field_config.yaml

In Elasticsearch fields config field_config.yaml, default type as a field 'ci_raw'. This is used for exact search.
This field is missing for type  standard number 'stdno'.

Test plan :
1) In the staff interface, go to Administration, and search for SearchEngine
2) Make sure that the SearchEngine preference is set to Elasticsearch and save
3) Return to Administration and select "Search engine configuration"
4) Change the type of "Heading-Main" to "Std. Number" and save
5) Rebuild the index (e.g. "koha-elasticsearch --rebuild -d kohadev")
6) Go to the main staff page and select Authorities
7) Search for a heading (e.g. "A Dual-language book")
=> Result is found with or without patch
8) Click on the sliders and select "is exactly" for the operator and search
=> Result is found only with patch
9) Apply the patch
10) Rebuild the index (e.g. "koha-elasticsearch --rebuild -d kohadev")
11) Click on the sliders and select "is exactly" for the operator and search
=> Result is found only with patch

Signed-off-by: Kevin Carnes <kevin.carnes@ub.lu.se>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33360: (follow-up) Adjust wording in verbose mode
Marcel de Rooy [Wed, 12 Apr 2023 13:17:11 +0000 (13:17 +0000)]
Bug 33360: (follow-up) Adjust wording in verbose mode

Koha reports 'sending mail' while we actually are still
processing mail. It could still be delayed, fail, etc.

Test plan:
Run process_message_queue in verbose mode. If a message
get processed, you should see:
    Processing email message to patron: 51 at /usr/share/koha/C4/Letters.pm line 1008.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33360: Update koha-conf.xml
Marcel de Rooy [Wed, 12 Apr 2023 11:59:45 +0000 (11:59 +0000)]
Bug 33360: Update koha-conf.xml

Test plan:
We already tested it. Just look at changes in this patch.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33360: Adjust Letters.t for limit parameter and domain limits
Marcel de Rooy [Tue, 4 Apr 2023 14:10:21 +0000 (16:10 +0200)]
Bug 33360: Adjust Letters.t for limit parameter and domain limits

Includes:
[1] Add a counter in the send_or_die mock.
[2] Correct from processed count to sent count.
[3] More extensive testing for limit parameter and domain limits.

Test plan:
Run t/db_dependent/Letters.t

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33360: Improving limit behavior in SendQueuedMessages
Marcel de Rooy [Mon, 3 Apr 2023 14:29:22 +0000 (16:29 +0200)]
Bug 33360: Improving limit behavior in SendQueuedMessages

Includes:
[1] Do no longer use the limit in the sql selection, but apply the
limit as a maximum for the number of sent messages. This is more
practical in terms of not flooding your mail server (and the
receiving ones).

[2] Replace call of _get_unsent_messages by Koha objects search.

[3] Do no longer report the number of messages seen, but report the
number actually 'sent'.

[4] If we lookup the to_address but we need to delay a message, save
the email address for the next run. Also optimizing patron lookup
in _send_message_by_email.

[5} Add support for $where parameter in SendQueuedMessages. Used by
process_message_queue.pl.

[6] Handle scalar/array for letter_code and type parameter too.

Test plan:
[1] Adjust your domain limit settings in koha-conf.
    Use notices to three domains. Group A and B.
    <message_domain_limits>
    <domain><name>A</name><limit>1</limit><unit>1h</unit></domain>
    <domain><name>B/name><belongs_to>A</belongs_to></domain>
    <domain><name>C</name><limit>1</limit><unit>1h</unit></domain>
    </message_domain_limits>
    Replace A, B and C with your choice. Do not forget the belongs_to.
    Restart all.
[2] Disable cron job for message queue.
[3] Generate two notices for each domain A, B and C (in that order).
    Make sure that borrowers involved have correct address.
[4] Run process_message_queue.pl -limit 1
[5] Check that one is sent for A, 5 pending.
[6] Run process_message_queue.pl -limit 2
[7] Check that one is sent for C, 4 pending.
[8] Run process_message_queue.pl (without limit).
[9] Check that nothing is sent, 4 pending.
[10] Check that message_queue.to_address is filled for those 4.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33360: Incorporate Koha::Notice::Util in Letters:SendQueuedMessages
Marcel de Rooy [Thu, 30 Mar 2023 06:58:10 +0000 (08:58 +0200)]
Bug 33360: Incorporate Koha::Notice::Util in Letters:SendQueuedMessages

Minimal adjustment to get the feature working.
Will still be improved in follow-up.

Test plan:
[1] Add a domain limit to your koha-conf:
    <message_domain_limits>
    <domain><name>gmail.com</name><limit>1</limit> <unit>1h</unit></domain>
    </message_domain_limits>
    Replace gmail.com by the domain you want to send to.
    Restart all.
[2] Disable cron job for message queue.
[3] Generate two pending notices in the queue.
[4] Run process_message_queue.pl
[5] Check that one is sent, one is still pending.
[6] Run again.
[7] Check: nothing is sent, last one still pending.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33360: Extend Koha::Notice::Util with domain groups
Marcel de Rooy [Mon, 3 Apr 2023 14:29:22 +0000 (16:29 +0200)]
Bug 33360: Extend Koha::Notice::Util with domain groups

The functionality is extended a bit here by:
[1] Allowing to combine domains in a shared count.
[2] Only counting sent messages for the specified
    domains when it is really needed.

Test plan:
Run t/db_dependent/Koha/Notice_Util.t

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33360: Add Koha::Notice::Util for mail domain limits
Marcel de Rooy [Thu, 30 Mar 2023 12:56:55 +0000 (14:56 +0200)]
Bug 33360: Add Koha::Notice::Util for mail domain limits

Ground work in new module.
Includes unit test.

Test plan:
Run t/db_dependent/Koha/Notice_Util.t

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 32956: Use template wrapper for HTML customizations tabs
Owen Leonard [Wed, 8 Feb 2023 17:46:48 +0000 (17:46 +0000)]
Bug 32956: Use template wrapper for HTML customizations tabs

This patch updates the HTML customizations template to replace tab
markup with the use of WRAPPERs.

- Apply the patch and go to Tools -> HTML customizations.
- Create or edit an entry.
- You should see tabs for each available language, for example
  Default, English, French.
- Test adding content to each language to confirm that the correct
  information is saved under the correct tab.

Signed-off-by: Philip Orr <philip.orr@lmscloud.de>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 32955: Standardize structure around action fieldsets in various templates
Owen Leonard [Wed, 1 Feb 2023 11:59:09 +0000 (11:59 +0000)]
Bug 32955: Standardize structure around action fieldsets in various templates

This patch updates various templates so that fieldsets with the
"action" class are placed outside the form's main fieldset.

To test, apply the patch and check the following pages to confirm that
changes to form structure look correct:

- Cataloging -> Quick spine label creator
- Patrons -> Patron details -> Files
- Patrons -> Patron details -> Housebound
- Circulation -> Upload offline circulation file
- Tools -> Patron card creator -> Manage -> Images
- Point of sale -> Transaction history -> "Older transactions" form

Signed-off-by: Philip Orr <philip.orr@lmscloud.de>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 31722: Fixed EDIFACT message to only display if EDIFACT is turned on
Philip Orr [Thu, 30 Mar 2023 10:09:32 +0000 (10:09 +0000)]
Bug 31722: Fixed EDIFACT message to only display if EDIFACT is turned on

This patch makes a small change to the display of the note
"No EDIFACT configuration for..." on the basket group page to
only display if the system preference EDIFACT is set to "Enable".

To Test:
1. apply patch
2. navigate to a vendor over Acquisitions -> Vendor e.g. My Vendor
3. create a basket group (doesn't have to have any baskets, an empty one will do)
4. close the basket group
5. set system preference "EDIFACT" to "Enable"
6. navigate to Administration -> EDI Accounts and make sure the vendor doesn't have
   an EDI account configured
7. navigate to your vendor's closed basket groups
   over Acquisitions -> Vendor -> Basket groups (left panel) -> Tab "Closed"
8. you should see a message "No EDIFACT configuration for (name of vendor)" in the
   Action column
9. set system preference "EDIFACT" to "Disable"
10. go back to your vendor's closed basket groups
11. you shouldn't see the message "No EDIFACT configuration for (name of vendor)"

Signed-off-by: Laura Escamilla <laura.escamilla@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33375: Quote reserved keyword 'rank' in advanced editor
David Cook [Fri, 31 Mar 2023 00:55:56 +0000 (00:55 +0000)]
Bug 33375: Quote reserved keyword 'rank' in advanced editor

This change quotes the 'rank' keyword in the advanced editor,
so that it doesn't cause fatal crashes when using MySQL 8

Test plan:
0. Apply patch and koha-plack --restart kohadev
1. Enable advanced editor
http://localhost:8081/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=EnableAdvancedCatalogingEditor
2. Go to http://localhost:8081/cgi-bin/koha/cataloguing/editor.pl#new/
3. Click on "Advanced" on the left nav
4. Note that "LIBRARY OF CONGRESS" is ordered before "NATIONAL LIBRARY OF FRANCE"
5. Rejoice!

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33088: Remove background-job-progressbar.js in batch_record_modification.tt
Fridolin Somers [Sat, 18 Mar 2023 03:08:56 +0000 (17:08 -1000)]
Bug 33088: Remove background-job-progressbar.js in batch_record_modification.tt

It must be removed, we don't need it since bug 22417

Test plan :
Play with batch record modification and check there is no JS error

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 32127: Add unit test
Fridolin Somers [Wed, 29 Mar 2023 08:52:08 +0000 (22:52 -1000)]
Bug 32127: Add unit test

Run prove t/db_dependent/Template/Plugin/Categories.t

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 32127: Sort by description in Koha::Template::Plugin::Categories
Fridolin Somers [Mon, 7 Nov 2022 21:42:49 +0000 (11:42 -1000)]
Bug 32127: Sort by description in Koha::Template::Plugin::Categories

Like in Koha::Template::Plugin::Branches, methods in
Koha::Template::Plugin::Categories must return categories sorted by
description.

Test plan :
1) Create a new patron category with code ZZZ and description AAAAAA
2) Go to patron search /cgi-bin/koha/members/members-home.pl
3) Look at filter by category :
=> Without patch the value AAAAAA is last
=> With patch the value AAAAAA is first
4) Click on 'New patron'
=> Without patch the value AAAAAA is last
=> With patch the value AAAAAA is first

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33345: On-site checkout checkbox does not work since issue date using flatpickr
Fridolin Somers [Mon, 27 Mar 2023 21:29:01 +0000 (11:29 -1000)]
Bug 33345: On-site checkout checkbox does not work since issue date using flatpickr

Since Bug 30718, date due uses flatpickr.
The JavaScript code setting due date via on-site checkout checkbox needs to be adapted.
Sort of like Bug 30717.

This patch renames the variable sent to template
'today_due_date_and_time' to avoid confusion with variable 'todaysdate'
used in other templates.

Test plan :
1) Enable system preference 'OnSiteCheckouts'
2) Go to a patron circulation page /cgi-bin/koha/circ/circulation.pl
3) Click on settings icon inside barcode input
=> Check due date input is empty
4) Click on 'On-site checkout'
=> Check due date input is filled with today date at 23:59
5) Fill barcode input and do check-out
6) Check due date is correct

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>
18 months agoBug 32418: Remove useless statement
Jonathan Druart [Fri, 14 Apr 2023 06:24:07 +0000 (08:24 +0200)]
Bug 32418: Remove useless statement

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 32418: (follow-up) Remove jQuery, Fix typos in url, add biblio as template param
Paul Derscheid [Thu, 13 Apr 2023 09:27:31 +0000 (09:27 +0000)]
Bug 32418: (follow-up) Remove jQuery, Fix typos in url, add biblio as template param

To test:
1. Go to any record
2. Hit the edit button on an item in the holdings table
3. Modify the URL so that the query param for the itemnumber is either
    3.1 empty: /cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=384&itemnumber=
    3.2 an itemnumber that doesn't exist:
      /cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=384&itemnumber=9999999999
    3.3 whatever else you come up with..
4. Check the same thing for the dupe option (op=dupeitem)
5. Sign off

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 32418: Can't call method 'unblessed' on an undefined value at cataloguing/additem.pl
Paul Derscheid [Mon, 20 Feb 2023 10:06:32 +0000 (11:06 +0100)]
Bug 32418: Can't call method 'unblessed' on an undefined value at cataloguing/additem.pl

Check whether the current op is edititem or dupeitem and if so check
whether the itemnumber supplied as a query param actually exists.

If it doesn't, redirect to the additem op and hide all UI elements except
for a dialog that gives options to add a new item to the record or to
view the records holdings.

This behaviour was adapted from the addbiblio view, as suggested by
Fridolin.

To test:
1. Go to any record
2. Hit the edit button on an item in the holdings table
3. Modify the URL so that the query param for the itemnumber is either
    3.1 empty: /cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=384&itemnumber=
    3.2 an itemnumber that doesn't exist:
      /cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=384&itemnumber=9999999999
    3.3 whatever else you come up with..
4. Check the same thing for the dupe option (op=dupeitem)
5. Sign off

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33485: (bug 32939 follow-up) Fix title endpoint
Jonathan Druart [Tue, 11 Apr 2023 12:57:47 +0000 (14:57 +0200)]
Bug 33485: (bug 32939 follow-up) Fix title endpoint

The change is obvious, we shoulf call the title endpoint, not package.

Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 32716: larger proxy_buffer_size in NGINX example config
Galen Charlton [Tue, 24 Jan 2023 19:10:32 +0000 (14:10 -0500)]
Bug 32716: larger proxy_buffer_size in NGINX example config

This patch updates the example NGINX config to increase the
proxy_buffer_size to 16k. The default value of 4k (on some platforms)
has empirically been shown to be a bit too small for the Link
headers emitted by the REST API when pagination is requested.

To test
-------
[1] Set up a Koha system with NGINX as a reverse proxy in
    front of it (either in front of Apache or in front of
    of Starman).
[2] Perform a patron search that returns at least two pages
    of results and navigate to the second page.
[3] Note that the navigation can fail with a 502 HTTP error
    and an "upstream sent too big header while reading response
    header from upstream" error in the NGINX log.

    The problem is most likely when the pagesize of the server
    running NGINX is 4096 bytes.
[4] Update the NGINX configuration per this patch and restart
    NGINX.
[5] This time, repeating step 2 should work.

Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33481: Pass content-type when requesting EBSCO's webservice
Jonathan Druart [Tue, 11 Apr 2023 11:37:14 +0000 (13:37 +0200)]
Bug 33481: Pass content-type when requesting EBSCO's webservice

Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
18 months agoBug 33307: Use template wrapper for tabs: Lists
Owen Leonard [Thu, 9 Mar 2023 18:14:04 +0000 (18:14 +0000)]
Bug 33307: Use template wrapper for tabs: Lists

This patch updates the lists template so that it uses the new WRAPPER
directive to build tabbed navigation.

To test, apply the patch and go to the lists page in the staff
interface.

- Confirm that the two tabs, "Your lists" and "Public lists" look
  correct and work correctly.
- Test that the correct tab is selected when you add the "public" or
  "private" parameter to the url:

  /cgi-bin/koha/virtualshelves/shelves.pl?op=list&public=1
  /cgi-bin/koha/virtualshelves/shelves.pl?op=list&public=0

Signed-off-by: Sally <sally.healey@cheshiresharedservices.gov.uk>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>