use radio, not checkbox, for booleans

Had to do this due to one of CGI::FormBuilder's more annoying quirks -- it
loses the value of a checkbox field with only one option, always treating
it as checked.
master
Joey Hess 2008-08-03 20:20:25 -04:00
parent 3905645342
commit 2a712c8817
1 changed files with 13 additions and 8 deletions

View File

@ -102,11 +102,14 @@ sub showfields ($$$@) { #{{{
my $name="enable.$plugin"; my $name="enable.$plugin";
$form->field( $form->field(
name => $name, name => $name,
label => "", label => sprintf(gettext("enable %s?"), $plugin),
type => "checkbox", type => "radio",
options => [ [ 1 => sprintf(gettext("enable %s?"), $plugin) ] ],
value => $enabled, value => $enabled,
fieldset => $section, fieldset => $section,
options => [
[ 1 => gettext("Yes") ],
[ 0 => gettext("No") ]
],
); );
if ($plugin_forced) { if ($plugin_forced) {
$form->field(name => $name, disabled => 1); $form->field(name => $name, disabled => 1);
@ -178,10 +181,13 @@ sub showfields ($$$@) { #{{{
elsif ($info{type} eq "boolean") { elsif ($info{type} eq "boolean") {
$form->field( $form->field(
name => $name, name => $name,
label => "", label => $description,
type => "checkbox", type => "radio",
value => $value, value => $value,
options => [ [ 1 => $description ] ], options => [
[ 1 => gettext("Yes") ],
[ 0 => gettext("No") ]
],
fieldset => $section, fieldset => $section,
); );
} }
@ -231,6 +237,7 @@ sub showform ($$) { #{{{
[plugins => gettext("plugins")] [plugins => gettext("plugins")]
], ],
action => $config{cgiurl}, action => $config{cgiurl},
table => 0,
template => {type => 'div'}, template => {type => 'div'},
stylesheet => IkiWiki::baseurl()."style.css", stylesheet => IkiWiki::baseurl()."style.css",
); );
@ -345,14 +352,12 @@ sub showform ($$) { #{{{
delete $rebuild{$field}; delete $rebuild{$field};
} }
else { else {
print STDERR ">>$key (@value) ($config{$key})\n";
$config{$key}=$value[0]; $config{$key}=$value[0];
} }
} }
} }
if (%rebuild && ! $form->field("rebuild_asked")) { if (%rebuild && ! $form->field("rebuild_asked")) {
print STDERR ">>".(join "," , keys %rebuild)."\n";
my $required=0; my $required=0;
foreach my $field ($form->field) { foreach my $field ($form->field) {
$required=1 if $rebuild{$field}; $required=1 if $rebuild{$field};