Commit graph

54565 commits

Author SHA1 Message Date
5a07a04fdb
Bug 37183: Batch edit serial subscriptions sets expiration date to today
Test plan:

Add some serials:
1) Add a new serial, visit:
   /cgi-bin/koha/serials/subscription-add.pl
2) Put a biblionumber in the 'record' field, e.g. '112'.
   Press 'next' and click 'ok' on the alert box.
3) Fill all the required fields and click 'test prediction'.
4) Fill the Subscription end date (= Expiration Date).
5) Click 'save subscription'.
6) Repeat steps 1-5 to create a second serial.

Batch edit serials:
1) Visit serials and hit the 'Search' button:
   /cgi-bin/koha/serials/serials-home.pl
2) Click the 2 checkboxes for the 2 serials we created
   previously and click the new link that pops up
   'Edit selected serials'.
3) Click 'Save' without changing anything.
4) Go back to either of the serials, notice the value
   for Expiration date is changed to TODAY
   (the date of the batch edit).

Apply the patch and retest the batch editing (before
retesting, change the expiration dates of the two
serials back to the original expiration date).

Note that the expiration date now only changes if you
enter a date in the 'Expiration date' field.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-07-01 18:55:40 +02:00
c735c027fa
Bug 35942: OPAC user can enroll several times to the same club
Test Plan:

1) Create 3 clubs, 1 limited to library A, 1 limited to library B and one not limited
2) Use a patron with home library A.
3) Go to the opac-user page, "Clubs" tab show 0/2 (the one from library B is not listed)
4) Browse to /cgi-bin/koha/svc/club/enroll?id=1
5) Reload that page a couple times
6) Note the patron is now enrolled in the same club multiple times
7) Delete those enrollments
8) Apply this patch
9) Restart all the things!
10) Repeat steps 2-7, note the lack of duplicate enrollments!
11) Repeat steps 2-10 for the staff interface

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-07-01 18:55:39 +02:00
Caroline Cyr La Rose
71b29ef25f
Bug 37132: Update MARC21 authority frameworks to Update 35
The patch updates the MARC21 authority frameworks to Update 35

To test:
1. Apply patch and reset_all
2. Go to Administration > Authority types
3. Click Actions next to the Default framework and choose MARC structure
4. Check for the changes detailed in the update
   https://www.loc.gov/marc/up35authority/adapndxf.html

- There should be a new subfield in 856
  - g - Persistent identifier (R)

- Subfield 856$h should be renamed Non-functioning Uniform Resource Identifier and should now be repeatable

- Subfield 856$q should now be repeatable

5. Optional: Check other authority frameworks, they should all be changed

Signed-off-by: Phil Ringnalda <phil@chetcolibrary.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 14:55:10 +02:00
Caroline Cyr La Rose
6660dcb46f
Bug 37128: Update MARC21 authority frameworks to Update 34
The patch updates the MARC21 authority frameworks to Update 34

To test:
1. Apply patch and reset_all
2. Go to Administration > Authority types
3. Click Actions next to the Default framework and choose MARC structure
4. Check for the changes detailed in the update
   https://www.loc.gov/marc/up34authority/adapndxf.html

- There should be a new subfield in 024
  - 7 - Data provenance (R)

- There should be a new subfield in 034
  - 7 - Data provenance (R)

- There should be a new subfield in 043
  - 7 - Data provenance (R)

- There should be a new subfield in 065
  - 7 - Data provenance (R)

- There should be a new subfield in 100
  - 7 - Data provenance (R)

- There should be a new subfield in 110
  - 7 - Data provenance (R)

- There should be a new subfield in 111
  - 7 - Data provenance (R)

- There should be a new subfield in 130
  - 7 - Data provenance (R)

- There should be a new subfield in 147
  - 7 - Data provenance (R)

- There should be a new subfield in 148
  - 7 - Data provenance (R)

- There should be a new subfield in 150
  - 7 - Data provenance (R)

- There should be a new subfield in 151
  - 7 - Data provenance (R)

- There should be a new subfield in 155
  - 7 - Data provenance (R)

- There should be a new subfield in 162
  - 7 - Data provenance (R)

- There should be a new subfield in 180
  - 7 - Data provenance (R)

- There should be a new subfield in 181
  - 7 - Data provenance (R)

- There should be a new subfield in 182
  - 7 - Data provenance (R)

- There should be a new subfield in 185
  - 7 - Data provenance (R)

- There should be a new subfield in 260
  - 7 - Data provenance (R)

