This patch fixes a trivial typo. The text appears in two more places
with the right form on the same template.
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch corrects the terminology used in the patron category
settings page, changing 'preference' to 'system preference'.
https://wiki.koha-community.org/wiki/Terminology#P
To test:
1. Apply patch
2. Go to Administration > Patron categories
3. Click 'New category'
4. Check that the hints under 'Checkout charge limit', 'Guarantees
checkout charge limit', and 'Guarantors with guarantees checkout
charge limit' use 'system preference' and not 'preference'
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch corrects the link to the NoIssuesChargeGuarantorsWithGuarantees
system preference in the patron category creation/modification page.
To test:
1. Apply patch
2. Go to Administration > Patron categories
3. Click 'New category'
4. Check that the hint under 'Guarantors with guarantees checkout charge
limit' links to the correct system preference
5. Click on the link and make sure it links to the correct system preference
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch corrects the dropdown menu markup in the "Records found in
the reservoir" section of the cataloging search results page. It was not
upgraded to Bootstrap 5 markup.
To test, apply the patch and go to Cataloging.
- Click "New from Z39.50/SRU"
- Perform a search which will return multiple results.
- Close the popup window and perform the same search in the "Cataloging
search" header form.
- Scroll down to the "Records found in the reservoir" section.
- Click the "Actions" menu on one of the results. The menu should look
correct.
Sponsored-by: Athens County Public Libraries
Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Lisette Scheer <lisette@bywatersolutions.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch updates the JavaScript which runs on the list of saved SQL
reports, adding a check for report subgroups to the display of the
report subgroups dropdown. The patch also hides the subgroups dropdown
if there is no saved tab, in which case the tabsInit function doesn't
run.
To test you should have multiple reports organized in multiple groups
and subgroups. See the test plan on Bug 39534.
- Go to Reports -> Saved SQL reports.
- If the page loads with the "All" tab active, there should be no
subgroups dropdown.
- If the page loads under a different tab, the subgroups dropdown should
only show if that group has subgroups.
- Switch between the various report group tabs to confirm that the
subgroups dropdown is shown or hidden correctly based on the existence
of subgroups.
Sponsored-by: Athens County Public Libraries
Signed-off-by: Anneli Österman <anneli.osterman@koha-suomi.fi>
Signed-off-by: Lisette Scheer <lisette@bywatersolutions.com>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
this patch adds some useful features to allow the build-git-snapshot tool to build production packages
the patch adds the following options:
--urgency, -u
the urgency string for the resulting package. Default is '$urgency'.
--incr, -i
set debian revision (default = '-1')
--(no)autochangelog
whether or not to update the debian/changelog file.
Default is to update it.
note: this patch does not change any of the existing behaviour of the tool
test plan to come...
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch makes the tests related to `can_place_holds` cover more use
cases, and highlight an underlying issue in the controller.
Signed-off-by: Lisette Scheer <lisette@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch fixes a subtle (yet naive) error making the controller not
care about blocking conditions if they were more than one and the first
one was overridden.
To test:
1. Apply the regression tests
2. Run:
$ ktd --shell
k$ prove t/db_dependent/api/v1/holds.t
=> FAIL: Tests fail! Some tests expect a 409 (denied for a conflict) but
return a 201!
3. Apply this patch
4. Repeat 2
=> SUCCESS: Tests pass!
5. Sign off :-D
Signed-off-by: Lisette Scheer <lisette@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch modernizes the Scrubber.t unit test with comprehensive
coverage following Koha best practices:
- Uses subtest structure for logical grouping
- Tests all scrubber types (default, comment, note)
- Includes security testing for XSS prevention
- Covers edge cases and error handling
- Tests new list elements added in previous commits
Also fixes C4::Scrubber to handle undef parameters cleanly by
treating them as 'default' type instead of generating warnings.
Test plan:
1. Run prove t/Scrubber.t
2. Verify all tests pass without warnings
3. Confirm comprehensive coverage of module functionality
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Adds support for HTML description list elements (dl, dt, dd) to the
'note' profile in the HTML scrubber configuration. This allows
librarians to use description lists in note fields for better
structured content presentation.
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch add the unordered list, ordered list and list item html tags
to the list of allowed tags in C4::Scrubber.
Test plan:
1) Add a course reserve and include the following in the public note
field:
<ul>
<li>First item</li>
<li>Second item</li>
</ul>
2) View the course details page and note "First item Second item" all
appears on the same line (the ul and li tags have been stripped)
3) View the course reserves page and note the same issue in the public
notes field of the table display
4) Apply this patch
5) Repeat 2 and 3 and note you now have a bullet pointed list displayed
in both places
6) The display of the note on the details page may look mis-aligned..
that will be dealt with on it's own bug
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch adds new behaviors to the `POST /holds` endpoint.
It uses the framework we created in the past for overriding policy
rules, and add new options:
* expired
* debt_limit
* bad_address
* card_lost
* restricted
* hold_limit
Some status codes are changed from 403 to 409. This should be revisited
accross the codebase, as I think we made a wrong choice. Happy to review
in this bug.
The feature makes use of the newly introduced
`$patron->can_place_holds()` method, which accepts to be passed through
the overrides.
To test:
1. Apply this patches
2. Run:
$ ktd --shell
k$ yarn api:bundle
k$ koha-plack --restart kohadev
k$ prove t/db_dependent/api/v1/holds.t
=> SUCCESS: Tests pass!
3. Test the endpoint with the various scenarios using your favourite
REST tool (Postman!)
4. Sign off :-D
Signed-off-by: Kristi Krueger <kkrueger@cuyahogalibrary.org>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch updates the way patron restrictions are displayed in the OPAC
and staff interface, with the intention of making the details of each
restriction more clear. In the OPAC, a new include file is created to be
reused on the holds page and the user summary page. opac-user.pl is
updated to allow a parameter to be passed to automatically open the
"Overdues" tab.
Test plan:
1. Before applying the patch, check how the display is currently. First
set syspref PatronRestrictionTypes to "Allow"
2. Add two different new restriction types, fill out both "Code" and
"Label"
3. Go to a patron's checkout page and add one of each of these
restrictions, but do not fill out the comment field when adding them!
4. Observe that in the checkouts page and details page of the patron, it
just says "Restricted since..." and does not show the restriction
types.
5. Add another restriction, this time fill out the comment field
6. Observe that now in checkout and detail pages, the labels from the
restriction types are listed and the comment shown.
7. Apply patch
8. Go to patron's details and checkout pages and check the restrictions
are now displayed correctly, that is the text "with the explanation"
is only shown for the restrictions that actually have a comment
8b. Log in to the OPAC with that patron and check they are displayed
correctly in their summary page and when the patron is trying to
place a hold.
9. Go to a different patron's account and add a restriction without a
comment
10. Check it is now displayed correctly
11. Add more restrictions and check they are displayed correctly. Also
add an OVERDUES restriction:
11a. Find a patron with an overdue item checked out (or create an
overdue checkout on a patron's account)
11b. Go to Tools -> Overdue notice/status triggers
11c. Set up a rule for that patron's category, e.g. "First" ->
Delay: 1, make sure to mark the check box for "Restrict" and
"Print"
11d. Run misc/cronjobs/overdue_notices.pl
11e. That patron should now also have an OVERDUES restriction
12. Turn PatronRestrictionTypes off again and check the patrons if
everything is still displayed correctly
13. Go to another different patron and add a restriction with no
comment, check if it is displayed correctly
14. Add another restriction with a comment and check it is displayed
correctly
15. Log in to the OPAC with the patron that had OVERDUES restriction and
check they are displayed correctly in their summary page and when
the patron is trying to place a hold.
16. Same thing for the other patron without the OVERDUES restriction.
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Test plan:
1) Enable ERM module
2) Create an agreement and a license with a vendor
3) The table filters will be out of sync
- Agreements - only the vendor filter is incorrect, it sits above the name column instead of the vendor column
- Licenses - all dropdown filter options will be left shifted by one
4) Apply patch
5) yarn js:build
6) Hard refresh the browser
7) All the filters should now be above the correct columns
Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Kristi Krueger <kkrueger@cuyahogalibrary.org>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch adds a new method to the `Koha::Patron` class.
As described in the POD, this method makes checks on the patron's
current situation and returns a boolean telling if it should be allowed
to place holds. This doesn't check specific item/biblio holdability. It
only covers patron specific conditions that could prevent holds to be
placed.
Both in `opac-reserve.pl` and `reserve/request.pl` this checks are all
run, and all blocking situations are presented to the UI user. Feedback
in community (so far) expressed this is a desirable situation, so that
behavior can be retained with the use of the `no_short_circuit`
parameter.
If `no_short_circuit` is not passed, then the routine will return on the
first blocking condition it finds.
An `overrides` parameter is added, allowing to be passed a list of
strings that match the possible error messages.
This way, this method can be asked not to check for patron expiration,
for example, and things like that. This is of course designed with the
API overrides use case in mind.
To test:
1. Apply this patches
2. Run:
$ ktd --shell
k$ prove t/db_dependent/Koha/Patron.t
=> SUCCESS: Tests pass!
3. Sign off :-D
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Kristi Krueger <kkrueger@cuyahogalibrary.org>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Kristi Krueger <kkrueger@cuyahogalibrary.org>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch improves the contributor section display in the about page
by implementing a condensed view for version lists. When a contributor
has more than 2 versions for a role, only the first 2 are shown with
an ellipsis (...) that can be hovered to reveal the remaining versions.
The implementation:
- Sorts versions in reverse chronological order (most recent first)
- Shows first 2 versions directly
- Hides additional versions under a hoverable ellipsis using Bootstrap tooltips
- Adds CSS styling for the ellipsis with dotted underline and help cursor
This makes the contributor lists more readable while preserving access
to complete version information.
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch adds missing role mappings to the about-team.inc template
to ensure all roles defined in teams.yaml are properly displayed.
Added role mappings include:
- manager_assistants (plural form)
- maintainer_assistants (plural form)
- maintainer_mentors (plural form)
- accessibility_advocates (plural form)
- security_manager
- meeting_facilitator
- social_media
- website
Also adds display logic for historical roles that may not be present
in current teams but appear in contributor lists from teams.yaml.
This ensures complete coverage of all team roles across historical
and current release teams.
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch updates the teams.yaml to include the voted in 25.11
release team.
Test plan
1/ Check against https://wiki.koha-community.org/wiki/Release_Teams
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
When a hold's pickup location is changed we should rebuild the holds queue.
To test:
1 - Enable RealTimeHoldsQueue
2 - Enable LocalHoldsPriority where pickup library matches home library
3 - Place two biblio level holds on a bib with one item for two different patrons for delivery to a different library then the home library
4 - Check the queue - firstpatron should have priority
5 - Change the pickup location for the second hold to be picked up at the home library
6 - Check the queue, unchanged
7 - Change the pickup location back
8 - Apply patch, restart all
9 - Change the pickup location to the items home library again
10 - Check the queue
11 - Second patron has now been given priority
Signed-off-by: Michelle Spinney <mspinney@clamsnet.org>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Test plan:
Read patch.
Run t/db_dependent/Koha/Quotes.t
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Test plan:
Just read the patch.
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch adds a bit more control to what CookieManager does by
adding a hardcoded allowlist of cookie names that are cleared at
logout. Allowing at the same time to add entries to that list by
using koha-conf <remove_cookie> lines or removing entries from the
hardcoded list by using <do_not_remove_cookie> lines.
The patch fixes the expiration of cookies that should be removed
by passing max-age 0.
Also it adds a theoretical path correction for always_show_holds but
since we do not clear that cookie, it is currently unused. This seems
to be the only Koha cookie where we use a longer path.
Test plan:
Run t/CookieManager.t
Go to OPAC, login, select a few OPAC search results and send them
to cart. This would create cookie bib_list. (Check dev tools.)
Logout from OPAC and check cookie in your browser dev tools. What
you see, depends on the browser. But the cookie should be either
gone or empty and expired (FF: Session).
Now add a <do_not_remove_cookie> line for bib_list in koha-conf.
Restart all. Repeat search, add to cart. Logout. Check again in dev
tools that bib_list is not empty, not expired.
Check out an item. And click on 'Always show checkouts...' on
the patron checkout form. This should create the cookie with
value DO. Logout from intranet. Check that cookie was not affected.
Now add a <remove_cookie> line for the following cookie:
issues-table-load-immediately-circulation. Restart all.
Login and logout from staff again. Check that cookie is empty
and expired, or just gone.
Bonus for devs: Create some custom cookie, and test keeping or
removing it similar as above.
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
Spell system preference in full, instead of syspref.
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Emily Lamancusa <emily.lamancusa@montgomerycountymd.gov>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch makes some minor changes to the "Holds awaiting pickup" page
so that the cancel buttons are clear and usable.
The patch also wraps the reference to the
TransferWhenCancelAllWaitingHolds system preference in a permission
check so that it can be linked to the preference when appropriate.
To test you should have some waiting holds in three categories:
1. Holds which have not been waiting longer than the number of days
specified in the ReservesMaxPickUpDelay system preference.
2. Holds which have been waiting longer. I belive the only way to test
this is to manually update the expiration date of an already waiting
hold so that it is in the past.
3. Waiting holds which a patron has requested be cancelled. (Requires
that the patron and hold are allowed according to the "Cancellation
allowed" setting under Administration -> Circulation and fine rules
-> Default waiting hold cancellation policy.
- Log in to the OPAC as a patron who has a waiting hold. On the "Your
summary" page, under the "Holds" tab, click the "Request to cancel"
button for at least one of the waiting holds.
- In the staff interface, go to Circulation -> Holds awaiting pickup.
- Under each tab, check the appearance of the "Cancel selected"
buttons (and the "Cancel and transfer all" button under "Holds
awaiting past..." tab).
- When testing as a user with system preference privileges, and the
TransferWhenCancelAllWaitingHolds preference set to "Don't transfer,"
the hint shown under the "Holds awaiting past..." tab should be linked
to system preferences. A user without system preference privileges
should not see a link.
Sponsored-by: Athens County Public Libraries
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Emily Lamancusa <emily.lamancusa@montgomerycountymd.gov>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
- Update the dbrev to use say_success, and make dbrev and installer
consistent
- Change error div in moredetail.tt from info to warning
Signed-off-by: Emily Lamancusa <emily.lamancusa@montgomerycountymd.gov>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
To test:
1. APPLY PATCH, updatedatabase, and restart_all
2. Search for the system preference, PreventWithDrawingItemsStatus
3. Select both in transit and checked out, then save
4. Find an item and put it in transit.
5. Now from the item detail page, go to manage items > edit item
6. Using the item that was put in transit, attempt to change the status to withdrawn.
7. You should see an error at the top of the page 'In transit item cannot be withdrawn.' Make sure the item did not get marked as withdrawn.
8. Using a different item, do a checkout
9. Now from the item detail page, go to manage items > edit item
10. Using the checked out item, attempt to change the status to withdrawn.
11. vYou should see an error at the top of the page 'Onloan item cannot be withdrawn.' Make sure the item did not get marked as withdrawn.
12. Now, using the in transit item, go to the items tab. ( catalogue/moredetail.pl?biblionumber=x )
13. Under Statuses, attempt to withdraw the item.
14. You should see an error near the top of the page "Cannot withdraw item in transit".
15. Now, using the checked out item, go to the items tab. ( catalogue/moredetail.pl?biblionumber=144 )
16. Under Statuses, attempt to withdraw the item.
17. You should see an error near the top of the page "Cannot withdraw checked out item.".
18. Using both the in-transit and checked out item, attempt to modify the status through batchMod.
19. Ensure that the items are not being updated to withdrawn.
20. Turn off PreventWithDrawingItemsStatus system preferece.
21. Going through each of the steps again, except this time your items should successfully withdraw.
prove t/db_dependent/Koha/Item.t
Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Emily Lamancusa <emily.lamancusa@montgomerycountymd.gov>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This patch makes a number of changes to the "My virtual card" page and
associated menu item:
1. Rename it to "Library card." This fits better with the naming of
other user pages. This change includes updates to the page title,
breadcrumb menu, and page heading.
2. Move the menu item up to appear right after the "Summary" link.
3. Make some style changes to the display of the card, giving the card
more comfortable padding and adding some responsive behavior to the
card width.
To test, apply the patch and rebuild the OPAC CSS.
- If necessary, go to Administration -> System preferences and enable
the OPACVirtualCard preference.
- Log in to the OPAC.
- You should see a "Library card" menu item in the left-hand sidebar
menu, right below the "Summary" item.
- On the "Library card" page, the page title, breadcrumb item, and page
heading should read "Your library card."
- The "card" should look good, and should adjust well at various browser
widths.
- Above 769px wide, the card should not expand wider than 500px.
- Below 769px wide, the card should have a width of 100% and should
adjust as the viewport is narrowed.
Sponsored-by: Athens County Public Libraries
Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
To test:
1. APPLY PATCH
2. Enable OPACVirtualCard
3. Login to the OPAC and visit the account page.
4. Click on 'My virtual card'
5. Notice that the cardnumber and expiratrion date are now listed.
Signed-off-by: Emmanuel Bétemps <e.betemps@gmail.com>
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>