]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/CGI.pm
My fix to support encoded underscores in page titles broke links to pages
[ikiwiki.git] / IkiWiki / CGI.pm
index b884a32f2217e991c8ec05c4f39c40e2eb8af43e..aeccd31accd006968019df1b0e23e34135f0c07a 100644 (file)
@@ -286,9 +286,10 @@ sub cgi_prefs ($$) { #{{{
        }
 } #}}}
 
-sub cgi_editpage ($$) { #{{{
+sub cgi_editpage ($$;$) { #{{{
        my $q=shift;
        my $session=shift;
+       my $blogpost=shift;
 
        my @fields=qw(do rcsinfo subpage from page type editcontent comments
                      newfile);
@@ -322,6 +323,9 @@ sub cgi_editpage ($$) { #{{{
        # characters.
        my ($page)=$form->field('page');
        $page=titlepage(possibly_foolish_untaint($page));
+       if ($blogpost) {
+               $page=~s/(\/)/"__".ord($1)."__"/eg;
+       }
        if (! defined $page || ! length $page || file_pruned($page, $config{srcdir}) || $page=~/^\//) {
                error("bad page name");
        }
@@ -682,7 +686,6 @@ sub cgi (;$$) { #{{{
        }
        elsif ($do eq 'blog') {
                my $page=decode_utf8($q->param('title'));
-               $page=~s/\// /g; # remove slashes to avoid accidental subpages
                # if the page already exists, munge it to be unique
                my $from=$q->param('from');
                my $add="";
@@ -691,9 +694,9 @@ sub cgi (;$$) { #{{{
                        $add++;
                }
                $q->param('page', $page.$add);
-               # now run same as create
+               # now run same as create, except escape slashes too
                $q->param('do', 'create');
-               cgi_editpage($q, $session);
+               cgi_editpage($q, $session, 1);
        }
        elsif ($do eq 'postsignin') {
                error(gettext("login failed, perhaps you need to turn on cookies?"));