- There should be a new subfield in 335
  - 7 - Data provenance (R)

- There should be a new subfield in 336
  - 7 - Data provenance (R)

- There should be a new subfield in 348
  - 7 - Data provenance (R)

- There should be a new subfield in 360
  - 7 - Data provenance (R)

- There should be a new subfield in 368
  - 7 - Data provenance (R)

- There should be a new subfield in 370
  - 7 - Data provenance (R)

- There should be a new subfield in 371
  - 7 - Data provenance (R)

- There should be a new subfield in 372
  - 7 - Data provenance (R)

- There should be three new subfield in 373
  - 4 - Relationship (R)
  - 7 - Data provenance (R)
  - i - Relationship Information (R)

- There should be a new subfield in 374
  - 7 - Data provenance (R)

- There should be a new subfield in 375
  - 7 - Data provenance (R)

- There should be a new subfield in 376
  - 7 - Data provenance (R)

- There should be a new subfield in 377
  - 7 - Data provenance (R)

- There should be a new subfield in 378
  - 7 - Data provenance (R)

- There should be a new subfield in 380
  - 7 - Data provenance (R)

- There should be a new subfield in 381
  - 7 - Data provenance (R)

- There should be a new subfield in 382
  - 7 - Data provenance (R)

- There should be a new subfield in 383
  - 7 - Data provenance (R)

- There should be a new subfield in 384
  - 7 - Data provenance (R)

- There should be a new subfield in 385
  - 7 - Data provenance (R)

- There should be a new subfield in 386
  - 7 - Data provenance (R)

- There should be a new field 387 called REPRESENTATIVE EXPRESSION CHARACTERISTICS, with the following subfields
  - 0 - Authority record control number or standard number (R)
  - 1 - Real World Object URI (R)
  - 2 - Source of term (NR)
  - 3 - Materials specified (NR)
  - 6 - Linkage (NR)
  - 7 - Data provenance (R)
  - 8 - Field link and sequence number (R)
  - a - Aspect ratio of representative expression (R)
  - b - Color content of representative expression (R)
  - c - Content type of representative expression (R)
  - d - Date of capture of representative expression (R)
  - e - Date of representative expression (R)
  - f - Duration of representative expression (R)
  - g - Intended audience of representative expression (R)
  - h - Language of representative expression (R)
  - i - Place of capture of representative expression (R)
  - j - Projection of cartographic content of representative expression (R)
  - k - Scale of representative expression (R)
  - l - Script of representative expression (R)
  - m - Sound content of representative expression (R)

- There should be a new subfield in 388
  - 7 - Data provenance (R)

- There should be a new subfield in 400
  - 7 - Data provenance (R)

- There should be a new subfield in 410
  - 7 - Data provenance (R)

- There should be a new subfield in 411
  - 7 - Data provenance (R)

- There should be a new subfield in 430
  - 7 - Data provenance (R)

- There should be a new subfield in 447
  - 7 - Data provenance (R)

- There should be a new subfield in 448
  - 7 - Data provenance (R)

- There should be a new subfield in 450
  - 7 - Data provenance (R)

- There should be a new subfield in 451
  - 7 - Data provenance (R)

- There should be a new subfield in 455
  - 7 - Data provenance (R)

- There should be a new subfield in 462
  - 7 - Data provenance (R)

- There should be a new subfield in 480
  - 7 - Data provenance (R)

- There should be a new subfield in 481
  - 7 - Data provenance (R)

- There should be a new subfield in 482
  - 7 - Data provenance (R)

- There should be a new subfield in 485
  - 7 - Data provenance (R)

- There should be a new subfield in 500
  - 7 - Data provenance (R)

- There should be a new subfield in 510
  - 7 - Data provenance (R)

- There should be a new subfield in 511
  - 7 - Data provenance (R)

- There should be a new subfield in 530
  - 7 - Data provenance (R)

- There should be a new subfield in 547
  - 7 - Data provenance (R)

- There should be a new subfield in 548
  - 7 - Data provenance (R)

- There should be a new subfield in 550
  - 7 - Data provenance (R)

- There should be a new subfield in 551
  - 7 - Data provenance (R)

- There should be a new subfield in 555
  - 7 - Data provenance (R)

- There should be a new subfield in 562
  - 7 - Data provenance (R)

- There should be a new subfield in 580
  - 7 - Data provenance (R)

- There should be a new subfield in 581
  - 7 - Data provenance (R)

