[Jifty-commit] r6094 - wifty/trunk/lib/Wifty/View
Jifty commits
jifty-commit at lists.jifty.org
Fri Dec 12 11:25:32 EST 2008
Author: ruz
Date: Fri Dec 12 11:25:31 2008
New Revision: 6094
Added:
wifty/trunk/lib/Wifty/View/Feeds.pm
Log:
* add feeds
Added: wifty/trunk/lib/Wifty/View/Feeds.pm
==============================================================================
--- (empty file)
+++ wifty/trunk/lib/Wifty/View/Feeds.pm Fri Dec 12 11:25:31 2008
@@ -0,0 +1,61 @@
+use warnings;
+use strict;
+
+package Wifty::View::Feeds;
+use Jifty::View::Declare -base;
+
+use XML::Atom::SimpleFeed;
+use Data::UUID;
+
+# XXX: don't know how to redispatch to private template
+# right from dispatcher
+template 'atom/recent' => sub {
+ set(type => 'full');
+ show('../atom');
+};
+
+template 'atom/recent/diff' => sub {
+ set(type => 'diff');
+ show('../../atom');
+};
+
+template 'atom/recent/headlines' => sub {
+ set(type => 'headlines');
+ show('../../atom');
+};
+
+# XXX: id rendering is not correct
+private template 'atom' => sub {
+ my ($pages, $type) = get(qw(pages type));
+ my $wikiname = Jifty->config->app('WikiName');
+ my $title = $wikiname
+ ? _('Recently changed pages on %1 wiki', $wikiname)
+ : _('Recently changed pages on some wiki');
+ my $feed = XML::Atom::SimpleFeed->new(
+ title => $title,
+ link => Jifty->web->url,
+ id => 'urn:uuid:' . Data::UUID->new->create_str()
+ );
+
+ while ( my $page = $pages->next ) {
+ my $summary = '';
+ if ( !$type || $type eq 'full' ) {
+ $summary = $page->viewer->form_field('content')->wiki_content;
+ }
+ elsif ( $type eq 'diff' ) {
+ $summary = '<pre>'. $page->revisions->last->diff_from .'</pre>';
+ }
+
+ $feed->add_entry(
+ id => 'urn:uuid:' . Data::UUID->new->create_str(),
+ link => Jifty->web->url . '/view/' . $page->name,
+ title => $page->name,
+ author => $page->updated_by->friendly_name,
+ updated => $page->updated,
+ summary => $summary,
+ );
+ }
+ $feed->print;
+};
+
+1;
More information about the Jifty-commit
mailing list