NAME
CGI::Wiki::Plugin::RSS::ModWiki - A CGI::Wiki plugin to output RecentChanges RSS.
DESCRIPTION
This is an alternative access to the recent changes of a CGI::Wiki wiki. It outputs RSS as described by the ModWiki proposal at http://www.usemod.com/cgi-bin/mb.pl?ModWiki
SYNOPSIS
use CGI::Wiki;
use CGI::Wiki::Plugin::RSS::ModWiki;
my $wiki = CGI::Wiki->new( ... ); # See perldoc CGI::Wiki
# Set up the RSS feeder with the mandatory arguments - see C<new> below
# for more, optional, arguments.
my $rss = CGI::Wiki::Plugin::RSS::ModWiki->new(
wiki => $wiki,
site_name => "My Wiki",
make_node_url => sub {
my ($node_name, $version) = @_;
return "http://example.com/wiki.cgi?id="
. uri_escape($node_name)
. ";version=" . uri_escape($version);
},
recent_changes_link => "http://example.com/wiki.cgi?RecentChanges"
);
print "Content-type: application/xml\n\n";
print $rss->recent_changes;
METHODS
- new
-
my $rss = CGI::Wiki::Plugin::RSS::ModWiki->new( wiki => $wiki, site_name => "My Wiki", make_node_url => sub { my ($node_name, $version) = @_; return "http://example.com/wiki.cgi?id=" . uri_escape($node_name) . ";version=" . uri_escape($version); }, recent_changes_link => "http://example.com/wiki.cgi?RecentChanges", # Those above were mandatory, those below are optional. site_description => "My wiki about my stuff", interwiki_identifier => "KakesWiki", make_diff_url => sub { my $node_name = shift; return "http://example.com/wiki.cgi?action=show_diff;id=" . uri_escape($node_name) }, make_history_url => sub { my $node_name = shift; return "http://example.com/wiki.cgi?action=history;id=" . uri_escape($node_name) }, );
wiki
must be a CGI::Wiki object.make_node_url
, andmake_diff_url
andmake_history_url
, if supplied, must be coderefs.NOTE: If you try to put ampersands (
&
) in your URLs then XML::RSS will escape them to&
, so use semicolons (;
) to separate any CGI parameter pairs instead.The mandatory arguments are:
wiki
site_name
make_node_url
recent_changes_link
- recent_changes
-
$wiki->write_node( "About This Wiki", "blah blah blah content", $checksum, { comment => "Stub page, please update!", username => "Kake" } ); print "Content-type: application/xml\n\n"; print $rss->recent_changes;
Note: Many of the fields emitted by the RSS generator are taken from the node metadata. The form of this metadata is not mandated by CGI::Wiki. Your wiki application should make sure to store some or all of the following metadata when calling
write_node
:- comment - a brief comment summarising the edit that has just been made; will be used as the RDF description for this item. Defaults to the empty string.
- major_change - true if the edit was a major edit and false if it was a minor edit; used for the importance of the item. Defaults to true (ie if
major_change
was not defined or was explicitly stored asundef
).
Currently this is very simple and only emits the last 15 changes, major or minor. There are interesting parameters at http://www.usemod.com/cgi-bin/wiki.pl?WikiPatches/XmlRss that I will get around to implementing at some point.
SEE ALSO
AUTHOR
Kake Pugh (kake@earth.li).
COPYRIGHT
Copyright (C) 2003 Kake Pugh. All Rights Reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
CREDITS
The people on #core on irc.rhizomatic.net gave encouragement and useful advice.
I cribbed some of this code from http://www.usemod.com/cgi-bin/wiki.pl?WikiPatches/XmlRss
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 246:
You forgot a '=back' before '=head1'