summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@gnu.kitenet.net>2010-02-12 00:21:12 -0500
committerJoey Hess <joey@gnu.kitenet.net>2010-02-12 00:21:12 -0500
commit18394f6ba99422b50e3796e91030498f93e7c4a1 (patch)
tree2308a24645e2fb70c794cd9b19932d3fa16b7811
parent8fdc238c8c9bdfd196310c6261d9ad328a4d9fd2 (diff)
improve websetup fieldset display
to handle sections
-rw-r--r--IkiWiki/Plugin/websetup.pm34
1 files changed, 24 insertions, 10 deletions
diff --git a/IkiWiki/Plugin/websetup.pm b/IkiWiki/Plugin/websetup.pm
index 76ca1c9e2..445552e40 100644
--- a/IkiWiki/Plugin/websetup.pm
+++ b/IkiWiki/Plugin/websetup.pm
@@ -66,6 +66,11 @@ sub showfields ($$$@) {
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";
@@ -78,15 +83,12 @@ sub showfields ($$$@) {
# 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;
@@ -97,6 +99,16 @@ sub showfields ($$$@) {
@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";
@@ -137,6 +149,9 @@ sub showfields ($$$@) {
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} : "")];
@@ -203,11 +218,11 @@ sub showfields ($$$@) {
$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;
@@ -258,7 +273,6 @@ sub showform ($$) {
params => $cgi,
fieldsets => [
[main => gettext("main")],
- [plugins => gettext("plugins")]
],
action => $config{cgiurl},
template => {type => 'div'},