ikiwiki/doc/todo/index.html_allowed.mdwn

127 lines
5.1 KiB
Markdown

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
[[done]], the indexpages setting enables this.