Bug 42013

Summary: Confirmation dialog for "Remove all reserves" never shown on course details page
Product: Koha Reporter: Paul Derscheid <paul.derscheid>
Component: Course reservesAssignee: Paul Derscheid <paul.derscheid>
Status: Signed Off --- QA Contact: Testopia <testopia>
Severity: normal    
Priority: P5 - low    
Version: Main   
Hardware: All   
OS: All   
GIT URL: Initiative type: ---
Sponsorship status: --- Comma delimited list of Sponsors:
Crowdfunding goal: 0 Patch complexity: ---
Documentation contact: Documentation submission:
Text to go in the release notes:
Version(s) released in:
Circulation function:
Attachments: Bug 42013: Fix missing confirmation dialog for "Remove all reserves"
Bug 42013: Fix missing confirmation dialog for "Remove all reserves"

Description Paul Derscheid 2026-03-06 12:41:42 UTC
On the course details page (course_reserves/course-details.tt), clicking "Remove all reserves" skips the confirmation dialog and immediately submits the form.

The "Remove all reserves" button (#rm_items_button) is an <a> tag separate from the #rm_items form. 

The click handler on the button calls $("#rm_items").submit() programmatically. A separate $("#rm_items").click(...) handler was intended to show a confirmDelete dialog, but it is bound as a click event on the form element, which is never clicked by the user.

jQuery's .submit() method also does not trigger click events, so the confirmation is never shown.
Comment 1 Paul Derscheid 2026-03-06 12:47:57 UTC
Created attachment 194699 [details] [review]
Bug 42013: Fix missing confirmation dialog for "Remove all reserves"

- The confirmDelete dialog for removing all reserves from a course
  was bound as a click handler on the #rm_items form element, which
  is never directly clicked by the user
- The #rm_items_button click handler called .submit() on the form
  without checking confirmDelete first, bypassing the confirmation
- Move the confirmDelete check into the #rm_items_button click
  handler and remove the dead #rm_items click handler

Test plan:
- Enable UseCourseReserves system preference (should be enabled in ktd)
- Create a course (or use the existing one) and add at least one reserve to it
- On the course details page, click "Remove all reserves"
- Observe the form submits immediately without confirmation
- Apply patch
- Repeat the steps above
- Verify a confirmation dialog now appears
- Click cancel and verify the reserves are not removed
- Click "Remove all reserves" again, confirm, and verify
  the reserves are removed
Comment 2 Roman Dolny 2026-03-06 20:54:05 UTC
Created attachment 194909 [details] [review]
Bug 42013: Fix missing confirmation dialog for "Remove all reserves"

- The confirmDelete dialog for removing all reserves from a course
  was bound as a click handler on the #rm_items form element, which
  is never directly clicked by the user
- The #rm_items_button click handler called .submit() on the form
  without checking confirmDelete first, bypassing the confirmation
- Move the confirmDelete check into the #rm_items_button click
  handler and remove the dead #rm_items click handler

Test plan:
- Enable UseCourseReserves system preference (should be enabled in ktd)
- Create a course (or use the existing one) and add at least one reserve to it
- On the course details page, click "Remove all reserves"
- Observe the form submits immediately without confirmation
- Apply patch
- Repeat the steps above
- Verify a confirmation dialog now appears
- Click cancel and verify the reserves are not removed
- Click "Remove all reserves" again, confirm, and verify
  the reserves are removed

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