- There should be a new subfield in 582
  - 7 - Data provenance (R)

- There should be a new subfield in 585
  - 7 - Data provenance (R)

- There should be a new subfield in 670
  - 7 - Data provenance (R)

- There should be a new subfield in 672
  - 7 - Data provenance (R)

- There should be a new subfield in 675
  - 7 - Data provenance (R)

- There should be a new subfield in 677
  - 7 - Data provenance (R)

- There should be a new subfield in 678
  - 7 - Data provenance (R)

- There should be a new subfield in 680
  - 7 - Data provenance (R)

- There should be a new subfield in 700
  - 7 - Data provenance (R)

- There should be a new subfield in 710
  - 7 - Data provenance (R)

- There should be a new subfield in 711
  - 7 - Data provenance (R)

- There should be a new subfield in 730
  - 7 - Data provenance (R)

- There should be a new subfield in 747
  - 7 - Data provenance (R)

- There should be a new subfield in 748
  - 7 - Data provenance (R)

- There should be a new subfield in 750
  - 7 - Data provenance (R)

- There should be a new subfield in 751
  - 7 - Data provenance (R)

- There should be a new subfield in 755
  - 7 - Data provenance (R)

- There should be a new subfield in 762
  - 7 - Data provenance (R)

- There should be a new subfield in 780
  - 7 - Data provenance (R)

- There should be a new subfield in 781
  - 7 - Data provenance (R)

- There should be a new subfield in 782
  - 7 - Data provenance (R)

- There should be a new subfield in 785
  - 7 - Data provenance (R)

- There should be a new subfield in 788
  - 7 - Data provenance (R)

- There should be a new subfield in 856
  - e - Data provenance (R)

- These 856 subfields should be renamed
  - l - Standardized information governing access (R)
  - n - Terms governing access (R)
  - r - Standardized information governing use and reproduction (R)
  - t - Terms governing use and reproduction (R)

5. Optional: Check other authority frameworks, they should all be changed

Signed-off-by: Phil Ringnalda <phil@chetcolibrary.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 14:55:09 +02:00
Caroline Cyr La Rose
d713cc440f
Bug 37125: Update MARC21 authority frameworks to Update 33
The patch updates the MARC21 authority frameworks to Update 33

To test:
1. Apply patch and reset_all
2. Go to Administration > Authority types
3. Click Actions next to the Default framework and choose MARC structure
4. Check for the changes detailed in the update
   https://www.loc.gov/marc/up33authority/adapndxf.html

- No changes in the frameworks for field 034, changes only affect field
  documentation

- There should be two new subfields in 672
  - i - Relationship information (R)
  - 4 - Relationship (R)

5. Optional: Check other authority frameworks, they should all be changed

Signed-off-by: Phil Ringnalda <phil@chetcolibrary.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 14:55:08 +02:00
Caroline Cyr La Rose
3c7ca7dfdf
Bug 37124: Update MARC21 authority frameworks to Update 32
The patch updates the MARC21 authority frameworks to Update 32

To test:
1. Apply patch and reset_all
2. Go to Administration > Authority types
3. Click Actions next to the Default framework and choose MARC structure
4. Check for the changes detailed in the update
   https://www.loc.gov/marc/up32authority/adapndxf.html

- There should be two new subfields in 022
  - 0 - Authority record control number or standard number (NR)
  - 1 - Real World Object URI (R)

- There should be three new subfields in 046
  - 3 - Materials specified (NR)
  - x - Nonpublic note (R)
  - z - Public note (R)

- Subfield 082$2 should now be named Edition information

- Subfield 083$2 should now be named Edition information

5. Optional: Check other authority frameworks, they should all be changed

Signed-off-by: Phil Ringnalda <phil@chetcolibrary.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 14:55:08 +02:00
Caroline Cyr La Rose
05903565db
Bug 37123: Update MARC21 authority frameworks to Update 31
The patch updates the MARC21 authority frameworks to Update 31

To test:
1. Apply patch and reset_all
2. Go to Administration > Authority types
3. Click Actions next to the Default framework and choose MARC structure
4. Check for the changes detailed in the update
   https://www.loc.gov/marc/up31authority/adapndxf.html

- There should be a new field 335 EXTENSION PLAN with the following subfields https://www.loc.gov/marc/authority/ad335.html
  - 0 - Authority record control number or standard number (R)
  - 1 - Real World Object URI (R)
  - 2 - Source (NR)
  - 3 - Materials specified (NR)
  - 6 - Linkage (NR)
  - 7 - Data provenance (R)
  - 8 - Field link and sequence number (R)
  - a - Extension plan term (NR)
  - b - Extension plan code (NR)

