X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;ds=sidebyside;f=admin%2Fpreferences.pl;h=032789fb825eb3156d46dbbb04720cbd5d262bba;hb=1076a0edf32b621da54c53ea71595885f7e14c38;hp=8636afe93e7cf3d2f47ad4a7713d707cb456710f;hpb=47bd795b828c7b99524145fe337ea0c6ac7d588f;p=koha.git diff --git a/admin/preferences.pl b/admin/preferences.pl index 8636afe93e..032789fb82 100755 --- a/admin/preferences.pl +++ b/admin/preferences.pl @@ -4,23 +4,22 @@ # # This file is part of Koha. # -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. # -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along -# with Koha; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . -use strict; -use warnings; +use Modern::Perl; -use CGI; +use CGI qw ( -utf8 ); use C4::Auth; use C4::Context; use C4::Koha; @@ -29,12 +28,13 @@ use C4::ClassSource; use C4::Log; use C4::Output; use C4::Templates; -use C4::Budgets qw(GetCurrency); +use Koha::Acquisition::Currencies; use File::Spec; use IO::File; use YAML::Syck qw(); use List::MoreUtils qw(any); $YAML::Syck::ImplicitTyping = 1; +$YAML::Syck::ImplicitUnicode = 1; our $lang; # use Smart::Comments; @@ -45,10 +45,10 @@ sub GetTab { my $tab_template = C4::Templates::gettemplate( 'admin/preferences/' . $tab . '.pref', 'intranet', $input ); - my $active_currency = GetCurrency(); + my $active_currency = Koha::Acquisition::Currencies->get_active; my $local_currency; if ($active_currency) { - $local_currency = $active_currency->{currency}; + $local_currency = $active_currency->currency; } $tab_template->param( local_currency => $local_currency, # currency code is used, because we do not know how a given currency is formatted. @@ -105,6 +105,22 @@ sub _get_chunk { map { { text => $options{'choices'}->{$_}, value => $_, selected => ( $_ eq $value || ( $_ eq '' && ( $value eq '0' || !$value ) ) ) } } keys %{ $options{'choices'} } ]; + } elsif ( $options{'multiple'} ) { + my @values; + @values = split /,/, $value if defined($value); + $chunk->{type} = 'multiple'; + $chunk->{CHOICES} = [ + sort { $a->{'text'} cmp $b->{'text'} } + map { + my $option_value = $_; + { + text => $options{multiple}->{$option_value}, + value => $option_value, + selected => (grep /^$option_value$/, @values) ? 1 : 0, + } + } + keys %{ $options{multiple} } + ]; } $chunk->{ 'type_' . $chunk->{'type'} } = 1; @@ -121,7 +137,12 @@ sub TransformPrefsToHTML { my $tab = $data->{ $title }; $tab = { '' => $tab } if ( ref( $tab ) eq 'ARRAY' ); - my @override_syspref_names = split( /,/, $ENV{"OVERRIDE_SYSPREF_NAMES"} ); + my @override_syspref_names; + if ( exists($ENV{OVERRIDE_SYSPREF_NAMES}) && + defined($ENV{OVERRIDE_SYSPREF_NAMES}) + ) { + @override_syspref_names = split /,/, $ENV{OVERRIDE_SYSPREF_NAMES}; + } foreach my $group ( sort keys %$tab ) { if ( $group ) { @@ -165,6 +186,15 @@ sub TransformPrefsToHTML { push @chunks, $piece; } } else { + if ( $piece ) { + my $version = Koha::version(); + my ( $major, $minor, $maintenance, $development ) = split( '\.', $version ); + if ( $minor % 2 ) { + $piece =~ s|__VERSION__|${major}_${minor}|g; + } else { + $piece =~ s|__VERSION__|master|g; + } + } push @chunks, { type_text => 1, contents => $piece }; } } @@ -242,7 +272,7 @@ sub SearchPrefs { if ( $matched_groups ) { my ( $title, $LINES ) = TransformPrefsToHTML( { $title => $matched_groups }, $searchfield ); - push @tabs, { tab => $tab, tab_title => $title, LINES => $LINES, }; + push @tabs, { tab => $tab, tab_title => $title, LINES => $LINES, tab_id => $tab_name }; } } @@ -251,14 +281,22 @@ sub SearchPrefs { sub matches { my ( $text, $terms ) = @_; - if ( $text ) { return !grep( { $text !~ /$_/i } @$terms ); } + if ( $text ) { + return !grep( + { + my $re = eval{qr|$_|i}; + $re = qr|\Q$_\E| if $@; + $text !~ m|$re|; + } @$terms + ) + } } my $dbh = C4::Context->dbh; our $input = new CGI; my ( $template, $borrowernumber, $cookie ) = get_template_and_user( - { template_name => "admin/preferences.tmpl", + { template_name => "admin/preferences.tt", query => $input, type => "intranet", authnotrequired => 0, @@ -285,7 +323,6 @@ if ( $op eq 'save' ) { my $value = join( ',', $input->param( $param ) ); C4::Context->set_preference( $pref, $value ); - logaction( 'SYSTEMPREFERENCE', 'MODIFY', undef, $pref . " | " . $value ); } } @@ -326,7 +363,7 @@ if ( $op eq 'search' ) { if ( $tab ) { my ( $tab_title, $LINES ) = TransformPrefsToHTML( GetTab( $input, $tab ), $highlighted ); - push @TABS, { tab_title => $tab_title, LINES => $LINES }; + push @TABS, { tab_title => $tab_title, LINES => $LINES, tab_id => $tab }; $template->param( $tab => 1, tab => $tab,