summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
f6b33b8)
in filenames. Now converts to valid filenames automatically.
Note, need to --refresh your wiki after updating to this version, if you
use any pages with __nn__ in their names.
);
my @buttons=("Save Page", "Preview", "Cancel");
);
my @buttons=("Save Page", "Preview", "Cancel");
- my ($page)=$form->param('page')=~/$config{wiki_file_regexp}/;
- if (! defined $page || ! length $page || $page ne $q->param('page') ||
+ # This untaint is safe because titlepage removes any problimatic
+ # characters.
+ my ($page)=titlepage(possibly_foolish_untaint(lc($form->param('page'))));
+ if (! defined $page || ! length $page ||
$page=~/$config{wiki_file_prune_regexp}/ || $page=~/^\//) {
error("bad page name");
}
$page=~/$config{wiki_file_prune_regexp}/ || $page=~/^\//) {
error("bad page name");
}
my $dir=$from."/";
$dir=~s![^/]+/$!!;
my $dir=$from."/";
$dir=~s![^/]+/$!!;
- if (length $form->param('subpage') ||
+ if ((defined $form->param('subpage') && length $form->param('subpage')) ||
$page eq 'discussion') {
$best_loc="$from/$page";
}
$page eq 'discussion') {
$best_loc="$from/$page";
}
cgi_prefs($q, $session);
}
elsif ($do eq 'blog') {
cgi_prefs($q, $session);
}
elsif ($do eq 'blog') {
- # munge page name to be valid, no matter what freeform text
- # is entered
- my $page=lc($q->param('title'));
- $page=~y/ /_/;
- $page=~s/([^-A-Za-z0-9_:+\/])/"__".ord($1)."__"/eg;
- # if the page already exist, munge it to be unique
+ my $page=titlepage(lc($q->param('title')));
+ # if the page already exists, munge it to be unique
my $from=$q->param('from');
my $add="";
while (exists $oldpagemtime{"$from/$page$add"}) {
my $from=$q->param('from');
my $add="";
while (exists $oldpagemtime{"$from/$page$add"}) {
my $page=shift;
$content =~ s{(\\?)$config{wiki_link_regexp}}{
my $page=shift;
$content =~ s{(\\?)$config{wiki_link_regexp}}{
- $2 ? ( $1 ? "[[$2|$3]]" : htmllink($page, $3, 0, 0, pagetitle($2)))
- : ( $1 ? "[[$3]]" : htmllink($page, $3))
+ $2 ? ( $1 ? "[[$2|$3]]" : htmllink($page, titlepage($3), 0, 0, pagetitle($2)))
+ : ( $1 ? "[[$3]]" : htmllink($page, titlepage($3)))
my @links;
while ($content =~ /(?<!\\)$config{wiki_link_regexp}/g) {
my @links;
while ($content =~ /(?<!\\)$config{wiki_link_regexp}/g) {
+ push @links, titlepage($2);
}
# Discussion links are a special case since they're not in the text
# of the page, but on its template.
}
# Discussion links are a special case since they're not in the text
# of the page, but on its template.
+++ /dev/null
-test
\ No newline at end of file
WikiLinks can be entered in any case you like, the page they link to is
always lowercased.
WikiLinks can be entered in any case you like, the page they link to is
always lowercased.
-While a WikiLink is limited to alphanumerics and only a few special
-charaters, it is possible to create page names containing other characters:
-
-* To display a page name with a space in it, use "\_" in the WikiLink, for
- example, "\[[Multi\_Word\_Page\_Name]]".
-* For any other special character, you can use "\_\__nnnn_\_\_" where
- _nnnn_ is the unicode character number. For example,
- "\[[This\_page\_name\_is\_\_44\_\_\_uselessly\_\_44\_\_\_a\_complete\_sentence\_\_46\_\_]]"
- Limiting use of this to when you really need it is a good idea.
-
Note that if the file linked to by a WikiLink looks like an image, it will
be displayed inline on the page.
Note that if the file linked to by a WikiLink looks like an image, it will
be displayed inline on the page.
+sub titlepage ($) { #{{{
+ my $title=shift;
+ $title=~y/ /_/;
+ $title=~s/([^-A-Za-z0-9_:+\/])/"__".ord($1)."__"/eg;
+ return $title;
+} #}}}
+
sub htmllink ($$;$$$) { #{{{
my $page=shift;
my $link=shift;
sub htmllink ($$;$$$) { #{{{
my $page=shift;
my $link=shift;