dc527bbc4b1854c5d70b7863bfa6595a1a5901f4
[ikiwiki.git] / doc / patchqueue / index.html_allowed.mdwn
1 Instead of having files foo.html "in front of" foo/, I prefer to have foo/index.html. This patch allows that. Specifically, foo/index.type is translated to $links{'foo/'}, and bestlink looks for either "foo" or "foo/" when linking to pages. There are other miscellaneous changes that go with that -- parentlinks for "foo/" are the same as for "foo", except one directory higher; basename of "foo/" is "foo"; links to "foo/" are translated to "foo/index.html" rather than "foo/.html". (Links to "foo/" might be preferred, but that causes an infinite loop in writefile, because apparently dirname("foo/") == "foo/" on my system for reasons that aren't clear to me.)
2
3     diff -ur -x .svn ikiwiki-orig/IkiWiki/Render.pm ikiwiki/IkiWiki/Render.pm
4     --- ikiwiki-orig/IkiWiki/Render.pm  2006-11-08 01:02:33.000000000 -0500
5     +++ ikiwiki/IkiWiki/Render.pm       2006-11-08 01:02:46.000000000 -0500
6     @@ -57,6 +57,10 @@
7         my $path="";
8         my $skip=1;
9         return if $page eq 'index'; # toplevel
10     +   if ($page =~ m{/$}){
11     +           $page =~s{/$}{};
12     +           $path="..";
13     +   }
14         foreach my $dir (reverse split("/", $page)) {
15                 if (! $skip) {
16                         $path.="../";
17     diff -ur -x .svn ikiwiki-orig/IkiWiki.pm ikiwiki/IkiWiki.pm
18     --- ikiwiki-orig/IkiWiki.pm 2006-11-08 01:02:38.000000000 -0500
19     +++ ikiwiki/IkiWiki.pm      2006-11-08 01:02:48.000000000 -0500
20     @@ -174,6 +174,7 @@
21      sub basename ($) { #{{{
22         my $file=shift;
23
24     +   $file=~s!/$!!;
25         $file=~s!.*/+!!;
26         return $file;
27      } #}}}
28     @@ -200,12 +201,14 @@
29         my $type=pagetype($file);
30         my $page=$file;
31         $page=~s/\Q.$type\E*$// if defined $type;
32     +   $page=~s#index$## if $page=~m{/index$};
33         return $page;
34      } #}}}
35
36      sub htmlpage ($) { #{{{
37         my $page=shift;
38
39     +   return $page."index.html" if $page=~m{/$};
40         return $page.".html";
41      } #}}}
42
43     @@ -289,6 +292,7 @@
44         my $page=shift;
45         my $link=shift;
46
47     +   $page =~ s!/$!!;
48         my $cwd=$page;
49         do {
50                 my $l=$cwd;
51     @@ -298,6 +302,9 @@
52                 if (exists $links{$l}) {
53                         return $l;
54                 }
55     +           if (exists $links{$l.'/'}){
56     +                   return $l.'/';
57     +           }
58                 elsif (exists $pagecase{lc $l}) {
59                         return $pagecase{lc $l};
60                 }
61