From 74c454805d3abf40f33977aee7d2585fcedacad1 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Tue, 30 Sep 2008 23:33:33 +0200 Subject: Rewrite copyright.pm and license.pm in order to make them work properly. --- .library/IkiWiki/Plugin/copyright.pm | 49 +++++++++++++++--------------------- .library/IkiWiki/Plugin/license.pm | 48 ++++++++++++++--------------------- copyright.html | 1 - copyright.mdwn | 1 + license.html | 5 ---- license.mdwn | 5 ++++ 6 files changed, 45 insertions(+), 64 deletions(-) delete mode 100644 copyright.html create mode 100644 copyright.mdwn delete mode 100644 license.html create mode 100644 license.mdwn diff --git a/.library/IkiWiki/Plugin/copyright.pm b/.library/IkiWiki/Plugin/copyright.pm index 2806e9ef..16acaccd 100644 --- a/.library/IkiWiki/Plugin/copyright.pm +++ b/.library/IkiWiki/Plugin/copyright.pm @@ -1,7 +1,7 @@ # A plugin for ikiwiki to implement adding a footer with copyright information # based on a default value taken out of a file. -# Copyright © 2007 Thomas Schwinge +# Copyright © 2007, 2008 Thomas Schwinge # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the @@ -17,15 +17,14 @@ # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# A footer with copyright information will be added to every rendered page if -# (a) such a footer isn't present already (see the `meta' plugin's -# ``copyright'' facility) and (b) a file `copyright.html' is found (using the -# same rules as for the sidebar plugin). +# Unless overridden with the `meta' plugin, a footer with copyright information +# will be added to every page using a source file `copyright' (e.g., +# `copyright.mdwn') (using the same ``locating rules'' as for the sidebar +# plugin). # # The state which page's copyright text was gathered from which source is not -# tracked, so you'll need a full wiki-rebuild if (b)'s files are changed. -# -# You can use wiki links in `copyright.html'. +# tracked, so you'll need a full wiki-rebuild if the `copyright' file is +# changed. package IkiWiki::Plugin::copyright; @@ -33,37 +32,29 @@ use warnings; use strict; use IkiWiki 2.00; +my %copyright; + sub import { - hook (type => "pagetemplate", id => "copyright", call => \&pagetemplate, - # Run last, as to have the `meta' plugin do its work first. - last => 1); + hook (type => "scan", id => "copyright", call => \&scan); } -sub pagetemplate (@) +sub scan (@) { my %params = @_; my $page = $params{page}; - my $destpage = $params{destpage}; - my $template = $params{template}; + return if defined $pagestate{$page}{meta}{copyright}; + + my $content; + my $copyright_page = bestlink ($page, "copyright") || return; + my $copyright_file = $pagesources{$copyright_page} || return; - if ($template->query (name => "copyright") && - ! defined $template->param ('copyright')) - { - my $content; - my $copyright_page = bestlink ($page, "copyright") || return; - my $copyright_file = $pagesources{$copyright_page} || return; - #my $pagetype = pagetype ($copyright_file); - # Check if ``$pagetype eq 'html'''? - $content = readfile (srcfile ($copyright_file)); + # Only an optimization to avoid reading the same file again and again. + $copyright{$copyright_file} = readfile (srcfile ($copyright_file)) + unless defined $copyright{$copyright_file}; - if (defined $content && length $content) - { - $template->param (copyright => - IkiWiki::linkify ($page, $destpage, $content)); - } - } + $pagestate{$page}{meta}{copyright} = $copyright{$copyright_file}; } 1 diff --git a/.library/IkiWiki/Plugin/license.pm b/.library/IkiWiki/Plugin/license.pm index da337f29..651c039a 100644 --- a/.library/IkiWiki/Plugin/license.pm +++ b/.library/IkiWiki/Plugin/license.pm @@ -1,7 +1,7 @@ # A plugin for ikiwiki to implement adding a footer with licensing information # based on a default value taken out of a file. -# Copyright © 2007 Thomas Schwinge +# Copyright © 2007, 2008 Thomas Schwinge # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the @@ -17,15 +17,13 @@ # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# A footer with licensing information will be added to every rendered page if -# (a) such a footer isn't present already (see the `meta' plugin's ``license'' -# facility) and (b) a file `license.html' is found (using the same rules as for -# the sidebar plugin). +# Unless overridden with the `meta' plugin, a footer with licensing information +# will be added to every page using a source file `license' (e.g., +# `license.mdwn') (using the same ``locating rules'' as for the sidebar +# plugin). # # The state which page's license text was gathered from which source is not -# tracked, so you'll need a full wiki-rebuild if (b)'s files are changed. -# -# You can use wiki links in `license.html'. +# tracked, so you'll need a full wiki-rebuild if the `license' file is changed. package IkiWiki::Plugin::license; @@ -33,37 +31,29 @@ use warnings; use strict; use IkiWiki 2.00; +my %license; + sub import { - hook (type => "pagetemplate", id => "license", call => \&pagetemplate, - # Run last, as to have the `meta' plugin do its work first. - last => 1); + hook (type => "scan", id => "license", call => \&scan); } -sub pagetemplate (@) +sub scan (@) { my %params = @_; my $page = $params{page}; - my $destpage = $params{destpage}; - my $template = $params{template}; + return if defined $pagestate{$page}{meta}{license}; + + my $content; + my $license_page = bestlink ($page, "license") || return; + my $license_file = $pagesources{$license_page} || return; - if ($template->query (name => "license") && - ! defined $template->param ('license')) - { - my $content; - my $license_page = bestlink ($page, "license") || return; - my $license_file = $pagesources{$license_page} || return; - #my $pagetype = pagetype ($license_file); - # Check if ``$pagetype eq 'html'''? - $content = readfile (srcfile ($license_file)); + # Only an optimization to avoid reading the same file again and again. + $license{$license_file} = readfile (srcfile ($license_file)) + unless defined $license{$license_file}; - if (defined $content && length $content) - { - $template->param (license => - IkiWiki::linkify ($page, $destpage, $content)); - } - } + $pagestate{$page}{meta}{license} = $license{$license_file}; } 1 diff --git a/copyright.html b/copyright.html deleted file mode 100644 index fcdab55d..00000000 --- a/copyright.html +++ /dev/null @@ -1 +0,0 @@ -Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008 The Contributing Authors diff --git a/copyright.mdwn b/copyright.mdwn new file mode 100644 index 00000000..fcdab55d --- /dev/null +++ b/copyright.mdwn @@ -0,0 +1 @@ +Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008 The Contributing Authors diff --git a/license.html b/license.html deleted file mode 100644 index 9b2ddd4f..00000000 --- a/license.html +++ /dev/null @@ -1,5 +0,0 @@ -Permission is granted to copy, distribute and/or modify this document under the -terms of the GNU Free Documentation License, Version 1.2 or any later version -published by the Free Software Foundation; with no Invariant Sections, no -Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included -in the section entitled [[GNU_Free_Documentation_License|/fdl]]. diff --git a/license.mdwn b/license.mdwn new file mode 100644 index 00000000..9b2ddd4f --- /dev/null +++ b/license.mdwn @@ -0,0 +1,5 @@ +Permission is granted to copy, distribute and/or modify this document under the +terms of the GNU Free Documentation License, Version 1.2 or any later version +published by the Free Software Foundation; with no Invariant Sections, no +Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included +in the section entitled [[GNU_Free_Documentation_License|/fdl]]. -- cgit v1.2.3