[Koha-patches] [PATCH] Move basic editing to main system preferences screen

Jesse Weaver jesse.weaver at liblime.com
Wed Sep 24 02:27:45 CEST 2008


From: Pianohacker <pianohacker at gmail.com>

This allows the user to edit system preferences from the main system
preferences table. It also updates many preferences' display properties to work
correctly in this new system.
---
 admin/systempreferences.pl                         |  267 ++++++++++----------
 installer/data/mysql/updatedatabase.pl             |   29 +++
 .../intranet-tmpl/prog/en/css/staff-global.css     |    4 +
 .../prog/en/modules/admin/systempreferences.tmpl   |  124 ++++++++--
 kohaversion.pl                                     |    2 +-
 5 files changed, 278 insertions(+), 148 deletions(-)

diff --git a/admin/systempreferences.pl b/admin/systempreferences.pl
index ef53715..163c667 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/</&lt;/g;
-            $data->{value} =~ s/>/&gt;/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/</&lt;/g;
-                    $data->{value} =~ s/>/&gt;/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,24 +335,134 @@ 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).",";
-        }
-        $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++;
+        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";
+            my $sth=$dbh->prepare($strsth);
+            $sth->execute();
+            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;
         }
-        $sth->finish;
     }
     return ($cnt,\@results);
 }
 
+sub GetPrefParams($) {
+    my $data = shift;
+    my $params = $data;
+    my @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->{'options'} = \@options;
+
+    return $params;
+}
+
 my $input = new CGI;
 my $searchfield = $input->param('searchfield');
 my $Tvalue = $input->param('Tvalue');
@@ -469,99 +565,17 @@ 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
 } elsif ($op eq 'add_validate') {
     my $dbh = C4::Context->dbh;
+    warn "Modding " . $input->param('variable');
     my $sth=$dbh->prepare("select * from systempreferences where variable=?");
     $sth->execute($input->param('variable'));
     # to handle multiple values
@@ -629,16 +643,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&amp;searchfield=".$results->[$i]{'variable'};
-        $row_data{delete} = "$script_name?op=delete_confirm&amp;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&amp;searchfield=".$results->[$i]{'variable'};
+        $row_data->{delete} = "$script_name?op=delete_confirm&amp;searchfield=".$results->[$i]{'variable'};
+        push(@loop_data, $row_data);
     }
     $tab=($tab?$tab:"Local Use");
     $template->param(loop => \@loop_data, $tab => 1);
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index 03e13c3..25ced36 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -2040,6 +2040,35 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     SetVersion ($DBversion);
 }
 
+$DBversion = "3.01.00.004";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("UPDATE `systempreferences` SET options='70|10' WHERE variable='intranetmainUserblock'");
+    $dbh->do("UPDATE `systempreferences` SET options='70|10' WHERE variable='intranetuserjs'");
+    $dbh->do("UPDATE `systempreferences` SET options='70|10' WHERE variable='opacheader'");
+    $dbh->do("UPDATE `systempreferences` SET options='70|10' WHERE variable='OpacMainUserBlock'");
+    $dbh->do("UPDATE `systempreferences` SET options='70|10' WHERE variable='OpacNav'");
+    $dbh->do("UPDATE `systempreferences` SET options='70|10' WHERE variable='opacuserjs'");
+    $dbh->do("UPDATE `systempreferences` SET options='30|10', type='Textarea' WHERE variable='OAI-PMH:Set'");
+    $dbh->do("UPDATE `systempreferences` SET options='50' WHERE variable='intranetstylesheet'");
+    $dbh->do("UPDATE `systempreferences` SET options='50' WHERE variable='intranetcolorstylesheet'");
+    $dbh->do("UPDATE `systempreferences` SET options='10' WHERE variable='globalDueDate'");
+    $dbh->do("UPDATE `systempreferences` SET type='Integer' WHERE variable='numSearchResults'");
+    $dbh->do("UPDATE `systempreferences` SET type='Integer' WHERE variable='OPACnumSearchResults'");
+    $dbh->do("UPDATE `systempreferences` SET type='Integer' WHERE variable='ReservesMaxPickupDelay'");
+    $dbh->do("UPDATE `systempreferences` SET type='Integer' WHERE variable='TransfersMaxDaysWarning'");
+    $dbh->do("UPDATE `systempreferences` SET type='Integer' WHERE variable='StaticHoldsQueueWeight'");
+    $dbh->do("UPDATE `systempreferences` SET type='Integer' WHERE variable='holdCancelLength'");
+    $dbh->do("UPDATE `systempreferences` SET type='Integer' WHERE variable='XISBNDailyLimit'");
+    $dbh->do("UPDATE `systempreferences` SET type='Float' WHERE variable='gist'");
+    $dbh->do("UPDATE `systempreferences` SET type='Free' WHERE variable='BakerTaylorUsername'");
+    $dbh->do("UPDATE `systempreferences` SET type='Free' WHERE variable='BakerTaylorPassword'");
+    $dbh->do("UPDATE `systempreferences` SET type='Textarea', options='70|10' WHERE variable='ISBD'");
+    $dbh->do("UPDATE `systempreferences` SET type='Textarea', options='70|10' WHERE variable='NoZebraIndexes'");
+    print "Upgrade to $DBversion done (fix display of many sysprefs)\n";
+    SetVersion ($DBversion);
+}
+
+
 =item DropAllForeignKeys($table)
 
   Drop all foreign keys of the table $table
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 1bef511..5f87de8 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 76e0134..229209d 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();
+        } );
         //]]>
 </script>
 </head>
