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/?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;
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/?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
, andmake_diff_url
andmake_history_url
, if supplied, must be coderefs.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; # 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. # Note that in earlier versions of this module, this param was # called "ignore_minor_changes"; this name will be supported # for the time being, but is deprecated. print $rss->recent_changes( ignore_minor_edits => 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.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 in the RDF description for this item. Defaults to the empty string.
- username - an identifier for the person who made the edit; will be used as the Dublin Core contributor for this item, and also in the RDF description. Defaults to the empty string.
- host - the hostname or IP address of the computer used to make the edit; if no username is supplied then this will be used as the Dublin Core contributor 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
).
- rss_timestamp
-
print $rss->rss_timestamp();
Returns the timestamp of the feed in POSIX::strftime style ("Tue, 29 Feb 2000 12:34:56 GMT"), which is equivalent to the timestamp of the most recent item in the feed. Takes the same arguments as recent_changes(). You will most likely need this to print a Last-Modified HTTP header so user-agents can determine whether they need to reload the feed or not.
SEE ALSO
MAINTAINER
Earle Martin <EMARTIN@cpan.org>. Originally by Kake Pugh <kake@earth.li>.
COPYRIGHT AND LICENSE
Copyright 2003-4 Kake Pugh. Subsequent modifications copyright 2005 Earle Martin.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
CREDITS
The people on #swig on irc.freenode.net gave encouragement and useful advice.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 334:
You forgot a '=back' before '=head1'