Changeset 308
- Timestamp:
- 05/25/06 15:59:17 (6 years ago)
- Location:
- wiki-toolkit/trunk
- Files:
-
- 4 modified
-
MANIFEST (modified) (1 diff)
-
lib/Wiki/Toolkit/Feed/Listing.pm (modified) (2 diffs)
-
lib/Wiki/Toolkit/Feed/RSS.pm (modified) (5 diffs)
-
t/296_feed_rss_recentchanges_add_test_data.t (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
wiki-toolkit/trunk/MANIFEST
r306 r308 71 71 t/296_feed_rss_recentchanges_add_test_data.t 72 72 t/297_feed_rss_recentchanges.t 73 t/298_feed_rss_node_all_versions.t 73 74 t/300_feed_atom_setup.t 74 75 t/301_feed_atom_add_test_data.t -
wiki-toolkit/trunk/lib/Wiki/Toolkit/Feed/Listing.pm
r298 r308 9 9 Handles common data fetching tasks, so that child classes need only 10 10 worry about formatting the feeds. 11 12 Also enforces some common methods that must be implemented. 11 13 12 14 =cut … … 74 76 my ($self, %args) = @_; 75 77 76 # TODO. Will make use of store->list_node_all_versions() 78 # Check we got the right options 79 unless($args{'name'}) { 80 return (); 81 } 82 83 # Do the fetch 84 my @nodes = $self->{wiki}->list_node_all_versions( 85 name => $args{'name'}, 86 with_content => 0, 87 with_metadata => 1, 88 ); 89 90 # Ensure that all the metadata fields are arrays and not strings 91 foreach my $node (@nodes) { 92 foreach my $mdk (keys %{$node->{'metadata'}}) { 93 unless(ref($node->{'metadata'}->{$mdk}) eq "ARRAY") { 94 $node->{'metadata'}->{$mdk} = [ $node->{'metadata'}->{$mdk} ]; 95 } 96 } 97 } 98 99 return @nodes; 77 100 } 78 101 102 103 # The following are methods that any feed renderer must provide 104 105 =item B<recent_changes> 106 All implementing feed renderers must implement a method to fetch a list 107 of recent changes, and render them 108 =cut 109 sub recent_changes { die("Not implemented by feed renderer!"); } 110 =item B<node_all_versions> 111 All implementing feed renderers must implement a method to fetch a list 112 of the different versions of a node, and render them 113 =cut 114 sub node_all_versions { die("Not implemented by feed renderer!"); } 115 =item B<feed_timestamp> 116 All implementing feed renderers must implement a method to produce a 117 feed specific timestamp, based on the supplied node 118 =cut 119 sub feed_timestamp { die("Not implemented by feed renderer!"); } 120 79 121 1; -
wiki-toolkit/trunk/lib/Wiki/Toolkit/Feed/RSS.pm
r297 r308 62 62 63 63 my @changes = $self->fetch_recently_changed_nodes(%args); 64 my $ rss_timestamp = $self->rss_timestamp(64 my $feed_timestamp = $self->feed_timestamp( 65 65 $self->fetch_newest_for_recently_changed(%args) 66 66 ); 67 67 68 return $self->generate_node_list_feed($rss_timestamp, @changes); 69 } 68 return $self->generate_node_list_feed($feed_timestamp, @changes); 69 } 70 71 72 =item B<node_all_versions> 73 74 Build an RSS Feed of all the different versions of a given node. 75 76 =cut 77 sub node_all_versions 78 { 79 my ($self, %args) = @_; 80 81 my @all_versions = $self->fetch_node_all_versions(%args); 82 my $feed_timestamp = $self->feed_timestamp( $all_versions[0] ); 83 84 return $self->generate_node_list_feed($feed_timestamp, @all_versions); 85 } 86 70 87 71 88 =item <generate_node_list_feed> … … 75 92 =cut 76 93 sub generate_node_list_feed { 77 my ($self,$ rss_timestamp,@nodes) = @_;94 my ($self,$feed_timestamp,@nodes) = @_; 78 95 79 96 #"http://purl.org/rss/1.0/modules/wiki/" … … 124 141 <link>} . $self->{recent_changes_link} . qq{</link> 125 142 <description>} . $self->{site_description} . qq{</description> 126 <dc:date>} . $ rss_timestamp . qq{</dc:date>143 <dc:date>} . $feed_timestamp . qq{</dc:date> 127 144 <modwiki:interwiki>} . $self->{interwiki_identifier} . qq{</modwiki:interwiki>}; 128 145 … … 214 231 } 215 232 216 =item B< rss_timestamp>233 =item B<feed_timestamp> 217 234 218 235 Generate the timestamp for the RSS, based on the newest node (if available) 219 236 220 237 =cut 221 sub rss_timestamp238 sub feed_timestamp 222 239 { 223 240 my ($self, $newest_node) = @_; … … 394 411 =back 395 412 396 =head2 C< rss_timestamp()>397 398 print $rss-> rss_timestamp();413 =head2 C<feed_timestamp()> 414 415 print $rss->feed_timestamp(); 399 416 400 417 Returns the timestamp of the feed in POSIX::strftime style ("Tue, 29 Feb 2000 -
wiki-toolkit/trunk/t/296_feed_rss_recentchanges_add_test_data.t
r306 r308 19 19 my $wiki = Wiki::Toolkit->new( store => $store ); 20 20 21 # Write two versions of one node 22 # The recent changes should only show it once though 21 23 $wiki->write_node( "Old Node", 22 "We will write at least 15 nodes after this one" ); 24 "First version of Old Node" ); 25 my %old_node = $wiki->retrieve_node("Old Node"); 26 $wiki->write_node( "Old Node", 27 "We will write at least 15 nodes after this one", 28 $old_node{'checksum'} ); 23 29 24 30 my $slept = sleep(2);