- The following 856 subfields should be marked as obsolete
  - b - Access number [OBSOLETE]
  - h - Processor of Request [OBSOLETE]
  - i - Instruction [OBSOLETE]
  - j - Bits per second [OBSOLETE]
  - k - Password [OBSOLETE]
  - l - Logon [OBSOLETE]
  - n - Name of location of host [OBSOLETE]
  - r - Settings [OBSOLETE]
  - t - Terminal emulation [OBSOLETE]

- Field 043 should now be repeatable

- There should be two new subfields in 375
  - 0 - Authority record control number or standard number (R)
  - 1 - Real World Object URI (R)

- There should be two new subfields in 384
  - 0 - Authority record control number or standard number (R)
  - 1 - Real World Object URI (R)

5. Optional: Check other authority frameworks, they should all be changed

Signed-off-by: Phil Ringnalda <phil@chetcolibrary.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 14:55:07 +02:00
Caroline Cyr La Rose
395ceb4c97
Bug 37122: Update MARC21 authority frameworks to Update 30
The patch updates the MARC21 authority frameworks to Update 30

To test:
1. Apply patch and reset_all
2. Go to Administration > Authority types
3. Click Actions next to the Default framework and choose MARC structure
4. Check for the changes detailed in the update
   https://www.loc.gov/marc/up30authority/adapndxf.html

- Field 883 should be named METADATA PROVENANCE

- Subfield 883$a should be named Creation process

- Subfield 883$d should be named Creation date

- Subfield 883$q should be named Assigning or generating agency

5. Optional: Check other authority frameworks, they should all be changed

Signed-off-by: Phil Ringnalda <phil@chetcolibrary.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 14:55:07 +02:00
492645a9d2
Bug 36941: Limit login branch list when IP restriction enabled
This patch adds a new 'ip_limit' option to Koha::Template:Plugin::Branches

To test:
1 - Set some branches in the system to have random IPs
2 - Set one branch to have your IP
    To find the IP in KTD I:
    Enabled ILS-DI
    Set ILS-DI:AuthorizedIPs to 1.1.1.1
    Visit:
    http://localhost:8080/cgi-bin/koha/ilsdi.pl?service=GetAvailability&id=248&id_type=biblio
    And note the unauthorized IP listed
3 - Log out, confirm all branches are listed
4 - Log in, enable StaffLoginRestrictLibraryByIP
5 - Log out, confirm branches with IPs are removed
6 - Confirm branch matching your IP is listed
7 - Choose any of the branches and login
8 - Confirm login works

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:26 +02:00
b6fe3a5091
Bug 35430: Add rota endpoints for stockrotation
This patch adds the CRUD endpoints for stock rotation rota's.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:26 +02:00
72278c533e
Bug 35430: Add unit tests for new stockrotation endpoints
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:25 +02:00
6692f95062
Bug 35430: Move 'Stage' into StockRotation directory
Cleaning up a little, I opt to move the 'Stage' controller under a new
StockRotation parent directory.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:24 +02:00
Janusz Kaczmarek
fb2e54b0c3
Bug 36976: Warning 'Argument "" isn't numeric in numeric' in log when merging bibliographic records
When merging bibliographic records, Koha generates warning:

[WARN] Argument "" isn't numeric in numeric ge (>=) at /kohadevbox/koha/Koha/Util/MARC.pm line 81.

in [plack-]intranet-error.log.

This is because $tagslib->{$fieldtag}->{'tab'} -- for a tag, not for a
subfield --is (always?) an empty string (cf.
C4::Biblio::GetMarcStructure : $res->{$tag}->{tab} = ""), and in
Koha::Util::MARC::createMergeHash it is compared numerically with 0.

Test plan:
==========
1. From biblio search result page, selact two records with the checkboxes
   and start a merge (Edit -> Merge records).  Proceed with merging.
   After the merge, controll the content of the plack-intranet-error.log
   (when using plack -- standard in ktd).  Note the lines:
   [WARN] Argument "" isn't numeric in numeric ge (>=) at /kohadevbox/koha/Koha/Util/MARC.pm line 81.
2. Apply the patch; restart_all.
3. Repeat p. 1.  There should be no fresh warnings.

