From 4d9c88e390b9281df51debc4dbfb478b57db408a Mon Sep 17 00:00:00 2001 From: Pedro Amorim Date: Wed, 15 Oct 2025 08:56:40 +0000 Subject: [PATCH] Bug 40504: Preparation: Abstract 'managed by' functionality from suggestions Move 'managed by' and 'restore previous manager' form and show functionality to reusable .inc files Signed-off-by: Jeremy Evans --- .../prog/en/includes/manageable-mixin.inc | 62 ++++++++ .../prog/en/includes/select_manager.inc | 67 +++++++++ .../prog/en/modules/suggestion/suggestion.tt | 135 +++--------------- 3 files changed, 152 insertions(+), 112 deletions(-) create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/manageable-mixin.inc create mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/select_manager.inc diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/manageable-mixin.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/manageable-mixin.inc new file mode 100644 index 00000000000..32cb47be83d --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/manageable-mixin.inc @@ -0,0 +1,62 @@ +[% BLOCK select_manager_show %] + [% borrowerlink = "/cgi-bin/koha/members/moremember.pl" _ "?borrowernumber=" _ manager.borrowernumber %] + [% IF display == 'fieldset' %] +
  • + Managed by: + [% manager.firstname _ " " _ manager.surname _ " [" _ manager.cardnumber _ "]" | html %] +
  • + [% ELSIF display == 'table' %] + + Managed by: + [% manageddate | $KohaDates %] + + [% IF ( manager.borrowernumber ) %] + [% manager.surname | html %], [% manager.firstname | html %] ([% manager.cardnumber | html %]) + [% Branches.GetName( manager.branchcode ) | html %] ([% manager.category.description | html %]) + [% END %] + + + [% ELSE %] + +

    Error: Unknown display "[% display | html %]".

    + [% END %] +[% END %] + +[% BLOCK select_manager_form %] +
  • + +
    + + [% IF required_permission %] + You + [% ELSE %] + Nobody + [% END %] + + [% IF manager.borrowernumber && logged_in_user.borrowernumber != manager.borrowernumber %] + | Previously was [% INCLUDE 'patron-title.inc' patron=manager hide_patron_infos_if_needed=1 %] [% Branches.GetName( manager.branchcode ) | html %] ([% manager.category.description | html %]) + [% END %] +
    + Select manager + [% IF manager.borrowernumber && logged_in_user.borrowernumber != manager.borrowernumber %] + Keep existing manager + [% END %] + [% IF required_permission %] + + [% END %] + +
    + [% IF notify_option %] + + + [% END %] +
    +
  • +[% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/select_manager.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/select_manager.inc new file mode 100644 index 00000000000..6a40a310a9b --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/select_manager.inc @@ -0,0 +1,67 @@ +[% PROCESS 'patron-search.inc' %] +[% IF add_modal %] + [% SET columns = ['cardnumber','name','category','branch','action'] %] + [% SET filter = filter %] + [% PROCESS patron_search_modal + columns => columns, + modal_title => t("Select manager"), + patron_search_modal_id => 'patron_search_modal_manager', + table_id => 'patron_search_modal_manager_table' + %] + [% PROCESS patron_search_js + columns => columns, + actions => ["select"], + preview_on_name_click => 1, + table_id => 'patron_search_modal_manager_table', + callback => 'select_manager' + %] +[% END %] + diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt index 3c287e1e26e..400397d8ecc 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt @@ -8,6 +8,7 @@ [% USE TablesSettings %] [% PROCESS 'i18n.inc' %] [% PROCESS 'patron-search.inc' %] +[% PROCESS 'manageable-mixin.inc' %] [% SET footerjs = 1 %] [% INCLUDE 'doc-head-open.inc' %] </tr> - <tr> - <th>Managed by:</th> - <td>[% manageddate | $KohaDates %]</td> - <td> - [% IF ( managedby_patron.borrowernumber ) %] - <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% managedby_patron.borrowernumber | uri %]" - >[% managedby_patron.surname | html %], [% managedby_patron.firstname | html %] ([% managedby_patron.cardnumber | html %])</a - > - [% Branches.GetName( managedby_patron.branchcode ) | html %] ([% managedby_patron.category.description | html %]) - [% END %] - </td> - </tr> + [% PROCESS select_manager_show + manager => managedby_patron + display => "table" + %] <tr> <th>Accepted on:</th> <td>[% accepteddate | $KohaDates %]</td> @@ -586,42 +579,11 @@ <label for="managedon">Managed on:</label> <input type="text" id="managedon" name="manageddate" class="flatpickr" size="10" maxlength="10" value="[% manageddate | html %]" />[% INCLUDE 'date-format.inc' %] </li> - <li> - <label for="managedby_name">by:</label> - <div> - <span id="managedby_name" name="managedby_name"> - [% IF CAN_user_suggestions_suggestions_manage %] - <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% logged_in_user.borrowernumber | uri %]">You</a> - [% ELSE %] - Nobody - [% END %] - </span> - [% IF managedby_patron.borrowernumber && logged_in_user.borrowernumber != managedby_patron.borrowernumber %] - | Previously was [% INCLUDE 'patron-title.inc' patron=managedby_patron hide_patron_infos_if_needed=1 %] [% Branches.GetName( managedby_patron.branchcode ) | html %] - ([% managedby_patron.category.description | html %]) - [% END %] - <br /> - <a href="#patron_search_modal_manager" id="edit_manager" data-bs-toggle="modal"><i class="fa fa-search"></i> Select manager</a> - [% IF managedby_patron.borrowernumber && logged_in_user.borrowernumber != managedby_patron.borrowernumber %] - <a id="restore_previous_manager" href="#"><i class="fa fa-trash-can"></i> Keep existing manager</a> - [% END %] - [% IF CAN_user_suggestions_suggestions_manage %] - <input type="hidden" name="managedby" id="managedby" value="[% logged_in_user.borrowernumber | html %]" /> - [% END %] - - <br /> - <label for="notify">Notify manager:</label> - <input - type="checkbox" - id="notify" - name="notify" - value="notify" - disabled="disabled" - title="A NOTIFY_MANAGER notice will be generated and send to the manager if a valid email address is defined. This can be checked if a new manager has been selected." - /> - </div> - <!-- /div --> - </li> + [% PROCESS select_manager_form + manager => managedby_patron + notify_option => 1 + required_permission => CAN_user_suggestions_suggestions_manage + %] </ol> </fieldset> @@ -1235,58 +1197,24 @@ [% MACRO jsinclude BLOCK %] [% INCLUDE 'calendar.inc' %] + [% INCLUDE 'select_manager.inc' + manager => managedby_patron + %] <script> - function select_manager(borrowernumber, borrower) { - let tab = $('#suggestiontabs .active table').data('tab-name'); - if ( tab ) { - var managedby_name = $("#managedby_name-"+tab); - var managedby = $("#managedby-"+tab); - } else { - var managedby_name = $("#managedby_name"); - var managedby = $("#managedby"); - } - managedby_name.empty(); - managedby.val(''); - var borrowername = borrower.firstname + ' ' + borrower.surname; - if (borrowernumber) { - var managerlink = '<a href="/cgi-bin/koha/members/moremember.pl' - + '?borrowernumber=' + borrowernumber + '">' - + borrowername + '</a>'; - managedby_name.html(managerlink); - managedby.val(borrowernumber); - } - - [% IF op == "save" %] - var notify = $('#notify'); - if ( notify.length ) { - [% IF managedby_patron %] - if ( borrowernumber == [% logged_in_user.borrowernumber | html %] || borrowernumber == [% managedby_patron.borrowernumber | html %] ) { - [% ELSE %] - if ( borrowernumber == [% logged_in_user.borrowernumber | html %] ) { - [% END %] - $(notify).prop('checked', false).prop('disabled', true); - } else { - $(notify).prop('disabled', false); - } - } - [% END %] - } - function select_suggester(borrowernumber, borrower) { $.ajax({ - type: 'GET', - url: '/api/v1/patrons/' + borrowernumber, + type: "GET", + url: "/api/v1/patrons/" + borrowernumber, headers: { - "x-koha-embed": "+strings" + "x-koha-embed": "+strings", }, success: function (data) { var suggested = '<input type="hidden" id="suggestedby" name="suggestedby" value="' + data.patron_id + '" />'; suggested += '<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=' + data.patron_id + '">'; - suggested += data.surname.escapeHtml() + ', ' + data.firstname.escapeHtml() + ' (' + data.cardnumber.escapeHtml() + ')'; - suggested += '</a> '; - suggested += data._strings.library_id.str.escapeHtml() + ' (' + data._strings.category_id.str.escapeHtml() + ')'; + suggested += data.surname.escapeHtml() + ", " + data.firstname.escapeHtml() + " (" + data.cardnumber.escapeHtml() + ")"; + suggested += "</a> "; + suggested += data._strings.library_id.str.escapeHtml() + " (" + data._strings.category_id.str.escapeHtml() + ")"; $("#tdsuggestedby").html(suggested); - }, error: function (data) { alert(_("Cannot retrieve info for this patron.")); @@ -1298,14 +1226,13 @@ //keep a copy of all budgets before removing the inactives var budgetId = $("#budgetid"); var disabledBudgetsCopy = budgetId.html(); - $('.b_inactive').remove(); + $(".b_inactive").remove(); - $('.showallfunds').click(function() { + $(".showallfunds").click(function () { if ($(this).is(":checked")) { budgetId.html(disabledBudgetsCopy); //Puts back all the funds - } - else { - $('.b_inactive').remove(); + } else { + $(".b_inactive").remove(); } }); </script> @@ -1660,22 +1587,6 @@ $(".select-reason").show().find("option[value='']").attr("selected","selected"); $("#other_reason").hide(); }); - - $("#restore_previous_manager").on("click",function(e){ - e.preventDefault(); - - $("#managedby_name").empty(); - $("#managedby").val(''); - var borrowername = "[% managedby_patron.firstname | html %] [% managedby_patron.surname | html %]"; - var managerlink = '<a href="/cgi-bin/koha/members/moremember.pl' - + '?borrowernumber=[% managedby_patron.borrowernumber | html %]">' - + borrowername + '</a>'; - $('#managedby_name').html(managerlink); - $('#managedby').val([% managedby_patron.borrowernumber | html %]); - $('#notify').prop('checked', false).prop('disabled', true); - }); - - }); </script> [% END %] -- 2.39.5