Wiki::Toolkit::Plugin::JSON(3pm) | User Contributed Perl Documentation | Wiki::Toolkit::Plugin::JSON(3pm) |
Wiki::Toolkit::Plugin::JSON - A Wiki::Toolkit plugin to output RecentChanges JSON.
This is an alternative access to the recent changes of a Wiki::Toolkit wiki. It outputs JSON.
use Wiki::Toolkit; use Wiki::Toolkit::Plugin::JSON; my $wiki = Wiki::Toolkit->new( ... ); # See perldoc Wiki::Toolkit # Set up the JSON feeder with the mandatory arguments - see # C<new()> below for more, optional, arguments. my $json = Wiki::Toolkit::Plugin::JSON->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); }, recent_changes_link => 'http://example.com/?RecentChanges', ); print "Content-type: application/xml\n\n"; print $json->recent_changes;
my $json = Wiki::Toolkit::Plugin::JSON->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); }, recent_changes_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) }, );
"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->write_node( 'About This Wiki', 'blah blah blah', $checksum, { comment => 'Stub page, please update!', username => 'Fred', } ); print "Content-type: application/xml\n\n"; print $json->recent_changes; # Or get something other than the default of the latest 15 changes. print $json->recent_changes( items => 50 ); print $json->recent_changes( days => 7 ); # Or ignore minor edits. print $json->recent_changes( ignore_minor_edits => 1 ); # Personalise your feed further - consider only changes # made by Fred to pages about bookshops. print $json->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 JSON 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":
print $json->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.
Earle Martin <EMARTIN@cpan.org>. Originally by Kake Pugh <kake@earth.li>.
Copyright 2003-4 Kake Pugh. Subsequent modifications copyright 2005 Earle Martin.
Copyright 2008 the Wiki::Toolkit team
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The members of the Semantic Web Interest Group channel on irc.freenode.net, #swig, were very useful in the development of this module.
2021-01-08 | perl v5.32.0 |