root/lang/perl/Catalyst-Controller-Atompub/tags/0.2.3/samples/MyBlog/lib/MyBlog/Controller/Html.pm @ 2805

Revision 2805, 1.8 kB (checked in by takemaru, 6 years ago)

lang/perl/Catalyst-Controller-Atompub: v0.2.3 released. see Changes in detail

Line 
1package # hide from PAUSE
2    MyBlog::Controller::Html;
3
4use strict;
5use warnings;
6use base 'Catalyst::Controller';
7
8use Atompub::DateTime qw( datetime );
9use Atompub::MediaType qw( media_type );
10use Atompub::Util qw( is_acceptable_media_type );
11use String::CamelCase qw( camelize );
12
13my $ENTRIES_PER_PAGE = 10;
14my $ENTRY_TABLE_NAME = 'entries';
15my $MEDIA_TABLE_NAME = 'medias';
16
17my $ENTRY_MODEL = join '::', 'DBIC', camelize( $ENTRY_TABLE_NAME );
18my $MEDIA_MODEL = join '::', 'DBIC', camelize( $MEDIA_TABLE_NAME );
19
20sub index : Private {
21    my ( $self, $c ) = @_;
22
23    my @colls;
24
25    my $page = $c->req->param('page') || 1;
26
27    my $attr = {
28        offset   => ( $page - 1 ) * $ENTRIES_PER_PAGE,
29        rows     => $ENTRIES_PER_PAGE,
30        order_by => 'edited desc',
31    };
32
33    my $rs = $c->model( $ENTRY_MODEL )->search( {}, $attr );
34
35    my @entries;
36    while ( my $resource = $rs->next ) {
37        my $entry = XML::Atom::Entry->new( \$resource->body );
38
39        my $uri     = $entry->edit_link;
40        my $title   = qq{<a href="$uri">} . $entry->title . '</a>';
41        my $content = $entry->content->body;
42
43        push @entries, { updated => datetime( $entry->updated )->str,
44                         title   => $title,
45                         content => $content };
46    }
47
48    push @colls, { title => 'Diary', entries => \@entries };
49
50    $rs = $c->model( $MEDIA_MODEL )->search( {}, $attr );
51
52    my @media_link_entries;
53    while ( my $resource = $rs->next ) {
54        my $entry = XML::Atom::Entry->new( \$resource->entry_body );
55
56        my $uri     = $entry->content->src;
57        my $title   = qq{<a href="$uri">} . $entry->title . '</a>';
58        my $content = qq{<a href="$uri"><img src="$uri"/></a>};
59
60        push @media_link_entries, { updated => datetime( $entry->updated )->str,
61                                    title   => $title,
62                                    content => $content };
63    }
64
65    push @colls, { title => 'Photo', entries => \@media_link_entries };
66
67    $c->stash->{collections} = \@colls;
68}
69
701;
Note: See TracBrowser for help on using the browser.