summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Render.pm48
-rw-r--r--doc/blog.mdwn12
-rw-r--r--doc/sandbox.mdwn4
-rw-r--r--doc/sandbox/test.mdwn (renamed from doc/sandbox/subpage.mdwn)0
-rw-r--r--doc/templates.mdwn5
-rw-r--r--doc/todo.mdwn7
-rw-r--r--templates/inlinepagetitle.tmpl4
7 files changed, 54 insertions, 26 deletions
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index 8f755e8f5..7d2e8c4ee 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -127,7 +127,7 @@ sub blog_list ($$) { #{{{
}
@list=sort { $pagectime{$b} <=> $pagectime{$a} } @list;
- return @list if @list <= $maxitems;
+ return @list if ! $maxitems || @list <= $maxitems;
return @list[0..$maxitems - 1];
} #}}}
@@ -149,21 +149,28 @@ sub postprocess_html_inline { #{{{
my $parentpage=shift;
my %params=@_;
- if (! exists $params{show}) {
- $params{show}=10;
- }
if (! exists $params{pages}) {
return "";
}
+ if (! exists $params{archive}) {
+ $params{archive}="no";
+ }
+ if (! exists $params{show} && $params{archive} eq "no") {
+ $params{show}=10;
+ }
$inlinepages{$parentpage}=$params{pages};
-
+
my $template=HTML::Template->new(blind_cache => 1,
- filename => "$config{templatedir}/inlinepage.tmpl");
+ filename => (($params{archive} eq "no")
+ ? "$config{templatedir}/inlinepage.tmpl"
+ : "$config{templatedir}/inlinepagetitle.tmpl"));
my $ret="";
foreach my $page (blog_list($params{pages}, $params{show})) {
+ next if $page eq $parentpage;
$template->param(pagelink => htmllink($parentpage, $page));
- $template->param(content => get_inline_content($parentpage, $page));
+ $template->param(content => get_inline_content($parentpage, $page))
+ if $params{archive} eq "no";
$template->param(ctime => scalar(gmtime($pagectime{$page})));
$ret.=$template->output;
}
@@ -249,6 +256,8 @@ sub genrss ($$$) { #{{{
my $parentpage=shift;
my %params=@_;
+ return "" if exists $params{archive} && $params{archive} eq 'yes';
+
if (! exists $params{show}) {
$params{show}=10;
}
@@ -259,6 +268,7 @@ sub genrss ($$$) { #{{{
$isblog=1;
foreach my $page (blog_list($params{pages}, $params{show})) {
+ next if $page eq $parentpage;
push @items, {
itemtitle => pagetitle(basename($page)),
itemurl => "$config{url}/$renderedfiles{$page}",
@@ -333,6 +343,7 @@ sub render ($) { #{{{
my $page=pagename($file);
$links{$page}=[findlinks($content, $page)];
+ delete $inlinepages{$page};
$content=linkify($content, $page);
$content=htmlize($type, $content);
@@ -453,25 +464,30 @@ FILE: foreach my $file (@files) {
next FILE;
}
}
- if (exists $inlinepages{$page} &&
- globlist_match($p, $inlinepages{$page})) {
- debug("rendering $file, which inlines $p");
- render($file);
- $rendered{$file}=1;
- }
}
}
}
- # handle backlinks; if a page has added/removed links, update the
- # pages it links to
+ # Handle backlinks; if a page has added/removed links, update the
+ # pages it links to. Also handle inlining here.
# TODO: inefficient; pages may get rendered above and again here;
# problem is the backlinks could be wrong in the first pass render
# above
- if (%rendered) {
+ if (%rendered || @del) {
my %linkchanged;
foreach my $file (keys %rendered, @del) {
my $page=pagename($file);
+
+ foreach my $f (@files) {
+ my $p=pagename($f);
+ if (exists $inlinepages{$p} &&
+ globlist_match($page, $inlinepages{$p})) {
+ debug("rendering $f, which inlines $page");
+ render($f);
+ next;
+ }
+ }
+
if (exists $links{$page}) {
foreach my $link (map { bestlink($page, $_) } @{$links{$page}}) {
if (length $link &&
diff --git a/doc/blog.mdwn b/doc/blog.mdwn
index d300736a8..598ad98d5 100644
--- a/doc/blog.mdwn
+++ b/doc/blog.mdwn
@@ -1,8 +1,18 @@
You can turn any page on this wiki into a weblog by inserting a
[[PostProcessorDirective]]. Like this:
-\\[[inline pages="blog/*" show="10"]]
+\\[[inline pages="blog/* !*/Discussion" show="10"]]
Any pages that match the specified [[GlobList]] (in the exaple, any
[[SubPages]] of "blog") will be part of the blog, and the newest 10
of them will appear in the page.
+
+If you want your blog to have an archive page listing every post ever made
+to it, you can accomplish that like this:
+
+\\[[inline pages="blog/* !*/Discussion" archive="yes"]]
+
+You can even create an automatically generated list of all the pages on the
+wiki, with the most recently added at the top, like this:
+
+\\[[inline pages="* !*/Discussion" archive="yes"]]
diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index 37bb6bd89..69876d26d 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -35,11 +35,9 @@ Bulleted list
[[WikiLink]]
-[[SandBox/SubPage]] -- a page under this one.
-
----
-This sandbox is also a [[blog]]! Any subpage of this page is automatically
+This sandbox is also a [[blog]]! Any [[SubPage]] of this page is automatically
added to the blog below.
----
diff --git a/doc/sandbox/subpage.mdwn b/doc/sandbox/test.mdwn
index 3b53e07e0..3b53e07e0 100644
--- a/doc/sandbox/subpage.mdwn
+++ b/doc/sandbox/test.mdwn
diff --git a/doc/templates.mdwn b/doc/templates.mdwn
index 3521ab012..481e555ee 100644
--- a/doc/templates.mdwn
+++ b/doc/templates.mdwn
@@ -13,6 +13,11 @@ It ships with some basic templates which can be customised:
* `templates/editpage.tmpl` - Create/edit page.
* `templates/passwordmail.tmpl` - Not a html template, this is used to
generate the mail with the user's password in it.
+* `templates/rsspage.tmpl` - Used for generating rss feeds for [[blog]]s.
+* `templates/inlinepage.tmpl - Used for adding a page inline in a blog
+ page.
+* `templates/inlinepagetitle.tmpl - Used for listing a page inline in a blog
+ archive page.
If you like, you can add these to further customise it:
diff --git a/doc/todo.mdwn b/doc/todo.mdwn
index f918bf156..eb5aad8dc 100644
--- a/doc/todo.mdwn
+++ b/doc/todo.mdwn
@@ -65,9 +65,6 @@ renered, so maybe that won't be a plugin.
- Add a small form at top and bottom of a blog to allow entering
a title for a new item, that goes to a template to create the new page.
-- Add a link to the end of a blog to go to the archives; this would
- probably best be another cgi script, to avoid needing to generate big
- static pages for little used archives.
- Should probably add params to control various rss fields like the blog
title, its author email, its copyright info, etc.
@@ -110,10 +107,8 @@ you need that data..
## lists
* list of all missing pages
-* list of all pages or some kind of page map (probably covered by the rss
- feeds stuff above)
-These could be their own static pages updated when other pages are updated.
+This could be its own static pages updated when other pages are updated.
Perhaps this ties in with the pluggable renderers stuff.
## page indexes
diff --git a/templates/inlinepagetitle.tmpl b/templates/inlinepagetitle.tmpl
new file mode 100644
index 000000000..0b12fa3b8
--- /dev/null
+++ b/templates/inlinepagetitle.tmpl
@@ -0,0 +1,4 @@
+<h2><TMPL_VAR PAGELINK></h2>
+<p>
+<i>(posted <TMPL_VAR CTIME>)</i>
+</p>