From 9908c02b157c961a30d771f423739d071a1910e3 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 28 Feb 2023 09:51:20 +0100 Subject: [PATCH] Bug 26967: Correctly format patron address in autocomplete We should use the JS function to format patron's address in the autocomplete result Test plan: Search for patron using the autocomplete feature, using the different values of addressformat. The address should be formatted correctly, like other places in Koha. You should also notice that the street number is now displayed. Signed-off-by: David Nind Signed-off-by: Katrin Fischer Signed-off-by: Tomas Cohen Arazi (cherry picked from commit dbd0117a494e516265a2598a8f6b60f896f57c79) Signed-off-by: Jacob O'Mara --- .../en/includes/js-patron-format-address.inc | 48 ++++++++++++------- .../prog/en/includes/js_includes.inc | 1 + .../prog/en/includes/patron-search.inc | 8 ++-- .../prog/js/patron-autocomplete.js | 5 +- 4 files changed, 37 insertions(+), 25 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/js-patron-format-address.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/js-patron-format-address.inc index f72d28371b..b561431c0a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/js-patron-format-address.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/js-patron-format-address.inc @@ -11,7 +11,7 @@ return map; }, {}); - function member_display_address_style_us(data, line_break) { + function member_display_address_style_us(data, line_break, include_li) { let address = ""; if ( data.address || data.address2 ) { if ( data.address ) { @@ -19,14 +19,19 @@ if ( data.street_type ) { roadtype_desc = roadtypes_map[data.street_type] ? roadtypes_map[data.street_type].street_type : data.street_type; } - address += '
  • ' + escape_str(data.street_number) + ' ' + escape_str(data.address) + ' ' + escape_str(roadtype_desc) + '
  • '; + address += include_li ? '
  • ' : ''; + address += escape_str(data.street_number) + ' ' + escape_str(data.address) + ' ' + escape_str(roadtype_desc); + address += include_li ? '
  • ' : ''; } } if ( data.address2 ) { - address += '
  • ' + escape_str(data.address2) + '
  • ' + address += include_li ? '
  • ' : ' '; + address += escape_str(data.address2); + address += include_li ? '
  • ' : ''; } if ( data.city || data.postal_code || data.state || data.country ) { - address += '
  • ' + escape_str(data.city); + address += include_li ? '
  • ' : ' '; + address += escape_str(data.city); if ( data.state ) { if ( data.city ) { address += ', '; @@ -42,13 +47,13 @@ } address += escape_str(data.country) } - address += '
  • ' + address += include_li ? '' : ''; } return address; } - function member_display_address_style_de(data, line_break) { + function member_display_address_style_de(data, line_break, include_li) { let address = ""; if ( data.address || data.address2 ) { if ( data.address ) { @@ -56,24 +61,28 @@ if ( data.street_type ) { roadtype_desc = roadtypes_map[data.street_type] ? roadtypes_map[data.street_type].street_type : data.street_type; } - address += '
  • ' + escape_str(data.address) + ' ' + escape_str(roadtype_desc) + escape_str(data.street_number) + '
  • '; + address += include_li ? '
  • ' : ' '; + address += escape_str(data.address) + ' ' + escape_str(roadtype_desc) + escape_str(data.street_number); + address += include_li ? '
  • ' : ''; } } if ( data.address2 ) { - address += '
  • ' + escape_str(data.address2) + '
  • ' + address += include_li ? '
  • ' : ' '; + address += escape_str(data.address2); + address += include_li ? '
  • ' : ''; } if ( data.city || data.postal_code || data.state || data.country ) { - address += '
  • '; + address += include_li ? '
  • ' : ' '; address += escape_str(data.postal_code) + ' ' + escape_str(data.city); address += data.state ? line_break + escape_str(data.state) : ''; address += data.country ? line_break + escape_str(data.country) : ''; - address += '
  • ' + address += include_li ? '' : ''; } return address; } - function member_display_address_style_fr(data, line_break) { + function member_display_address_style_fr(data, line_break, include_li) { let address = ""; if ( data.address || data.address2 ) { if ( data.address ) { @@ -81,18 +90,22 @@ if ( data.street_type ) { roadtype_desc = roadtypes_map[data.street_type] ? roadtypes_map[data.street_type].street_type : data.street_type; } - address += '
  • ' + escape_str(data.street_number) + ' ' + escape_str(roadtype_desc) + escape_str(data.address) + '
  • '; + address += include_li ? '
  • ' : ''; + address += escape_str(data.street_number) + ' ' + escape_str(roadtype_desc) + escape_str(data.address); + address += include_li ? '
  • ' : ''; } } if ( data.address2 ) { - address += '
  • ' + escape_str(data.address2) + '
  • ' + address += include_li ? '
  • ' : ' '; + address += escape_str(data.address2); + address += include_li ? '
  • ' : ''; } if ( data.city || data.postal_code || data.state || data.country ) { - address += '
  • '; + address += include_li ? '
  • ' : ' '; address += escape_str(data.postal_code) + ' ' + escape_str(data.city); address += data.state ? line_break + escape_str(data.state) : ''; address += data.country ? line_break + escape_str(data.country) : ''; - address += '
  • ' + address += include_li ? '' : ''; } return address; @@ -100,10 +113,11 @@ window.$format_address = function(data, options) { let line_break = options && options.no_line_break ? ' ' : '
    '; + let include_li = options && options.include_li; [%~ IF Koha.Preference( 'AddressFormat' ) ~%] - return member_display_address_style_[% Koha.Preference( 'AddressFormat' ) | html %](data, line_break); + return member_display_address_style_[% Koha.Preference( 'AddressFormat' ) | html %](data, line_break, include_li); [%~ ELSE ~%] - return member_display_address_style_us(data, line_break); + return member_display_address_style_us(data, line_break, include_li); [%~ END ~%] } 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 2d1af01c4f..a2ba59bf31 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc @@ -28,6 +28,7 @@ [% Asset.js("js/staff-global.js") | $raw %] [% INCLUDE 'js-date-format.inc' %] [% INCLUDE 'js-patron-get-age.inc' %] +[% INCLUDE 'js-patron-format-address.inc' %] [% Asset.js("js/patron-autocomplete.js") | $raw %] [% INCLUDE 'validator-strings.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 dbfcdfb475..6ae5ebb9e2 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc @@ -438,7 +438,7 @@ "orderable": true, "render": function( data, type, row, meta ) { let r = '
      '; - r += $format_address(row, { no_line_break: 1 }); + r += $format_address(row, { no_line_break: true, include_li: true }); r += '
    '; return r; } @@ -450,7 +450,7 @@ "orderable": true, "render": function( data, type, row, meta ) { let r = '
      '; - r += $format_address(row, { no_line_break: 1 }); + r += $format_address(row, { no_line_break: true, include_li: true }); r += '
    '; r += " " + escape_str(libraries_map[row.library_id].branchname); return r; @@ -471,7 +471,7 @@ [% END %] r += '
    '; r += '
      '; - r += $format_address(row, { no_line_break: 1 }); + r += $format_address(row, { no_line_break: true, include_li: true }); if ( row.email ) { r += "
    • " + _("Email: ") + "" + escape_str(row.email) + "
    • "; @@ -496,7 +496,7 @@ [% END %] r += '
      '; r += '
        '; - r += $format_address(row, { no_line_break: 1 }); + r += $format_address(row, { no_line_break: true, include_li: true }); if ( row.email ) { r += "
      • " + _("Email: ") + "" + escape_str(row.email) + "
      • "; diff --git a/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js b/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js index 49ff14f84b..cc8ec068ae 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js +++ b/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js @@ -106,10 +106,7 @@ function patron_autocomplete(node, options) { + ")," : "" ) + " " - + ( item.address ? item.address.escapeHtml() : "" ) + " " - + ( item.city ? item.city.escapeHtml() : "" ) + " " - + ( item.zipcode ? item.zipcode.escapeHtml() : "" ) + " " - + ( item.country ? item.country.escapeHtml() : "" ) + " " + + $format_address(item, { no_line_break: true, include_li: false }) + " " + ( !singleBranchMode ? "" -- 2.39.5