aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmitai Schlair <schmonz-web-ikiwiki@schmonz.com>2013-02-02 14:11:15 -0500
committerAmitai Schlair <schmonz-web-ikiwiki@schmonz.com>2013-02-02 14:11:15 -0500
commit91b477c08789142667aad8e3c737e9b9a4d4ce64 (patch)
treeecdac70b4f36ff48c6b34c006172fde4c45738fa
parent0f3f809a45f25e6a32ff505c5d8d3da43be77abb (diff)
downloadikiwiki-91b477c08789142667aad8e3c737e9b9a4d4ce64.tar
ikiwiki-91b477c08789142667aad8e3c737e9b9a4d4ce64.tar.gz
Fix diffurl links (cvsweb expects unescaped '/').
-rw-r--r--IkiWiki/Plugin/cvs.pm4
-rwxr-xr-xt/cvs.t7
2 files changed, 10 insertions, 1 deletions
diff --git a/IkiWiki/Plugin/cvs.pm b/IkiWiki/Plugin/cvs.pm
index bccab3159..841aec914 100644
--- a/IkiWiki/Plugin/cvs.pm
+++ b/IkiWiki/Plugin/cvs.pm
@@ -314,7 +314,9 @@ sub rcs_recentchanges ($) {
$oldrev =~ s/INITIAL/0/;
$newrev =~ s/\(DEAD\)//;
my $diffurl = defined $config{diffurl} ? $config{diffurl} : "";
- my $epage = uri_escape_utf8($page);
+ my $epage = join('/',
+ map { uri_escape_utf8($_) } split('/', $page)
+ );
$diffurl=~s/\[\[file\]\]/$epage/g;
$diffurl=~s/\[\[r1\]\]/$oldrev/g;
$diffurl=~s/\[\[r2\]\]/$newrev/g;
diff --git a/t/cvs.t b/t/cvs.t
index d9b9ec48e..17598f7f7 100755
--- a/t/cvs.t
+++ b/t/cvs.t
@@ -388,6 +388,12 @@ sub test_rcs_diff {
@changes = IkiWiki::rcs_recentchanges(3);
is_total_number_of_changes(\@changes, 1);
+ unlike(
+ $changes[0]->{pages}->[0]->{diffurl},
+ qr/%2F/m,
+ q{path separators are preserved when UTF-8scaping filename},
+ );
+
my $changeset = 1;
my $maxlines = undef;
@@ -573,6 +579,7 @@ sub _generate_test_config {
$config{cvsrepo} = "$dir/repo";
$config{cvspath} = "ikiwiki";
use Cwd; $config{templatedir} = getcwd() . '/templates';
+ $config{diffurl} = "/nonexistent/cvsweb/[[file]]";
IkiWiki::loadplugins();
IkiWiki::checkconfig();
}