more re-arranging prior to release
[koha.git] / admin / systempreferences.pl
index acac5c9..5a42e76 100755 (executable)
@@ -46,9 +46,12 @@ use C4::Auth;
 use C4::Context;
 use C4::Koha;
 use C4::Languages;
+use C4::ClassSource;
 use C4::Output;
 use C4::Context;
 
+# use Smart::Comments;
+
 
 # FIXME, shouldnt we store this stuff in the systempreferences table? 
 
@@ -56,10 +59,19 @@ my %tabsysprefs;
 # 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{dateformat}="Admin";
     $tabsysprefs{delimiter}="Admin";
     $tabsysprefs{IndependantBranches}="Admin";
+    $tabsysprefs{HomeOrHoldingBranch}="Admin";
     $tabsysprefs{insecure}="Admin";
     $tabsysprefs{KohaAdmin}="Admin";
     $tabsysprefs{KohaAdminEmailAddress}="Admin";
@@ -67,33 +79,38 @@ my %tabsysprefs;
     $tabsysprefs{timeout}="Admin";
     $tabsysprefs{Intranet_includes}="Admin";
     $tabsysprefs{AutoLocation}="Admin";
+    $tabsysprefs{DebugLevel}="Admin";
+    $tabsysprefs{SessionStorage}="Admin";
+    $tabsysprefs{noItemTypeImages}="Admin";
 
 # Authorities
     $tabsysprefs{authoritysep}="Authorities";
     $tabsysprefs{AuthDisplayHierarchy}="Authorities";
-# Catalogue
-    $tabsysprefs{advancedMARCEditor}="Catalogue";
-    $tabsysprefs{autoBarcode}="Catalogue";
-    $tabsysprefs{hide_marc}="Catalogue";
-    $tabsysprefs{IntranetBiblioDefaultView} = "Catalogue";
-    $tabsysprefs{ISBD}="Catalogue";
-    $tabsysprefs{itemcallnumber}="Catalogue";
-    $tabsysprefs{kohaspsuggest} = "Catalogue";
-    $tabsysprefs{LabelMARCView}="Catalogue";
-    $tabsysprefs{marc}="Catalogue";
-    $tabsysprefs{marcflavour}="Catalogue";
-    $tabsysprefs{serialsadditems}="Catalogue";
-    $tabsysprefs{sortbynonfiling}="Catalogue";
-    $tabsysprefs{MARCOrgCode}="Catalogue";
-    $tabsysprefs{z3950AuthorAuthFields}="Catalogue";
-    $tabsysprefs{z3950NormalizeAuthor}="Catalogue";
-    $tabsysprefs{Stemming}="Catalogue";
-    $tabsysprefs{WeightFields}="Catalogue";
-    $tabsysprefs{expandedSearchOption}="Catalogue";
-    $tabsysprefs{NoZebra}="Catalogue";
-    $tabsysprefs{NoZebraIndexes}="Catalogue";
-    $tabsysprefs{ReceiveBackIssues}="Catalogue";
-    
+    $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";
@@ -107,36 +124,86 @@ my %tabsysprefs;
     $tabsysprefs{ReservesMaxPickUpDelay}="Circulation";
     $tabsysprefs{TransfersMaxDaysWarning}="Circulation";
     $tabsysprefs{useDaysMode}="Circulation";
-
-# Intranet
-    $tabsysprefs{TemplateEncoding}="Intranet";
-    $tabsysprefs{template}="Intranet";
-    $tabsysprefs{intranetstylesheet}="Intranet";
-    $tabsysprefs{IntranetNav}="Intranet";
-    $tabsysprefs{intranetcolorstylesheet}="Intranet";
-    $tabsysprefs{intranetuserjs}="Intranet";
-# Members
-    $tabsysprefs{automembernum}="Members";
-    $tabsysprefs{checkdigit}="Members";
-    $tabsysprefs{intranetreadinghistory}="Members";
-    $tabsysprefs{NotifyBorrowerDeparture}="Members";
-    $tabsysprefs{memberofinstitution}="Members";
-    $tabsysprefs{ReadingHistory}="Members";
-    $tabsysprefs{BorrowerMandatoryField}="Members";
-    $tabsysprefs{borrowerRelationship}="Members";
-    $tabsysprefs{BorrowersTitles}="Members";    
-    $tabsysprefs{patronimages}="Members";
-    $tabsysprefs{MinPasswordLength}="Members";
+    $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";
+# 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";
+
+# 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";
+
+
 # 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{opaclanguages}="OPAC";
     $tabsysprefs{opaclargeimage}="OPAC";
     $tabsysprefs{opaclayoutstylesheet}="OPAC";
     $tabsysprefs{OpacNav}="OPAC";
@@ -146,8 +213,21 @@ my %tabsysprefs;
     $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";
@@ -165,6 +245,7 @@ my %tabsysprefs;
     $tabsysprefs{suggestion}="OPACFeatures";
     $tabsysprefs{OpacTopissue}="OPACFeatures";
     $tabsysprefs{OpacBrowser}="OPACFeatures";
+    $tabsysprefs{kohaspsuggest} = "OPACFeatures";
 
 # LOGFeatures
     $tabsysprefs{CataloguingLog}  = "LOGFeatures";
@@ -183,7 +264,23 @@ sub StringSearch  {
     my $count=@data;
     my @results;
     my $cnt=0;
-    if ($type){
+
+    # 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/</&lt;/g;
+            $data->{value} =~ s/>/&gt;/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 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");
@@ -310,6 +407,8 @@ if ($op eq 'add_form') {
         $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;
@@ -352,6 +451,20 @@ if ($op eq 'add_form') {
             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='';
@@ -364,11 +477,11 @@ if ($op eq 'add_form') {
             $currently_selected_languages->{$language}=1;
             $counter++;
         }
-               my $langavail = getTranslatedLanguages();
+        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
+            #FIXME: could add language_name and language_locale_name for better display
             push @options, { option => $language->{'language_code'}, counter => $counter };
             $counter++;
         }
@@ -426,12 +539,13 @@ if ($op eq 'add_form') {
     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');
-    
+    $template->param($tab => 1);
     my ($count,$results)=StringSearch($searchfield,$tab);
     my $toggle=0;
     my @loop_data = ();
@@ -444,6 +558,8 @@ if ($op eq 'add_form') {
         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&amp;searchfield=".$results->[$i]{'variable'};