Author: nick
Date: 2006-06-22 15:51:06 +0100 (Thu, 22 Jun 2006)
New Revision: 816
Modified:
trunk/templates/site_index.tt
Log:
(Correctly) add links to rdf, rss and atom
Modified: trunk/templates/site_index.tt
===================================================================
--- trunk/templates/site_index.tt 2006-06-22 14:43:15 UTC (rev 815)
+++ trunk/templates/site_index.tt 2006-06-22 14:51:06 UTC (rev 816)
@@ -30,11 +30,11 @@
<p>
This list is available as
- <a href="[% cgi_url %]?action=index;index_type=[% type %];index_value=[% value %];format=rdf">rdf</a>,
+ <a href="[% cgi_url %]?action=index;index_type=[% criterion.type %];index_value=[% criterion.value %];format=rdf">rdf</a>,
or as a
- <a href="[% cgi_url %]?action=index;index_type=[% type %];index_value=[% value %];format=rss">rss feed</a>,
+ <a href="[% cgi_url %]?action=index;index_type=[% criterion.type %];index_value=[% criterion.value %];format=rss">rss feed</a>,
or as an
- <a href="[% cgi_url %]?action=index;index_type=[% type %];index_value=[% value %];format=atom">atom feed</a>.
+ <a href="[% cgi_url %]?action=index;index_type=[% criterion.type %];index_value=[% criterion.value %];format=atom">atom feed</a>.
</p>
[% INCLUDE footer.tt %]
Author: nick
Date: 2006-06-22 15:43:15 +0100 (Thu, 22 Jun 2006)
New Revision: 815
Modified:
trunk/templates/site_index.tt
Log:
Add links to rdf, rss and atom
Modified: trunk/templates/site_index.tt
===================================================================
--- trunk/templates/site_index.tt 2006-06-22 14:30:44 UTC (rev 814)
+++ trunk/templates/site_index.tt 2006-06-22 14:43:15 UTC (rev 815)
@@ -27,4 +27,14 @@
[% END %]
</ol>
</div>
+
+<p>
+ This list is available as
+ <a href="[% cgi_url %]?action=index;index_type=[% type %];index_value=[% value %];format=rdf">rdf</a>,
+ or as a
+ <a href="[% cgi_url %]?action=index;index_type=[% type %];index_value=[% value %];format=rss">rss feed</a>,
+ or as an
+ <a href="[% cgi_url %]?action=index;index_type=[% type %];index_value=[% value %];format=atom">atom feed</a>.
+</p>
+
[% INCLUDE footer.tt %]
Author: nick
Date: 2006-06-22 15:11:27 +0100 (Thu, 22 Jun 2006)
New Revision: 813
Modified:
trunk/lib/OpenGuides/Feed.pm
Log:
Add method for generating a feed from an arbitary list of nodes
Modified: trunk/lib/OpenGuides/Feed.pm
===================================================================
--- trunk/lib/OpenGuides/Feed.pm 2006-06-22 13:53:46 UTC (rev 812)
+++ trunk/lib/OpenGuides/Feed.pm 2006-06-22 14:11:27 UTC (rev 813)
@@ -56,6 +56,17 @@
$self;
}
+=item B<make_feed>
+Produce one of the standard feeds, in the requested format.
+
+
+my $feed_contents = feeds->make_feed(
+ feed_type => 'rss',
+ feed_listing => 'recent_changes'
+ );
+
+Passes additional arguments through to the underlying Wiki::Toolkit::Feed
+=cut
sub make_feed {
my ($self, %args) = @_;
@@ -82,6 +93,41 @@
}
}
+=item B<build_feed_for_nodes>
+For the given feed type, build a feed from the supplied list of nodes.
+Will figure out the feed timestamp from the newest node, and output a
+ last modified header based on this.
+
+my @nodes = $wiki->fetch_me_nodes_I_like();
+my $feed_contents = $feed->build_feed_for_nodes("rss", @nodes);
+=cut
+sub build_feed_for_nodes {
+ my ($self, $format, @nodes) = @_;
+
+ # Grab our feed maker
+ my $maker = $self->fetch_maker($format);
+
+ # Find our newest node, so we can use that for the feed timestamp
+ my $newest_node;
+ foreach my $node (@nodes) {
+ if($node->{last_modified}) {
+ if((!$newest_node) || $node->{last_modified} < $newest_node->{last_modified}) {
+ $newest_node = $node;
+ }
+ }
+ }
+
+ # Grab the timestamp, and do our header
+ my $timestamp = $maker->feed_timestamp($newest_node);
+
+ my $feed = "Last-Modified: ".$timestamp."\n\n";
+
+ # Generate the feed itself
+ $feed .= $maker->generate_node_list_feed($timestamp, @nodes);
+
+ return $feed;
+}
+
=item B<fetch_maker>
For the given feed type, identify and return the maker routine for feeds
of that type.
Author: dom
Date: 2006-06-14 22:27:32 +0100 (Wed, 14 Jun 2006)
New Revision: 810
Modified:
trunk/Changes
trunk/PREREQUISITES
trunk/lib/OpenGuides.pm
trunk/wiki.cgi
Log:
Release bug-fix
Modified: trunk/Changes
===================================================================
--- trunk/Changes 2006-06-14 18:30:55 UTC (rev 809)
+++ trunk/Changes 2006-06-14 21:27:32 UTC (rev 810)
@@ -1,5 +1,9 @@
"#" items refer to tickets. See <http://dev.openguides.org/report/9> for details.
+0.56 14 June 2006
+ Fix bug introduced in feed formatting where Atom feeds would be
+ produced when asked for RSS and vice versa.
+
0.55 13 June 2006
Versioned dependency on Wiki::Toolkit to avoid development
versions
Modified: trunk/PREREQUISITES
===================================================================
--- trunk/PREREQUISITES 2006-06-14 18:30:55 UTC (rev 809)
+++ trunk/PREREQUISITES 2006-06-14 21:27:32 UTC (rev 810)
@@ -1,4 +1,4 @@
-Modules required by OpenGuides 0.55
+Modules required by OpenGuides 0.56
===================================
Algorithm::Diff (version 0.13 or later. Note that the latest version uses
Modified: trunk/lib/OpenGuides.pm
===================================================================
--- trunk/lib/OpenGuides.pm 2006-06-14 18:30:55 UTC (rev 809)
+++ trunk/lib/OpenGuides.pm 2006-06-14 21:27:32 UTC (rev 810)
@@ -14,7 +14,7 @@
use vars qw( $VERSION );
-$VERSION = '0.55';
+$VERSION = '0.56';
=head1 NAME
Modified: trunk/wiki.cgi
===================================================================
--- trunk/wiki.cgi 2006-06-14 18:30:55 UTC (rev 809)
+++ trunk/wiki.cgi 2006-06-14 21:27:32 UTC (rev 810)
@@ -4,7 +4,7 @@
use warnings;
use vars qw( $VERSION );
-$VERSION = '0.55';
+$VERSION = '0.56';
use CGI qw/:standard/;
use CGI::Carp qw(croak);
Author: nick
Date: 2006-06-14 19:30:55 +0100 (Wed, 14 Jun 2006)
New Revision: 809
Modified:
trunk/Changes
Log:
Add a note about the node versions feed
Modified: trunk/Changes
===================================================================
--- trunk/Changes 2006-06-14 17:43:03 UTC (rev 808)
+++ trunk/Changes 2006-06-14 18:30:55 UTC (rev 809)
@@ -3,6 +3,9 @@
0.55 13 June 2006
Versioned dependency on Wiki::Toolkit to avoid development
versions
+ Support generating feeds of a node's version listing, in addition
+ to feeds of the recent changes. For more information on OpenGuides
+ feeds, see http://dev.openguides.org/wiki/FeedsIntro
0.54_02 8 June 2006
Pass the feed_listing (currently just recent_changes) through all
Author: nick
Date: 2006-06-14 18:43:03 +0100 (Wed, 14 Jun 2006)
New Revision: 808
Modified:
trunk/t/22_feed_recent_changes.t
trunk/t/23_feed_node_all_versions.t
Log:
Check to ensure the feed type turns up in the feed (should spot when we invert atom and rss, for example)
Modified: trunk/t/22_feed_recent_changes.t
===================================================================
--- trunk/t/22_feed_recent_changes.t 2006-06-14 17:41:53 UTC (rev 807)
+++ trunk/t/22_feed_recent_changes.t 2006-06-14 17:43:03 UTC (rev 808)
@@ -21,7 +21,7 @@
# Which feed types do we test?
my @feed_types = qw( rss atom );
-plan tests => 7 * scalar @feed_types;
+plan tests => 8 * scalar @feed_types;
foreach my $feed_type (@feed_types) {
@@ -50,9 +50,13 @@
my $feed = OpenGuides::Feed->new( wiki => $wiki,
config => $config );
- my $rss = eval { $feed->make_feed(feed_type => $feed_type, feed_listing => 'recent_changes'); };
+ my $feed_output = eval { $feed->make_feed(feed_type => $feed_type, feed_listing => 'recent_changes'); };
is( $@, "", "->make_feed for $feed_type doesn't croak" );
+ # Ensure that the feed actually contained rss/atom (a good guide
+ # that we actually got the right feed)
+ like( $feed_output, "/$feed_type/i", "Does contain the feed type" );
+
# Now write some data, first a minor edit then a non-minor one.
my $guide = OpenGuides->new( config => $config );
Modified: trunk/t/23_feed_node_all_versions.t
===================================================================
--- trunk/t/23_feed_node_all_versions.t 2006-06-14 17:41:53 UTC (rev 807)
+++ trunk/t/23_feed_node_all_versions.t 2006-06-14 17:43:03 UTC (rev 808)
@@ -21,7 +21,7 @@
# Which feed types do we test?
my @feed_types = qw( rss atom );
-plan tests => 10 * scalar @feed_types;
+plan tests => 11 * scalar @feed_types;
foreach my $feed_type (@feed_types) {
@@ -50,10 +50,14 @@
my $feed = OpenGuides::Feed->new( wiki => $wiki,
config => $config );
- my $rss = eval { $feed->make_feed(feed_type => $feed_type, feed_listing => 'recent_changes'); };
+ my $feed_output = eval { $feed->make_feed(feed_type => $feed_type, feed_listing => 'recent_changes'); };
is( $@, "", "->make_feed for $feed_type doesn't croak" );
+ # Ensure that the feed actually contained rss/atom (a good guide
+ # that we actually got the right feed)
+ like( $feed_output, "/$feed_type/i", "Does contain the feed type" );
+
# Now write some data: 3 versions of one node, and 1 of another
my $guide = OpenGuides->new( config => $config );