Sponsored-by: Ignatianum University in Cracow
Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:24 +02:00
fd7130beca
Bug 37038: (QA follow-up) Replace \> by -gt
Note that -gt is the bash integer comparison and > is the
lexical one:
$ if [ '1' \> '09' ]; then echo true; fi
true
$ if [ '1' -gt '09' ]; then echo true; fi

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
[EDIT] Added the dev/null redirection to suppress warn in bin/sh.
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:23 +02:00
Janusz Kaczmarek
bc92152e2f
Bug 37038: koha-elasticsearch creates a file named 0
After execution of koha-elasticsearch command a file named 0 remains in
the current directory.

Inside the single parentheses, the character '>' is treated as a file
redirection, not as a comparison operator.

Test plan:
==========
1. Have a test installation with Elasticsearch.  As root, perform:
   ./debian/scripts/koha-elasticsearch --rebuild kohadev
   When the command finishes, check the contents of the current
   directory (ls -ltr | tail).  You sould notice a fresh file named '0'
2. Apply the patch. Delete the file named 0.
3. Repeat p. 1.  There should be no file named 0 now.

Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:23 +02:00
7c5a96e6eb
Bug 36936: Squash warning in bookings test
Simple catch for the warning throwing by DuplicateID exceptions in the
bookings.t api tests.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:22 +02:00
6caedbfc00
Bug 14565: Allow koha-run-backups to backup an instance called demo
We all have a `demo` instance somewhere. It is so weird that the default
script for backing up Koha has a hardcoded exclusion for instances
called like that. This patch fixes that.

To test:
1. Add a demo instance:
   $ ktd --shell
  k$ sudo koha-create --create-db demo
2. Run:
  k$ sudo debian/scripts/koha-run-backups
3. Check the backups:
  k$ ls -l /var/spool/koha/demo/
=> FAIL: No backup for the demo instance
3. Apply this patch
4. Repeat 2
=> SUCCESS: Backup made!
5. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:22 +02:00
8a90ec5432
Bug 36944: Mock AutoLocation in 2FA subtest
Test plan:
Enable AutoLocation in prefs.
Run Auth.t. Should pass now.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:21 +02:00
3e1d8b0628
Bug 32575: Add an empty text body to fix multipart/mixed handling
By adding an empty text body, we force Email::Stuffer/Email::MIME
to use multipart/mixed handling for the attachment instead of forcing
a single part (ie direct attachment) email, which is not consistently
handled by different email clients.

An empty text body is language-neutral (ie not imposing English),
and it allows SMTP servers to inject organisational footers into
the email (e.g. confidentiality notices).

Signed-off-by: Magnus Enger <magnus@libriotech.no>
I have tested this solution in production, and it works for me.

Bug 32575: Tidy patch

Signed-off-by: Magnus Enger <magnus@libriotech.no>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:20 +02:00
05432982cf
Bug 36741: Skip auto_too_soon issues in auto renew digest
This change adds a line to skip auto_too_soon issues/checkouts
in the auto renew digest template.

Since auto_too_soon do not trigger notifications and don't require
any special action, let's skip them in the breakdown of checkouts in
the AUTO_RENEWALS_DGST email.

Test plan:
0. Apply the patch
1. reset_all (in koha-testing-docker)
2. Note the following line in the AUTO_RENEWALS_DGST template:
[% NEXT IF (checkout.auto_renew_error == 'auto_too_soon') %]

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:20 +02:00
5f156ad3df
Bug 37187: Fix deletion of label batches and label templates
This patch uses the new form-submit JS to convert the label management
deletion link from a GET operation to POST.

To test, apply the patch and go to Cataloging -> Label creator.

- Click Manage -> Label batches. Create a batch if necessary.
- Click the "Delete" button in the "Actions" column. You should get a
  confirmation message, "Are you sure you want to delete this?"
  - Test both the confirming and cancelling.
- Perform the same test with Manage -> Label templates.
- From the Manage -> Label batches page, click "edit" on one of the
  batches.
- Right above the "Items in batch number X" is a toolbar which should
  have a button, "Delete batch." Test that it works correctly to delete
  the batch.

Sponsored-by: Athens County Public Libraries
Signed-off-by: Phil Ringnalda <phil@chetcolibrary.org>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:19 +02:00
b18664ec45
Bug 28664: (follow-up) Throw exception if debt if VOID
This patch adds an exception when an attempt is made to refund against a
VOID debit.

Test plan
1) Run the included unit test

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:19 +02:00
a47474e3d7
Bug 28664: Prevent refunds against void lines
With the introduction of double entry accounting for VOID actions, we
need to add an additional filter to the 'Issue refund' button appearance