@@ -111,9 +118,9 @@
                 <!-- /TMPL_IF -->
         <!-- TMPL_IF NAME="type-langselector" -->
         <!-- TMPL_IF NAME="languages_loop" -->
-	<table>
+    <table>
         <!-- TMPL_LOOP NAME="languages_loop" -->
-	    <tr><td>
+        <tr><td>
             <!-- TMPL_IF NAME="plural" -->
             <!-- TMPL_IF NAME="native_description" --><!-- TMPL_VAR NAME="native_description" --><!-- TMPL_ELSE --><!-- TMPL_VAR NAME="rfc4646_subtag" --><!-- /TMPL_IF -->
             <!-- TMPL_LOOP NAME="sublanguages_loop" --><table><tr><td>
@@ -136,18 +143,23 @@
                     <input value="<!-- TMPL_VAR NAME="rfc4646_subtag" -->" name="value" id="<!-- TMPL_VAR NAME="rfc4646_subtag" -->" type="checkbox" <!-- TMPL_IF NAME="group_enabled" -->checked="checked"<!-- /TMPL_IF --> /> </label>
                 <!-- /TMPL_IF -->
             <!-- /TMPL_IF -->
-	    </td></tr>
+        </td></tr>
         <!-- /TMPL_LOOP -->
-	</table>
+    </table>
         <!-- /TMPL_IF -->
 
         <!-- /TMPL_IF -->
 
                 <!-- TMPL_IF NAME="type-yesno" -->
                     <!-- TMPL_IF NAME="value-yes" -->
-                    <input type="radio" name="value" id="value" value="1" checked="checked" /><!-- TMPL_ELSE --><input type="radio" name="value" id="value" value="1" /><!-- /TMPL_IF --> <label for="value" class="yesno">ON</label>
-                <!-- TMPL_IF NAME="value-no" -->    
-                    <input type="radio" name="value" id="value-no" value="0" checked="checked" /><!-- TMPL_ELSE --><input type="radio" name="value" id="value-no" value="0" /><!-- /TMPL_IF --> <label for="value-no" class="yesno">OFF</label><!-- /TMPL_IF -->
+                        <input type="radio" name="value" id="value" value="1" checked="checked" /><!-- TMPL_ELSE --><input type="radio" name="value" id="value" value="1" />
+                    <!-- /TMPL_IF -->
+                    <label for="value" class="yesno">ON</label>
+                    <!-- TMPL_IF NAME="value-no" -->
+                        <input type="radio" name="value" id="value-no" value="0" checked="checked" /><!-- TMPL_ELSE --><input type="radio" name="value" id="value-no" value="0" />
+                    <!-- /TMPL_IF -->
+                    <label for="value-no" class="yesno">OFF</label>
+                <!-- /TMPL_IF -->
                 </li>
         </ol></fieldset>
         <fieldset class="action"><input type="submit" value="Save" /> 
@@ -195,11 +207,11 @@
         <!-- TMPL_VAR NAME="Tvalue" -->
         </td></tr></table>
         <form class="inline" action="<!-- TMPL_VAR NAME="script_name" -->" method="post">
-		<input type="hidden" name="op" value="delete_confirmed" />
-		<input type="hidden" name="searchfield" value="<!-- TMPL_VAR NAME="searchfield" -->" />
-		<input type="hidden" name="Tvalue" value="<!-- TMPL_VAR NAME="Tvalue" -->" />
+        <input type="hidden" name="op" value="delete_confirmed" />
+        <input type="hidden" name="searchfield" value="<!-- TMPL_VAR NAME="searchfield" -->" />
+        <input type="hidden" name="Tvalue" value="<!-- TMPL_VAR NAME="Tvalue" -->" />
         <input type="submit"  value="Yes, Delete" /></form> 
