add archive pages and fix some bugs
parent
7b4600df3f
commit
5951c1dc82
|
@ -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 &&
|
||||
|
|
|
@ -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"]]
|
||||
|
|
|
@ -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.
|
||||
|
||||
----
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
<h2><TMPL_VAR PAGELINK></h2>
|
||||
<p>
|
||||
<i>(posted <TMPL_VAR CTIME>)</i>
|
||||
</p>
|
Loading…
Reference in New Issue