Test plan
1/ Add a debt
2/ Pay the debt
3/ Void the payment
4/ Confirm that with the patch applied the 'Issue refund' button doesn
not appear on the 'Void' accountline.

Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-28 13:49:18 +02:00
Sam Lau
4801037abe
Bug 37044: Added library branch to SCO OPAC message
This patch simply adds the correct branch at the end of an OPAC message on the SCO page.

To Test:
1) From the staff interface, click on a patron and add an OPAC message
   to their account.
2) Log into the SCO with this patron.
   (http://localhost:8080/cgi-bin/koha/sco/sco-main.pl)
3) Notice how in the "Messages for you" at the top, you will see the
   message, however, at the timestamp, it says something like "Written
   on 06/06/2024 by " w/o listing the library that sent it.
4) Apply patch
5) Log back into SCO module
6) Note that now in the message timestamp, it correctly lists the
   library that sent the message.
7) Sign-off

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:42 +02:00
2b50c3fc3c
Bug 36767: Add a hint to show the new default of 22
Signed-off-by: Emily Lamancusa <emily.lamancusa@montgomerycountymd.gov>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:42 +02:00
09d2bdf90a
Bug 36767: Default port should be set to 22
This patch sets a default value for the EDI account form for the upload and download ports

Test plan:
1) Try to create an EDI account without setting the upload or download ports
2) The form will crash
3) Apply patch and restart_all
4) Try again, the form should submit
5) In your new EDI account, you should see the value of 22 for both ports

Signed-off-by: Emily Lamancusa <emily.lamancusa@montgomerycountymd.gov>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:41 +02:00
Caroline Cyr La Rose
fb918a53fe
Bug 36952: Add 370 to authority index (MARC21)
This enhancement adds field 370 to MARC21 default authority
index mappings.

To test:
1. Import the attached .mrc file
2. Go to Authorities
3. Search 'Main heading' for quebec
   --> 1 result (normal)
4. Search 'Entire record' for quebec
   --> 1 result
5. Go to the OPAC > Authority search
6. Redo steps 3 and 4
   --> Same results
7. Apply patch
8. Reindex authorities (in KTD shell:
   koha-elasticsearch --rebuild -a -v -r kohadev)
9. Redo step 3
   --> Still 1 result (normal)
10. Redo step 4
    --> 2 results
11. Redo step 5-6
    --> Same results as steps 9-10

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:41 +02:00
Caroline Cyr La Rose
477b93e3ff
Bug 36953: Add 678 to authority index (MARC21)
This enhancement adds field 678 to the default MARC21 authority index mappings.

To test:
1. Import the attached .mrc file
2. Go to Authorities
3. Search "Entire record" for innu
   --> No results
4. Go to the OPAC > Authority search
5. Search "in the complete record" for innu
   --> No results
6. Apply patch
7. Reindex authorities (in KTD shell:
   koha-elasticsearch --rebuild -a -v -r kohadev)
8. Redo step 3
   --> 1 result
9. Redo steps 4-5
   --> 1 result

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:40 +02:00
be9d5605b3
Bug 36912: Add more spans/classes to member-display-address-style.inc
To test:
1. APPLY PATCH
2. Make an AV for ROADTYPE
3. Find a patron record and make sure the entire 'Main address' portin is filled out. ( street number, street type, address, address 2, ZIP, City, State, and Country )
4. For easier testing you can add this test CSS to IntranetUSerCSS:

.patronaddress1 {
  .streetnumber {
  	color: blue;
  }
  .address1 {
  	color: green;
  }
  .roadtype {
    color: pink;
  }
}

.patronaddress2 {
	color: lightgreen;
}

.patroncity {
  .city {
     color: orange;
  }
  .state {
     color: brown;
  }
  .zipcode {
     color: limegreen;
  }
  .comma {
     color: teal;
  }
  .country {
     color: red;
  }
}

5. Go to the patron's record and look aty the brief info. you should see classes for everything in the address block. If you added the CSS from above everything should be colored differently.
6. Find the system pref 'AddressFormat' and test everything in US style, French style, and German style.

Signed-off-by: Laurae <laura.escamilla@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:39 +02:00
David Nind
d5f9493696
Bug 36777: Add new section for lost item circulation preferences
This moves lost item circulation system preferences from
'Checkout policy' to their own 'Lost item policy' section.

It also fixes a capitalization issue - 'Fines Policy' to
'Fines policy'.

