aboutsummaryrefslogtreecommitdiff
path: root/doc/todo/index.html_allowed.mdwn
blob: 13ed492117143b231be13656f355113f0fe709c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
This page used to be used for two patches, one of which is applied
providing the usedirs option for output. The remaining patch, discussed
below, concerns wanting to use foo/index.mdwn source files and get an
output page name of foo, rather than foo/index. --[[Joey]]

[[!tag patch]]

---

I independently implemented a similar, but smaller patch.
(It's smaller because I only care about rendering; not CGI, for example.)
The key to this patch is that "A/B/C" is treated as equivalent
to "A/B/C/index".
Here it is:  --Per Bothner

    --- IkiWiki/Render.pm~  2007-01-11 15:01:51.000000000 -0800
    +++ IkiWiki/Render.pm   2007-02-02 22:24:12.000000000 -0800
    @@ -60,9 +60,9 @@
            foreach my $dir (reverse split("/", $page)) {
                    if (! $skip) {
                            $path.="../";
    -                       unshift @ret, { url => $path.htmlpage($dir), page => pagetitle($dir) };
    +                       unshift @ret, { url => abs2rel(htmlpage(bestlink($page, $dir)), dirname($page)), page => pagetitle($dir) };
                    }
    -               else {
    +               elsif ($dir ne "index") {
                            $skip=0;
                    }
            }

    --- IkiWiki.pm~ 2007-01-12 12:47:09.000000000 -0800
    +++ IkiWiki.pm  2007-02-02 18:02:16.000000000 -0800
    @@ -315,6 +315,12 @@
                    elsif (exists $pagecase{lc $l}) {
                            return $pagecase{lc $l};
                     }
    +               else {
    +                   my $lindex = $l . "/index";
    +                   if (exists $links{$lindex}) {
    +                       return $lindex;
    +               }
    +               }
             } while $cwd=~s!/?[^/]+$!!;
     
            if (length $config{userdir} && exists $links{"$config{userdir}/".lc($link)}) {

Note I handle setting the url; slightly differently.
Also note that an initial "index" is ignored.  I.e. a
page "A/B/index.html" is treated as "A/B".

> Actually, your patch is shorter because it's more elegant and better :)
> I'm withdrawing my old patch, because yours is much more in line with
> ikiwiki's design and architecture.
> I would like to make one suggestion to your patch, which is:

    diff -urX ignorepats clean-ikidev/IkiWiki/Plugin/inline.pm ikidev/IkiWiki/Plugin/inline.pm
    --- clean-ikidev/IkiWiki/Plugin/inline.pm   2007-02-25 12:26:54.099113000 -0800
    +++ ikidev/IkiWiki/Plugin/inline.pm 2007-02-25 14:55:21.163340000 -0800
    @@ -154,7 +154,7 @@
                        $link=htmlpage($link) if defined $type;
                        $link=abs2rel($link, dirname($params{destpage}));
                        $template->param(pageurl => $link);
    -                   $template->param(title => pagetitle(basename($page)));
    +                   $template->param(title => titlename($page));
                        $template->param(ctime => displaytime($pagectime{$page}));

                        if ($actions) {
    @@ -318,7 +318,7 @@
                my $pcontent = absolute_urls(get_inline_content($p, $page), $url);

                $itemtemplate->param(
    -                   title => pagetitle(basename($p), 1),
    +                   title => titlename($p, 1),
                        url => $u,
                        permalink => $u,
                        date_822 => date_822($pagectime{$p}),
    diff -urX ignorepats clean-ikidev/IkiWiki/Render.pm ikidev/IkiWiki/Render.pm
    --- clean-ikidev/IkiWiki/Render.pm  2007-02-25 12:26:54.745833000 -0800
    +++ ikidev/IkiWiki/Render.pm        2007-02-25 14:54:01.564715000 -0800
    @@ -110,7 +110,7 @@
        $template->param(
                title => $page eq 'index'
                        ? $config{wikiname}
    -                   : pagetitle(basename($page)),
    +                   : titlename($page),
                wikiname => $config{wikiname},
                parentlinks => [parentlinks($page)],
                content => $content,
    diff -urX ignorepats clean-ikidev/IkiWiki.pm ikidev/IkiWiki.pm
    --- clean-ikidev/IkiWiki.pm 2007-02-25 12:26:58.812850000 -0800
    +++ ikidev/IkiWiki.pm       2007-02-25 15:05:22.328852000 -0800
    @@ -192,6 +192,12 @@
        return $untainted;
     } #}}}

    +sub titlename($;@) { #{{{
    +   my $page = shift;
    +   $page =~ s!/index$!!;
    +   return pagetitle(basename($page), @_);
    +} #}}}
    +
     sub basename ($) { #{{{
        my $file=shift;


> This way foo/index gets "foo" as its title, not "index". --Ethan

I took another swing at this and subverted the dominant paradigm. Here goes:

<pre>
diff -ru ikiwiki-2.4/IkiWiki.pm ikiwiki/IkiWiki.pm
--- ikiwiki-2.4/IkiWiki.pm	2007-06-26 15:01:57.000000000 -0700
+++ ikiwiki/IkiWiki.pm	2007-07-25 15:58:00.990749000 -0700
@@ -239,6 +239,7 @@
 	my $type=pagetype($file);
 	my $page=$file;
 	$page=~s/\Q.$type\E*$// if defined $type;
+	$page=~s/\/index$// if $page =~ /\/index$/;
 	return $page;
 } #}}}
 
</pre>

This just makes it so that all files named foo/index become pages called foo, which is the desired effect. I haven't tested everything so far, so be careful! But you can see it working at http://ikidev.betacantrips.com/one/ again, as before. --Ethan