while (@_) {
my $key=shift;
my %info=%{shift()};
+
+ if ($key eq 'plugin') {
+ %plugininfo=%info;
+ next;
+ }
# skip internal settings
next if defined $info{type} && $info{type} eq "internal";
# these are handled specially, so don't show
next if $key eq 'add_plugins' || $key eq 'disable_plugins';
- if ($key eq 'plugin') {
- %plugininfo=%info;
- next;
- }
-
push @show, $key, \%info;
}
- my $section=defined $plugin ? $plugin." ".gettext("plugin") : "main";
+ my $section=defined $plugin
+ ? sprintf(gettext("%s plugin:"), $plugininfo{section}).$plugin
+ : "main";
my %enabledfields;
my $shownfields=0;
@show=();
}
+ my $section_fieldset;
+ if (defined $plugin) {
+ # Define the combined fieldset for the plugin's section.
+ # This ensures that this fieldset comes first.
+ $section_fieldset=sprintf(gettext("%s plugins"), $plugininfo{section});
+ $form->field(name => "placeholder.$plugininfo{section}",
+ type => "hidden",
+ fieldset => $section_fieldset);
+ }
+
# show plugin toggle
if (defined $plugin && (! $plugin_forced || $config{websetup_advanced})) {
my $name="enable.$plugin";
my $name=defined $plugin ? $plugin.".".$key : $section.".".$key;
my $value=$config{$key};
+ if (! defined $value) {
+ $value="";
+ }
if (ref $value eq 'ARRAY' || ref $info{example} eq 'ARRAY') {
$value=[(ref $value eq 'ARRAY' ? map { Encode::encode_utf8($_) } @{$value} : "")];
$shownfields++;
}
- # if no fields were shown for the plugin, drop it into the
- # plugins fieldset
+ # if no fields were shown for the plugin, drop it into a combined
+ # fieldset for its section
if (defined $plugin && (! $plugin_forced || $config{websetup_advanced}) &&
! $shownfields) {
- $form->field(name => "enable.$plugin", fieldset => "plugins");
+ $form->field(name => "enable.$plugin", fieldset => $section_fieldset);
}
return %enabledfields;
params => $cgi,
fieldsets => [
[main => gettext("main")],
- [plugins => gettext("plugins")]
],
action => $config{cgiurl},
template => {type => 'div'},