CGI::Wiki::Plugin::RSS::ModWiki - A CGI::Wiki plugin to output RecentChanges RSS.
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
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/?id=" . uri_escape($node_name) . ";version=" . uri_escape($version); }, recent_changes_link => "http://example.com/?RecentChanges", ); print "Content-type: application/xml\n\n"; print $rss->recent_changes;
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/?id=" . uri_escape($node_name) . ";version=" . uri_escape($version); }, recent_changes_link => "http://example.com/?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/?diff=" . uri_escape($node_name) }, make_history_url => sub { my $node_name = shift; return "http://example.com/?hist=" . uri_escape($node_name) }, );
wiki must be a CGI::Wiki object. make_node_url, and make_diff_url and make_history_url, if supplied, must be coderefs.
wiki
make_node_url
make_diff_url
make_history_url
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:
site_name
recent_changes_link
$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; # Or get something other than the default of the latest 15 changes. print $rss->recent_changes( items => 50 ); print $rss->recent_changes( days => 7 ); # Or ignore minor changes. print $rss->recent_changes( ignore_minor_changes => 1 ); # Personalise your feed further - consider only changes # made by Kake to pages about pubs. print $rss->recent_changes( filter_on_metadata => { username => "Kake", category => "Pubs", }, );
If using filter_on_metadata note that only changes satisfying all criteria will be returned.
filter_on_metadata
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:
write_node
major_change
undef
CGI::Wiki
http://www.usemod.com/cgi-bin/mb.pl?ModWiki
Kake Pugh (kake@earth.li).
Copyright (C) 2003-4 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.
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:
You forgot a '=back' before '=head1'
To install CGI::Wiki::Plugin::RSS::ModWiki, copy and paste the appropriate command in to your terminal.
cpanm
cpanm CGI::Wiki::Plugin::RSS::ModWiki
CPAN shell
perl -MCPAN -e shell install CGI::Wiki::Plugin::RSS::ModWiki
For more information on module installation, please visit the detailed CPAN module installation guide.