+ if ($key eq 'plugin') {
+ %plugininfo=%info;
+ next;
+ }
+
+ push @show, $key, \%info;
+ }
+
+ my $section=defined $plugin ? $plugin." ".gettext("plugin") : "main";
+ my %enabledfields;
+ my $shownfields=0;
+
+ my $plugin_forced=defined $plugin && (! $plugininfo{safe} ||
+ (exists $config{websetup_force_plugins} && grep { $_ eq $plugin } @{$config{websetup_force_plugins}}));
+ if ($plugin_forced && ! $enabled) {
+ # plugin is forced disabled, so skip its configuration
+ @show=();
+ }
+ # show plugin toggle
+ if (defined $plugin && (! $plugin_forced || $config{websetup_advanced})) {
+ my $name="enable.$plugin";
+ $form->field(
+ name => $name,
+ label => "",
+ type => "checkbox",
+ options => [ [ 1 => sprintf(gettext("enable %s?"), $plugin) ] ],
+ value => $enabled,
+ fieldset => $section,
+ );
+ if ($plugin_forced) {
+ $form->field(name => $name, disabled => 1);
+ }
+ else {
+ $enabledfields{$name}=[$name, \%plugininfo];
+ }
+ }
+
+ while (@show) {
+ my $key=shift @show;
+ my %info=%{shift @show};
+
+ my $description=$info{description};
+ if (exists $info{link} && length $info{link}) {
+ if ($info{link} =~ /^\w+:\/\//) {
+ $description="<a href=\"$info{link}\">$description</a>";
+ }
+ else {
+ $description=htmllink("", "", $info{link}, noimageinline => 1, linktext => $description);
+ }
+ }
+
+ # multiple plugins can have the same field
+ my $name=defined $plugin ? $plugin.".".$key : $key;