my $count=@data;
my @results;
my $cnt=0;
+ my $sth;
# used for doing a plain-old sys-pref search
- if ($type eq 'all' ){
- my $sth=$dbh->prepare("SELECT * FROM systempreferences
- WHERE variable LIKE ? OR explanation LIKE ?
- ORDER BY VARIABLE");
- $sth->execute("%$searchstring%", "%$searchstring%");
- while (my $data=$sth->fetchrow_hashref){
- $data->{value} =~ s/</</g;
- $data->{value} =~ s/>/>/g;
- $data->{value}=substr($data->{value},0,60)."..." if length($data->{value}) >60;
- push(@results,$data);
- $cnt++;
- }
- $sth->finish;
-
- } elsif ($type){
+ if ($type && $type ne 'all') {
foreach my $syspref (sort { lc $a cmp lc $b } keys %tabsysprefs){
if ($tabsysprefs{$syspref} eq $type){
my $sth=$dbh->prepare("Select variable,value,explanation,type,options from systempreferences where (variable like ?) order by variable");
$sth->execute($syspref);
while (my $data=$sth->fetchrow_hashref){
- $data->{value} =~ s/</</g;
- $data->{value} =~ s/>/>/g;
- $data->{value}=substr($data->{value},0,60)."..." if length($data->{value}) >60;
+ $data->{shortvalue} = $data->{value};
+ $data->{shortvalue} = substr($data->{value},0,60)."..." if length($data->{value}) >60;
push(@results,$data);
$cnt++;
}
}
}
} else {
- my $strsth ="Select variable,value,explanation,type,options from systempreferences where variable not in (";
- foreach my $syspref (keys %tabsysprefs){
- $strsth .= $dbh->quote($syspref).",";
+ my $sth;
+
+ if ($type eq 'all' ){
+ $sth=$dbh->prepare("
+ SELECT *
+ FROM systempreferences
+ WHERE variable LIKE ? OR explanation LIKE ?
+ ORDER BY VARIABLE");
+ $sth->execute("%$searchstring%", "%$searchstring%");
+ } else {
+ my $strsth ="Select variable,value,explanation,type,options from systempreferences where variable not in (";
+ foreach my $syspref (keys %tabsysprefs){
+ $strsth .= $dbh->quote($syspref).",";
+ }
+ $strsth =~ s/,$/) /;
+ $strsth .= " order by variable";
+ $sth=$dbh->prepare($strsth);
+ $sth->execute();
}
- $strsth =~ s/,$/) /;
- $strsth .= " order by variable";
- my $sth=$dbh->prepare($strsth);
- $sth->execute();
- while (my $data=$sth->fetchrow_hashref){
- $data->{value}=substr($data->{value},0,60);
- push(@results,$data);
- $cnt++;
+
+ while (my $data=$sth->fetchrow_hashref){
+ $data->{shortvalue} = $data->{value};
+ $data->{shortvalue} = substr($data->{value},0,60)."..." if length($data->{value}) >60;
+ push(@results,$data);
+ $cnt++;
+ }
+
+ $sth->finish;
+ }
+ return ($cnt,\@results);
+}
+
+sub GetPrefParams {
+ my $data = shift;
+ my $params = $data;
+ my @options;
+
+ if (defined $data->{'options'}) {
+ foreach my $option (split(/\|/, $data->{'options'})) {
+ my $selected='0';
+ $option eq $data->{'value'} and $selected=1;
+ push @options, { option => $option, selected => $selected };
}
- $sth->finish;
}
- return ($cnt,\@results);
+
+ $params->{'prefoptions'} = $data->{'options'};
+
+ if ($data->{'type'} eq 'Choice') {
+ $params->{'type-choice'} = 1;
+ } elsif ($data->{'type'} eq 'YesNo') {
+ $params->{'type-yesno'} = 1;
+ $data->{'value'}=C4::Context->boolean_preference($data->{'variable'});
+ if ($data->{'value'} eq '1') {
+ $params->{'value-yes'} = 1;
+ } else {
+ $params->{'value-no'} = 1;
+ }
+ } elsif ($data->{'type'} eq 'Integer' || $data->{'type'} eq 'Float') {
+ $params->{'type-free'} = 1;
+ $params->{'fieldlength'} = $data->{'options'}>0 ? $data->{'options'} : 10;
+ } elsif ($data->{'type'} eq 'Textarea') {
+ $params->{'type-textarea'} = 1;
+ $data->{options} =~ /(.*)\|(.*)/;
+ $params->{'cols'} = $1;
+ $params->{'rows'} = $2;
+ } elsif ($data->{'type'} eq 'Themes') {
+ $params->{'type-choice'} = 1;
+ my $type='';
+ ($data->{'variable'}=~m#opac#i) ? ($type='opac') : ($type='intranet');
+ @options=();
+ my $currently_selected_themes;
+ my $counter=0;
+ foreach my $theme (split /\s+/, $data->{'value'}) {
+ push @options, { option => $theme, counter => $counter };
+ $currently_selected_themes->{$theme}=1;
+ $counter++;
+ }
+ foreach my $theme (getallthemes($type)) {
+ my $selected='0';
+ next if $currently_selected_themes->{$theme};
+ push @options, { option => $theme, counter => $counter };
+ $counter++;
+ }
+ } elsif ($data->{'type'} eq 'ClassSources') {
+ $params->{'type-choice'} = 1;
+ my $type='';
+ @options=();
+ my $sources = GetClassSources();
+ my $counter=0;
+ foreach my $cn_source (sort keys %$sources) {
+ if ($cn_source eq $data->{'value'}) {
+ push @options, { option => $cn_source, counter => $counter, selected => 1 };
+ } else {
+ push @options, { option => $cn_source, counter => $counter };
+ }
+ $counter++;
+ }
+ } elsif ($data->{'type'} eq 'Languages') {
+ my $currently_selected_languages;
+ foreach my $language (split /\s+/, $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);
+
+ $params->{'languages_loop'} = $languages_loop;
+ $params->{'type-langselector'} = 1;
+ } else {
+ $params->{'type-free'} = 1;
+ $params->{'fieldlength'} = $data->{'options'}>0 ? $data->{'options'} : 30;
+ }
+
+ if ( $params->{'type-choice'} || $params->{'type-free'} || $params->{'type-yesno'} ) {
+ $params->{'oneline'} = 1;
+ }
+
+ $params->{'preftype'} = $data->{'type'};
+ $params->{'options'} = \@options;
+
+ return $params;
}
my $input = new CGI;
my $searchfield = $input->param('searchfield');
my $Tvalue = $input->param('Tvalue');
-my $offset = $input->param('offset');
+my $offset = $input->param('offset') || 0;
my $script_name="/cgi-bin/koha/admin/systempreferences.pl";
my ($template, $borrowernumber, $cookie)
my $sth=$dbh->prepare("update systempreferences set value=?,explanation=?,type=?,options=? where variable=?");
$sth->execute($value, $input->param('explanation'), $input->param('variable'), $input->param('preftype'), $input->param('prefoptions'));
$sth->finish;
- warn "logaction !! mod ";
logaction('SYSTEMPREFERENCE','MODIFY',undef, $input->param('variable') . " | " . $value );
}
} else {
my $sth=$dbh->prepare("insert into systempreferences (variable,value,explanation) values (?,?,?,?,?)");
$sth->execute($input->param('variable'), $input->param('value'), $input->param('explanation'), $input->param('preftype'), $input->param('prefoptions'));
$sth->finish;
- warn "logaction !! add ";
logaction('SYSTEMPREFERENCE','ADD',undef, $input->param('variable') . " | " . $input->param('value') );
}
}
$template->param(return_tab => $tabsysprefs{$searchfield});
}
- my @options;
- foreach my $option (split(/\|/, $data->{'options'})) {
- my $selected='0';
- $option eq $data->{'value'} and $selected=1;
- push @options, { option => $option, selected => $selected };
- }
- if ($data->{'type'} eq 'Choice') {
- $template->param('type-choice' => 1);
- } elsif ($data->{'type'} eq 'YesNo') {
- $template->param('type-yesno' => 1);
- $data->{'value'}=C4::Context->boolean_preference($data->{'variable'});
- ($data->{'value'} eq '1') ? ($template->param('value-yes'=>1)) : ($template->param('value-no'=>1));
- } elsif ($data->{'type'} eq 'Integer') {
- $template->param('type-free' => 1);
- $template->param('fieldlength' => $data->{'options'});
- } elsif ($data->{'type'} eq 'Textarea') {
- $template->param('type-textarea' => 1);
- $data->{options} =~ /(.*)\|(.*)/;
- $template->param('cols' => $1, 'rows' => $2);;
- } elsif ($data->{'type'} eq 'Float') {
- $template->param('type-free' => 1);
- $template->param('fieldlength' => $data->{'options'});
- } elsif ($data->{'type'} eq 'Themes') {
- $template->param('type-choice' => 1);
- my $type='';
- ($data->{'variable'}=~m#opac#i) ? ($type='opac') : ($type='intranet');
- @options=();
- my $currently_selected_themes;
- my $counter=0;
- foreach my $theme (split /\s+/, $data->{'value'}) {
- push @options, { option => $theme, counter => $counter };
- $currently_selected_themes->{$theme}=1;
- $counter++;
- }
- foreach my $theme (getallthemes($type)) {
- my $selected='0';
- next if $currently_selected_themes->{$theme};
- push @options, { option => $theme, counter => $counter };
- $counter++;
- }
- } elsif ($data->{'type'} eq 'ClassSources') {
- $template->param('type-choice' => 1);
- my $type='';
- @options=();
- my $sources = GetClassSources();
- my $counter=0;
- foreach my $cn_source (sort keys %$sources) {
- if ($cn_source eq $data->{'value'}) {
- push @options, { option => $cn_source, counter => $counter, selected => 1 };
- } else {
- push @options, { option => $cn_source, counter => $counter };
- }
- $counter++;
- }
- } elsif ($data->{'type'} eq 'Languages') {
- my $currently_selected_languages;
- foreach my $language (split /\s+/, $data->{'value'}) {
- $currently_selected_languages->{$language}=1;
- }
- # current language
- my $lang = $template->param('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);
+ $data->{'lang'} = $template->param('lang');
- $template->param('languages_loop' => $languages_loop);
- $template->param('type-langselector' => 1);
- } else {
- $template->param('type-free' => 1);
- $template->param('fieldlength' => $data->{'options'}>0?$data->{'options'}:60);
- }
- $template->param(explanation => $data->{'explanation'},
- value => $data->{'value'},
- type => $data->{'type'},
- options => \@options,
- preftype => $data->{'type'},
- prefoptions => $data->{'options'},
- searchfield => $searchfield);
+ $template->param( GetPrefParams( $data ) );
+
+ $template->param( searchfield => $searchfield );
################## ADD_VALIDATE ##################################
# called by add_form, used to insert/modify data in DB
my $value;
# handle multiple value strings (separated by ',')
my $params = $input->Vars;
- my @values = split("\0",$params->{'value'}) if $params->{'value'};
+ my @values = ();
+ @values = split("\0",$params->{'value'}) if $params->{'value'};
for my $vl (@values) {
$value .= "$vl,";
}
} else {
$toggle=0;
}
- my %row_data; # get a fresh hash for the row data
- $row_data{variable} = $results->[$i]{'variable'};
- $row_data{value} = $results->[$i]{'value'};
- $row_data{yes} = 1 if ($results->[$i]{'value'} == 1);
- $row_data{yesno} = 1 if ($results->[$i]{'type'} eq 'YesNo');
- $row_data{explanation} = $results->[$i]{'explanation'};
- $row_data{toggle} = $toggle;
- $row_data{edit} = "$script_name?op=add_form&searchfield=".$results->[$i]{'variable'};
- $row_data{delete} = "$script_name?op=delete_confirm&searchfield=".$results->[$i]{'variable'};
- push(@loop_data, \%row_data);
+ my $row_data = $results->[$i];
+ $row_data->{'lang'} = $template->param('lang');
+ $row_data = GetPrefParams( $row_data ); # get a fresh hash for the row data
+ $row_data->{toggle} = $toggle;
+ $row_data->{edit} = "$script_name?op=add_form&searchfield=".$results->[$i]{'variable'};
+ $row_data->{delete} = "$script_name?op=delete_confirm&searchfield=".$results->[$i]{'variable'};
+ push(@loop_data, $row_data);
}
$tab=($tab?$tab:"Local Use");
$template->param(loop => \@loop_data, $tab => 1);