Skip to content

Commit

Permalink
added single blog entry
Browse files Browse the repository at this point in the history
  • Loading branch information
tempire committed Apr 17, 2011
1 parent d49a9c1 commit 43f0888
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 31 deletions.
4 changes: 4 additions & 0 deletions lib/Nempire.pm
Expand Up @@ -39,6 +39,10 @@ sub startup {
$r->get('/photos/:id')->over('photoset')->to('photos#show_set');
$r->get('/photos/:id')->to('photos#show');

$r->get('/blogs')->to('blogs#index');
$r->get('/blogs/(:name)')->to('blogs#show');
$r->get('/blogs/tag/(*tags)')->to('blogs#index');

$r->get('/blogs')->to('blogs#index');
$r->get('/blogs/(*tags)')->to('blogs#index');
}
Expand Down
19 changes: 17 additions & 2 deletions lib/Nempire/Blogs.pm
Expand Up @@ -12,15 +12,30 @@ sub index {

# Default tag
@tags = qw/ personal / if !@tags;
warn "@tags";

my @blogs = $self->db->resultset('Blog')->by_tags(@tags);
return $self->render(status => 404) if !@blogs;
return $self->redirect_to('/blogs') if !@blogs;

$self->render(
template => 'blogs/index',
blogs => \@blogs,
);
}

sub show {
my $self = shift;
my $name = $self->stash('name');

my $blog = $self->db->resultset('Blog')->find({id => $name});
$blog = $self->db->resultset('Blog')->find({title => {LIKE => $name}})
if !$blog;

return $self->redirect_to('/blogs') if !$blog;

$self->render(
template => 'blogs/show',
blog => $blog,
);
}

1;
Binary file modified nempire.db
Binary file not shown.
36 changes: 7 additions & 29 deletions t/blogs.t
Expand Up @@ -7,36 +7,14 @@ my $t = Test::Mojo->new(app => 'Nempire');

# Blog not found
$t->get_ok('/blogs/bad_title')->status_is(302)
->header_is(Location => '/blogs');
->header_like(Location => qr|/blogs$|);

## All sets
$t->get_ok('/blogs')->status_is(200);
# ->element_exists('ul#blogs')
# ->element_exists('#blogs > .blog.snippet')
# ->content_like(qr/\d+\s+photos in\s+\d+\s+albums/i);
# List
$t->get_ok('/blogs')->status_is(200)->element_exists('ul#blogs')
->element_exists('#blogs > .blog.snippet');

#ok my $set_id =
# $t->tx->res->dom('div#photosets > div.photo')->[0]->attrs('id'),
# 'set id';
#ok my $set_url =
# $t->tx->res->dom('div#photosets > div.photo > a')->[0]->attrs('href'),
# 'set url';
#ok my $set_title =
# $t->tx->res->dom('div#photosets > div.photo > a div.title')->[0]->text,
# 'set title';
#
#is length $set_id => 17;
#
## Show set
#$t->get_ok($set_url)->status_is(200)->text_is(h1 => $set_title);
#$t->get_ok("/photos/$set_id")->status_is(200)->text_is(h1 => $set_title);
#$t->get_ok("/photos/$set_title")->status_is(200)->text_is(h1 => $set_title);
#
#ok my $photo_url =
# $t->tx->res->dom('div.photoset a.slide')->[0]->attrs('href'), 'photo url';
#like $photo_url => qr|^/photos/\d+$|;
#
## Photo
#$t->get_ok($photo_url)->status_is(200)->text_like('h1 a.title' => qr/$set_title/);
# One blog entry
$t->get_ok('/blogs/hello_')->status_is(200)
->element_exists->element_exists('ul#blogs')->text_is('h2 > a' => 'Hello!');

done_testing;
34 changes: 34 additions & 0 deletions templates/blogs/show.html.ep
@@ -0,0 +1,34 @@
% layout 'default';
% title 'Phased Blog';

<ul id="blogs">

<li id="<%= $blog->url_title %>" class="blog snippet">
<a name="id<%= $blog->id %>"></a>
<a name="<%= $blog->url_title %>"></a>
<h2>
<a class="more" href="/blogs/<%= $blog->url_title %>">
%= $blog->title
</a>
</h2>
<div class="tags">

% for my $tag ($blog->tags) {
<span class="tag">
%= $tag->name
</span>
% }

</div>

% if ($blog->subtitle) {
<h3 class="subtitle"><%= $blog->subtitle %></h3>
% }

<h3 class="time" title="<%= $blog->time_since %>"><%= $blog->created_time_string %></h3>
<div class="content">
%= $blog->content
</div>
</li>

</ul>

0 comments on commit 43f0888

Please sign in to comment.