Photos
Blog
Projects
vanrenterghem.biz
projects
/
git.ikiwiki.info.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remember to run all the tests before committing!
[git.ikiwiki.info.git]
/
IkiWiki
/
Plugin
/
editpage.pm
diff --git
a/IkiWiki/Plugin/editpage.pm
b/IkiWiki/Plugin/editpage.pm
index df29bcc98d5ba95663b57a6c252fd6a2432e0627..54051c58c2cf836e258c110d0ec4a47d6ff1e0a2 100644
(file)
--- a/
IkiWiki/Plugin/editpage.pm
+++ b/
IkiWiki/Plugin/editpage.pm
@@
-91,6
+91,9
@@
sub cgi_editpage ($$) {
# This untaint is safe because we check file_pruned and
# wiki_file_regexp.
my ($page)=$form->field('page')=~/$config{wiki_file_regexp}/;
# This untaint is safe because we check file_pruned and
# wiki_file_regexp.
my ($page)=$form->field('page')=~/$config{wiki_file_regexp}/;
+ if (! defined $page) {
+ error(gettext("bad page name"));
+ }
$page=possibly_foolish_untaint($page);
my $absolute=($page =~ s#^/+##); # absolute name used to force location
if (! defined $page || ! length $page ||
$page=possibly_foolish_untaint($page);
my $absolute=($page =~ s#^/+##); # absolute name used to force location
if (! defined $page || ! length $page ||
@@
-128,7
+131,8
@@
sub cgi_editpage ($$) {
# favor the type of linking page
$type=pagetype($pagesources{$from});
}
# favor the type of linking page
$type=pagetype($pagesources{$from});
}
- $type=$config{default_pageext} unless defined $type;
+ $type=$config{default_pageext}
+ if ! defined $type || $type=~/^_/; # not internal type
$file=newpagefile($page, $type);
if (! $form->submitted) {
$form->field(name => "rcsinfo", value => "", force => 1);
$file=newpagefile($page, $type);
if (! $form->submitted) {
$form->field(name => "rcsinfo", value => "", force => 1);
@@
-223,27
+227,36
@@
sub cgi_editpage ($$) {
$absolute ||
$form->submitted) {
@page_locs=$best_loc=$page;
$absolute ||
$form->submitted) {
@page_locs=$best_loc=$page;
+ unshift @page_locs, lc($page)
+ if ! $form->submitted && lc($page) ne $page;
+ }
+ elsif (lc $page eq lc $config{discussionpage}) {
+ @page_locs=$best_loc="$from/".lc($page);
}
else {
my $dir=$from."/";
$dir=~s![^/]+/+$!!;
if ((defined $form->field('subpage') &&
}
else {
my $dir=$from."/";
$dir=~s![^/]+/+$!!;
if ((defined $form->field('subpage') &&
- length $form->field('subpage')) ||
- $page eq lc($config{discussionpage})) {
+ length $form->field('subpage'))) {
$best_loc="$from/$page";
}
else {
$best_loc=$dir.$page;
}
$best_loc="$from/$page";
}
else {
$best_loc=$dir.$page;
}
+ my $mixedcase=lc($page) ne $page;
+
+ push @page_locs, $dir.lc($page) if $mixedcase;
push @page_locs, $dir.$page;
push @page_locs, $dir.$page;
- push @page_locs, "$from/$page";
+ push @page_locs, $from."/".lc($page) if $mixedcase;
+ push @page_locs, $from."/".$page;
while (length $dir) {
$dir=~s![^/]+/+$!!;
while (length $dir) {
$dir=~s![^/]+/+$!!;
+ push @page_locs, $dir.lc($page) if $mixedcase;
push @page_locs, $dir.$page;
}
push @page_locs, $dir.$page;
}
-
+
my $userpage=IkiWiki::userpage($page);
push @page_locs, $userpage
if ! grep { $_ eq $userpage } @page_locs;
my $userpage=IkiWiki::userpage($page);
push @page_locs, $userpage
if ! grep { $_ eq $userpage } @page_locs;