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