diff --git a/admin/systempreferences.pl b/admin/systempreferences.pl index ef53715412..9407c69498 100755 --- a/admin/systempreferences.pl +++ b/admin/systempreferences.pl @@ -317,31 +317,17 @@ sub StringSearch { 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/{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/{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++; } @@ -349,28 +335,145 @@ sub StringSearch { } } } 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++; - } - $sth->finish; - } + + 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 }; + } + } + + $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) @@ -436,7 +539,6 @@ if ($op eq 'update_and_reedit') { 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 { @@ -444,7 +546,6 @@ if ($op eq 'update_and_reedit') { 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') ); } } @@ -469,94 +570,11 @@ if ($op eq 'add_form') { $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 @@ -568,7 +586,8 @@ if ($op eq 'add_form') { 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,"; } @@ -629,16 +648,13 @@ if ($op eq 'add_form') { } 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); diff --git a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css index 34c499af2e..40bcadb9cb 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css +++ b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css @@ -362,6 +362,10 @@ div#reserves,div#checkouts { color : Gray; } +.single-line { + white-space: nowrap; +} + .ex { font-family : "Courier New", Courier, fixed-width; font-weight : bold; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/systempreferences.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/systempreferences.tmpl index 76e0134192..a72a023c93 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/systempreferences.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/systempreferences.tmpl @@ -63,6 +63,13 @@ alert(alertString2); } } + $( function() { + $( '#sysprefst .expand-textarea' ).show().click( function () { + $( this ).hide().nextAll( 'textarea, input[type=submit]' ).show( 'slow' ); + + return false; + } ).nextAll( 'textarea, input[type=submit]' ).hide(); + } ); //]]> @@ -111,9 +118,9 @@ - +
-
+
+ -
@@ -136,18 +143,23 @@ " name="value" id="" type="checkbox" checked="checked" /> -
+
- - - + + + + + + + +
@@ -195,11 +207,11 @@
" method="post"> - - " /> - " /> + + " /> + " />
-
" method="post">
+
" method="post">
@@ -215,16 +227,16 @@
- +