aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/more.pm
diff options
context:
space:
mode:
Diffstat (limited to 'IkiWiki/Plugin/more.pm')
-rw-r--r--IkiWiki/Plugin/more.pm45
1 files changed, 45 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/more.pm b/IkiWiki/Plugin/more.pm
new file mode 100644
index 000000000..6880e366d
--- /dev/null
+++ b/IkiWiki/Plugin/more.pm
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+package IkiWiki::Plugin::more;
+
+use warnings;
+use strict;
+use IkiWiki 3.00;
+
+my $linktext = gettext("more");
+
+sub import {
+ hook(type => "getsetup", id => "more", call => \&getsetup);
+ hook(type => "preprocess", id => "more", call => \&preprocess);
+}
+
+sub getsetup () {
+ return
+ plugin => {
+ safe => 1,
+ rebuild => undef,
+ section => "widget",
+ },
+}
+
+sub preprocess (@) {
+ my %params=@_;
+
+ $params{linktext} = $linktext unless defined $params{linktext};
+
+ if ($params{page} ne $params{destpage} &&
+ (! exists $params{pages} ||
+ pagespec_match($params{destpage}, $params{pages},
+ location => $params{page}))) {
+ return "\n".
+ htmllink($params{page}, $params{destpage}, $params{page},
+ linktext => $params{linktext},
+ anchor => "more");
+ }
+ else {
+ return "<a name=\"more\"></a>\n\n".
+ IkiWiki::preprocess($params{page}, $params{destpage},
+ $params{text});
+ }
+}
+
+1