error(gettext("you are not logged in as an admin"));
}
+ if (! exists $config{setupfile}) {
+ error(gettext("setup file for this wiki is not known"));
+ }
+
eval q{use CGI::FormBuilder};
error($@) if $@;
next;
}
- print STDERR "on $key\n";
-
if (ref $config{$key} eq "ARRAY" || ref $info{example} eq "ARRAY") {
- print STDERR "$key is array\n";
@value=sort grep { length $_ } @value;
my @oldvalue=sort grep { length $_ }
(defined $config{$key} ? @{$config{$key}} : ());
}
else {
if (defined $config{$key} && $config{$key} eq $value[0]) {
- print STDERR "$key SET SAME ($config{$key})\n";
delete $rebuild{$field};
}
elsif (! defined $config{$key} && ! length $value[0]) {
- print STDERR "$key UNDEF and unset\n";
delete $rebuild{$field};
}
elsif ((! defined $config{$key} || ! $config{$key}) &&
! $value[0] && $info{type} eq "boolean") {
- print STDERR "omitting false $key\n";
delete $rebuild{$field};
}
else {
- print STDERR "for $key : $value[0] vs $config{$key}; type: $info{type}\n";
$config{$key}=$value[0];
}
}
$form->reset(0); # doesn't really make sense here
}
else {
- $form->field(name => "rebuild_asked", type => "hidden",
- value => 0, force => 1);
- # TODO save to real path
- IkiWiki::Setup::dump("/tmp/s");
- $form->text(gettext("Setup saved."));
+ IkiWiki::Setup::dump($config{setupfile});
+
+ IkiWiki::saveindex();
+ IkiWiki::unlockwiki();
+
+ # Print the top part of a standard misctemplate,
+ # then show the rebuild or refresh.
+ my $divider="xxx";
+ my $html=IkiWiki::misctemplate("setup", $divider);
+ IkiWiki::printheader($session);
+ my ($head, $tail)=split($divider, $html, 2);
+ print $head."<pre>\n";
+ my @command;
if ($form->submitted eq 'Rebuild Wiki') {
- # TODO rebuild
+ @command=("ikiwiki", "-setup", $config{setupfile},
+ "-rebuild", "-v");
}
else {
- # TODO refresh wiki and wrappers
+ @command=("ikiwiki", "-setup", $config{setupfile},
+ "-refresh", "-wrappers", "-v");
}
-
+
+ my $ret=system(@command);
+ print "\n<pre>";
+ if ($ret != 0) {
+ print '<p class="error">'.
+ sprintf(gettext("<p class=\"error\">Error: %s exited nonzero (%s)"),
+ join(" ", @command), $ret).
+ '</p>';
+ }
+
+ print $tail;
+ exit 0;
}
}