- <build_feed_start>
-
Internal method, to build all the stuff that will go at the start of a feed. Generally will output namespaces, headers and so on.
- <build_feed_mid>
-
Internal method, to build all the stuff (except items) to go inside the channel
- <build_feed_end>
-
Internal method, to build all the stuff that will go at the end of a feed
- <generate_node_list_feed>
-
Generate and return an RSS feed for a list of nodes
- generate_node_name_distance_feed
-
Generate a very cut down rss feed, based just on the nodes, their locations (if given), and their distance from a reference location (if given).
Typically used on search feeds.
- feed_timestamp
-
Generate the timestamp for the RSS, based on the newest node (if available). Will return a timestamp for now if no node dates are available
NAME
Wiki::Toolkit::Feed::RSS - Output RecentChanges RSS for Wiki::Toolkit.
DESCRIPTION
This is an alternative access to the recent changes of a Wiki::Toolkit wiki. It outputs RSS as described by the ModWiki proposal at http://www.usemod.com/cgi-bin/mb.pl?ModWiki
SYNOPSIS
use Wiki::Toolkit;
use Wiki::Toolkit::Feed::RSS;
my $wiki = CGI::Wiki->new( ... ); # See perldoc Wiki::Toolkit
# Set up the RSS feeder with the mandatory arguments - see
# C<new()> below for more, optional, arguments.
my $rss = Wiki::Toolkit::Feed::RSS->new(
wiki => $wiki,
site_name => 'My Wiki',
site_url => 'http://example.com/',
make_node_url => sub
{
my ($node_name, $version) = @_;
return 'http://example.com/?id=' . uri_escape($node_name) . ';version=' . uri_escape($version);
},
html_equiv_link => 'http://example.com/?RecentChanges',
);
print "Content-type: application/xml\n\n";
print $rss->recent_changes;
METHODS
new()
my $rss = Wiki::Toolkit::Feed::RSS->new(
# Mandatory arguments:
wiki => $wiki,
site_name => 'My Wiki',
site_url => 'http://example.com/',
make_node_url => sub
{
my ($node_name, $version) = @_;
return 'http://example.com/?id=' . uri_escape($node_name) . ';version=' . uri_escape($version);
},
html_equiv_link => 'http://example.com/?RecentChanges',
# Optional arguments:
site_description => 'My wiki about my stuff',
interwiki_identifier => 'MyWiki',
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)
},
software_name => $your_software_name, # e.g. "CGI::Wiki"
software_version => $your_software_version, # e.g. "0.73"
software_homepage => $your_software_homepage, # e.g. "http://search.cpan.org/dist/Wiki-Toolkit/"
);
wiki
must be a Wiki::Toolkit object. make_node_url
, and make_diff_url
and make_history_url
, if supplied, must be coderefs.
The mandatory arguments are:
wiki
site_name
site_url
make_node_url
html_equiv_link or recent_changes_link
The three optional arguments
software_name
software_version
software_homepage
are used to generate DOAP (Description Of A Project - see http://usefulinc.com/doap) metadata for the feed to show what generated it.
recent_changes()
$wiki->write_node(
'About This Wiki',
'blah blah blah',
$checksum,
{
comment => 'Stub page, please update!',
username => 'Fred',
}
);
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 edits.
print $rss->recent_changes( ignore_minor_edits => 1 );
# Personalise your feed further - consider only changes
# made by Fred to pages about bookshops.
print $rss->recent_changes(
filter_on_metadata => {
username => 'Fred',
category => 'Bookshops',
},
);
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 Wiki::Toolkit. 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
).
feed_timestamp()
print $rss->feed_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
The Wiki::Toolkit project. Originally by Kake Pugh <kake@earth.li>.
COPYRIGHT AND LICENSE
Copyright 2003-4 Kake Pugh. Copyright 2005 Earle Martin. Copyright 2006 the Wiki::Toolkit team
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
THANKS
The members of the Semantic Web Interest Group channel on irc.freenode.net, #swig, were very useful in the development of this module.
2 POD Errors
The following errors were encountered while parsing the POD:
- Around line 57:
'=item' outside of any '=over'
- Around line 380:
You forgot a '=back' before '=head1'