From b67bfedb66fc962c7ff1e9956bf08d6ccc576c3a 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", "Requested or reverted", "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 Signed-off-by: Magnus Enger Signed-off-by: Martin Renvoize --- .gitignore | 2 ++ ill/ill-requests.pl | 9 +++--- .../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, 67 insertions(+), 10 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 02af20935d7..0db9c09b1eb 100755 --- a/ill/ill-requests.pl +++ b/ill/ill-requests.pl @@ -503,10 +503,11 @@ if ($backends_available) { } $template->param( - backends => $backends, - types => [ "Book", "Article", "Journal" ], - op => $op, - branches => Koha::Libraries->search, + backends => $backends, + 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 cb6aff2067f..26ba077ed94 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 %] @@ -835,6 +837,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' %]
    @@ -1132,6 +1146,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 5bb38ed9e70..798e656b4dd 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) { @@ -558,6 +575,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.49.0