Bugzilla – Attachment 39659 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 - 5 - Change local use syspref type Language
Bug-12017---5---Change-local-use-syspref-type-Lang.patch (text/plain), 14.71 KB, created by
Julian FIOL
on 2015-05-29 08:08:33 UTC
(
hide
)
Description:
Bug 12017 - 5 - Change local use syspref type Language
Filename:
MIME Type:
Creator:
Julian FIOL
Created:
2015-05-29 08:08:33 UTC
Size:
14.71 KB
patch
obsolete
>From 4382407d7359fb7d2961ec1a32430df173cbad65 Mon Sep 17 00:00:00 2001 >From: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com> >Date: Fri, 25 Apr 2014 23:27:53 -0300 >Subject: [PATCH] Bug 12017 - 5 - Change local use syspref type Language > >This patch changes local use syspref of type Language >Currently this type of syspref is not used, and shows >currently translated staff languages. It's values >can't be changed. > >To make something useful, this kind of syspref is >changed to show all langs and save iso639_2 codes. >And they not use descriptions on database, only >rfc4646 codes from templates. > >It's easy to add new kinds that save rfc4646 codes, >or only show translated languages. > >To test: >1. Apply the patch >2. Go to system preferences, local use >3. Define a new syspref, any name/description, type >'Language', Save > >4. New syspref is showed as a multiple selection of >iso639_2 codes with current lang and native names. >Check that > >5. Select some values, save, check they are saved >and restored > >6. Edit, similar view, change values, save, check > >7. Delete test syspref > >Values are stored as ',' separated values >Verify in database > >Signed-off-by: Julian FIOL <julian.fiol@biblibre.com> >--- > C4/Languages.pm | 59 +++++++++- > admin/systempreferences.pl | 21 +--- > .../prog/en/modules/admin/systempreferences.tt | 120 ++++----------------- > 3 files changed, 83 insertions(+), 117 deletions(-) > >diff --git a/C4/Languages.pm b/C4/Languages.pm >index be907ee..c0fe108 100644 >--- a/C4/Languages.pm >+++ b/C4/Languages.pm >@@ -49,7 +49,7 @@ BEGIN { > &getLanguages > &getAllLanguages > ); >- @EXPORT_OK = qw(getFrameworkLanguages getTranslatedLanguages getAllLanguages getLanguages get_bidi regex_lang_subtags language_get_description accept_language getlanguage); >+ @EXPORT_OK = qw(getLanguages_iso getFrameworkLanguages getTranslatedLanguages getAllLanguages getLanguages get_bidi regex_lang_subtags language_get_description accept_language getlanguage); > $DEBUG = 0; > } > >@@ -106,6 +106,63 @@ sub getFrameworkLanguages { > return \@languages; > } > >+=head2 getLanguages_iso >+ >+Get all languages codes and iso639_2 selected by iso639_2 >+Expect a hash with a defined value for each iso code >+Returns a reference to an array of hashes: >+ >+ my $languages = getLanguage_iso( %enabled ); >+ 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 >+ print "$language->{enabled}\n"; # 1 if enabled iso638_2_code >+ } >+ >+=cut >+ >+sub getLanguages_iso { >+ # Get all languages codes and iso639_2 selected by iso639_2 >+ # Expect a hash with a defined value for each iso code >+ my $enabled = shift; >+ my $langs = getLangCodes(); >+ my @result; >+ for my $code ( keys %$langs ) { >+ push @result, { >+ rfc4646_subtag => $code, >+ iso639_2_code => $langs->{$code}, >+ enabled => ( $enabled->{ $langs->{$code} } ) ? 1 : 0, >+ } >+ } >+ return \@result; >+} >+ >+=head2 getLangCodes >+ >+Get all language codes and iso639_2 codes >+as a hash with code as key and iso as value >+Returns a reference to a hash: >+ >+ my $languages = getIsoCodes(); >+ for my $code ( keys %$languages ) { >+ print "$code\n"; # language code in rfc4646 >+ print "$languages->{code}\n"; # language code in iso 639-2 >+ } >+ >+=cut >+ >+sub getLangCodes { >+ my %result; >+ my $dbh = C4::Context->dbh; >+ my $sth = $dbh->prepare('SELECT * FROM language_rfc4646_to_iso639'); >+ $sth->execute(); >+ while (my $rfc_to_iso = $sth->fetchrow_hashref) { >+ $result{$rfc_to_iso->{'rfc4646_subtag'}} = $rfc_to_iso->{'iso639_2_code'}; >+ } >+ return \%result; >+} >+ >+ > =head2 getTranslatedLanguages > > Returns a reference to an array of hashes: >diff --git a/admin/systempreferences.pl b/admin/systempreferences.pl >index 68bff18..30d288f 100755 >--- a/admin/systempreferences.pl >+++ b/admin/systempreferences.pl >@@ -48,7 +48,7 @@ use MIME::Base64; > use C4::Auth; > use C4::Context; > use C4::Koha; >-use C4::Languages qw(getTranslatedLanguages); >+use C4::Languages qw(getLanguages_iso); > use C4::ClassSource; > use C4::Log; > use C4::Output; >@@ -162,26 +162,11 @@ sub GetPrefParams { > } > } elsif ( $data->{'type'} eq 'Languages' ) { > my $currently_selected_languages; >- foreach my $language ( split /\s+/, $data->{'value'} ) { >+ foreach my $language ( split /\,/, $data->{'value'} ) { > $currently_selected_languages->{$language} = 1; > } > >- # current language >- my $lang = $params->{'lang'}; >- my $theme; >- my $interface; >- if ( $data->{'variable'} =~ /opac/ ) { >- >- # this is the OPAC >- $interface = 'opac'; >- $theme = C4::Context->preference('opacthemes'); >- } else { >- >- # this is the staff client >- $interface = 'intranet'; >- $theme = C4::Context->preference('template'); >- } >- my $languages_loop = getTranslatedLanguages( $interface, $theme, $lang, $currently_selected_languages ); >+ my $languages_loop = getLanguages_iso( $currently_selected_languages ); > > $params->{'languages_loop'} = $languages_loop; > $params->{'type_langselector'} = 1; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/systempreferences.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/systempreferences.tt >index dba6c08..ce3b7c5 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/systempreferences.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/systempreferences.tt >@@ -122,57 +122,19 @@ > </select> > [% END %] > [% IF ( type_langselector ) %] >- [% IF ( languages_loop ) %] >- <table> >- [% FOREACH languages_loo IN languages_loop %] >- <tr><td> >- [% IF ( languages_loo.plural ) %] >- [% IF ( languages_loo.native_description ) %][% languages_loo.native_description %][% ELSE %][% languages_loo.rfc4646_subtag %][% END %] >- [% FOREACH sublanguages_loo IN languages_loo.sublanguages_loop %]<table><tr><td> >- [% IF ( sublanguages_loo.sublanguage_current ) %] >- <label for="[% sublanguages_loo.rfc4646_subtag %]">[% sublanguages_loo.native_description %] [% sublanguages_loo.script_description %] [% sublanguages_loo.region_description %] [% sublanguages_loo.variant_description %]([% sublanguages_loo.rfc4646_subtag %]) >- [% IF ( sublanguages_loo.enabled ) %] >- <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" /> >- [% ELSE %] >- <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" /> >- [% END %] >- </label> >- >- [% ELSE %] >- <label for="[% sublanguages_loo.rfc4646_subtag %]">[% sublanguages_loo.native_description %] [% sublanguages_loo.script_description %] [% sublanguages_loo.region_description %] [% sublanguages_loo.variant_description %]([% sublanguages_loo.rfc4646_subtag %]) >- [% IF ( sublanguages_loo.enabled ) %] >- <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" /> >+ [% IF ( languages_loop ) %] >+ <select name="value" size=10 multiple > >+ [% FOREACH languages_loo IN languages_loop.sort('iso639_2_code') %] >+ [% IF ( languages_loo.enabled ) %] >+ <option value="[% languages_loo.iso639_2_code %]" selected > > [% ELSE %] >- <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" /> >+ <option value="[% languages_loo.iso639_2_code %]" > > [% END %] >- </label> >- [% END %]</td></tr></table> >- [% END %] >- >- [% ELSE %] >- [% IF ( languages_loo.current ) %] >- <label for="[% languages_loo.rfc4646_subtag %]">[% languages_loo.native_description %]([% languages_loo.rfc4646_subtag %]) >- [% IF ( languages_loo.group_enabled ) %] >- <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="[% languages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" /> >- [% ELSE %] >- <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="[% languages_loo.rfc4646_subtag %]" type="checkbox" /> >- [% END %] >- </label> >- [% ELSE %] >- <label for="[% languages_loo.rfc4646_subtag %]">[% languages_loo.native_description %]([% languages_loo.rfc4646_subtag %]) >- [% IF ( languages_loo.group_enabled ) %] >- <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="[% languages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" /> >- [% ELSE %] >- <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="[% languages_loo.rfc4646_subtag %]" type="checkbox" /> >- [% END %] >- </label> >- [% END %] >- [% END %] >- </td></tr> >- [% END %] >- </table> >- [% END %] >- >+ ([% languages_loo.iso639_2_code %]) [% INCLUDE language_descriptions code = languages_loo.rfc4646_subtag t = 1 %] [% INCLUDE language_descriptions code = languages_loo.rfc4646_subtag %] >+ </option> >+ [% END %] >+ </select> >+ [% END %] > [% END %] > > [% IF ( type_yesno ) %] >@@ -299,57 +261,19 @@ > </select> > [% END %] > [% IF ( loo.type_langselector ) %] >- [% IF ( loo.languages_loop ) %] >- <table> >- [% FOREACH languages_loo IN loo.languages_loop %] >- <tr><td> >- [% IF ( languages_loo.plural ) %] >- [% IF ( languages_loo.native_description ) %][% languages_loo.native_description %][% ELSE %][% languages_loo.rfc4646_subtag %][% END %] >- [% FOREACH sublanguages_loo IN languages_loo.sublanguages_loop %]<table><tr><td> >- [% IF ( sublanguages_loo.sublanguage_current ) %] >- <label for="[% sublanguages_loo.rfc4646_subtag %]">[% sublanguages_loo.native_description %] [% sublanguages_loo.script_description %] [% sublanguages_loo.region_description %] [% sublanguages_loo.variant_description %]([% sublanguages_loo.rfc4646_subtag %]) >- [% IF ( sublanguages_loo.enabled ) %] >- <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" /> >- [% ELSE %] >- <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" /> >- [% END %] >- </label> >- >- [% ELSE %] >- <label for="[% sublanguages_loo.rfc4646_subtag %]">[% sublanguages_loo.native_description %] [% sublanguages_loo.script_description %] [% sublanguages_loo.region_description %] [% sublanguages_loo.variant_description %]([% sublanguages_loo.rfc4646_subtag %]) >- [% IF ( sublanguages_loo.enabled ) %] >- <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" /> >- [% ELSE %] >- <input value="[% sublanguages_loo.rfc4646_subtag %]" name="value" id="[% sublanguages_loo.rfc4646_subtag %]" type="checkbox" /> >- [% END %] >- </label> >- [% END %]</td></tr></table> >- [% END %] >- >- [% ELSE %] >- [% IF ( languages_loo.current ) %] >- <label for="[% languages_loo.rfc4646_subtag %]">[% languages_loo.native_description %]([% languages_loo.rfc4646_subtag %]) >- [% IF ( languages_loo.group_enabled ) %] >- <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="opac[% languages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" /> >- [% ELSE %] >- <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="opac[% languages_loo.rfc4646_subtag %]" type="checkbox" /> >- [% END %] >- </label> >- [% ELSE %] >- <label for="[% languages_loo.rfc4646_subtag %]">[% languages_loo.native_description %]([% languages_loo.rfc4646_subtag %]) >- [% IF ( languages_loo.group_enabled ) %] >- <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="opac[% languages_loo.rfc4646_subtag %]" type="checkbox" checked="checked" /> >- [% ELSE %] >- <input value="[% languages_loo.rfc4646_subtag %]" name="value" id="opac[% languages_loo.rfc4646_subtag %]" type="checkbox" /> >- [% END %] >- </label> >+ [% IF ( loo.languages_loop ) %] >+ <select name="value" size=10 multiple > >+ [% FOREACH languages_loo IN loo.languages_loop.sort('iso639_2_code') %] >+ [% IF ( languages_loo.enabled ) %] >+ <option value="[% languages_loo.iso639_2_code %]" selected > >+ [% ELSE %] >+ <option value="[% languages_loo.iso639_2_code %]" > >+ [% END %] >+ <label>([% languages_loo.iso639_2_code %]) [% INCLUDE language_descriptions code = languages_loo.rfc4646_subtag t = 1 %]</label> [% INCLUDE language_descriptions code = languages_loo.rfc4646_subtag %] > [% END %] >+ </select> > [% END %] >- </td></tr> >- [% END %] >- </table> >- [% END %] >- >+ <br /> > [% END %] > > [% IF ( loo.type_yesno ) %] >-- >2.4.2
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