Bugzilla – Attachment 39309 Details for
Bug 12017
Move language description out of database
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 12017 - 6 - Change syspref AdvancedSearchLanguages
Bug-12017---6---Change-syspref-AdvancedSearchLangu.patch (text/plain), 13.76 KB, created by
Bernardo Gonzalez Kriegel
on 2015-05-19 18:10:58 UTC
(
hide
)
Description:
Bug 12017 - 6 - Change syspref AdvancedSearchLanguages
Filename:
MIME Type:
Creator:
Bernardo Gonzalez Kriegel
Created:
2015-05-19 18:10:58 UTC
Size:
13.76 KB
patch
obsolete
>From 8f6b0de4b5f330db5a88f2de3fe5f99ed38b6db4 Mon Sep 17 00:00:00 2001 >From: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com> >Date: Sat, 26 Apr 2014 08:12:00 -0300 >Subject: [PATCH] Bug 12017 - 6 - Change syspref AdvancedSearchLanguages > >Bug 10986 introduces a way of limiting advanced search >languages list. It's a good feature, but to fill the >preference you need to list iso639_2 codes. And there >is no way to get the list of all codes again as >before, and language descriptions are taken from database. > >This patch changes that preference so it's now >a Local syspref, to present an interface to set >it's value. Also adds another syspref to control >if language chooser is limited at all, recovering >previous behavior. > >As per comments on Bug 10986 language list shows >translated and native names and is ordered by >iso639_2 code > >To test: >1. Apply the patch >2. Run updatedatabase.pl >3. Go to system preferences, Searching, new syspref >LimitAdvancedSearchLanguages, on by default >4. Go to Local use sysprefs, AdvancedSearchLanguages >is now here with interface to set it's values >5. Check language limit on advanced search on >staff and opac (any theme) >6. Disable limit and chech language list >7. Enable limit and set different languages >on syspref, check language list >--- > C4/Languages.pm | 39 +++++++++++++++++++- > catalogue/search.pl | 4 +- > ...017-add-syspres-LimitAdvancedSearchLanguage.sql | 25 +++++++++++++ > installer/data/mysql/sysprefs.sql | 3 +- > .../en/modules/admin/preferences/searching.pref | 10 ++--- > .../prog/en/modules/catalogue/advsearch.tt | 6 +-- > .../bootstrap/en/modules/opac-advsearch.tt | 6 +-- > opac/opac-search.pl | 4 +- > 8 files changed, 80 insertions(+), 17 deletions(-) > create mode 100644 installer/data/mysql/atomicupdate/bug-12017-add-syspres-LimitAdvancedSearchLanguage.sql > >diff --git a/C4/Languages.pm b/C4/Languages.pm >index c0fe108..c0a2c34 100644 >--- a/C4/Languages.pm >+++ b/C4/Languages.pm >@@ -49,7 +49,7 @@ BEGIN { > &getLanguages > &getAllLanguages > ); >- @EXPORT_OK = qw(getLanguages_iso getFrameworkLanguages getTranslatedLanguages getAllLanguages getLanguages get_bidi regex_lang_subtags language_get_description accept_language getlanguage); >+ @EXPORT_OK = qw(getSearchLanguages getLanguages_iso getFrameworkLanguages getTranslatedLanguages getAllLanguages getLanguages get_bidi regex_lang_subtags language_get_description accept_language getlanguage); > $DEBUG = 0; > } > >@@ -106,6 +106,43 @@ sub getFrameworkLanguages { > return \@languages; > } > >+=head2 getSearchLanguages >+ >+Get selection of languages codes and iso639_2. >+Use sysprefs LimitAdvancedSearchLanguages and AdvancedSearchLanguages, >+default to english. >+ >+Returns a reference to an array of hashes: >+ >+ my $languages = getSearchLanguages(); >+ for my $language( @$languages ) { >+ print "$language->{rfc4646_subtag}\n"; # language code in rfc4646 >+ print "$language->{iso638_2_code}\n"; # language code in iso 639-2 >+ } >+ >+=cut >+ >+sub getSearchLanguages { >+ my $isFiltered = C4::Context->preference("LimitAdvancedSearchLanguages");; >+ my $language_list = C4::Context->preference("AdvancedSearchLanguages"); >+ $language_list = 'eng' unless $language_list; >+ my @languages = split ( /\,/, $language_list ); >+ my $langs = getLangCodes(); >+ my @result; >+ my %enabled; >+ $enabled{$_}++ for ( @languages ); >+ >+ for my $code ( keys %$langs ) { >+ if (( $isFiltered and $enabled{ $langs->{ $code } } ) or ( not $isFiltered )) { >+ push @result, { >+ rfc4646_subtag => $code, >+ iso639_2_code => $langs->{$code}, >+ } >+ } >+ } >+ return \@result; >+} >+ > =head2 getLanguages_iso > > Get all languages codes and iso639_2 selected by iso639_2 >diff --git a/catalogue/search.pl b/catalogue/search.pl >index 4d165ac..03c285d 100755 >--- a/catalogue/search.pl >+++ b/catalogue/search.pl >@@ -144,7 +144,7 @@ use C4::Context; > use C4::Output; > use C4::Auth qw(:DEFAULT get_session); > use C4::Search; >-use C4::Languages qw(getLanguages); >+use C4::Languages qw(getSearchLanguages); > use C4::Koha; > use C4::Members qw(GetMember); > use C4::VirtualShelves; >@@ -346,7 +346,7 @@ if ( $template_type eq 'advsearch' ) { > search_boxes_loop => \@search_boxes_array); > > # load the language limits (for search) >- my $languages_limit_loop = getLanguages($lang, 1); >+ my $languages_limit_loop = getSearchLanguages(); > $template->param(search_languages_loop => $languages_limit_loop,); > > # Expanded search options in advanced search: >diff --git a/installer/data/mysql/atomicupdate/bug-12017-add-syspres-LimitAdvancedSearchLanguage.sql b/installer/data/mysql/atomicupdate/bug-12017-add-syspres-LimitAdvancedSearchLanguage.sql >new file mode 100644 >index 0000000..e59a8b6 >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug-12017-add-syspres-LimitAdvancedSearchLanguage.sql >@@ -0,0 +1,25 @@ >+ >+INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) >+VALUES('LimitAdvancedSearchLanguages',1,'If ON, limit language list on advanced search languages.','','YesNo'); >+ >+UPDATE systempreferences SET >+type = 'Languages', >+explanation = 'ISO 639-2 codes of languages you wish to see appear as an advanced search option' >+WHERE variable = 'AdvancedSearchLanguages'; >+ >+-- $DBversion = "3.21.00.XXX"; >+-- if ( CheckVersion($DBversion) ) { >+-- $dbh->do(q{ >+-- INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) >+-- VALUES('LimitAdvancedSearchLanguages',1,'If ON, limit language list on advanced search languages.','','YesNo') >+-- }); >+-- $dbh->do(q{ >+-- UPDATE systempreferences SET type = 'Languages', >+-- explanation = 'ISO 639-2 codes of languages you wish to see appear as an advanced search option' >+-- WHERE variable = 'AdvancedSearchLanguages' >+-- }); >+-- >+-- print "Upgrade to $DBversion done (Bug 12017 - Add system preferecence LimitAdvancedSearchLanguages)\n"; >+-- SetVersion($DBversion); >+-- } >+ >diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql >index f371193..eb83bbd 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -8,7 +8,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` > ('AcqWarnOnDuplicateInvoice','0','','Warn librarians when they try to create a duplicate invoice','YesNo'), > ('AddressFormat','us','','Choose format to display postal addresses', 'Choice'), > ('advancedMARCeditor','0','','If ON, the MARC editor won\'t display field/subfield descriptions','YesNo'), >-('AdvancedSearchLanguages','','','ISO 639-2 codes of languages you wish to see appear as an Advanced search option. Example: eng|fre|ita','Textarea'), >+('AdvancedSearchLanguages','','','ISO 639-2 codes of languages you wish to see appear as an advanced search option','Language'), > ('AdvancedSearchTypes','itemtypes','itemtypes|ccode','Select which set of fields comprise the Type limit in the advanced search','Choice'), > ('AgeRestrictionMarker','',NULL,'Markers for age restriction indication, e.g. FSK|PEGI|Age|','free'), > ('AgeRestrictionOverride','0',NULL,'Allow staff to check out an item with age restriction.','YesNo'), >@@ -190,6 +190,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` > ('LibraryThingForLibrariesEnabled','0','','Enable or Disable Library Thing for Libraries Features','YesNo'), > ('LibraryThingForLibrariesID','','','See:http://librarything.com/forlibraries/','free'), > ('LibraryThingForLibrariesTabbedView','0','','Put LibraryThingForLibraries Content in Tabs.','YesNo'), >+('LimitAdvancedSearchLanguages','1','','If ON, limit language list on advanced search languages. To set language list configure AdvancedSearchLanguages local system preference.','YesNo'), > ('LinkerKeepStale','0',NULL,'If ON the authority linker will keep existing authority links for headings where it is unable to find a match.','YesNo'), > ('LinkerModule','Default','Default|FirstMatch|LastMatch','Chooses which linker module to use (see documentation).','Choice'), > ('LinkerOptions','','','A pipe-separated list of options for the linker.','free'), >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref >index 8b04d39..4e11d91 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/searching.pref >@@ -86,11 +86,11 @@ Searching: > - "fields (separate values with |). Tabs appear in the order listed.<br/>" > - "<em>Currently supported values</em>: Item types (<strong>itemtypes</strong>), Collection Codes (<strong>ccode</strong>) and Shelving Location (<strong>loc</strong>)." > - >- - Limit the languages listed in the advanced search drop-down to the >- - pref: AdvancedSearchLanguages >- class: long >- - "ISO 639-2 language codes (separate values with | or ,)." >- - "For example, to limit listing to French and Italian, enter <em>ita|fre</em>." >+ - pref: LimitAdvancedSearchLanguages >+ choices: >+ yes: Limit >+ no: "Don't limit" >+ - the languages listed in the advanced search drop-down to the ISO 639-2 language codes managed on Local use system preference AdvancedSearchLanguages. > - > - By default, > - pref: expandedSearchOption >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/advsearch.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/advsearch.tt >index b41690d..73cff59 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/advsearch.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/advsearch.tt >@@ -140,11 +140,11 @@ > <p><label for="language-limit">Language: </label> > <select name="limit" id="language-limit"> > <option value="">No limit</option> >- [% FOREACH search_languages_loo IN search_languages_loop %] >+ [% FOREACH search_languages_loo IN search_languages_loop.sort('iso639_2_code') %] > [% IF ( search_languages_loo.selected ) %] >- <option value="ln,rtrn:[% search_languages_loo.iso639_2_code %]" selected="selected">[% search_languages_loo.language_description %]</option> >+ <option value="ln,rtrn:[% search_languages_loo.iso639_2_code %]" selected="selected">[%- INCLUDE language_descriptions code = search_languages_loo.rfc4646_subtag t=1 -%] ([%- INCLUDE language_descriptions code = search_languages_loo.rfc4646_subtag -%])</option> > [% ELSE %] >- <option value="ln,rtrn:[% search_languages_loo.iso639_2_code %]">[% search_languages_loo.language_description %]</option> >+ <option value="ln,rtrn:[% search_languages_loo.iso639_2_code %]">[%- INCLUDE language_descriptions code = search_languages_loo.rfc4646_subtag t=1 -%] ([%- INCLUDE language_descriptions code = search_languages_loo.rfc4646_subtag -%])</option> > [% END %] > > [% END %] >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-advsearch.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-advsearch.tt >index 9f856c4..5544491 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-advsearch.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-advsearch.tt >@@ -173,11 +173,11 @@ > <label for="language-limit">Language: </label> > <select id="language-limit" name="limit"> > <option value="">No limit</option> >- [% FOREACH search_languages_loo IN search_languages_loop %] >+ [% FOREACH search_languages_loo IN search_languages_loop.sort('iso639_2_code') %] > [% IF ( search_languages_loo.selected ) %] >- <option value="ln,rtrn:[% search_languages_loo.iso639_2_code %]" selected="selected">[% search_languages_loo.language_description %]</option> >+ <option value="ln,rtrn:[% search_languages_loo.iso639_2_code %]" selected="selected">[%- INCLUDE language_descriptions code = search_languages_loo.rfc4646_subtag t=1 -%] ([%- INCLUDE language_descriptions code = search_languages_loo.rfc4646_subtag -%])</option> > [% ELSE %] >- <option value="ln,rtrn:[% search_languages_loo.iso639_2_code %]">[% search_languages_loo.language_description %]</option> >+ <option value="ln,rtrn:[% search_languages_loo.iso639_2_code %]">[%- INCLUDE language_descriptions code = search_languages_loo.rfc4646_subtag t=1 -%] ([%- INCLUDE language_descriptions code = search_languages_loo.rfc4646_subtag -%])</option> > [% END %] > [% END %] > </select> >diff --git a/opac/opac-search.pl b/opac/opac-search.pl >index 0ff2507..468d9b1 100755 >--- a/opac/opac-search.pl >+++ b/opac/opac-search.pl >@@ -32,7 +32,7 @@ use List::MoreUtils q/any/; > > use C4::Output; > use C4::Auth qw(:DEFAULT get_session); >-use C4::Languages qw(getLanguages); >+use C4::Languages qw(getSearchLanguages); > use C4::Search; > use C4::Search::History; > use C4::Biblio; # GetBiblioData >@@ -205,7 +205,7 @@ $template->param( > ); > > # load the language limits (for search) >-my $languages_limit_loop = getLanguages($lang, 1); >+my $languages_limit_loop = getSearchLanguages(); > $template->param(search_languages_loop => $languages_limit_loop,); > > # load the Type stuff >-- >1.7.9.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 12017
:
26691
|
26694
|
26735
|
26736
|
26770
|
27687
|
27688
|
27689
|
27690
|
27691
|
27692
|
27693
|
27694
|
27695
|
27696
|
29898
|
29899
|
29900
|
29901
|
29902
|
29903
|
29904
|
29905
|
29906
|
29907
|
33337
|
33338
|
33339
|
33340
|
33341
|
33342
|
33343
|
33344
|
33345
|
33346
|
39304
|
39305
|
39306
|
39307
|
39308
|
39309
|
39310
|
39311
|
39312
|
39313
|
39644
|
39655
|
39656
|
39657
|
39658
|
39659
|
39660
|
39661
|
39662
|
39663
|
39664
|
39665
|
40285
|
40286
|
40287
|
40288
|
40289
|
40290
|
40291
|
40292
|
40293
|
40294
|
40295