Bugzilla – Attachment 187476 Details for
Bug 40958
Move patron_to_html (from js-patron-format.inc) to a standalone JS file
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 40958: Move patron_to_html to a standalone JS file
Bug-40958-Move-patrontohtml-to-a-standalone-JS-fil.patch (text/plain), 18.01 KB, created by
Jonathan Druart
on 2025-10-06 13:48:08 UTC
(
hide
)
Description:
Bug 40958: Move patron_to_html to a standalone JS file
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2025-10-06 13:48:08 UTC
Size:
18.01 KB
patch
obsolete
>From f61c63779c280154c4d0fa0f1890f38f41cb794b Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Mon, 6 Oct 2025 15:45:50 +0200 >Subject: [PATCH] Bug 40958: Move patron_to_html to a standalone JS file > >It will be easier to reuse patron_to_html > >Test plan: >Search for patron and confirm that that patron are formatted correctly. >Global patron search and a couple of other places should be enough. >--- > .../prog/en/includes/js-patron-format.inc | 71 ---------------- > .../prog/en/includes/js_includes.inc | 1 + > .../prog/en/includes/patron-search.inc | 1 - > .../prog/en/modules/acqui/vendors.tt | 1 - > .../prog/en/modules/admin/aqbudgets.tt | 1 - > .../prog/en/modules/admin/record_sources.tt | 1 - > .../prog/en/modules/bookings/list.tt | 1 - > .../prog/en/modules/catalogue/detail.tt | 1 - > .../prog/en/modules/catalogue/moredetail.tt | 1 - > .../prog/en/modules/cataloguing/concerns.tt | 1 - > .../prog/en/modules/circ/curbside_pickups.tt | 1 - > .../prog/en/modules/circ/pendingbookings.tt | 1 - > .../intranet-tmpl/prog/en/modules/erm/erm.tt | 1 - > .../prog/en/modules/ill/ill-requests.tt | 1 - > .../prog/en/modules/members/ill-requests.tt | 1 - > .../prog/en/modules/members/readingrec.tt | 1 - > .../prog/en/modules/preservation/home.tt | 1 - > .../en/modules/tools/batch_modify_holds.tt | 1 - > .../intranet-tmpl/prog/js/patron-format.js | 81 +++++++++++++++++++ > 19 files changed, 82 insertions(+), 87 deletions(-) > delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/includes/js-patron-format.inc > create mode 100644 koha-tmpl/intranet-tmpl/prog/js/patron-format.js > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/js-patron-format.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/js-patron-format.inc >deleted file mode 100644 >index 682d109b46f..00000000000 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/js-patron-format.inc >+++ /dev/null >@@ -1,71 +0,0 @@ >- >-<script> >- (function () { >- /** >- * Format the patron response from a Koha RESTful API request. >- * @param {Object} patron The patron json object as returned from the Koha RESTful API >- * @param {Object} config A configuration object >- * Valid keys are: `invert_name`, `display_cardnumber` and `url` >- * @return {string} The formatted HTML string >- */ >- window.$patron_to_html = function (patron, config) { >- if (patron == null) { >- return ""; // empty string for no patron >- } >- >- var title = null; >- if (patron.title != null && patron.title != "") { >- title = '<span class="patron-title">' + escape_str(patron.title) + "</span>"; >- } >- >- var name; >- var firstname = escape_str(patron.firstname); >- var preferred_name = escape_str(patron.preferred_name); >- var surname = escape_str(patron.surname); >- >- if (patron.middle_name != null && patron.middle_name != "") { >- firstname += " " + escape_str(patron.middle_name); >- preferred_name += " " + escape_str(patron.middle_name); >- } >- >- if (patron.other_name != null && patron.other_name != "") { >- firstname += " (" + escape_str(patron.other_name) + ")"; >- preferred_name += " (" + escape_str(patron.other_name) + ")"; >- } >- if (config && config.invert_name) { >- name = surname + (preferred_name ? ", " + preferred_name : ""); >- } else { >- name = preferred_name + " " + surname; >- } >- if (name.replace(" ", "").length == 0) { >- if (patron.library) { >- return _("A patron from %s").format(patron.library.name); >- } else { >- return _("A patron from another library"); >- } >- } >- >- if (config && config.hide_patron_name) { >- name = ""; >- } >- >- if (config && config.display_cardnumber) { >- if (name.length > 0) { >- name = name + " (" + escape_str(patron.cardnumber) + ")"; >- } else { >- name = escape_str(patron.cardnumber); >- } >- } >- >- if (config && config.url) { >- if (config.url === "circulation_reserves") { >- name = '<a href="/cgi-bin/koha/circ/circulation.pl?borrowernumber=' + encodeURIComponent(patron.patron_id) + '#reserves">' + name + "</a>"; >- } else { >- name = '<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=' + encodeURIComponent(patron.patron_id) + '">' + name + "</a>"; >- } >- } >- >- return name; >- }; >- })(); >-</script> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc >index d968eb82864..75ca87955c3 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc >@@ -25,6 +25,7 @@ > [% Asset.js("lib/bootstrap/bootstrap.bundle.min.js") | $raw %] > [% Asset.js("lib/jquery/plugins/jquery.validate.min.js") | $raw %] > <!-- koha core js --> >+[% Asset.js("js/patron-format.js") | $raw %] > [% Asset.js("js/staff-global.js") | $raw %] > [% Asset.js("js/form-submit.js",{'type' => 'module'}) | $raw %] > [% INCLUDE 'js-date-format.inc' %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc >index a4f76e8e116..384cf72157a 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc >@@ -304,7 +304,6 @@ > </script> > [% INCLUDE 'datatables.inc' %] > [% INCLUDE 'js-patron-get-age.inc' %] >- [% INCLUDE 'js-patron-format.inc' %] > [% INCLUDE 'js-patron-format-address.inc' %] > <script> > { >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/vendors.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/vendors.tt >index 76af4f612ab..ef2d381c425 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/vendors.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/vendors.tt >@@ -26,7 +26,6 @@ > [% MACRO jsinclude BLOCK %] > [% INCLUDE 'calendar.inc' %] > [% INCLUDE 'datatables.inc' %] >- [% INCLUDE 'js-patron-format.inc' %] > [% INCLUDE 'js-date-format.inc' %] > [% INCLUDE 'format_price.inc' %] > <script> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgets.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgets.tt >index 995ee148811..181d8363d68 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgets.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgets.tt >@@ -528,7 +528,6 @@ > [% MACRO jsinclude BLOCK %] > [% Asset.js("js/acq.js") | $raw %] > [% IF op == 'add_form' %] >- [% INCLUDE 'js-patron-format.inc' %] > <script> > //<![CDATA[ > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/record_sources.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/record_sources.tt >index 11ecc9b17fc..5ff0b0a6e13 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/record_sources.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/record_sources.tt >@@ -27,7 +27,6 @@ > [% INCLUDE 'calendar.inc' %] > <!-- FIXME: this shouldn't be needed --> > [% INCLUDE 'datatables.inc' %] >- [% INCLUDE 'js-patron-format.inc' %] > [% INCLUDE 'js-date-format.inc' %] > > [% Asset.js("js/vue/dist/admin/record_sources.js") | $raw %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/bookings/list.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/bookings/list.tt >index 3a583d03bee..56b3da2954c 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/bookings/list.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/bookings/list.tt >@@ -53,7 +53,6 @@ > [% INCLUDE 'datatables.inc' %] > [% INCLUDE 'calendar.inc' %] > [% INCLUDE 'select2.inc' %] >- [% INCLUDE 'js-patron-format.inc' %] > [% INCLUDE 'js-date-format.inc' %] > [% Asset.js("lib/dayjs/plugin/isSameOrAfter.js") | $raw %] > [% Asset.js("lib/dayjs/plugin/isSameOrBefore.js") | $raw %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >index 2fd1d4cff86..061b5d39a11 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt >@@ -1718,7 +1718,6 @@ > <script> > dayjs.extend(window.dayjs_plugin_isSameOrBefore); > </script> >- [% INCLUDE 'js-patron-format.inc' %] > [% INCLUDE 'js-biblio-format.inc' %] > [% Asset.js("js/browser.js") | $raw %] > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt >index 93faa13bec9..16ec134a580 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt >@@ -585,7 +585,6 @@ > <script> > dayjs.extend(window.dayjs_plugin_isSameOrBefore); > </script> >- [% INCLUDE 'js-patron-format.inc' %] > [% Asset.js("js/catalog.js") | $raw %] > [% Asset.js("js/browser.js") | $raw %] > [% Asset.js("js/checkout_renewals_modal.js") | $raw %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/concerns.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/concerns.tt >index cad5cc9c141..f8df6be4c61 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/concerns.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/concerns.tt >@@ -62,7 +62,6 @@ > [% MACRO jsinclude BLOCK %] > [% INCLUDE 'datatables.inc' %] > [% INCLUDE 'js-date-format.inc' %] >- [% INCLUDE 'js-patron-format.inc' %] > [% INCLUDE 'js-biblio-format.inc' %] > <script> > $(document).ready(function() { >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/curbside_pickups.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/curbside_pickups.tt >index e6503096cc4..0787fedee21 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/curbside_pickups.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/curbside_pickups.tt >@@ -468,7 +468,6 @@ > dayjs.extend(window.dayjs_plugin_customParseFormat); > </script> > [% INCLUDE 'calendar.inc' %] >- [% INCLUDE 'js-patron-format.inc' %] > [% INCLUDE 'datatables.inc' %] > <script> > let pickups = [% To.json(curbside_pickups.unblessed) | $raw %]; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingbookings.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingbookings.tt >index 12373098013..88c9a63beeb 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingbookings.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingbookings.tt >@@ -115,7 +115,6 @@ > [% INCLUDE 'datatables.inc' %] > [% INCLUDE 'js-biblio-format.inc' %] > [% INCLUDE 'js-date-format.inc' %] >- [% INCLUDE 'js-patron-format.inc' %] > <script> > let table_settings = [% TablesSettings.GetTableSettings( 'circ', 'bookings', 'bookings-to-collect', 'json' ) | $raw %]; > $(document).ready(function() { >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/erm/erm.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/erm/erm.tt >index 8032e68a1da..85f48a27bb3 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/erm/erm.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/erm/erm.tt >@@ -26,7 +26,6 @@ > [% MACRO jsinclude BLOCK %] > [% INCLUDE 'calendar.inc' %] > [% INCLUDE 'datatables.inc' %] >- [% INCLUDE 'js-patron-format.inc' %] > [% INCLUDE 'js-date-format.inc' %] > <script> > const agreement_table_settings = [% TablesSettings.GetTableSettings( 'erm', 'agreements', 'agreements', 'json' ) | $raw %]; >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 6b82dae88df..f579fe8aec8 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 >@@ -1114,7 +1114,6 @@ > [% MACRO jsinclude BLOCK %] > [% INCLUDE 'datatables.inc' %] > [% INCLUDE 'js-biblio-format.inc' %] >- [% INCLUDE 'js-patron-format.inc' %] > [% INCLUDE 'calendar.inc' %] > [% INCLUDE 'select2.inc' %] > [% IF metadata_enrichment_services %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/ill-requests.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/ill-requests.tt >index a715295b5b7..7ed38a2ce9f 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/ill-requests.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/ill-requests.tt >@@ -50,7 +50,6 @@ > [% Asset.js("js/members-menu.js") | $raw %] > [% INCLUDE 'datatables.inc' %] > [% INCLUDE 'js-biblio-format.inc' %] >- [% INCLUDE 'js-patron-format.inc' %] > [% INCLUDE 'calendar.inc' %] > <script> > var prefilters = '[% prefilters | html %]'; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/readingrec.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/readingrec.tt >index 26c99e59f4b..746a13ceae1 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/readingrec.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/readingrec.tt >@@ -162,7 +162,6 @@ > [% INCLUDE 'datatables.inc' %] > [% INCLUDE 'modals/checkout_renewals.inc' %] > [% INCLUDE 'js-date-format.inc' %] >- [% INCLUDE 'js-patron-format.inc' %] > [% Asset.js("js/checkout_renewals_modal.js") | $raw %] > <script id="js"> > $(document).ready(function() { >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/preservation/home.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/preservation/home.tt >index 0b1c1bb1ae3..fffc41d5b12 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/preservation/home.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/preservation/home.tt >@@ -22,7 +22,6 @@ > [% MACRO jsinclude BLOCK %] > [% INCLUDE 'calendar.inc' %] > [% INCLUDE 'datatables.inc' %] >- [% INCLUDE 'js-patron-format.inc' %] > [% INCLUDE 'js-date-format.inc' %] > [% INCLUDE 'js-biblio-format.inc' %] > <script> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batch_modify_holds.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batch_modify_holds.tt >index 21953f3faeb..dbddd4b73f6 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batch_modify_holds.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batch_modify_holds.tt >@@ -254,7 +254,6 @@ > [% INCLUDE 'datatables.inc' %] > [% INCLUDE 'select2.inc' %] > [% INCLUDE 'js-biblio-format.inc' %] >- [% INCLUDE 'js-patron-format.inc' %] > [% Asset.js("lib/jquery/plugins/humanmsg.js") | $raw %] > <script> > let hide_patron_name = [% IF Koha.Preference('HidePatronName') %]true[% ELSE %]false[% END %]; >diff --git a/koha-tmpl/intranet-tmpl/prog/js/patron-format.js b/koha-tmpl/intranet-tmpl/prog/js/patron-format.js >new file mode 100644 >index 00000000000..30fd12826ca >--- /dev/null >+++ b/koha-tmpl/intranet-tmpl/prog/js/patron-format.js >@@ -0,0 +1,81 @@ >+(function () { >+ /** >+ * Format the patron response from a Koha RESTful API request. >+ * @param {Object} patron The patron json object as returned from the Koha RESTful API >+ * @param {Object} config A configuration object >+ * Valid keys are: `invert_name`, `display_cardnumber` and `url` >+ * @return {string} The formatted HTML string >+ */ >+ window.$patron_to_html = function (patron, config) { >+ if (patron == null) { >+ return ""; // empty string for no patron >+ } >+ >+ var title = null; >+ if (patron.title != null && patron.title != "") { >+ title = >+ '<span class="patron-title">' + >+ escape_str(patron.title) + >+ "</span>"; >+ } >+ >+ var name; >+ var firstname = escape_str(patron.firstname); >+ var preferred_name = escape_str(patron.preferred_name); >+ var surname = escape_str(patron.surname); >+ >+ if (patron.middle_name != null && patron.middle_name != "") { >+ firstname += " " + escape_str(patron.middle_name); >+ preferred_name += " " + escape_str(patron.middle_name); >+ } >+ >+ if (patron.other_name != null && patron.other_name != "") { >+ firstname += " (" + escape_str(patron.other_name) + ")"; >+ preferred_name += " (" + escape_str(patron.other_name) + ")"; >+ } >+ if (config && config.invert_name) { >+ name = surname + (preferred_name ? ", " + preferred_name : ""); >+ } else { >+ name = preferred_name + " " + surname; >+ } >+ if (name.replace(" ", "").length == 0) { >+ if (patron.library) { >+ return _("A patron from %s").format(patron.library.name); >+ } else { >+ return _("A patron from another library"); >+ } >+ } >+ >+ if (config && config.hide_patron_name) { >+ name = ""; >+ } >+ >+ if (config && config.display_cardnumber) { >+ if (name.length > 0) { >+ name = name + " (" + escape_str(patron.cardnumber) + ")"; >+ } else { >+ name = escape_str(patron.cardnumber); >+ } >+ } >+ >+ if (config && config.url) { >+ if (config.url === "circulation_reserves") { >+ name = >+ '<a href="/cgi-bin/koha/circ/circulation.pl?borrowernumber=' + >+ encodeURIComponent(patron.patron_id) + >+ '#reserves">' + >+ name + >+ "</a>"; >+ } else { >+ name = >+ '<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=' + >+ encodeURIComponent(patron.patron_id) + >+ '">' + >+ name + >+ "</a>"; >+ } >+ } >+ >+ return name; >+ }; >+})(); >-- >2.34.1
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 40958
:
187476
|
187533
|
187646