@@ -, +, @@
field characters 35-37 or UNIMARC 101a)
---
C4/Languages.pm | 14 ++++++++++++++
Koha/SearchEngine/Elasticsearch.pm | 3 +--
Koha/SearchEngine/Elasticsearch/QueryBuilder.pm | 1 +
Koha/SearchEngine/Elasticsearch/Search.pm | 1 +
admin/searchengine/elasticsearch/mappings.yaml | 7 ++++---
koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc | 5 ++++-
.../modules/admin/searchengine/elasticsearch/mappings.tt | 1 +
koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-facets.inc | 5 ++++-
t/db_dependent/Languages.t | 8 +++++++-
9 files changed, 37 insertions(+), 8 deletions(-)
--- a/C4/Languages.pm
+++ a/C4/Languages.pm
@@ -612,6 +612,20 @@ sub getlanguage {
return $language;
}
+=head2 get_rfc4646_from_iso639
+
+ Select a language rfc4646 code given an iso639 code
+
+=cut
+
+sub get_rfc4646_from_iso639 {
+
+ my $iso_code = shift;
+ my $rfc_subtag = Koha::Database->new()->schema->resultset('LanguageRfc4646ToIso639')->find({iso639_2_code=>$iso_code})->rfc4646_subtag;
+ return $rfc_subtag;
+
+}
+
1;
__END__
--- a/Koha/SearchEngine/Elasticsearch.pm
+++ a/Koha/SearchEngine/Elasticsearch.pm
@@ -486,7 +486,6 @@ sub process_error {
return "Unable to perform your search. Please try again.\n";
}
-<<<<<<< HEAD
=head2 _read_configuration
my $conf = _read_configuration();
@@ -550,7 +549,7 @@ sub get_facetable_fields {
# These should correspond to the ES field names, as opposed to the CCL
# things that zebra uses.
- my @search_field_names = qw( author itype location su-geo se subject ccode holdingbranch homebranch );
+ my @search_field_names = qw( author itype location su-geo se subject ccode holdingbranch homebranch ln);
my @faceted_fields = Koha::SearchFields->search(
{ name => { -in => \@search_field_names }, facet_order => { '!=' => undef } }, { order_by => ['facet_order'] }
);
--- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm
+++ a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm
@@ -119,6 +119,7 @@ sub build_query {
'su-geo' => { terms => { field => "su-geo__facet" } },
se => { terms => { field => "se__facet" } },
ccode => { terms => { field => "ccode__facet" } },
+ ln => { terms => { field => "ln__facet" } },
};
my $display_library_facets = C4::Context->preference('DisplayLibraryFacets');
--- a/Koha/SearchEngine/Elasticsearch/Search.pm
+++ a/Koha/SearchEngine/Elasticsearch/Search.pm
@@ -434,6 +434,7 @@ sub _convert_facets {
ccode => 'CollectionCodes',
holdingbranch => 'HoldingLibrary',
homebranch => 'HomeLibrary',
+ ln => 'Language',
);
my @facetable_fields =
Koha::SearchEngine::Elasticsearch->get_facetable_fields;
--- a/admin/searchengine/elasticsearch/mappings.yaml
+++ a/admin/searchengine/elasticsearch/mappings.yaml
@@ -1720,22 +1720,23 @@ biblios:
ln:
label: ln
mappings:
- - facet: ''
+ - facet: '1'
marc_field: 008_/35-37
marc_type: marc21
sort: ~
suggestible: ''
- - facet: ''
+ - facet: '1'
marc_field: 008_/35-37
marc_type: normarc
sort: ~
suggestible: ''
- - facet: ''
+ - facet: '1'
marc_field: 101a
marc_type: unimarc
sort: ~
suggestible: ''
type: ''
+ facet_order: 10
local-classification:
label: local-classification
mappings:
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc
+++ a/koha-tmpl/intranet-tmpl/prog/en/includes/facets.inc
@@ -1,4 +1,5 @@
[% USE AuthorisedValues %]
+[% USE Languages %]
[% IF ( opacfacets ) %]
[% IF ( facets_loop ) %]
@@ -21,7 +22,8 @@
[% IF ( facets_loo.type_label_HomeLibrary ) %]
Home libraries[% END %]
[% IF ( facets_loo.type_label_HoldingLibrary ) %]
Holding libraries[% END %]
[% IF facets_loo.type_label_Location %]
Locations[% END %]
-[% IF facets_loo.type_label_CollectionCodes %]
Collections[% END %]
+[% IF facets_loo.type_label_CollectionCodes %]
Collections[% END %]
+[% IF facets_loo.type_label_Language %]
Languages[% END %]
[% SET url = "/cgi-bin/koha/catalogue/search.pl?" _ query_cgi _ limit_cgi %]
[% IF ( sort_by ) %]
@@ -29,6 +31,7 @@
[% END %]
[% FOREACH facet IN facets_loo.facets %]
[% IF facets_loo.type_label_CollectionCodes %][% SET facet.facet_label_value = AuthorisedValues.GetByCode('CCODE',facet.facet_label_value,0) || facet.facet_label_value %][% END %]
+ [% IF facets_loo.type_label_Language %][% SET facet.facet_label_value = Languages.GetByISOCode(lang,facet.facet_label_value) || facet.facet_label_value %][% END %]
-
[% IF facet.active %]
[% SET local_url = url _ "&nolimit=" _ facet.type_link_value _ ":" _ facet.facet_link_value %]
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt
@@ -320,6 +320,7 @@ a.add, a.delete {
[% CASE 'ccode' %]Collections
[% CASE 'holdingbranch' %]Holding libraries
[% CASE 'homebranch' %]Home libraries
+ [% CASE 'ln' %]Language
[% CASE %][% f %]
[% END %]
--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-facets.inc
+++ a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-facets.inc
@@ -1,4 +1,5 @@
[% USE AuthorisedValues %]
+[% USE Languages %]
[% IF ( opacfacets && facets_loop && total ) %]
@@ -25,7 +26,8 @@
[% IF facets_loo.type_label_Places %]Places
[% END %]
[% IF facets_loo.type_label_Series %]Series
[% END %]
[% IF facets_loo.type_label_ItemTypes %]Item types
[% END %]
- [% IF facets_loo.type_label_CollectionCodes %]Collections
[% END %]
+ [% IF facets_loo.type_label_CollectionCodes %]Collections
[% END %]
+ [% IF facets_loo.type_label_Language %]Languages
[% END %]
[% UNLESS singleBranchMode %]
[% IF ( facets_loo.type_label_HomeLibrary ) %]Home libraries[% END %]
[% IF ( facets_loo.type_label_HoldingLibrary ) %]Holding libraries[% END %]
@@ -38,6 +40,7 @@
[% END %]
[% FOREACH facet IN facets_loo.facets %]
[% IF facets_loo.type_label_CollectionCodes %][% SET facet.facet_label_value = AuthorisedValues.GetByCode('CCODE',facet.facet_label_value,1) || facet.facet_label_value %][% END %]
+ [% IF facets_loo.type_label_Language %][% SET facet.facet_label_value = Languages.GetByISOCode(lang,facet.facet_label_value) || facet.facet_label_value %][% END %]
-
[% IF facet.active %]
[% SET local_url = url _ "&nolimit=" _ facet.type_link_value _ ":" _ facet.facet_link_value %]
--- a/t/db_dependent/Languages.t
+++ a/t/db_dependent/Languages.t
@@ -6,7 +6,7 @@
use strict;
use warnings;
-use Test::More tests => 17;
+use Test::More tests => 18;
use List::Util qw(first);
use Data::Dumper;
use Test::Warn;
@@ -95,4 +95,10 @@ my $LangRfc4646 = $sth->fetchall_arrayref({});
is(scalar(@$LangRfc4646),scalar(@$DistinctLangRfc4646),"No unexpected language_rfc4646_to_iso639 duplicates.");
+my $i = 0;
+foreach my $pair (@$DistinctLangRfc4646){
+ $i++ if $pair->{rfc4646_subtag} eq C4::Languages::get_rfc4646_from_iso639( $pair->{iso639_2_code} );
+}
+is($i,scalar(@$DistinctLangRfc4646),"get_rfc4646_from_iso639 returns correct rfc for all iso values.");
+
$dbh->rollback;
--