diff --git a/Koha/SearchEngine/Elasticsearch/Search.pm b/Koha/SearchEngine/Elasticsearch/Search.pm index 37b57d9f8c..54e6e644dc 100644 --- a/Koha/SearchEngine/Elasticsearch/Search.pm +++ b/Koha/SearchEngine/Elasticsearch/Search.pm @@ -442,7 +442,7 @@ sub _convert_facets { return if !$es; - my %type_to_label = map { $_->name => { order => $_->facet_order, label => $_->label } } + my %type_to_label = map { $_->name => { order => $_->facet_order, av_cat => $_->authorised_value_category, label => $_->label } } Koha::SearchEngine::Elasticsearch->get_facet_fields; # We also have some special cases, e.g. itypes that need to show the @@ -471,7 +471,12 @@ sub _convert_facets { label => $type_to_label{$type}{label}, type_link_value => $type, order => $type_to_label{$type}{order}, + av_cat => $type_to_label{$type}{av_cat}, }; + my %authorised_values; + if ( $type_to_label{$type}{av_cat} ) { + %authorised_values = map {$_->{authorised_value} => $_->{lib}} @{C4::Koha::GetAuthorisedValues($type_to_label{$type}{av_cat}, $opac)}; + } $limit = @{ $data->{buckets} } if ( $limit > @{ $data->{buckets} } ); foreach my $term ( @{ $data->{buckets} }[ 0 .. $limit - 1 ] ) { my $t = $term->{key}; @@ -481,6 +486,9 @@ sub _convert_facets { if ( exists( $special{$type} ) ) { $label = $special{$type}->{$t} // $t; } + elsif ( $type_to_label{$type}{av_cat} ) { + $label = $authorised_values{$t}; + } else { $label = $t; } diff --git a/admin/searchengine/elasticsearch/mappings.pl b/admin/searchengine/elasticsearch/mappings.pl index 4311ddddb0..492be8621d 100755 --- a/admin/searchengine/elasticsearch/mappings.pl +++ b/admin/searchengine/elasticsearch/mappings.pl @@ -28,6 +28,7 @@ use Koha::SearchEngine::Elasticsearch::QueryBuilder; use Koha::SearchMarcMaps; use Koha::SearchFields; use Koha::Caches; +use Koha::AuthorisedValueCategories; use Try::Tiny qw( catch try ); use Module::Load::Conditional qw( can_load ); @@ -118,6 +119,7 @@ if ( $op eq 'cud-edit' ) { my $field_weight = $field_weight[$i]; my $field_staff_client = $field_staff_client[$i]; my $field_opac = $field_opac[$i]; + my $av_category = $input->param('facet_av_cat_' . $field_name); my $search_field = Koha::SearchFields->find_or_create( { @@ -139,6 +141,7 @@ if ( $op eq 'cud-edit' ) { my $facet_order = first { $faceted_field_names[$_] eq $field_name } 0 .. $#faceted_field_names; $search_field->facet_order( defined $facet_order ? $facet_order + 1 : undef ); + $search_field->authorised_value_category($av_category); $search_field->store; } @@ -297,12 +300,14 @@ while ( my $search_field = $search_fields->next ) { push @all_search_fields, $search_field_unblessed; } +my @authorised_value_categories = Koha::AuthorisedValueCategories->search->get_column('category_name'); push @messages, @errors; $template->param( indexes => \@indexes, all_search_fields => \@all_search_fields, facetable_fields => \@facetable_fields, messages => \@messages, + authorised_value_categories => \@authorised_value_categories, ); output_html_with_http_headers $input, $cookie, $template->output; diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc index 6bb127fa72..fa6c6def47 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc @@ -88,8 +88,7 @@ [% FOREACH facet IN facets_loo.facets %] [% IF facets_loo.type_label_CollectionCodes %] [% SET facet.facet_label_value = AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.ccode', authorised_value => facet.facet_label_value ) || facet.facet_label_value %] - [% END %] - [% IF facets_loo.type_label_Language %] + [% ELSIF facets_loo.type_label_Language %] [% SET facet.facet_label_value = Languages.GetByISOCode(lang,facet.facet_label_value) || facet.facet_label_value %] [% END %] [% IF loop.count > 5 && !facet.active %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt index 95a5c076ad..dae7502f73 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt @@ -1,5 +1,6 @@ [% USE raw %] [% USE Asset %] +[% USE AuthorisedValues %] [% SET footerjs = 1 %] [% PROCESS 'i18n.inc' %] [% INCLUDE 'doc-head-open.inc' %] @@ -498,6 +499,7 @@ a.add, a.delete { Order Search field Label + Authorized value category   @@ -524,6 +526,17 @@ a.add, a.delete { [% END %] + + + Delete @@ -541,6 +554,17 @@ a.add, a.delete { + + + Add diff --git a/koha-tmpl/intranet-tmpl/prog/js/elasticsearch-mappings.js b/koha-tmpl/intranet-tmpl/prog/js/elasticsearch-mappings.js index ad51115d68..63e05d978c 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/elasticsearch-mappings.js +++ b/koha-tmpl/intranet-tmpl/prog/js/elasticsearch-mappings.js @@ -177,7 +177,8 @@ $(document).ready(function () { if (search_field_name.length > 0) { const next_id = Math.max.apply(null, dt_data.map(row => row[0])) + 1; const label = selected_option.data('label'); - new_line = [next_id, search_field_name, '%s'.format(label.escapeHtml(), search_field_name.escapeHtml()), build_delete_link('delete-facet')] + const av_cat_select = $(clone_line(line).find('td')[2]).find('select').attr({name: 'facet_av_cat_%s'.format(search_field_name.escapeHtml())}); + new_line = [next_id, search_field_name, '%s'.format(label.escapeHtml(), search_field_name.escapeHtml()), av_cat_select[0].outerHTML, build_delete_link()] dt.row.add(new_line).draw(); clean_line(line);