Implement single remark view
This commit is contained in:
parent
cbc44b2bc8
commit
8069a255a6
28
PostText.pl
28
PostText.pl
|
@ -122,7 +122,7 @@ group {
|
||||||
);
|
);
|
||||||
|
|
||||||
return $c->redirect_to(
|
return $c->redirect_to(
|
||||||
'remark_page',
|
'thread_page',
|
||||||
{thread_id => $thread_id}
|
{thread_id => $thread_id}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -144,13 +144,13 @@ group {
|
||||||
group {
|
group {
|
||||||
under '/thread/:thread_id', [thread_id => qr/[0-9]+/];
|
under '/thread/:thread_id', [thread_id => qr/[0-9]+/];
|
||||||
|
|
||||||
get '/:remark_page',
|
get '/:thread_page',
|
||||||
[remark_page => qr/[0-9]+/],
|
[thread_page => qr/[0-9]+/],
|
||||||
{remark_page => 1}, sub ($c) { # My editor is so confused by this lol
|
{thread_page => 1}, sub ($c) { # My editor is so confused by this lol
|
||||||
my $thread_id = $c->param('thread_id');
|
my $thread_id = $c->param('thread_id');
|
||||||
my $thread = $c->thread->by_id($thread_id);
|
my $thread = $c->thread->by_id($thread_id);
|
||||||
my $base_path = $c->match->path_for(remark_page => undef)->{'path'};
|
my $base_path = $c->match->path_for(thread_page => undef)->{'path'};
|
||||||
my $this_page = $c->param('remark_page');
|
my $this_page = $c->param('thread_page');
|
||||||
my $last_page = $c->remark->last_page_for($thread_id);
|
my $last_page = $c->remark->last_page_for($thread_id);
|
||||||
my $remarks = $c->remark->by_page_for($thread_id, $this_page);
|
my $remarks = $c->remark->by_page_for($thread_id, $this_page);
|
||||||
|
|
||||||
|
@ -177,6 +177,22 @@ group {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Remark
|
||||||
|
group {
|
||||||
|
under '/remark';
|
||||||
|
|
||||||
|
get '/:remark_id', [remark_id => qr/[0-9]+/], sub ($c) {
|
||||||
|
my $remark_id = $c->param('remark_id');
|
||||||
|
my $remark = $c->remark->by_id($remark_id);
|
||||||
|
|
||||||
|
$c->stash(status => 404) unless $remark->{'id'};
|
||||||
|
|
||||||
|
$c->stash(remark => $remark);
|
||||||
|
|
||||||
|
$c->render;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# Configure things
|
# Configure things
|
||||||
app->secrets(app->config->{'secrets'}) || die $@;
|
app->secrets(app->config->{'secrets'}) || die $@;
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,9 @@ Run the tests locally (against development environment)
|
||||||
|
|
||||||
## TODOs
|
## TODOs
|
||||||
|
|
||||||
1. Single remark view
|
1. Add hyperlink to single remarks
|
||||||
|
1. More tests (single remark view at least... maybe more)
|
||||||
|
1. Grow into Mojo hybrid
|
||||||
|
|
||||||
## Crazy future ideas
|
## Crazy future ideas
|
||||||
|
|
||||||
|
|
|
@ -86,4 +86,26 @@ sub last_for($self, $thread_id) {
|
||||||
END_SQL
|
END_SQL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub by_id($self, $remark_id) {
|
||||||
|
my $date_format = $self->{'date_format'};
|
||||||
|
|
||||||
|
$self->pg->db->query(<<~'END_SQL', $date_format, $remark_id)->hash;
|
||||||
|
SELECT remark_id AS id,
|
||||||
|
TO_CHAR(remark_date, ?) AS date,
|
||||||
|
remark_author AS author,
|
||||||
|
remark_body AS body,
|
||||||
|
thread_id
|
||||||
|
FROM remarks
|
||||||
|
WHERE remark_id = ?;
|
||||||
|
END_SQL
|
||||||
|
}
|
||||||
|
|
||||||
|
sub thread_id_for($self, $remark_id) {
|
||||||
|
$self->pg->db->query(<<~'END_SQL', $remark_id)->hash->{'thread_id'}
|
||||||
|
SELECT thread_id
|
||||||
|
FROM remarks
|
||||||
|
WHERE remark_id = ?;
|
||||||
|
END_SQL
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<article class="thread">
|
<article class="thread">
|
||||||
<span class="id">
|
<span class="id">
|
||||||
<%= link_to "#$thread->{'id'}",
|
<%= link_to "#$thread->{'id'}",
|
||||||
remark_page => {thread_id => $thread->{'id'}} %>
|
thread_page => {thread_id => $thread->{'id'}} %>
|
||||||
</span>
|
</span>
|
||||||
<h3 class="title"><%= %$thread{'title'} %></h3>
|
<h3 class="title"><%= %$thread{'title'} %></h3>
|
||||||
<h4 class="date"><%= %$thread{'date'} %></h4>
|
<h4 class="date"><%= %$thread{'date'} %></h4>
|
||||||
|
|
14
templates/remark_id.html.ep
Normal file
14
templates/remark_id.html.ep
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
% layout 'main';
|
||||||
|
% title "Remark - #$remark->{'id'}";
|
||||||
|
<h2><%= title %></h2>
|
||||||
|
<div class="remarks">
|
||||||
|
<article class="remark">
|
||||||
|
<span class="id">#<%= %$remark{'id'} %></span>
|
||||||
|
<h4 class="date"><%= %$remark{'date'} %></h4>
|
||||||
|
<h5 class="author"><%= %$remark{'author'} %></h5>
|
||||||
|
<p class="body"><%= %$remark{'body'} %></p>
|
||||||
|
</article>
|
||||||
|
</div>
|
||||||
|
<nav>
|
||||||
|
<%= link_to Thread => thread_page => {thread_id => $remark->{'thread_id'}} %>
|
||||||
|
</nav>
|
|
@ -28,7 +28,7 @@
|
||||||
<article class="thread">
|
<article class="thread">
|
||||||
<span class="id">
|
<span class="id">
|
||||||
<%= link_to "#$thread->{'id'}",
|
<%= link_to "#$thread->{'id'}",
|
||||||
remark_page => {thread_id => $thread->{'id'}} %>
|
thread_page => {thread_id => $thread->{'id'}} %>
|
||||||
</span>
|
</span>
|
||||||
<h3 class="title"><%= %$thread{'title'} %></h3>
|
<h3 class="title"><%= %$thread{'title'} %></h3>
|
||||||
<h4 class="date"><%= %$thread{'date'} %></h4>
|
<h4 class="date"><%= %$thread{'date'} %></h4>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user