Implement get_post_by_id() and the message_id view
This commit is contained in:
parent
1809a765f2
commit
f2ca5cc1b6
|
@ -132,12 +132,20 @@ any [qw{GET POST}], '/sign' => sub ($c) {
|
||||||
$c->render();
|
$c->render();
|
||||||
};
|
};
|
||||||
|
|
||||||
under '/message';
|
group {
|
||||||
|
under '/message';
|
||||||
|
|
||||||
get '/:id', [id => qr/[0-9]+/] => sub ($c) {
|
get '/:message_id', [message_id => qr/[0-9]+/] => sub ($c) {
|
||||||
my $message_id = $c->param('id');
|
my $message_id = $c->param('message_id');
|
||||||
|
my @view_post = $c->message->get_post_by_id($message_id);
|
||||||
|
|
||||||
$c->render(text => "You've requested message number: $message_id");
|
$c->stash(status => 404) unless $view_post[0];
|
||||||
|
|
||||||
|
$c->stash(view_post => @view_post);
|
||||||
|
|
||||||
|
#$c->render(text => "You've requested message number: $message_id");
|
||||||
|
$c->render();
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Send it
|
# Send it
|
||||||
|
|
|
@ -95,7 +95,7 @@ sub create_post($self, $name, $message, $url = undef, $spam = 1) {
|
||||||
}
|
}
|
||||||
|
|
||||||
sub max_posts($self, $value = undef) {
|
sub max_posts($self, $value = undef) {
|
||||||
return $self->{'max_posts'} = $value // $self->{'max_posts'}
|
$self->{'max_posts'} = $value // $self->{'max_posts'}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub get_last_page($self, $want_spam = undef) {
|
sub get_last_page($self, $want_spam = undef) {
|
||||||
|
@ -103,23 +103,35 @@ sub get_last_page($self, $want_spam = undef) {
|
||||||
my $last_page = int($post_count / $self->{'max_posts'});
|
my $last_page = int($post_count / $self->{'max_posts'});
|
||||||
|
|
||||||
# Add a page if we have "remainder" posts
|
# Add a page if we have "remainder" posts
|
||||||
return $post_count % $self->{'max_posts'} ? ++$last_page : $last_page;
|
$post_count % $self->{'max_posts'} ? ++$last_page : $last_page;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub get_post_count($self) {
|
sub get_post_count($self) {
|
||||||
return $self->pg->db->query(<<~'END_SQL')->text()
|
$self->pg->db->query(<<~'END_SQL')->text()
|
||||||
SELECT COUNT(*)
|
SELECT COUNT(*)
|
||||||
FROM messages
|
FROM messages
|
||||||
WHERE NOT is_spam;
|
WHERE NOT is_spam;
|
||||||
END_SQL
|
END_SQL
|
||||||
}
|
}
|
||||||
|
|
||||||
sub get_spam_count($self) {
|
sub get_spam_count($self) {
|
||||||
return $self->pg->db->query(<<~'END_SQL')->text()
|
$self->pg->db->query(<<~'END_SQL')->text()
|
||||||
SELECT COUNT(*)
|
SELECT COUNT(*)
|
||||||
FROM messages
|
FROM messages
|
||||||
WHERE is_spam;
|
WHERE is_spam;
|
||||||
END_SQL
|
END_SQL
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_post_by_id($self, $message_id) {
|
||||||
|
$self->pg->db->query(<<~'END_SQL', $message_id)->array()
|
||||||
|
SELECT TO_CHAR(message_date, 'Dy Mon DD HH:MI:SS AM TZ YYYY'),
|
||||||
|
visitor_name,
|
||||||
|
message,
|
||||||
|
homepage_url,
|
||||||
|
message_id
|
||||||
|
FROM messages
|
||||||
|
WHERE message_id = ?;
|
||||||
|
END_SQL
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
20
templates/message_id.html.ep
Normal file
20
templates/message_id.html.ep
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
% layout 'default';
|
||||||
|
% title 'View';
|
||||||
|
<h2>Messages from the World Wide Web</h2>
|
||||||
|
<div class="articles">
|
||||||
|
<article>
|
||||||
|
<h3><%= @$view_post[0] %></h3>
|
||||||
|
<div class="message field">
|
||||||
|
<blockquote><p><%= @$view_post[2] %></p></blockquote>
|
||||||
|
</div>
|
||||||
|
<div class="name field">
|
||||||
|
<p style="margin: 0 0 0 0;">
|
||||||
|
- <%= @$view_post[1] %>
|
||||||
|
<% if (@$view_post[3]) { =%>
|
||||||
|
(<%= link_to Homepage => @$view_post[3] %>)
|
||||||
|
<% } =%>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<span hidden>Message ID: <%= @$view_post[4] %></span>
|
||||||
|
</article>
|
||||||
|
</div>
|
Loading…
Reference in a new issue