-		<form class="inline" action="<!-- TMPL_VAR NAME="script_name" -->" method="post"><input type="submit" value="No, Do not Delete" /></form>
+        <form class="inline" action="<!-- TMPL_VAR NAME="script_name" -->" method="post"><input type="submit" value="No, Do not Delete" /></form>
     
     
     <!-- /TMPL_IF -->
@@ -215,16 +227,16 @@
     <!-- TMPL_IF NAME="else" -->
     
     <div id="toolbar">
-	<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
+    <script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
     <script type="text/javascript">
     //<![CDATA[
     // prepare DOM for YUI Toolbar
      $(document).ready(function() {
         yuiToolbar();
-		<!-- TMPL_IF NAME="loop" -->$("#sysprefst").tablesorter({
-			sortList: [[0,0]],
-			headers: { 1: {sorter:false},2: { sorter: false },3: { sorter: false },4: { sorter: false }}
-		});<!-- /TMPL_IF -->
+        <!-- TMPL_IF NAME="loop" -->$("#sysprefst").tablesorter({
+            sortList: [[0,0]],
+            headers: { 1: {sorter:false},2: { sorter: false },3: { sorter: false },4: { sorter: false }}
+        });<!-- /TMPL_IF -->
      });
     // YUI Toolbar Functions
     function yuiToolbar() {
@@ -250,9 +262,83 @@
     <!-- TMPL_IF NAME="toggle" --><tr class="highlight"><!-- TMPL_ELSE --><tr><!-- /TMPL_IF -->
 
         <td><strong><a href="<!-- TMPL_VAR NAME="edit" -->"><!-- TMPL_VAR NAME="variable" --></a></strong></td><td> <!-- TMPL_VAR NAME="explanation" ESCAPE="HTML" --></td>
-        <td><!-- TMPL_IF NAME="yesno" -->
-        <!-- TMPL_IF NAME="yes" -->ON<!-- TMPL_ELSE -->OFF<!-- /TMPL_IF -->
-        <!-- TMPL_ELSE --><!-- TMPL_VAR NAME="value" --><!-- /TMPL_IF --></td>
+        <!-- TMPL_IF NAME="oneline" -->
+        <td class="single-line">
+        <!-- TMPL_ELSE -->
+        <td>
+        <!-- /TMPL_IF -->
+            <form action="/cgi-bin/koha/admin/systempreferences.pl" method="POST">
+
+                <!-- TMPL_IF NAME="type-free" -->
+                <input type="text" name="value" size="<!-- TMPL_VAR NAME="fieldlength" -->" value="<!-- TMPL_VAR NAME="value" escape="HTML" -->" />
+                <!-- /TMPL_IF -->
+                <!-- TMPL_IF NAME="type-textarea" -->
+                <a class="expand-textarea content_hidden" href="#">Click to Edit</a>
+                <textarea name="value" rows="<!--TMPL_VAR NAME="rows" -->" cols="<!-- TMPL_VAR NAME="cols" -->"><!-- TMPL_VAR NAME="value" escape="HTML" --></textarea>
+                <!-- /TMPL_IF -->
+                <!-- TMPL_IF NAME="type-choice" -->
+                <select name="value">
+                    <!-- TMPL_LOOP NAME="options" -->
+                        <!-- TMPL_IF NAME="selected" -->
+                            <option value="<!-- TMPL_VAR NAME="option" -->" selected="selected">
+                        <!-- TMPL_ELSE -->
+                            <option value="<!-- TMPL_VAR NAME="option" -->">
+                        <!-- /TMPL_IF --><!-- TMPL_VAR NAME="option" --></option>
+                    <!-- /TMPL_LOOP -->
+                </select>
+                <!-- /TMPL_IF -->
+                <!-- TMPL_IF NAME="type-langselector" -->
+                <!-- TMPL_IF NAME="languages_loop" -->
+                <table>
+                <!-- TMPL_LOOP NAME="languages_loop" -->
+                <tr><td>
+                    <!-- TMPL_IF NAME="plural" -->
+                    <!-- TMPL_IF NAME="native_description" --><!-- TMPL_VAR NAME="native_description" --><!-- TMPL_ELSE --><!-- TMPL_VAR NAME="rfc4646_subtag" --><!-- /TMPL_IF -->
+                    <!-- TMPL_LOOP NAME="sublanguages_loop" --><table><tr><td>
+                        <!-- TMPL_IF NAME="sublanguage_current" -->
+                            <label for="<!-- TMPL_VAR NAME="rfc4646_subtag" -->"><!-- TMPL_VAR NAME="native_description" --> <!-- TMPL_VAR NAME="script_description" --> <!-- TMPL_VAR NAME="region_description" --> <!-- TMPL_VAR NAME="variant_description" -->(<!-- TMPL_VAR NAME="rfc4646_subtag" -->)
+                            <input value="<!-- TMPL_VAR NAME="rfc4646_subtag" -->" name="value" id="<!-- TMPL_VAR NAME="rfc4646_subtag" -->" type="checkbox" <!-- TMPL_IF NAME="enabled" -->checked="checked"<!-- /TMPL_IF --> /> </label>
+
+                        <!-- TMPL_ELSE -->
+                            <label for="<!-- TMPL_VAR NAME="rfc4646_subtag" -->"><!-- TMPL_VAR NAME="native_description" --> <!-- TMPL_VAR NAME="script_description" --> <!-- TMPL_VAR NAME="region_description" --> <!-- TMPL_VAR NAME="variant_description" -->(<!-- TMPL_VAR NAME="rfc4646_subtag" -->)
+                            <input value="<!-- TMPL_VAR NAME="rfc4646_subtag" -->" name="value" id="<!-- TMPL_VAR NAME="rfc4646_subtag" -->" type="checkbox" <!-- TMPL_IF NAME="enabled" -->checked="checked"<!-- /TMPL_IF --> /> </label>
+                        <!-- /TMPL_IF --></td></tr></table>
+                    <!-- /TMPL_LOOP -->
+
+                    <!-- TMPL_ELSE -->
+                        <!-- TMPL_IF NAME="current" -->
+                    <label for="<!-- TMPL_VAR NAME="rfc4646_subtag" -->"><!-- TMPL_VAR NAME="native_description" -->(<!-- TMPL_VAR NAME="rfc4646_subtag" -->)
+                            <input value="<!-- TMPL_VAR NAME="rfc4646_subtag" -->" name="value" id="<!-- TMPL_VAR NAME="rfc4646_subtag" -->" type="checkbox" <!-- TMPL_IF NAME="group_enabled" -->checked="checked"<!-- /TMPL_IF --> /> </label>
+                        <!-- TMPL_ELSE -->
+                    <label for="<!-- TMPL_VAR NAME="rfc4646_subtag" -->"><!-- TMPL_VAR NAME="native_description" -->(<!-- TMPL_VAR NAME="rfc4646_subtag" -->)
+                            <input value="<!-- TMPL_VAR NAME="rfc4646_subtag" -->" name="value" id="<!-- TMPL_VAR NAME="rfc4646_subtag" -->" type="checkbox" <!-- TMPL_IF NAME="group_enabled" -->checked="checked"<!-- /TMPL_IF --> /> </label>
+                        <!-- /TMPL_IF -->
+                    <!-- /TMPL_IF -->
+                </td></tr>
+                <!-- /TMPL_LOOP -->
+                </table>
+                <!-- /TMPL_IF -->
+
+                <!-- /TMPL_IF -->
+
+                <!-- TMPL_IF NAME="type-yesno" -->
+                    <!-- TMPL_IF NAME="value-yes" -->
+                        <input type="radio" name="value" value="1" checked="checked" /><!-- TMPL_ELSE --><input type="radio" name="value" value="1" />
+                    <!-- /TMPL_IF -->
+                    <label for="value" class="yesno">ON</label>
+                    <!-- TMPL_IF NAME="value-no" -->
+                        <input type="radio" name="value" value="0" checked="checked" /><!-- TMPL_ELSE --><input type="radio" name="value" value="0" />
+                    <!-- /TMPL_IF -->
+                    <label for="value-no" class="yesno">OFF</label>
+                <!-- /TMPL_IF -->
+                <input type="hidden" name="op" value="add_validate" />
+                <input type="hidden" name="variable" value="<!-- TMPL_VAR NAME="variable" -->" />
+                <input type="hidden" name="prefoptions" value="<!-- TMPL_VAR NAME="prefoptions" escape="HTML" -->" />
+                <input type="hidden" name="preftype" value="<!-- TMPL_VAR NAME="type" -->" />
+                <input type="hidden" name="explanation" value="<!-- TMPL_VAR NAME="explanation" escape="HTML" -->" />
+                <input type="submit" value="Save" />
+            </form>
+        </td>
 
         <td><a href="<!-- TMPL_VAR NAME="edit" -->">Edit </a></td>
         <td><a href="<!-- TMPL_VAR NAME="delete" -->">Delete</a></td>
diff --git a/kohaversion.pl b/kohaversion.pl
index e849ae1..7671aa5 100644
--- a/kohaversion.pl
+++ b/kohaversion.pl
@@ -10,7 +10,7 @@
 use strict;
 
 sub kohaversion {
-    our $VERSION = '3.01.00.003';
+    our $VERSION = '3.01.00.004';
     # version needs to be set this way
     # so that it can be picked up by Makefile.PL
     # during install
-- 
1.6.0.1




More information about the Koha-patches mailing list