my $name="enable.$plugin";
$form->field(
name => $name,
- label => sprintf(gettext("enable %s?"), $plugin),
- type => "radio",
- value => $enabled,
+ label => "",
+ type => "checkbox",
fieldset => $section,
- options => [
- [ 1 => gettext("Yes") ],
- [ 0 => gettext("No") ]
- ],
+ options => [ [ 1 => sprintf(gettext("enable %s?"), $plugin) ]]
);
+ if (! $form->submitted) {
+ $form->field(name => $name, value => $enabled);
+ }
if ($plugin_forced) {
$form->field(name => $name, disabled => 1);
}
}
# multiple plugins can have the same field
- my $name=defined $plugin ? $plugin.".".$key : $key;
+ my $name=defined $plugin ? $plugin.".".$key : $section.".".$key;
my $value=$config{$key};
- if ($info{safe} && (ref $config{$key} eq 'ARRAY' || ref $info{example} eq 'ARRAY')) {
- push @{$value}, "", ""; # blank items for expansion
+ if ($info{safe} && (ref $value eq 'ARRAY' || ref $info{example} eq 'ARRAY')) {
+ $value=[@{$value}, "", ""]; # blank items for expansion
}
if ($info{type} eq "string") {
elsif ($info{type} eq "boolean") {
$form->field(
name => $name,
- label => $description,
- type => "radio",
- value => $value,
- options => [
- [ 1 => gettext("Yes") ],
- [ 0 => gettext("No") ]
- ],
+ label => "",
+ type => "checkbox",
+ options => [ [ 1 => $description ] ],
fieldset => $section,
);
+ if (! $form->submitted) {
+ $form->field(name => $name, value => $value);
+ }
}
if (! $info{safe}) {
return %enabledfields;
} #}}}
+sub enable_plugin ($) { #{{{
+ my $plugin=shift;
+
+ $config{disable_plugins}=[grep { $_ ne $plugin } @{$config{disable_plugins}}];
+ push @{$config{add_plugins}}, $plugin;
+}
+
+sub disable_plugin ($) { #{{{
+ my $plugin=shift;
+
+ if (grep { $_ eq $plugin } @{$config{add_plugins}}) {
+ $config{add_plugins}=[grep { $_ ne $plugin } @{$config{add_plugins}}];
+ }
+ else {
+ push @{$config{disable_plugins}}, $plugin;
+ }
+}
+
sub showform ($$) { #{{{
my $cgi=shift;
my $session=shift;
[plugins => gettext("plugins")]
],
action => $config{cgiurl},
- table => 0,
template => {type => 'div'},
stylesheet => IkiWiki::baseurl()."style.css",
);
$form->field(name => "do", type => "hidden", value => "setup",
force => 1);
+ $form->field(name => "rebuild_asked", type => "hidden");
if ($form->submitted eq 'Basic Mode') {
$form->field(name => "showadvanced", type => "hidden",
if ($field=~/^enable\.(.*)/) {
my $plugin=$1;
+ $value[0]=0 if ! length $value[0];
if ($value[0] != exists $enabled_plugins{$plugin}) {
- # TODO plugin enable/disable
+ if ($value[0]) {
+ enable_plugin($plugin);
+ }
+ else {
+ disable_plugin($plugin);
+
+ }
}
else {
delete $rebuild{$field};
elsif (! defined $config{$key} && ! length $value[0]) {
delete $rebuild{$field};
}
- elsif (! defined $config{$key} && ! $value[0] &&
- $info{type} eq "boolean") {
+ elsif ((! defined $config{$key} || ! $config{$key}) &&
+ ! $value[0] && $info{type} eq "boolean") {
delete $rebuild{$field};
}
else {
foreach my $field ($form->field) {
$required=1 if $rebuild{$field};
next if exists $rebuild{$field};
- $form->field(name => $field, type => "hidden",
- force => 1);
+ $form->field(name => $field, type => "hidden");
}
if ($required) {
$form->text(gettext("The configuration changes shown below require a wiki rebuild to take effect."));
$form->text(gettext("For the configuration changes shown below to fully take effect, you may need to rebuild the wiki."));
$buttons=["Rebuild Wiki", "Save Setup", "Cancel"];
}
- $form->field(name => "rebuild_asked", type => "hidden",
- value => 1, force => 1);
+ $form->field(name => "rebuild_asked", value => 1, force => 1);
$form->reset(0); # doesn't really make sense here
}
else {
# TODO save to real path
IkiWiki::Setup::dump("/tmp/s");
$form->text(gettext("Setup saved."));
-
+
if ($form->submitted eq 'Rebuild Wiki') {
# TODO rebuild
}
+ else {
+ # TODO refresh wiki and wrappers
+ }
+
}
}