X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=admin%2Fsystempreferences.pl;h=773fbfe064acd111dd262f24f5b93056881aa638;hb=3d4147042ab80909fac7ac83110f28173db10180;hp=a18d7b7b46f7a713bc3a18c28a0d46b347675eee;hpb=b38997925f603dc9784c25d3db3501644c19e068;p=koha.git diff --git a/admin/systempreferences.pl b/admin/systempreferences.pl index a18d7b7b46..773fbfe064 100755 --- a/admin/systempreferences.pl +++ b/admin/systempreferences.pl @@ -1,25 +1,9 @@ #!/usr/bin/perl -#script to administer the systempref table -#written 20/02/2002 by paul.poulain@free.fr +# script to administer the systempref table +# written 20/02/2002 by paul.poulain@free.fr # This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html) -# ALGO : -# this script use an $op to know what to do. -# if $op is empty or none of the above values, -# - the default screen is build (with all records, or filtered datas). -# - the user can clic on add, modify or delete record. -# if $op=add_form -# - if primkey exists, this is a modification,so we read the $primkey record -# - builds the add/modify form -# if $op=add_validate -# - the user has just send datas, so we create/modify the record -# if $op=delete_form -# - we show the record having primkey=$primkey and ask for deletion validation form -# if $op=delete_confirm -# - we delete the record having primkey=$primkey - - # Copyright 2000-2002 Katipo Communications # # This file is part of Koha. @@ -37,90 +21,303 @@ # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, # Suite 330, Boston, MA 02111-1307 USA +=head1 systempreferences.pl + +ALGO : + this script use an $op to know what to do. + if $op is empty or none of the above values, + - the default screen is build (with all records, or filtered datas). + - the user can clic on add, modify or delete record. + if $op=add_form + - if primkey exists, this is a modification,so we read the $primkey record + - builds the add/modify form + if $op=add_validate + - the user has just send datas, so we create/modify the record + if $op=delete_form + - we show the record having primkey=$primkey and ask for deletion validation form + if $op=delete_confirm + - we delete the record having primkey=$primkey + +=cut + use strict; use CGI; use C4::Auth; use C4::Context; use C4::Koha; +use C4::Languages qw(getTranslatedLanguages); +use C4::ClassSource; use C4::Output; -use C4::Interface::CGI::Output; -use C4::Search; -use HTML::Template; use C4::Context; +# use Smart::Comments; + + +# FIXME, shouldnt we store this stuff in the systempreferences table? + my %tabsysprefs; -$tabsysprefs{acquisitions}="Acquisitions"; -$tabsysprefs{gist}="Acquisitions"; -$tabsysprefs{authoritysep}="Authorities"; -$tabsysprefs{ISBD}="Catalogue"; -$tabsysprefs{marc}="Catalogue"; -$tabsysprefs{autoBarcode}="Catalogue"; -$tabsysprefs{marcflavour}="Catalogue"; -$tabsysprefs{SubscriptionHistory}="OPAC"; -$tabsysprefs{maxoutstanding}="Circulation"; -$tabsysprefs{printcirculationslips}="Circulation"; -$tabsysprefs{ReturnBeforeExpiry}="Circulation"; -$tabsysprefs{suggestion}="OPAC"; -$tabsysprefs{automembernum}="Members"; -$tabsysprefs{noissuescharge}="Circulation"; -$tabsysprefs{opacthemes}="OPAC"; -$tabsysprefs{opaclanguages}="OPAC"; -$tabsysprefs{LibraryName}="OPAC"; -$tabsysprefs{opacstylesheet}="OPAC"; -$tabsysprefs{BiblioDefaultView}="OPAC"; -$tabsysprefs{opaclargeimage}="OPAC"; -$tabsysprefs{opacsmallimage}="OPAC"; -$tabsysprefs{hidelostitems}="OPAC"; -$tabsysprefs{KohaAdmin}="Admin"; -$tabsysprefs{checkdigit}="Members"; -$tabsysprefs{dateformat}="Admin"; -$tabsysprefs{insecure}="Admin"; -$tabsysprefs{ldapinfos}="Admin"; -$tabsysprefs{ldapserver}="Admin"; -$tabsysprefs{itemcallnumber}="Catalogue"; -$tabsysprefs{maxreserves}="Circulation"; -$tabsysprefs{virtualshelves}="OPAC"; -$tabsysprefs{hide_marc}="Catalogue"; +# Acquisitions + $tabsysprefs{acquisitions}="Acquisitions"; + $tabsysprefs{gist}="Acquisitions"; + $tabsysprefs{emailPurchaseSuggestions}="Acquisitions"; + +# Admin + $tabsysprefs{singleBranchMode}="Admin"; + $tabsysprefs{staffClientBaseURL}="Admin"; + $tabsysprefs{Version}="Admin"; + $tabsysprefs{OpacMaintenance}="Admin"; + $tabsysprefs{FrameworksLoaded}="Admin"; + $tabsysprefs{libraryAddress}="Admin"; + $tabsysprefs{delimiter}="Admin"; + $tabsysprefs{IndependantBranches}="Admin"; + $tabsysprefs{HomeOrHoldingBranch}="Admin"; + $tabsysprefs{insecure}="Admin"; + $tabsysprefs{KohaAdmin}="Admin"; + $tabsysprefs{KohaAdminEmailAddress}="Admin"; + $tabsysprefs{MIME}="Admin"; + $tabsysprefs{timeout}="Admin"; + $tabsysprefs{Intranet_includes}="Admin"; + $tabsysprefs{AutoLocation}="Admin"; + $tabsysprefs{DebugLevel}="Admin"; + $tabsysprefs{SessionStorage}="Admin"; + $tabsysprefs{noItemTypeImages}="Admin"; + $tabsysprefs{OPACBaseURL}="Admin"; + +# Authorities + $tabsysprefs{authoritysep}="Authorities"; + $tabsysprefs{AuthDisplayHierarchy}="Authorities"; + $tabsysprefs{dontmerge}="Authorities"; + $tabsysprefs{BiblioAddsAuthorities}="Authorities"; +# Cataloguing + $tabsysprefs{advancedMARCEditor}="Cataloguing"; + $tabsysprefs{autoBarcode}="Cataloguing"; + $tabsysprefs{hide_marc}="Cataloguing"; + $tabsysprefs{IntranetBiblioDefaultView} = "Cataloguing"; + $tabsysprefs{ISBD}="Cataloguing"; + $tabsysprefs{itemcallnumber}="Cataloguing"; + $tabsysprefs{LabelMARCView}="Cataloguing"; + $tabsysprefs{marc}="Cataloguing"; + $tabsysprefs{marcflavour}="Cataloguing"; + $tabsysprefs{serialsadditems}="Cataloguing"; + $tabsysprefs{MARCOrgCode}="Cataloguing"; + $tabsysprefs{z3950AuthorAuthFields}="Cataloguing"; + $tabsysprefs{z3950NormalizeAuthor}="Cataloguing"; + $tabsysprefs{Stemming}="Cataloguing"; + $tabsysprefs{WeightFields}="Cataloguing"; + $tabsysprefs{NoZebra}="Cataloguing"; + $tabsysprefs{NoZebraIndexes}="Cataloguing"; + $tabsysprefs{ReceiveBackIssues}="Cataloguing"; + $tabsysprefs{DefaultClassificationSource}="Cataloguing"; + $tabsysprefs{RoutingSerials}="Cataloguing"; + $tabsysprefs{'item-level_itypes'}="Cataloguing"; + +# Circulation + $tabsysprefs{maxoutstanding}="Circulation"; + $tabsysprefs{maxreserves}="Circulation"; + $tabsysprefs{noissuescharge}="Circulation"; + $tabsysprefs{IssuingInProcess}="Circulation"; + $tabsysprefs{patronimages}="Circulation"; + $tabsysprefs{printcirculationslips}="Circulation"; + $tabsysprefs{ReturnBeforeExpiry}="Circulation"; + $tabsysprefs{SpecifyDueDate}="Circulation"; + $tabsysprefs{AutomaticItemReturn}="Circulation"; + $tabsysprefs{ReservesMaxPickUpDelay}="Circulation"; + $tabsysprefs{TransfersMaxDaysWarning}="Circulation"; + $tabsysprefs{useDaysMode}="Circulation"; + $tabsysprefs{ReservesNeedReturns}="Circulation"; + $tabsysprefs{CircAutocompl}="Circulation"; + $tabsysprefs{canreservefromotherbranches}="Circulation"; + $tabsysprefs{finesMode}="Circulation"; + $tabsysprefs{emailLibrarianWhenHoldIsPlaced}="Circulation"; + $tabsysprefs{globalDueDate}="Circulation"; + $tabsysprefs{holdCancelLength}="Circulation"; + $tabsysprefs{itemBarcodeInputFilter}="Circulation"; + $tabsysprefs{noOPACHolds}="Circulation"; + $tabsysprefs{WebBasedSelfCheck}="Circulation"; + $tabsysprefs{CircControl}="Circulation"; + $tabsysprefs{finesCalendar}="Circulation"; + $tabsysprefs{previousIssuesDefaultSortOrder}="Circulation"; + $tabsysprefs{todaysIssuesDefaultSortOrder}="Circulation"; + +# Staff Client + $tabsysprefs{TemplateEncoding}="StaffClient"; + $tabsysprefs{template}="StaffClient"; + $tabsysprefs{intranetstylesheet}="StaffClient"; + $tabsysprefs{IntranetNav}="StaffClient"; + $tabsysprefs{intranetcolorstylesheet}="StaffClient"; + $tabsysprefs{intranetuserjs}="StaffClient"; + $tabsysprefs{yuipath}="StaffClient"; + $tabsysprefs{IntranetmainUserblock}="StaffClient"; + +# Patrons + $tabsysprefs{automembernum}="Patrons"; + $tabsysprefs{checkdigit}="Patrons"; + $tabsysprefs{intranetreadinghistory}="Patrons"; + $tabsysprefs{NotifyBorrowerDeparture}="Patrons"; + $tabsysprefs{memberofinstitution}="Patrons"; + $tabsysprefs{ReadingHistory}="Patrons"; + $tabsysprefs{BorrowerMandatoryField}="Patrons"; + $tabsysprefs{borrowerRelationship}="Patrons"; + $tabsysprefs{BorrowersTitles}="Patrons"; + $tabsysprefs{patronimages}="Patrons"; + $tabsysprefs{MinPasswordLength}="Patrons"; + $tabsysprefs{uppercasesurnames}="Patrons"; + $tabsysprefs{NoReturnSetLost}="Patrons"; + $tabsysprefs{MaxFine}="Patrons"; + $tabsysprefs{NotifyBorrowerDeparture}="Patrons"; + +# FRBR + $tabsysprefs{FRBRizeEditions}="FRBR"; + $tabsysprefs{XISBN}="FRBR"; + $tabsysprefs{OCLCAffiliateID}="FRBR"; + $tabsysprefs{XISBNDailyLimit}="FRBR"; + $tabsysprefs{PINESISBN}="FRBR"; + $tabsysprefs{ThingISBN}="FRBR"; + $tabsysprefs{OPACFRBRizeEditions}="FRBR"; + $tabsysprefs{XISBNAmazonSimilarItems}="FRBR"; + +# I18N/L10N + $tabsysprefs{dateformat}="I18N/L10N"; + $tabsysprefs{opaclanguages}="I18N/L10N"; + $tabsysprefs{opacthemes}="I18N/L10N"; + $tabsysprefs{language}="I18N/L10N"; +# Searching + $tabsysprefs{defaultSortField}="Searching"; + $tabsysprefs{defaultSortOrder}="Searching"; + $tabsysprefs{maxItemsInSearchResults}="Searching"; + $tabsysprefs{numSearchResults}="Searching"; + $tabsysprefs{OPACdefaultSortField}="Searching"; + $tabsysprefs{OPACdefaultSortOrder}="Searching"; + $tabsysprefs{OPACItemsResultsDisplay}="Searching"; + $tabsysprefs{OPACnumSearchResults}="Searching"; + $tabsysprefs{QueryFuzzy}="Searching"; + $tabsysprefs{QueryStemming}="Searching"; + $tabsysprefs{QueryWeightFields}="Searching"; + $tabsysprefs{expandedSearchOption}="Searching"; + $tabsysprefs{sortbynonfiling}="Searching"; + $tabsysprefs{QueryAutoTruncate}="Searching"; + $tabsysprefs{QueryRemoveStopwords}="Searching"; + +# OPAC + $tabsysprefs{AmazonAssocTag}="OPAC"; + $tabsysprefs{AmazonSimilarItems}="OPAC"; + $tabsysprefs{AmazonContent}="OPAC"; + $tabsysprefs{OPACAmazonContent}="OPAC"; + $tabsysprefs{AmazonDevKey}="OPAC"; + $tabsysprefs{BiblioDefaultView}="OPAC"; + $tabsysprefs{LibraryName}="OPAC"; + $tabsysprefs{opaccolorstylesheet}="OPAC"; + $tabsysprefs{opaccredits}="OPAC"; + $tabsysprefs{opaclargeimage}="OPAC"; + $tabsysprefs{opaclayoutstylesheet}="OPAC"; + $tabsysprefs{OpacNav}="OPAC"; + $tabsysprefs{opacsmallimage}="OPAC"; + $tabsysprefs{opacstylesheet}="OPAC"; + $tabsysprefs{opacthemes}="OPAC"; + $tabsysprefs{opacuserjs}="OPAC"; + $tabsysprefs{SubscriptionHistory}="OPAC"; + $tabsysprefs{opacheader}="OPAC"; + $tabsysprefs{OPACAmazonSimilarItems}="OPAC"; + $tabsysprefs{OPACXISBNAmazonSimilarItems}="OPAC"; + + $tabsysprefs{hideBiblioNumber}="OPAC"; + $tabsysprefs{noOPACUserLogin}="OPAC"; + $tabsysprefs{OPACDisplayExtendedSubInfo}="OPAC"; + $tabsysprefs{OpacMainUserBlock}="OPAC"; + $tabsysprefs{OPACSubscriptionDisplay}="OPAC"; + $tabsysprefs{OPACURLOpenInNewWindow}="OPAC"; + $tabsysprefs{OPACUserCSS}="OPAC"; + $tabsysprefs{OPACViewOthersSuggestions}="OPAC"; + $tabsysprefs{URLLinkText}="OPAC"; + +# OPACFeatures + $tabsysprefs{SearchMyLibraryFirst}="OPACFeatures"; + $tabsysprefs{Disable_Dictionary}="OPACFeatures"; + $tabsysprefs{hidelostitems}="OPACFeatures"; + $tabsysprefs{opacbookbag}="OPACFeatures"; + $tabsysprefs{opaclanguagesdisplay}="OPACFeatures"; + $tabsysprefs{OpacPasswordChange}="OPACFeatures"; + $tabsysprefs{opacreadinghistory}="OPACFeatures"; + $tabsysprefs{virtualshelves}="OPACFeatures"; + $tabsysprefs{RequestOnOpac}="OPACFeatures"; + $tabsysprefs{reviewson}="OPACFeatures"; + $tabsysprefs{OpacTopissues}="OPACFeatures"; + $tabsysprefs{OpacAuthorities}="OPACFeatures"; + $tabsysprefs{OpacCloud}="OPACFeatures"; + $tabsysprefs{opacuserlogin}="OPACFeatures"; + $tabsysprefs{AnonSuggestions}="OPACFeatures"; + $tabsysprefs{suggestion}="OPACFeatures"; + $tabsysprefs{OpacTopissue}="OPACFeatures"; + $tabsysprefs{OpacBrowser}="OPACFeatures"; + $tabsysprefs{kohaspsuggest} = "OPACFeatures"; + +# LOGFeatures + $tabsysprefs{CataloguingLog} = "LOGFeatures"; + $tabsysprefs{BorrowersLog} = "LOGFeatures"; + $tabsysprefs{SubscriptionLog} = "LOGFeatures"; + $tabsysprefs{IssueLog} = "LOGFeatures"; + $tabsysprefs{ReturnLog} = "LOGFeatures"; + $tabsysprefs{LetterLog} = "LOGFeatures"; + $tabsysprefs{FinesLog} = "LOGFeatures"; + sub StringSearch { - my ($env,$searchstring,$type)=@_; - my $dbh = C4::Context->dbh; - $searchstring=~ s/\'/\\\'/g; - my @data=split(' ',$searchstring); - my $count=@data; - my @results; - my $cnt=0; - if ($type){ - foreach my $syspref (sort 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){ - push(@results,$data); - $cnt++; - } - $sth->finish; - } - } - } 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"; - warn $strsth; - my $sth=$dbh->prepare($strsth); - $sth->execute(); - while (my $data=$sth->fetchrow_hashref){ - push(@results,$data); - $cnt++; - } - $sth->finish; - } - return ($cnt,\@results); -} + my ($searchstring,$type)=@_; + my $dbh = C4::Context->dbh; + $searchstring=~ s/\'/\\\'/g; + my @data=split(' ',$searchstring); + my $count=@data; + my @results; + my $cnt=0; + + # 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,100)."..." if length($data->{value}) >100; + push(@results,$data); + $cnt++; + } + $sth->finish; + } elsif ($type){ + 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,100)."..." if length($data->{value}) >100; + push(@results,$data); + $cnt++; + } + $sth->finish; + } + } + } 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"; + my $sth=$dbh->prepare($strsth); + $sth->execute(); + while (my $data=$sth->fetchrow_hashref){ + $data->{value}=substr($data->{value},0,100); + push(@results,$data); + $cnt++; + } + $sth->finish; + } + return ($cnt,\@results); +} my $input = new CGI; my $searchfield=$input->param('searchfield'); @@ -128,77 +325,77 @@ my $offset=$input->param('offset'); my $script_name="/cgi-bin/koha/admin/systempreferences.pl"; my ($template, $borrowernumber, $cookie) - = get_template_and_user({template_name => "parameters/systempreferences.tmpl", - query => $input, - type => "intranet", - authnotrequired => 0, - flagsrequired => {parameters => 1}, - debug => 1, - }); + = get_template_and_user({template_name => "admin/systempreferences.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {parameters => 1}, + debug => 1, + }); my $pagesize=100; my $op = $input->param('op'); $searchfield=~ s/\,//g; if ($op) { $template->param(script_name => $script_name, - $op => 1,); # we show only the TMPL_VAR names $op + $op => 1); # we show only the TMPL_VAR names $op } else { $template->param(script_name => $script_name, - else => 1,); # we show only the TMPL_VAR names $op + else => 1); # we show only the TMPL_VAR names $op } if ($op eq 'update_and_reedit') { - foreach ($input->param) { - } - my $value=''; - if (my $currentorder=$input->param('currentorder')) { - my @currentorder=split /\|/, $currentorder; - my $orderchanged=0; - foreach my $param ($input->param) { - if ($param=~m#up-(\d+).x#) { - my $temp=$currentorder[$1]; - $currentorder[$1]=$currentorder[$1-1]; - $currentorder[$1-1]=$temp; - $orderchanged=1; - last; - } elsif ($param=~m#down-(\d+).x#) { - my $temp=$currentorder[$1]; - $currentorder[$1]=$currentorder[$1+1]; - $currentorder[$1+1]=$temp; - $orderchanged=1; - last; - } - } - $value=join ' ', @currentorder; - if ($orderchanged) { - $op='add_form'; - $template->param(script_name => $script_name, - $op => 1); # we show only the TMPL_VAR names $op - } else { - $op=''; - $searchfield=''; - $template->param(script_name => $script_name, - else => 1); # we show only the TMPL_VAR names $op - } - } - my $dbh = C4::Context->dbh; - my $query="select * from systempreferences where variable=?"; - my $sth=$dbh->prepare($query); - $sth->execute($input->param('variable')); - if ($sth->rows) { - unless (C4::Context->config('demo') eq 1) { - 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; - } + foreach ($input->param) { + } + my $value=''; + if (my $currentorder=$input->param('currentorder')) { + my @currentorder=split /\|/, $currentorder; + my $orderchanged=0; + foreach my $param ($input->param) { + if ($param=~m#up-(\d+).x#) { + my $temp=$currentorder[$1]; + $currentorder[$1]=$currentorder[$1-1]; + $currentorder[$1-1]=$temp; + $orderchanged=1; + last; + } elsif ($param=~m#down-(\d+).x#) { + my $temp=$currentorder[$1]; + $currentorder[$1]=$currentorder[$1+1]; + $currentorder[$1+1]=$temp; + $orderchanged=1; + last; + } + } + $value=join ' ', @currentorder; + if ($orderchanged) { + $op='add_form'; + $template->param(script_name => $script_name, + $op => 1); # we show only the TMPL_VAR names $op + } else { + $op=''; + $searchfield=''; + $template->param(script_name => $script_name, + else => 1); # we show only the TMPL_VAR names $op + } + } + my $dbh = C4::Context->dbh; + my $query="select * from systempreferences where variable=?"; + my $sth=$dbh->prepare($query); + $sth->execute($input->param('variable')); + if ($sth->rows) { + unless (C4::Context->config('demo') eq 1) { + 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; + } } else { - unless (C4::Context->config('demo') eq 1) { - 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; - } - } - $sth->finish; + unless (C4::Context->config('demo') eq 1) { + 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; + } + } + $sth->finish; } @@ -206,165 +403,185 @@ if ($op eq 'update_and_reedit') { # called by default. Used to create form to add or modify a record if ($op eq 'add_form') { - #---- if primkey exists, it's a modify action, so read values to modify... - my $data; - if ($searchfield) { - my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select variable,value,explanation,type,options from systempreferences where variable=?"); - $sth->execute($searchfield); - $data=$sth->fetchrow_hashref; - $sth->finish; - $template->param(modify => 1); - } - - 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 'Languages') { - $template->param('type-choice' => 1); - my $type=''; - @options=(); - my $currently_selected_languages; - my $counter=0; - foreach my $language (split /\s+/, $data->{'value'}) { - next if $language eq 'images'; - push @options, { option => $language, counter => $counter }; - $currently_selected_languages->{$language}=1; - $counter++; - } - foreach my $language (getalllanguages()) { - next if $language eq 'images'; - my $selected='0'; - next if $currently_selected_languages->{$language}; - push @options, { option => $language, counter => $counter }; - $counter++; - } - } 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); + #---- if primkey exists, it's a modify action, so read values to modify... + my $data; + if ($searchfield) { + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("select variable,value,explanation,type,options from systempreferences where variable=?"); + $sth->execute($searchfield); + $data=$sth->fetchrow_hashref; + $sth->finish; + $template->param(modify => 1); + # save tab to return to if user cancels edit + $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') { + $template->param('type-choice' => 1); + my $type=''; + @options=(); + my $currently_selected_languages; + my $counter=0; + foreach my $language (split /\s+/, $data->{'value'}) { + next if $language eq 'images'; + push @options, { option => $language, counter => $counter }; + $currently_selected_languages->{$language}=1; + $counter++; + } + my $langavail = getTranslatedLanguages(); + foreach my $language (@$langavail) { + my $selected='0'; + next if $currently_selected_languages->{$language->{'language_code'}}; + #FIXME: could add language_name and language_locale_name for better display + push @options, { option => $language->{'language_code'}, counter => $counter }; + $counter++; + } + } 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); ################## ADD_VALIDATE ################################## # called by add_form, used to insert/modify data in DB } elsif ($op eq 'add_validate') { - my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select * from systempreferences where variable=?"); - $sth->execute($input->param('variable')); - if ($sth->rows) { - unless (C4::Context->config('demo') eq 1) { - my $sth=$dbh->prepare("update systempreferences set value=?,explanation=?,type=?,options=? where variable=?"); - $sth->execute($input->param('value'), $input->param('explanation'), $input->param('preftype'), $input->param('prefoptions'), $input->param('variable')); - $sth->finish; - } - } else { - unless (C4::Context->config('demo') eq 1) { - my $sth=$dbh->prepare("insert into systempreferences (variable,value,explanation,type,options) values (?,?,?,?,?)"); - $sth->execute($input->param('variable'), $input->param('value'), $input->param('explanation'), $input->param('preftype'), $input->param('prefoptions')); - $sth->finish; - } - } - $sth->finish; - print "Content-Type: text/html\n\nparam('variable')}."\">"; - exit; + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("select * from systempreferences where variable=?"); + $sth->execute($input->param('variable')); + if ($sth->rows) { + unless (C4::Context->config('demo') eq 1) { + my $sth=$dbh->prepare("update systempreferences set value=?,explanation=?,type=?,options=? where variable=?"); + $sth->execute($input->param('value'), $input->param('explanation'), $input->param('preftype'), $input->param('prefoptions'), $input->param('variable')); + $sth->finish; + } + } else { + unless (C4::Context->config('demo') eq 1) { + my $sth=$dbh->prepare("insert into systempreferences (variable,value,explanation,type,options) values (?,?,?,?,?)"); + $sth->execute($input->param('variable'), $input->param('value'), $input->param('explanation'), $input->param('preftype'), $input->param('prefoptions')); + $sth->finish; + } + } + $sth->finish; + print "Content-Type: text/html\n\nparam('variable')}."\">"; + exit; ################## DELETE_CONFIRM ################################## # called by default form, used to confirm deletion of data in DB } elsif ($op eq 'delete_confirm') { - my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select variable,value,explanation,type,options from systempreferences where variable=?"); - $sth->execute($searchfield); - my $data=$sth->fetchrow_hashref; - $sth->finish; - $template->param(searchfield => $searchfield, - Tvalue => $data->{'value'}, - ); - - # END $OP eq DELETE_CONFIRM + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("select variable,value,explanation,type,options from systempreferences where variable=?"); + $sth->execute($searchfield); + my $data=$sth->fetchrow_hashref; + $sth->finish; + $template->param(searchfield => $searchfield, + Tvalue => $data->{'value'}, + ); + + # END $OP eq DELETE_CONFIRM ################## DELETE_CONFIRMED ################################## # called by delete_confirm, used to effectively confirm deletion of data in DB } elsif ($op eq 'delete_confirmed') { - my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("delete from systempreferences where variable=?"); - $sth->execute($searchfield); - $sth->finish; - # END $OP eq DELETE_CONFIRMED + my $dbh = C4::Context->dbh; + my $sth=$dbh->prepare("delete from systempreferences where variable=?"); + $sth->execute($searchfield); + $sth->finish; + + # END $OP eq DELETE_CONFIRMED ################## DEFAULT ################################## } else { # DEFAULT - #Adding tab management for system preferences - my $tab=$input->param('tab'); - - my $env; - my ($count,$results)=StringSearch($env,$searchfield,$tab); - my $toggle=0; - my @loop_data = (); - for (my $i=$offset; $i < ($offset+$pagesize<$count?$offset+$pagesize:$count); $i++){ - if ($toggle eq 0){ - $toggle=1; - } 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{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); - } - $tab=($tab?$tab:"Others"); - $template->param(loop => \@loop_data, $tab => 1); - if ($offset>0) { - my $prevpage = $offset-$pagesize; - $template->param("'); - } - if ($offset+$pagesize<$count) { - my $nextpage =$offset+$pagesize; - $template->param("a href=$script_name?offset=".$nextpage.'Next >>'); - } + #Adding tab management for system preferences + my $tab=$input->param('tab'); + $template->param($tab => 1); + my ($count,$results)=StringSearch($searchfield,$tab); + my $toggle=0; + my @loop_data = (); + for (my $i=$offset; $i < ($offset+$pagesize<$count?$offset+$pagesize:$count); $i++){ + if ($toggle eq 0){ + $toggle=1; + } 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); + } + $tab=($tab?$tab:"Local Use"); + $template->param(loop => \@loop_data, $tab => 1); + if ($offset>0) { + my $prevpage = $offset-$pagesize; + $template->param("'); + } + if ($offset+$pagesize<$count) { + my $nextpage =$offset+$pagesize; + $template->param("a href=$script_name?offset=".$nextpage.'Next >>'); + } + $template->param( tab => $tab, + ); } #---- END $OP eq DEFAULT - output_html_with_http_headers $input, $cookie, $template->output;