package # hide from PAUSE MyBlog::Controller::Html; use strict; use warnings; use base 'Catalyst::Controller'; use Atompub::DateTime qw(datetime); use Atompub::MediaType qw(media_type); use Atompub::Util qw(is_acceptable_media_type); use String::CamelCase qw(camelize); my $ENTRIES_PER_PAGE = 10; my $ENTRY_TABLE_NAME = 'entries'; my $MEDIA_TABLE_NAME = 'medias'; my $ENTRY_MODEL = join '::', 'DBIC', camelize($ENTRY_TABLE_NAME); my $MEDIA_MODEL = join '::', 'DBIC', camelize($MEDIA_TABLE_NAME); sub index : Private { my($self, $c) = @_; my @colls; my $page = $c->req->param('page') || 1; my $attr = { offset => ($page - 1) * $ENTRIES_PER_PAGE, rows => $ENTRIES_PER_PAGE, order_by => 'edited desc', }; my $rs = $c->model($ENTRY_MODEL)->search({}, $attr); my @entries; while (my $resource = $rs->next) { my $entry = XML::Atom::Entry->new(\$resource->body); my $uri = $entry->edit_link; my $title = qq{}.$entry->title.''; my $content = $entry->content ? $entry->content->body : ''; push @entries, { updated => datetime($entry->updated)->str, title => $title, content => $content, }; } push @colls, { title => 'Diary', entries => \@entries }; $rs = $c->model($MEDIA_MODEL)->search({}, $attr); my @media_link_entries; while (my $resource = $rs->next) { my $entry = XML::Atom::Entry->new(\$resource->entry_body); my $uri = $entry->content ? $entry->content->src : next; my $title = qq{}.$entry->title.''; my $content = qq{}; push @media_link_entries, { updated => datetime($entry->updated)->str, title => $title, content => $content, }; } push @colls, { title => 'Photo', entries => \@media_link_entries }; $c->stash->{collections} = \@colls; } 1;