Test plan:
1. View the circulation system preferences page (Administration >
   System preferences > Circulation).
2. Search the page, and note that there are several system
   preferences about lost items in the 'Checkout policy' section.
3. Apply the patch.
4. Refresh the page.
5. Note that there is now a new section heading 'Lost item policy'.
   The system preferences previously under 'Checkout policy' are
   now located in this new section.
6. Sign off D:

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Tadeusz „tadzik” Sośnierz <tadeusz@sosnierz.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:39 +02:00
928681a24c
Bug 37002: Correct several HTML markup errors
This patch makes several minor corrections to HTML markup in the
bibliographic detail page template and related include files. This
corrects the following validator errors:

- Stray end tag a.
- Bad value true for attribute disabled on element select.
- Bad value true for attribute disabled on element input.
- No space between attributes.
- Duplicate attribute class.
- The value of the for attribute of the label element must be the ID of
  a non-hidden form control.

The patch is simple enough that an inspection of the patch is probably
enough, but following is a detailed test plan of the affected areas:

- Apply the patch and view the bibliographic detail page in the
  staff interface.
- Under the "Edit" menu in the toolbar, these options should still work
  correctly:
  - Modify record using template
  - Edit items in a batch
  - Delete items in a batch
- Click the "Items" link in the sidebar and find the "Bookable" setting
  for the title's items. Make at least one item bookable and return to
  the detail page.
- Click the "Place booking" button in the toolbar and confirm that you
  can successfully place the booking.
- If you have access to Novelist, confirm that Novelist content displays
  correctly on the detail page.
- Turn on the "EnableItemGroups" preference.
- On the detail page, open the "Item groups" tab and click the "New item
  group" button.
  - In the modal, the "Name" and "Display order" labels give focus to
    the corresponding form field when clicked.
  - Create an item group.
- Under the holdings tab, select one or more items and click "Add/move
  to item group".
  - In the modal, clicking the "Item group" label should give focus to
    the dropdown.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:38 +02:00
dc154e3dd2
Bug 36895: Fix background job link
This patch fixes the missing job id in the links from the import KBART file page

Test plan:
1) Import a KBART file to get the message at the top of the screen.
2) The message should include a link on the text "see progress"
3) Click the link, it should just take you to the background jobs page
4) Apply patch
5) yarn build
6) Hard refresh the browser
7) Repeat steps 1-3
8) It should correctly take you to the background job

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:38 +02:00
984960351e
Bug 36909: Eliminate duplicate ID in cookie consent markup
This patch changes markup and CSS in the OPAC and staff client to
eliminate HTML validator warnings about duplicate ids.

To test, apply the patch and rebuild all CSS (Bug 36909: Eliminate
duplicate ID in cookie consent markup).

- If necessary, set the "CookieConsent" system preference to "Require."
- Open the OPAC in a new private window (to prevent previous consents
  from hiding the consent messages).
- You should see a cookie consent bar across the bottom of the page. It
  should look correct, and its contents should reflow well at various
  browser widths.
- Click "Accept all cookies."
- In the header you should now see a "Your cookies" link.
- Click it and confirm that the contents of the modal look correct and
  reflow well at various browser widths.

- Perform the same tests in the staff interface.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:37 +02:00
66981d89c2
Bug 36905: Terminology: home locations / home collections
This patch removes the unnecessary word "home" from several aria-lablels
in OPAC facets. I think they were copy-paste errors.

To test, apply the patch and perform a catalog search in the OPAC.

Since the aria-label isn't visible in the interface, you can check the
source to confirm that the "Show more" links for locations, collections,
and languages say "Show more locations," "Show more collections," and
"Show more languages."

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:36 +02:00
149412cb62
Bug 37198: Improve GetPreparedLetter documentation
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:36 +02:00
0e1289d014
Bug 36141: Add classes to CAS text on OPAC login page
This enhancement makes it easier for libraries to change the CAS-related messages on the OPAC login page.

It moved the invalid CAS login message above the CAS loging heading,
like for Shibboleth login.

Test plan :
1) Enable system preference 'casAuthentication'
2) Restart all caches (restart_all in koha-testing-docker)
3) Go to OPAC, logged out
4) Click on 'Log in to your account'
5) In the staff interface, edit the OPACUserJS system preference. Add the following JS and Save:
   $(".cas_invalid").text("Test changing the invalid CAS login message.");
   $(".cas_title").text("Test changing the CAS login heading.");
   $(".cas_url").text("Test changing the CAS account link text.");
   $(".cas_url").after(' <i class="fa fa-globe" aria-hidden="true"></i>');
