} #}}}
-sub showform ($$$$) { #{{{
+sub showform ($$$$;@) { #{{{
my $form=shift;
my $buttons=shift;
my $session=shift;
}
printheader($session);
- print misctemplate($form->title, $form->render(submit => $buttons));
+ print misctemplate($form->title, $form->render(submit => $buttons), @_);
}
sub redirect ($$) { #{{{
file_pruned($page, $config{srcdir}) || $page=~/^\//) {
error("bad page name");
}
+
+ my $baseurl=$config{url}."/".htmlpage($page);
my $from;
if (defined $form->field('from')) {
$form->tmpl_param("can_commit", $config{rcs});
$form->tmpl_param("indexlink", indexlink());
$form->tmpl_param("helponformattinglink",
- htmllink("", "", "ikiwiki/formatting",
+ htmllink($page, $page, "ikiwiki/formatting",
noimageinline => 1,
linktext => "FormattingHelp"));
- $form->tmpl_param("baseurl", baseurl());
if ($form->submitted eq "Cancel") {
if ($form->field("do") eq "create" && defined $from) {
return;
}
elsif ($form->submitted eq "Preview") {
+ my $new=not exists $pagesources{$page};
+ if ($new) {
+ # temporarily record its type
+ $pagesources{$page}=$page.".".$type;
+ }
+
my $content=$form->field('editcontent');
run_hooks(editcontent => sub {
$content=shift->(
});
$form->tmpl_param("page_preview",
htmlize($page, $type,
- linkify($page, "",
+ linkify($page, $page,
preprocess($page, $page,
filter($page, $page, $content), 0, 1))));
+
+ if ($new) {
+ delete $pagesources{$page};
+ }
# previewing may have created files on disk
saveindex();
}
$dir=~s![^/]+/+$!!;
push @page_locs, $dir.$page;
}
+
+ push @page_locs, "$config{userdir}/$page"
+ if length $config{userdir};
}
- push @page_locs, "$config{userdir}/$page"
- if length $config{userdir};
@page_locs = grep {
! exists $pagecase{lc $_}
if (! @page_locs) {
# hmm, someone else made the page in the
# meantime?
- redirect($q, "$config{url}/".htmlpage($page));
- return;
+ if ($form->submitted eq "Preview") {
+ # let them go ahead with the edit
+ # and resolve the conflict at save
+ # time
+ @page_locs=$page;
+ }
+ else {
+ redirect($q, "$config{url}/".htmlpage($page));
+ return;
+ }
}
my @editable_locs = grep {
$form->title(sprintf(gettext("editing %s"), pagetitle($page)));
}
- showform($form, \@buttons, $session, $q);
+ showform($form, \@buttons, $session, $q, forcebaseurl => $baseurl);
}
else {
# save page
$form->field(name => "page", type => 'hidden');
$form->field(name => "type", type => 'hidden');
$form->title(sprintf(gettext("editing %s"), $page));
- showform($form, \@buttons, $session, $q);
+ showform($form, \@buttons, $session, $q, forcebaseurl => $baseurl);
return;
}
elsif ($form->field("do") eq "create" && $exists) {
value => readfile("$config{srcdir}/$file").
"\n\n\n".$form->field("editcontent"),
force => 1);
- showform($form, \@buttons, $session, $q);
+ showform($form, \@buttons, $session, $q, forcebaseurl => $baseurl);
return;
}
$form->field(name => "page", type => 'hidden');
$form->field(name => "type", type => 'hidden');
$form->title(sprintf(gettext("editing %s"), $page));
- showform($form, \@buttons, $session, $q);
+ showform($form, \@buttons, $session, $q,
+ forcebaseurl => $baseurl);
return;
}
$form->field(name => "page", type => 'hidden');
$form->field(name => "type", type => 'hidden');
$form->title(sprintf(gettext("editing %s"), $page));
- showform($form, \@buttons, $session, $q);
+ showform($form, \@buttons, $session, $q,
+ forcebaseurl => $baseurl);
return;
}
else {