From 4d101a61ab800b3cb34c750570f9bba81d56def4 Mon Sep 17 00:00:00 2001 From: Lari Taskula Date: Thu, 3 Mar 2022 02:18:58 +0000 Subject: [PATCH] Bug 30200: Add custom tabs to View ILL requests page To test: 0: yarn css:build:prod 1. Set system preference ILLRequestsTabs: - name: New status: - NEW - name: Requested or reverted status: - REQ - REQREV - name: Queued status: - QUEUED - name: Empty status: - NONEXISTENT 2. Add some ILL requests with the following SQL: INSERT INTO `illrequests` (borrowernumber, branchcode, status, backend) VALUES (1, 'CPL', 'NEW', 'Standard'); INSERT INTO `illrequests` (borrowernumber, branchcode, status, backend) VALUES (1, 'CPL', 'NEW', 'Standard'); INSERT INTO `illrequests` (borrowernumber, branchcode, status, backend) VALUES (1, 'CPL', 'REQ', 'Standard'); INSERT INTO `illrequests` (borrowernumber, branchcode, status, backend) VALUES (1, 'CPL', 'REQREV', 'Standard'); INSERT INTO `illrequests` (borrowernumber, branchcode, status, backend) VALUES (1, 'CPL', 'QUEUED', 'Standard'); INSERT INTO `illrequests` (borrowernumber, branchcode, status, backend) VALUES (1, 'CPL', 'KILL', 'Standard'); 3. Go to cgi-bin/koha/ill/ill-requests.pl 4. After the page loads, you should now see 4 different tabs: "All", "New", "REQs", "Queued", and "Empty" 5. Confirm all ILL requests are present under "All" tab 6. Confirm only ILL requests with the statuses you defined in system preference ILLRequestsTabs are under tabs "New", "Requested or reverted" and "Queued" 7. Confirm no ILL requests are under tab Empty 8. Clear system preference ILLRequestsTabs 9. Observe only one tab "All" under which correct ILL requests are presented 10. Try some other status values in ILLRequestsTabs and observe expected behavior --- .gitignore | 2 ++ ill/ill-requests.pl | 1 + .../prog/css/src/ill-requests.scss | 16 ++++++++++ .../prog/en/includes/ill-filter.inc | 2 +- .../en/includes/ill-list-table-strings.inc | 1 - .../prog/en/modules/ill/ill-requests.tt | 15 +++++++++ .../intranet-tmpl/prog/js/ill-list-table.js | 32 ++++++++++++++++--- 7 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 koha-tmpl/intranet-tmpl/prog/css/src/ill-requests.scss diff --git a/.gitignore b/.gitignore index e70d5ac8841..a316adf1e55 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,8 @@ koha-tmpl/intranet-tmpl/prog/css/calendar.css koha-tmpl/intranet-tmpl/prog/css/calendar-rtl.css koha-tmpl/intranet-tmpl/prog/css/holds.css koha-tmpl/intranet-tmpl/prog/css/holds-rtl.css +koha-tmpl/intranet-tmpl/prog/css/ill-requests.css +koha-tmpl/intranet-tmpl/prog/css/ill-requests-rtl.css koha-tmpl/intranet-tmpl/prog/css/installer.css koha-tmpl/intranet-tmpl/prog/css/installer-rtl.css koha-tmpl/intranet-tmpl/prog/css/mainpage.css diff --git a/ill/ill-requests.pl b/ill/ill-requests.pl index 761d877ef6b..675239acecb 100755 --- a/ill/ill-requests.pl +++ b/ill/ill-requests.pl @@ -477,6 +477,7 @@ $template->param( types => [ "Book", "Article", "Journal" ], op => $op, branches => Koha::Libraries->search, + illreq_tabs => C4::Context->yaml_preference('ILLRequestsTabs'), ); output_html_with_http_headers( $cgi, $cookie, $template->output ); diff --git a/koha-tmpl/intranet-tmpl/prog/css/src/ill-requests.scss b/koha-tmpl/intranet-tmpl/prog/css/src/ill-requests.scss new file mode 100644 index 00000000000..1433a16583f --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/css/src/ill-requests.scss @@ -0,0 +1,16 @@ +form#illfilter_form div.ms-parent button.ms-choice span.placeholder { + background-color: transparent; + cursor: default; +} + +form#illfilter_form div.ms-parent button.ms-choice { + height: calc(1.5em + .75rem + 2px); +} + +form#illfilter_form div.ms-parent div.ms-drop input[type="checkbox"] { + margin-left: -1.25rem +} + +form#illfilter_form div.ms-parent div.ms-drop ul > li { + padding: .25rem 8px; +} \ No newline at end of file diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/ill-filter.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/ill-filter.inc index 4d3a2e0ca8d..8c4e48530aa 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/ill-filter.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/ill-filter.inc @@ -19,7 +19,7 @@
  • - +
  • diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/ill-list-table-strings.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/ill-list-table-strings.inc index f0b0d8194e1..7a7989b3311 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/ill-list-table-strings.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/ill-list-table-strings.inc @@ -3,7 +3,6 @@ var ill_borrower_details = _("View patron details"); var ill_manage = _("Manage request"); var ill_manage_select_backend_first = _("Select a backend first"); - var ill_all_statuses = _("All statuses"); var ill_all_status_aliases = _("All status aliases"); var ill_no_status_alias = _("No status alias"); var ill_status_aliases = _("Status aliases"); diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/ill/ill-requests.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/ill/ill-requests.tt index f78c53d363f..37227c5274e 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/ill/ill-requests.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/ill/ill-requests.tt @@ -16,6 +16,8 @@ [% END %] [% INCLUDE 'doc-head-close.inc' %] +[% Asset.css("css/ill-requests.css") | $raw %] +[% Asset.css("lib/jquery/plugins/multiple-select/multiple-select.min.css") | $raw %] @@ -766,6 +768,18 @@ [% END %]
    + [% WRAPPER tabs id= "ill-list-tabs" %] + [% WRAPPER tabs_nav %] + [% WRAPPER tab_item tabname= "ill-list-tab-all" bt_active= 1 %] + All + [% END %] + [% FOREACH illreq_tab IN illreq_tabs %] + [% WRAPPER tab_item tabname= "ill-list-tab-${loop.index}" %] + [% illreq_tab.name | html %] + [% END %] + [% END %] + [% END # /WRAPPER tabs_nav %] + [% END %]

    Details for all requests

    [% INCLUDE 'ill-list-table.inc' %]
    @@ -928,6 +942,7 @@ [% IF op == 'generic_confirm' && Koha.Preference('ILLCheckAvailability') %] [% Asset.js("js/ill-availability-partner.js") | $raw %] [% END %] + [% Asset.js("lib/jquery/plugins/multiple-select/multiple-select.min.js") | $raw %] [% END %] [% TRY %] diff --git a/koha-tmpl/intranet-tmpl/prog/js/ill-list-table.js b/koha-tmpl/intranet-tmpl/prog/js/ill-list-table.js index 0fc313a2213..d7e5abd8354 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/ill-list-table.js +++ b/koha-tmpl/intranet-tmpl/prog/js/ill-list-table.js @@ -17,6 +17,26 @@ $(document).ready(function () { $("#addcomment").toggleClass("content_hidden"); }); + $("div#ill-list-tabs a[id^='ill-list-tab'").on("click", function (e) { + e.preventDefault(); + var select_status_el = $("form#illfilter_form select#illfilter_status"); + var tab_statuses = $(this).children('span').attr("data-statuses"); + if (tab_statuses) { + tab_statuses.split('|').forEach((select_status_option) => { + if ($("#illfilter_status option[value='"+select_status_option+"']").length === 0) { + select_status_el.append($('" - ); statuses .sort((a, b) => a.str.localeCompare(b.str)) .forEach(function (status) { @@ -554,6 +571,13 @@ $(document).ready(function () { "" ); }); + $("select#illfilter_status").multipleSelect( { + placeholder: _("Please select ..."), + selectAllText: _("Select all"), + allSelected: _("All selected"), + countSelected: _("# of % selected"), + noMatchesFound: _("No matches found"), + } ); } function addStatusAliasOptions(status_aliases) { -- 2.34.1