commit 6122b9e74ffc1c9fd6ba8f983c5c0d3bc4b0f487 Author: Pedro Amorim Date: Thu Oct 23 16:02:19 2025 +0000 Bug 39320: (QA follow-up): Fix widget with settings This was broken from the rewrite into bug 38201. Fixed here. Without this patch, if you click 'settings' on the licenses widgets and pick different values, you get errors on the console and everything breaks. commit 261e678d0176559abf93ae605da22aef1b058c2f Author: Pedro Amorim Date: Thu Oct 23 15:33:03 2025 +0000 Bug 39320: (QA follow-up): Remove big 'Processing...' when loading table widgets This prevents the big centered 'Processing...' from showing when moving widgets around the dashboard. Keeps the 'Loading...' at the widget level for table widgets, same as any other widget. commit b796cbebd3c7c0ed7003c661f9ae5f422c7fdbb7 Author: Pedro Amorim Date: Thu Oct 23 09:56:08 2025 +0000 Bug 39320: (QA follow-up): Only show 'drop widgets here' area when actively dragging commit 09030b598b78174f41921320e43cc0f3a58596b2 Author: Jonathan Druart Date: Thu Oct 23 11:10:09 2025 +0200 Bug 39320: Use __n for languages with 3 plural forms (or more) commit ac5e55fe1a6f7f58fce675b1c2b29531de2b943d Author: Pedro Amorim Date: Wed Oct 22 09:39:33 2025 +0000 Bug 39320: (QA follow-up): Style new ERMCounts list commit 35f364f2935065ca9dd43e2b7185e4b17042aff6 Author: Pedro Amorim Date: Wed Oct 22 09:36:31 2025 +0000 Bug 39320: (QA follow-up): Fix ERMCounts translatability commit 452c40e2ee0f3d8cec58128afe827c9dc5bad1f1 Author: Pedro Amorim Date: Wed Oct 22 09:19:59 2025 +0000 Bug 39320: (QA follow-up): Display 'Uknown status' if not one of the expected job statuses commit 25f5accc353c6da71c71037fc1843077f20f68ab Author: Pedro Amorim Date: Wed Oct 22 09:13:53 2025 +0000 Bug 39320: (QA follow-up): Add an empty drop area placeholder commit 462133e84b626a4162345a0021dc208478082d5a Author: Jonathan Druart Date: Mon Oct 20 12:01:24 2025 +0200 Bug 39320: (follow-up) Add counts API tests Prevent tests to fail if data in DB commit c81fe6b7245403a74ec4520ee591e281c68f472d Author: Pedro Amorim Date: Fri Oct 17 15:23:14 2025 +0000 Bug 39320: (QA follow-up): Use escape_str instead of .escapeHtml commit 31d49173a1b58a5a4e31a3ab6046eb59b127af2a Author: Pedro Amorim Date: Fri Oct 17 15:16:13 2025 +0000 Bug 39320: (QA follow-up): Add a handler for drag and drop commit 89348830c55b8c6c1d61d89fb7a9fd50974efcbf Author: Pedro Amorim Date: Fri Oct 17 15:04:13 2025 +0000 Bug 39320: (QA follow-up): Fix cypress These tests have always passed for me running cypress on UI, before and after this patch. CLI tests however, were flaky and often times failed. It appears this is because each module refresh was flooding the server with HTTP requests causing the whole thing to bottleneck (?) With this patch, all widget requests are stubbed for every widget test, and tests now pass on CLI consistently. Passed 10/10 for me, whereas before it failed more often than passed. Run this: for i in {1..10}; do cypress run --spec t/cypress/integration/ERM/ModuleDashboard_spec.ts; done commit daf5a440d3b3be71ee95c3efd9947690d32d2426 Author: Pedro Amorim Date: Fri Oct 17 10:54:44 2025 +0000 Bug 39320: (QA follow-up): Removed unused show event commit 7cb14552b7cb5747f29857abf144680eb07dca3a Author: Pedro Amorim Date: Fri Oct 17 10:39:08 2025 +0000 Bug 39320: (QA follow-up) Prevent full page reload when clicking a license commit 428d1a923ac1eae86c373d9b61b9b36ac6dfd01a Author: Pedro Amorim Date: Fri Oct 17 09:48:02 2025 +0000 Bug 39320: (QA follow-up): Fix counts links Use router-link instead of href='#' commit dad0dd78ae61b92f0797fe2ac15d86e0910e1bbd Author: Pedro Amorim Date: Fri Oct 17 09:36:45 2025 +0000 Bug 39320: (QA follow-up): Use localStorage instead of vue-cookies commit 8336417cfdd1f6416cf9e7111cb803635f143968 Author: Pedro Amorim Date: Fri Oct 17 09:28:39 2025 +0000 Bug 39320: (QA follow-up): Add counts API tests prove t/db_dependent/api/v1/erm_counts.t commit e81b4db668437b542e104fc99f160a3e7e49f026 Author: Pedro Amorim Date: Fri Oct 17 09:18:46 2025 +0000 Bug 39320: (QA follow-up): Remove deep CSS rules This CSS is in vue.css anyway commit e515bd2aca05956cfbc6918954738a803e1651ee Author: Matt Blenkinsop Date: Wed Oct 8 13:45:44 2025 +0000 Bug 39320: Remove 'extends' from the Home component Sponsored-by: UKHSA (UK Health Security Agency) Signed-off-by: Jeremy Evans commit 8ee1e933876bff53dcd95708dce8dcc4775d8df7 Author: Pedro Amorim Date: Wed Oct 8 12:14:14 2025 +0000 Bug 39320: Follow-up: Add 'move up' and 'move down' options Sponsored-by: UKHSA (UK Health Security Agency) Signed-off-by: Jeremy Evans commit 0d276c470726a40284e18e7a38e92fd1cc526be3 Author: Pedro Amorim Date: Tue Feb 25 16:05:26 2025 +0000 Bug 39320: Preparation: Add base and wrapper components As well as wrapper support components base-widget.js composable Sponsored-by: UKHSA (UK Health Security Agency) Signed-off-by: Jeremy Evans commit 77abce3de9aa06567e7322059517a02ca53f4d3d Author: Pedro Amorim Date: Wed Mar 12 14:11:49 2025 -0100 Bug 39320: Add Cypress tests Test plan: 1) Enable ERMModule 2) Visit ERM: /cgi-bin/koha/erm/erm.pl 3) Notice you now have a 'dashboard' homepage showing 4 different widgets 4) Click 'Open Widget Picker'. Remove and add different widgets. Close 5) Drag and drop the widgets around the dashboard, from left to right, top to bottom 6) Click the context menu (vertical dots) on each of the widgets. Click 'move to right', 'move to left', 'remove'. 7) On the 'Licenses needing action', notice there is a 'Settings' item option. Click that, test different settings values. Close settings. 8) Using the widget picker or context menu for the respective widgets, remove all widgets except one. Click away i.e. 'Agreements' on the left menu. Go back to home by clicking 'Home'. Notice your dashboard is as you left it. 9) Enable all widgets, rearrange them by dragging and dropping in different places. Repeat the previous exercise. Notice the dashboard keeps the widgets arranged as you left them. 10) Add some test data, on k-t-d run: bash <(curl -s https://gist.githubusercontent.com/ammopt/8d74feff048b0732ed0362a204c3d8cd/raw/a0347d4199d176dde58ea1d1437d2e903c101132/bug_39320_test_data.sh) 11) Refresh the homepage dashboard, check the 'Counts' are correct and links work, check that the 'Latest SUSHI Counter jobs' table now populates and links to the data provider as well as respective job. 12) For 'Licenses needing action', test different settings values and confirm the table filters the results as expected. 13) As before, click away and comeback to ERM home. Notice your 'Licenses needing actions' settings are kept as you left them. 14) For the 'eUsage report' widget, notice it says 'No saved reports are availble to run'. Create a new usage report at: /cgi-bin/koha/erm/eusage/reports 15) Click the 'Create report' tab, input the mandatory fields and enter a report name at the bottom of the page. Click 'Save report'. 16) Come back to ERM home. Notice the 'eUsage report' widget now shows a dropdown with a disabled 'Run' button. Pick the report you just created. Notice the 'Run' button is now enabled. Click 'Run'. Notice you get the report results screen (will show nothing as there is no usage data in this test exercise). 17) k-t-d: Run cypress tests (reset_all beforehand to clear test data): cypress run --spec t/cypress/integration/ERM/ModuleDashboard_spec.ts Sponsored-by: UKHSA (UK Health Security Agency) Signed-off-by: Jeremy Evans commit ec1a3470040de352e8366aec7d7335baff567390 Author: Pedro Amorim Date: Thu Feb 27 10:30:56 2025 -0100 Bug 39320: Add 'home' left menu item to ERM This is a bit hacky, but after hours of fighting with this I wasn't able to come up with a better soltuion. I suspect stores/navigation.js is doing too much and changing too much of the default router-link behaviour but I may be wrong. Sponsored-by: UKHSA (UK Health Security Agency) Signed-off-by: Jeremy Evans commit 6d43884e55e550e883fa4df5f6487b45e996e33b Author: Pedro Amorim Date: Tue Feb 25 16:07:15 2025 +0000 Bug 39320: Add FA icons to ERM Would be great to improve the way we load icons to be available everywhere in Vue instead of just the specific module but on a different scope. Sponsored-by: UKHSA (UK Health Security Agency) Signed-off-by: Jeremy Evans commit e9a67ddeafd080ae3e9b95c5c499d30c6ca71ee8 Author: Pedro Amorim Date: Fri Feb 21 15:25:17 2025 -0100 Bug 39320: Add dashboard to ERM home Sponsored-by: UKHSA (UK Health Security Agency) Signed-off-by: Jeremy Evans commit 0abd6a197bc8b434883b812cb02f6ae5a4498a5c Author: Pedro Amorim Date: Tue Feb 25 16:06:24 2025 +0000 Bug 39320: Add ERM specific dashboard widgets Sponsored-by: UKHSA (UK Health Security Agency) Signed-off-by: Jeremy Evans commit b2af1369d1eaacebd964312d50938b5e76cf7b78 Author: Pedro Amorim Date: Wed Feb 26 11:12:28 2025 +0000 Bug 39320: Preparation: ERM counts API endpoint Required for the follow-up ERMCounts widget Sponsored-by: UKHSA (UK Health Security Agency) Signed-off-by: Jeremy Evans commit 094e64290d6a620b6e773c0b5b1dc7e6da6686be Author: Pedro Amorim Date: Tue Oct 7 08:57:01 2025 +0000 Bug 39320: VueJS framework: Add option to have a component in dialog Sponsored-by: UKHSA (UK Health Security Agency) Signed-off-by: Jeremy Evans commit 547f97a01747cc2a8d8542107ed086237b2c9276 Author: Pedro Amorim Date: Tue Feb 25 16:07:42 2025 +0000 Bug 39320: Add new npm dependencies: vue-draggable-next vue-cookies Sponsored-by: UKHSA (UK Health Security Agency) Signed-off-by: Jeremy Evans commit 4d63b8bb360ffae06240ba0b23550dd312df8293 Author: Lucas Gass Date: Fri Oct 24 13:39:57 2025 +0000 Bug 30633: DBRev 25.06.00.026 Signed-off-by: Lucas Gass commit 860dc5b845b53918704212255a52ad81f03021ab Author: Jonathan Druart Date: Tue Oct 21 08:56:43 2025 +0200 Bug 30633: Remove force_visibility flag It's not available at the OPAC, and we actually don't need it: we don't save/restore DT's state. Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 4bcb11b69e6c052090cf45cce988615e0872c9a5 Author: Jonathan Druart Date: Fri Oct 17 14:59:04 2025 +0200 Bug 30633: Default to 'Current library' if item_level_itypes is off We cannot set the default value in the yaml file dynamically. This is not ideal but we are going to modify the default "Item type" if item-level_itypes is off. Signed-off-by: Michaela Sieber Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 3284a2f41f612e2528a9d18d570a0b54760bec46 Author: Jonathan Druart Date: Fri Oct 17 14:48:54 2025 +0200 Bug 30633: Default to 'Item type' Signed-off-by: Michaela Sieber Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit b09ac4bf9333d454740f8f85844de272b4abd322 Author: Jonathan Druart Date: Tue Oct 14 11:26:27 2025 +0200 Bug 30633: Remove OPACHoldingsDefaultSortField It's no longer needed Signed-off-by: Michaela Sieber Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 0c7e673b849c9cebe98ab775449f8cafbf227e8b Author: Jonathan Druart Date: Tue Oct 14 11:24:26 2025 +0200 Bug 30633: Add default_sort_order to table settings So we can pick a column from the table settings http://localhost:8081/cgi-bin/koha/admin/columns_settings.pl#biblio-detail%7Choldingst Signed-off-by: Michaela Sieber Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit 99f7388cb9781d1bf73d39fb9fe6e0c58e66ca8c Author: Jonathan Druart Date: Tue Oct 14 11:13:04 2025 +0200 Bug 30633: Hide columns when needed We can use the force_visibility flag to hide column when they are empty or should not be displayed because of syspref. Signed-off-by: Michaela Sieber Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit a6a6693adf402836b67c461cd40d06871e178d43 Author: Jonathan Druart Date: Tue Oct 14 10:33:04 2025 +0200 Bug 30633: Prepare the ground Make the OPAC holdings table ready to use visibility based on column's names. Signed-off-by: Michaela Sieber Signed-off-by: Martin Renvoize Signed-off-by: Lucas Gass commit f073262263c847dee6152569997a06fc72fdc48b Author: Jonathan Druart Date: Fri Oct 10 11:14:26 2025 +0200 Bug 40978: Remove warnings from Budgets.t If no shipment_budget is set then undef is set as key of the hashref which generates a warning: Use of uninitialized value $row[0] in hash element at /usr/lib/x86_64-linux-gnu/perl5/5.40/DBI.pm line 2122. Later we only access the hashref by budget_id, so this change seems safe. Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 17a07dcc2aaa4a08da1f906d39a8c876eca86a0a Author: Jonathan Druart Date: Thu Oct 23 10:00:35 2025 +0200 Bug 41079: Force visibility for columns depending on sysprefs If two sysprefs are disabled we must hide the two related columns. We should also force the visibility of the checkboxes: on the first screen (op=show/edition) they must be displayed, on the result screen (op=show_results) the must be hidden. Test plan: 1. Create a report to see some patrons: SELECT cardnumber FROM borrowers WHERE cardnumber LIKE '%2' 2. Run report and select 'Batch operations ...' 3. Batch patron modification => Notice that the table has the checkboxes in the first column => The table is sorted by cardnumber 4. Perform the modification => Notice that the result table does not have the checkboxes in the first column => The table is still sorted by cardnumber Additional tests: 1. If the logged in user is superlibrarian then the columns "Password expiration date" and "Protected" are displayed 2. Play with the table's settings and columns visibility to confirm that they are working correctly (they were not before this patch set) Signed-off-by: Nick Clemens Signed-off-by: Lucas Gass commit 034587d8ecc6d0cbdf404cd454c935c90f1dbc2f Author: Jonathan Druart Date: Thu Oct 23 09:45:11 2025 +0200 Bug 41079: Turn on bKohaColumnsUseNames for the batch patron modification results table A table cannot use the table settings if columns are displayed depending on sysprefs. Additionally DT's saveState does not work correctly if some columns are shown/hidden from one screen to another. We must add data-colname and turn bKohaColumnsUseNames on for this table. Also note that there were several discrepancies between the table structure and the number of columns in the yaml file. Signed-off-by: Nick Clemens Signed-off-by: Lucas Gass commit 73dac4c5cc16b754f5837bb114260ba0c03164dd Author: Jonathan Druart Date: Wed Oct 22 09:10:40 2025 +0200 Bug 41065: (bug 38714 follow-up) Show batch patron modification results Signed-off-by: Nick Clemens Signed-off-by: Lucas Gass commit ea123185b90da00faa7ddd3f26e8d5b3ae1db256 Author: Jonathan Druart Date: Wed Oct 22 08:55:04 2025 +0200 Bug 41065: (bug 26553 follow-up) Remove JS error when submitting the form Uncaught TypeError: patron_table.$ is not a function Signed-off-by: Nick Clemens Signed-off-by: Lucas Gass commit e057c02ca30c1e15498566fee9d048bc94946b22 Author: Jonathan Druart Date: Mon Sep 15 15:27:27 2025 +0200 Bug 40743: Fix description of inactive budget Without this patch it's always "{budget_description} (Inactive)" Signed-off-by: Aleisha Amohia Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit 1d2fc5133d70289123f8d2ba374242be7dc6005b Author: Laura Escamilla Date: Wed Sep 3 15:45:30 2025 +0000 Bug 40743: Make active funds visible again To test: 1. Create a basket and add an item to the order. Close the basket. 2. Receive shipment. Create an invoice. 3. Go to the invoice and then go to the receipt page. 4. Receive the item you had added to your basket. Under Fund you will only see “Keep current (your budget name)”. Active budgets are not visible. 5. Click on “Show inactive” — both inactive and active budgets become visible. 6. Apply the patch. Restart all. 7. Repeat step 3 and 4. Notice now that the active budgets are visible under your Fund dropdown. On this step you can create an inactive budget / fund if you don’t have one set already. Next click on “Show inactive” and notice that the active fund is active, and the inactive fund has a budget_description of inactive. 8. Test to make sure budgets stick. 9. Sign off and have a wonderful day! Signed-off-by: David Nind Signed-off-by: Aleisha Amohia Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit 05aa74e921cc81c25abae2c61c0bc3d6b0abfb71 Author: Martin Renvoize Date: Thu Oct 9 15:23:50 2025 +0100 Bug 39336: Public Biblio endpoint should honour OpacSuppression syspref This patch makes the Public Biblio endpoint respect the OpacSuppression system preference and the biblio.opac_suppressed field introduced in Bug 38330. When OpacSuppression is enabled and a biblio has opac_suppressed set to 1, the endpoint now returns a 404 (Not Found) response instead of exposing the bibliographic record. Test plan: 1. Apply patch 2. Run: prove t/db_dependent/api/v1/biblios.t 3. Verify all tests pass, including the new OpacSuppression subtest 4. Test manually: - Enable OpacSuppression syspref - Set a biblio's opac_suppressed field to 1 - Access /api/v1/public/biblios/{biblio_id} - Confirm it returns 404 - Set opac_suppressed to 0 - Confirm it returns 200 with the record - Disable OpacSuppression syspref - Confirm record is visible regardless of opac_suppressed value Signed-off-by: David Cook Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 301ec5dae2f99b6f1148dc289f8b4b64f5c3573e Author: Nick Clemens Date: Wed Oct 22 13:47:24 2025 +0000 Bug 41071: Fix missing space in cash register classes It seems we dropped a space somewhere so the class for default registers had become: "{Branchcode}default" instead of "{Branchcode} default" This broke the JS for selecting To test: 1 - Enable UseCashRegisters system preference 2 - Create three registers for three different branches 3 - Make each register the default 4 - Click on username in top right 5 - Select 'Set library and cash register' 6 - Choose on of the three branches 7 - Note the dropdown does not populate with the default 8 - Note no registers can be selected 9 - Apply patch 10 - Reload the page 11 - Change libraries and verify all works as expected Signed-off-by: Jonathan Druart Signed-off-by: Lucas Gass commit f689133aaf059fa1cf38c3e56bc37e2b4cea2783 Author: Nick Clemens Date: Wed Oct 22 18:00:33 2025 +0000 Bug 41074: Don't reverse previous_patrons arrary This patch alters the code to append instead of prepend, removing the need to reverse the list To test: 1 - Write a report to get some patron SELECT cardnumber,surname FROM borrowers WHERE cardnumber <>'' ORDER BY rand() LIMit 6 2 - Enabled 'showLastPatron' and set count to 3 http://localhost:8081/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=showLastPatron 3 - Copy the barcodes in order from the report and search for them in patron search, you'll want two tabs so you can keep report open 4 - Notice at 4th patron that list order has changed 5 - When 5th patron is loaded, the 4th is removed from the list 6 - Apply patch 7 - Clear the list 8 - Repeat the test plan, but note that list order does not change 9 - Confirm the patrons are removed from the list in expected order when adding new 10 - Change the count to 1 and search for several patrons, ensuring the last patron link is always correct Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 2d063d00d500b68f6fef0e44130ceab95de0faf6 Author: Pedro Amorim Date: Mon Oct 20 15:33:04 2025 +0000 Bug 41057: Return 404 if creating backend is not an OPAC backend Test plan, ktd: 1) Enable ILLModule 2) Install an additional backend plugin e.g. 'RapidILL': https://github.com/openfifth/koha-ill-rapidill/releases/tag/v2.2.5 3) Restart plack if you have to: $ koha-plack --restart kohadev 4) Edit the ILLOpacbackends system preference to just 'Standard'. 5) Now, attempt to create a request with the installed backend directly: /cgi-bin/koha/opac-illrequests.pl?op=add_form&backend=RapidILL 6) Notice the form is shown. It shouldn't be, as the only OPAC back is Standard. 7) Apply patch. Repeat. You get a 404. Signed-off-by: Nial Halford-Busby Signed-off-by: Marcel de Rooy Signed-off-by: Lucas Gass commit 9672351c412214e33449bcde677ef53d74c7ca3e Author: Marcel de Rooy Date: Fri Oct 24 08:27:23 2025 +0200 Bug 40017: (QA follow-up) Fix t/db/Breeding.t Although t/Breeding.t was adjusted, the t/db counterpart should have been adjusted too. The sort order was added, the subfield tag was moved. Test plan: Run test again. Signed-off-by: Lucas Gass commit ba544d166da3f4d7d06aae8cc2c580ddee11f878 Author: Nick Clemens Date: Thu Oct 23 18:55:18 2025 +0000 Bug 30568: (QA follow-up) Don't double filter content in wrapper Signed-off-by: Lucas Gass