my $q=shift;
my $session=shift;
- my $attachment=! defined IkiWiki::pagetype($pagesources{$src});
+ my $attachment=! defined pagetype($pagesources{$src});
# Must be a known source file.
if (! exists $pagesources{$src}) {
error($@) if $@;
my $f = CGI::FormBuilder->new(
name => "rename",
- title => sprintf(gettext("rename %s"), IkiWiki::pagetitle($page)),
+ title => sprintf(gettext("rename %s"), pagetitle($page)),
header => 0,
charset => "utf-8",
method => 'POST',
$f->field(name => "do", type => "hidden", value => "rename", force => 1);
$f->field(name => "page", type => "hidden", value => $page, force => 1);
- $f->field(name => "new_name", value => IkiWiki::pagetitle($page), size => 60);
+ $f->field(name => "new_name", value => pagetitle($page), size => 60);
if (!$q->param("attachment")) {
# insert the standard extensions
my @page_types;
$session->param(postrename => scalar $q->Vars);
IkiWiki::cgi_savesession($session);
- my ($f, $buttons)=rename_form($q, $session, $page);
if (defined $attachment) {
- $f->field(name => "attachment", value => $attachment, force => 1);
+ $q->param(-name => "attachment", -value => $attachment);
}
-
+ my ($f, $buttons)=rename_form($q, $session, $page);
IkiWiki::showform($f, $buttons, $session, $q);
exit 0;
} #}}}
my %params=@_;
my $form=$params{form};
- if (defined $form->field("do") && $form->field("do") eq "edit") {
+ if (defined $form->field("do") && ($form->field("do") eq "edit" ||
+ $form->field("do") eq "create")) {
my $q=$params{cgi};
my $session=$params{session};
- if ($form->submitted eq "Rename") {
+ if ($form->submitted eq "Rename" && $form->field("do") eq "edit") {
rename_start($q, $session, 0, $form->field("page"));
}
elsif ($form->submitted eq "Rename Attachment") {
my $form=$params{form};
my $q=$params{cgi};
- if (defined $form->field("do") && $form->field("do") eq "edit") {
+ if (defined $form->field("do") && ($form->field("do") eq "edit" ||
+ $form->field("do") eq "create")) {
# Rename button for the page, and also for attachments.
- push @{$params{buttons}}, "Rename";
+ push @{$params{buttons}}, "Rename" if $form->field("do") eq "edit";
$form->tmpl_param("field-rename" => '<input name="_submit" type="submit" value="Rename Attachment" />');
if (defined $renamesummary) {
# performed in check_canrename later.
my $src=$q->param("page");
my $srcfile=IkiWiki::possibly_foolish_untaint($pagesources{$src});
- my $dest=IkiWiki::possibly_foolish_untaint(IkiWiki::titlepage($q->param("new_name")));
+ my $dest=IkiWiki::possibly_foolish_untaint(titlepage($q->param("new_name")));
my $destfile=$dest;
if (! $q->param("attachment")) {
my $type=$q->param('type');
$type=$ext;
}
- $destfile.=".".$type;
+ $destfile=newpagefile($dest, $type);
}
push @torename, {
src => $src,
# See if any subpages need to be renamed.
if ($q->param("subpages") && $src ne $dest) {
foreach my $p (keys %pagesources) {
- if ($pagesources{$p}=~m/^\Q$src\E\//) {
- my $d=$pagesources{$p};
- $d=~s/^\Q$src\E\//$dest\//;
- push @torename, {
- src => $p,
- srcfile => $pagesources{$p},
- dest => pagename($d),
- destfile => $d,
- required => 0,
- };
- }
+ next unless $pagesources{$p}=~m/^\Q$src\E\//;
+ # If indexpages is enabled, the
+ # srcfile should not be confused
+ # with a subpage.
+ next if $pagesources{$p} eq $srcfile;
+
+ my $d=$pagesources{$p};
+ $d=~s/^\Q$src\E\//$dest\//;
+ push @torename, {
+ src => $p,
+ srcfile => $pagesources{$p},
+ dest => pagename($d),
+ destfile => $d,
+ required => 0,
+ };
}
}