Changeset 784


Ignore:
Timestamp:
May 14, 2006, 4:27:00 PM (15 years ago)
Author:
Dominic Hargreaves
Message:

Revert changeset 769 to reintroduce Atom support.

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Build.PL

    r777 r784  
    222222        'CGI::Wiki'                       => '0.62',  # fixed delete version
    223223        'CGI::Wiki::Formatter::UseMod'    => '0.16',  # macros
     224        'CGI::Wiki::Plugin::Atom'         => 0,
    224225        'CGI::Wiki::Plugin::Categoriser'  => 0,
    225226        'CGI::Wiki::Plugin::Diff'         => '0.08',  # earlier buggy
  • trunk/Changes

    r782 r784  
    11"#" items refer to tickets. See <http://dev.openguides.org/report/9> for details.
     2
     30.55    ???
     4        Support for Atom feeds for RecentChanges.
     5        #118 Use Wiki::Toolkit
    26
    370.54    21 April 2006
  • trunk/PREREQUISITES

    r782 r784  
    99CGI::Wiki (version 0.62 or later)
    1010CGI::Wiki::Formatter::UseMod (version 0.16 or later)
     11CGI::Wiki::Plugin::Atom
    1112CGI::Wiki::Plugin::Categoriser
    1213CGI::Wiki::Plugin::Diff (version 0.08 or later)
  • trunk/lib/OpenGuides.pm

    r783 r784  
    156156        $tt_vars{"rss_".lc($type)."_url"} =
    157157                           $config->script_name . "?action=rc;format=rss;"
     158                           . lc($type) . "=" . lc(CGI->escape($2));
     159        $tt_vars{"atom_".lc($type)."_url"} =
     160                           $config->script_name . "?action=rc;format=atom;"
    158161                           . lc($type) . "=" . lc(CGI->escape($2));
    159162    }
     
    648651                     );
    649652
     653  # All edits bob has made to pub pages in the last week in Atom format
     654  $guide->display_feed(
     655                         feed_type => 'atom',
     656                         days      => 7,
     657                         username  => "bob",
     658                         category  => "Pubs",
     659                     );
     660
    650661C<feed_type> is a mandatory parameter. Supported values at present are
    651 "rss".
     662"rss" and "atom".
    652663
    653664As with other methods, the C<return_output> parameter can be used to
     
    694705    if ($feed_type eq 'rss') {
    695706        $output = "Content-Type: application/rdf+xml\n";
    696     } else {
     707    }
     708    elsif ($feed_type eq 'atom') {
     709        $output = "Content-Type: application/atom+xml\n";
     710    }
     711    else {
    697712        croak "Unknown feed type given: $feed_type";
    698713    }
  • trunk/lib/OpenGuides/Feed.pm

    r769 r784  
    66$VERSION = '0.01';
    77
     8use CGI::Wiki::Plugin::Atom;
    89use CGI::Wiki::Plugin::RSS::ModWiki;
    910use Time::Piece;
     
    6364    my %known_types = (
    6465                          'rss'  => 1,
     66                          'atom' => 1,
    6567                      );
    6668                     
     
    7173        return $self->rss_maker->recent_changes(%args);
    7274    }
     75    elsif ($feed_type eq 'atom') {
     76        return $self->atom_maker->recent_changes(%args);
     77    }
     78}
     79
     80sub atom_maker {
     81    my $self = shift;
     82 
     83    unless ($self->{atom_maker}) {
     84        $self->{atom_maker} = CGI::Wiki::Plugin::Atom->new(
     85            wiki                => $self->{wiki},
     86            site_name           => $self->{site_name},
     87            site_url            => $self->{config}->script_url,
     88            site_description    => $self->{site_description},
     89            make_node_url       => $self->{make_node_url},
     90            recent_changes_link => $self->{config}->script_url . '?action=rc',
     91            atom_link           => $self->{config}->script_url . '?action=rc&format=atom',
     92            software_name       => 'OpenGuides',
     93            software_homepage   => 'http://openguides.org/',
     94            software_version    => $self->{og_version},
     95        );
     96    }
     97   
     98    $self->{atom_maker};
    7399}
    74100
     
    107133=head1 DESCRIPTION
    108134
    109 Produces RSS 1.0 feeds for OpenGuides.  Distributed and
     135Produces RSS 1.0 and Atom 1.0 feeds for OpenGuides.  Distributed and
    110136installed as part of the OpenGuides project, not intended for independent
    111137installation.  This documentation is probably only useful to OpenGuides
     
    151177invoked this module with.
    152178
     179=item B<atom_maker>
     180
     181Returns a raw L<CGI::Wiki::Plugin::Atom> object created with the values you
     182invoked this module with.
     183
    153184=item B<make_feed>
    154185
     
    160191    print $rdf_writer->make_feed( %args );
    161192
     193    # All the changes made by bob in the past week, ignoring minor edits, in Atom.
     194    $args{days}               = 7;
     195    $args{ignore_minor_edits  = 1;
     196    $args{filter_on_metadata} => { username => "bob" };
     197
     198    print "Content-Type: application/atom+xml\n";
     199    print "Last-Modified: " . $feed->feed_timestamp( %args ) . "\n\n";
     200    print $feed->make_feed( %args );
     201
    162202=item B<feed_timestamp>
    163203
     
    176216=over 4
    177217
    178 =item * L<CGI::Wiki> and L<CGI::Wiki::Plugin::RSS::ModWiki>
     218=item * L<CGI::Wiki>, L<CGI::Wiki::Plugin::RSS::ModWiki> and L<CGI::Wiki::Plugin::Atom>
    179219
    180220=item * L<http://openguides.org/>
  • trunk/wiki.cgi

    r783 r784  
    111111                croak "Unknown RSS feed type '$feed'";
    112112            }
     113        } elsif ($format && $format eq 'atom') {
     114            my %args = map { $_ => ( $q->param($_) || "" ) }
     115                       qw( feed items days ignore_minor_edits username
     116                           category locale );
     117            $args{feed_type} = 'atom';
     118            $guide->display_feed( %args );
    113119        } else {
    114120            $guide->display_node( id => 'RecentChanges' );
Note: See TracChangeset for help on using the changeset viewer.