6) Refresh the OPAC and confirm the text changes to reflect your JS.

Signed-off-by: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:35 +02:00
8d898f1746
Bug 36911: (follow-up) Add markup comments
This patch adds comments to the template to highlight the markup
structure.

This patch should have no effect on the page's appearance or
functionality.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:35 +02:00
002fbdcc62
Bug 36911: Reindent circ-menu.inc
This patch reindents the circ-menu include file so that it has
consistent indentation. These changes should have no visible effect on
the page.

To test, apply the patch and enable the 'CircSidebar' system
preference if necessary.

- View any circulation page, including the checkout page, to confirm
  that the left-hand sidebar menu is unchanged.
- Test with the 'patronimages' system preference both on and off.

Viewing the diff while ignoring whitespace changes should show only
places where a line break was added.

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 17:24:34 +02:00
46c1b9e9bf
Bug 35197: (QA follow-up) Add note about intentions
This is the beggining of a wider series of developments aimed at
retifying overlapping features.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 14:04:59 +02:00
5cfc8b58a6
Bug 35197: Rename to 'Extended attribute types'
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 14:04:58 +02:00
f8b8223353
Bug 35197: (QA follow-up) Add 'additional_fields' tag description in docs
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 14:04:58 +02:00
f15ddba63e
Bug 35197: (QA follow-up): Fix permissions specification
Sponsored-by: UKHSA - UK Health Security Agency
Sponsored-by: PTFS Europe Ltd
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 14:04:57 +02:00
5d4d3bb1b7
Bug 35197: (QA follow-up): Fix pasted comment
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 14:04:56 +02:00
c6f74f753f
Bug 35197: (QA follow-up): Update tablename
prove t/db_dependent/api/v1/additional_fields.t

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 14:04:56 +02:00
629e62ed28
Bug 35197: Field name consistency
This patch adds a to_api_mapping and updates the yaml definitions to be
ensure we are consistent with modern best practice for our api field
names.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 14:04:55 +02:00
4d40f5f2b9
Bug 35197: Add tests
prove t/db_dependent/api/v1/additional_fields.t

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 14:04:55 +02:00
3c87aa8c7f
Bug 35197: Add additional_fields REST API endpoint
Test plan:
1) Apply patch, restart plack 'koha-plack --restart kohadev'
2) Visit /api/v1/additional_fields?tablename=aqinvoices - Notice its empty
3) Visit /cgi-bin/koha/admin/additional-fields.pl?tablename=aqbasket and add a new additional field
4) Do step 2) again - Notice the newly created additional field is there
5) Visit /cgi-bin/koha/admin/additional-fields.pl?tablename=aqinvoices and add a new additional field for invoices
6) Do step 2) again - Notice both additional fields are there
7) Visit /api/v1/additional_fields?tablename=aqinvoices - Notice only the additional field for aqinvoices is listed

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 14:04:54 +02:00
444f3d8bad
Bug 37181: Add --confirm option to pseudonymize_statistics.pl
To test:
1 - Perform some transactions
2 - Enable Pseudonymization
3 - perl misc/maintenance/pseudonymize_statistics.pl -v
4 - Confirm test run an nothing changed
5 - perl misc/maintenance/pseudonymize_statistics.pl -v -c
6 - Confirm statistics are pseudonymized

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Amend: tidied the changes [tcohen]
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 14:04:54 +02:00
5e9b914352
Bug 36815: (follow-up) Use correct language for default
When 'default' language is set, we need to use the default as defined by
the OPACLanguages system preference.

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 14:04:53 +02:00
7f3a0bb76b
Bug 36815: (follow-up) Fix logic for new languages
If a notice doesn't already have any data in it we weren't able to use
the object to lookup the sample.. with this patch we now always load the
samples if they exist for each installed and enabled language,
regardless of whether there's already a notice stored in that language.

Test plan
1. Install Spanish by running koha-translate --install es-ES from inside
   the kohashell
2. restart all
3. Set TranslateNotices to Allow
4. Verify that the Spanish-language sample_notices.yml exists
5. Open a notice that has at least one Spanish default notice defined
6. Confirm you see the 'View default' button for the spanish notice and
   that the displayed notice is indeed the spanish translation

Signed-off-by: Emily Lamancusa <emily.lamancusa@montgomerycountymd.gov>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-06-27 14:04:52 +02:00