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", and
        "make_diff_url" and "make_history_url", if supplied, must be
        coderefs.

        NOTE: If you try to put ampersands ("&") in your URLs then XML::RSS
        will escape them to "&amp;", 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;

          # Or get something other than the default of the latest 15 changes.
          print $rss->recent_changes( items => 50 );
          print $rss->recent_changes( days => 7 );

        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 as
        "undef").

    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
        * CGI::Wiki
        * <http://www.usemod.com/cgi-bin/mb.pl?ModWiki>

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.