Bugzilla – Attachment 188565 Details for
Bug 40504
ILL requests should have ability to assign staff to manage
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 40504: Preparation: Abstract 'managed by' functionality from suggestions
Bug-40504-Preparation-Abstract-managed-by-function.patch (text/plain), 17.59 KB, created by
Pedro Amorim
on 2025-10-29 16:22:16 UTC
(
hide
)
Description:
Bug 40504: Preparation: Abstract 'managed by' functionality from suggestions
Filename:
MIME Type:
Creator:
Pedro Amorim
Created:
2025-10-29 16:22:16 UTC
Size:
17.59 KB
patch
obsolete
>From 4d9c88e390b9281df51debc4dbfb478b57db408a Mon Sep 17 00:00:00 2001 >From: Pedro Amorim <pedro.amorim@openfifth.co.uk> >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 <Jeremy.Evans@ukhsa.gov.uk> >--- > .../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' %] >+ <li class="managedby"> >+ <span class="label managedby">Managed by:</span> >+ <a href="[% borrowerlink | url %]" title="View manager details"> [% manager.firstname _ " " _ manager.surname _ " [" _ manager.cardnumber _ "]" | html %] </a> >+ </li> >+ [% ELSIF display == 'table' %] >+ <tr> >+ <th>Managed by:</th> >+ <td>[% manageddate | $KohaDates %]</td> >+ <td> >+ [% IF ( manager.borrowernumber ) %] >+ <a href="[% borrowerlink | url %]">[% manager.surname | html %], [% manager.firstname | html %] ([% manager.cardnumber | html %])</a> >+ [% Branches.GetName( manager.branchcode ) | html %] ([% manager.category.description | html %]) >+ [% END %] >+ </td> >+ </tr> >+ [% ELSE %] >+ <!-- Fallback for unknown display --> >+ <p>Error: Unknown display "[% display | html %]".</p> >+ [% END %] >+[% END %] >+ >+[% BLOCK select_manager_form %] >+ <li> >+ <label for="managedby_name">by:</label> >+ <div> >+ <span id="managedby_name" name="managedby_name"> >+ [% IF required_permission %] >+ <a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% logged_in_user.borrowernumber | uri %]">You</a> >+ [% ELSE %] >+ Nobody >+ [% END %] >+ </span> >+ [% 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 %] >+ <br /> >+ <a href="#patron_search_modal_manager" id="edit_manager" data-bs-toggle="modal"><i class="fa fa-search"></i> Select manager</a> >+ [% IF manager.borrowernumber && logged_in_user.borrowernumber != manager.borrowernumber %] >+ <a id="restore_previous_manager" href="#"><i class="fa fa-trash-can"></i> Keep existing manager</a> >+ [% END %] >+ [% IF required_permission %] >+ <input type="hidden" name="managedby" id="managedby" value="[% logged_in_user.borrowernumber | html %]" /> >+ [% END %] >+ >+ <br /> >+ [% IF notify_option %] >+ <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." >+ /> >+ [% END %] >+ </div> >+ </li> >+[% 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 %] >+<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); >+ } >+ >+ var notify = $('#notify'); >+ if ( notify.length ) { >+ [% IF manager %] >+ if ( borrowernumber == [% logged_in_user.borrowernumber | html %] || borrowernumber == [% manager.borrowernumber | html %] ) { >+ [% ELSE %] >+ if ( borrowernumber == [% logged_in_user.borrowernumber | html %] ) { >+ [% END %] >+ $(notify).prop('checked', false).prop('disabled', true); >+ } else { >+ $(notify).prop('disabled', false); >+ } >+ } >+ } >+ >+ $("#restore_previous_manager").on("click",function(e){ >+ e.preventDefault(); >+ >+ $("#managedby_name").empty(); >+ $("#managedby").val(''); >+ var borrowername = "[% manager.firstname | html %] [% manager.surname | html %]"; >+ var managerlink = '<a href="/cgi-bin/koha/members/moremember.pl' >+ + '?borrowernumber=[% manager.borrowernumber | html %]">' >+ + borrowername + '</a>'; >+ $('#managedby_name').html(managerlink); >+ $('#managedby').val([% manager.borrowernumber | html %]); >+ $('#notify').prop('checked', false).prop('disabled', true); >+ }); >+</script> >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' %] > <title >@@ -257,18 +258,10 @@ > [% END %] > </td> > </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
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 40504
:
187906
|
187907
|
187908
|
187909
|
187910
|
187911
|
187912
|
187913
|
187914
|
187915
|
188365
|
188563
| 188565 |
188566
|
188567
|
188568
|
188569
|
188570
|
188571
|
188572
|
188573
|
188574
|
188624
|
188625
|
188935
|
188936