[Koha-patches] [PATCH] bug 2867 [1/2]: Move basic editing to main system preferences screen

Galen Charlton galen.charlton at liblime.com
Wed Dec 17 16:53:37 CET 2008


From: Jesse Weaver <jesse.weaver at liblime.com>

This allows the user to edit system preferences from the main system
preferences screen, rather than having to dig down into each
preference.

[This patch includes some modifications by Galen Charlton
 to fix XHTML validation errors and a couple errors that
 would crop up under warnings.]

Signed-off-by: Galen Charlton <galen.charlton at liblime.com>
---
 admin/systempreferences.pl                         |  280 +++++++++++---------
 .../intranet-tmpl/prog/en/css/staff-global.css     |    4 +
 .../prog/en/modules/admin/systempreferences.tmpl   |  124 ++++++++--
 3 files changed, 257 insertions(+), 151 deletions(-)

diff --git a/admin/systempreferences.pl b/admin/systempreferences.pl
index f95aea5..95f73e3 100755
--- a/admin/systempreferences.pl
+++ b/admin/systempreferences.pl
@@ -318,31 +318,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++;
                 }
@@ -350,28 +336,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++;
+
+		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)
@@ -437,7 +540,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 {
@@ -445,7 +547,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') );
         }
     }
@@ -470,94 +571,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
@@ -569,7 +587,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,";
     }
@@ -630,16 +649,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/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css
index a4661a5..d51db24 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..a72a023 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" style="display: none" 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>
-- 
1.5.5.GIT



More information about the Koha-patches mailing list