Implement remark-to-remark feature; move 'last remark' above 'thread' in the post_remark view
This commit is contained in:
parent
a34b82eadb
commit
f1ebc492e5
|
@ -26,7 +26,10 @@ Now try requesting http://localhost:3000
|
|||
|
||||
## Testing
|
||||
|
||||
Run the tests locally (against development environment):
|
||||
First, create a valid first thread and first remark to the first
|
||||
thread. The tests rely on the existence of thread #1 and remark #1
|
||||
being the first remark to that first thread. Then you can run the
|
||||
tests locally:
|
||||
|
||||
prove -l
|
||||
|
||||
|
|
|
@ -156,6 +156,7 @@ sub startup($self) {
|
|||
my $remark = $r->any('/remark');
|
||||
|
||||
$remark->any([qw{GET POST}], '/post/:thread_id', [thread_id => qr/\d+/])
|
||||
->any('/:remark_id', [remark_id => qr/\d+/], {remark_id => 0})
|
||||
->to('remark#create')
|
||||
->name('post_remark');
|
||||
|
||||
|
|
|
@ -15,7 +15,9 @@ sub by_id($self) {
|
|||
}
|
||||
|
||||
sub create($self) {
|
||||
my ($thread_id, $v) = ($self->param('thread_id'), undef);
|
||||
my $thread_id = $self->param('thread_id');
|
||||
my $remark_id = $self->param('remark_id');
|
||||
my $v;
|
||||
|
||||
$v = $self->validation if $self->req->method eq 'POST';
|
||||
|
||||
|
@ -50,7 +52,9 @@ sub create($self) {
|
|||
}
|
||||
|
||||
my $thread = $self->thread->by_id($thread_id);
|
||||
my $last_remark = $self->remark->last_for($thread_id);
|
||||
my $last_remark = $remark_id
|
||||
? $self->remark->by_id($remark_id)
|
||||
: $self->remark->last_for($thread_id);
|
||||
|
||||
$self->stash(
|
||||
thread => $thread,
|
||||
|
|
10
t/remark.t
10
t/remark.t
|
@ -16,7 +16,8 @@ my %invalid_remark = (
|
|||
|
||||
subtest 'View single remark', sub {
|
||||
$t->get_ok('/remark/single/1')->status_is(200)
|
||||
->text_like(h2 => qr/Remark #1/);
|
||||
->text_like(h2 => qr/Remark #1/)
|
||||
->element_exists('a[href$="/remark/post/1/1"]')
|
||||
};
|
||||
|
||||
$t->ua->max_redirects(1);
|
||||
|
@ -28,6 +29,13 @@ subtest 'Post new remark', sub {
|
|||
->element_exists('form textarea[name="body"]')
|
||||
->element_exists('form button[type="submit"]' )
|
||||
->text_like(h2 => qr/Remark on Thread #/);
|
||||
# Test the remark-to-remark thing
|
||||
$t->get_ok('/remark/post/1/1')->status_is(200)
|
||||
->element_exists('form input[name="author"]' )
|
||||
->element_exists('form textarea[name="body"]')
|
||||
->element_exists('form button[type="submit"]' )
|
||||
->element_exists('a[href$="/remark/single/1"]')
|
||||
->text_like(h3 => qr/Last Remark/);
|
||||
|
||||
# POST
|
||||
$t->post_ok('/remark/post/1')->status_is(200)
|
||||
|
|
|
@ -34,8 +34,9 @@ subtest 'View single thread', sub {
|
|||
$t->get_ok('/thread/single/1')->status_is(200)
|
||||
->text_like(h2 => qr/Thread #1/);
|
||||
|
||||
# Test the thread_page and remark_id params
|
||||
$t->get_ok('/thread/single/1/1')->status_is(200)
|
||||
->text_like(h2 => qr/Thread #1/);
|
||||
->element_exists('a[href$="/remark/post/1/1"]');
|
||||
|
||||
$t->get_ok('/thread/single/65536')->status_is(404)
|
||||
->text_like(p => qr/Thread not found/);
|
||||
|
|
|
@ -29,7 +29,8 @@
|
|||
<%= link_to Thread => single_thread =>
|
||||
{thread_id => $remark->{'thread_id'}}, (class => 'click') %>
|
||||
<%= link_to Remark => post_remark =>
|
||||
{thread_id => $remark->{'thread_id'}}, (class => 'click') %>
|
||||
{thread_id => $remark->{'thread_id'}, remark_id => $remark->{'id'}},
|
||||
(class => 'click') %>
|
||||
<%= link_to Flag => flag_remark => {remark_id => $remark->{'id'}},
|
||||
(class => 'click') %>
|
||||
</nav>
|
||||
|
|
|
@ -48,6 +48,43 @@
|
|||
</div>
|
||||
<button type="submit" class="form-button">Post</button>
|
||||
</form>
|
||||
<%# Putting this first above the thread body (nested if, yucky sry) %>
|
||||
<% if (keys %{$last_remark}) { =%>
|
||||
<section class="pager">
|
||||
<h3 class="pager__title">Last Remark</h3>
|
||||
<article class="post">
|
||||
<h4 class="post__title">
|
||||
<span>
|
||||
<%= $last_remark->{'date'} %>
|
||||
</span>
|
||||
<%= link_to "#$last_remark->{'id'}", single_remark =>
|
||||
{remark_id => $last_remark->{'id'}}, (class => 'post__id') %>
|
||||
</h4>
|
||||
<h5 class="post__author"><%= $last_remark->{'author'} %></h5>
|
||||
<div class="post__body">
|
||||
<%== markdown $last_remark->{'body'} =%>
|
||||
</div>
|
||||
<nav class="post__nav">
|
||||
<%= link_to Thread => single_thread =>
|
||||
{thread_id => $last_remark->{'thread_id'}}, (class => 'click') %>
|
||||
<%= link_to Remark => post_remark =>
|
||||
{thread_id => $last_remark->{'thread_id'}}, (class => 'click') %>
|
||||
<%= link_to Flag => flag_remark => {remark_id => $last_remark->{'id'}},
|
||||
(class => 'click') %>
|
||||
</nav>
|
||||
<% if (is_mod) { =%>
|
||||
<nav class="post__nav">
|
||||
<%= link_to Hide => hide_remark => {remark_id => $last_remark->{'id'}},
|
||||
(class => 'click') %>
|
||||
<%= link_to Unhide => unhide_remark => {remark_id =>
|
||||
$last_remark->{'id'}}, (class => 'click') %>
|
||||
<%= link_to Unflag => unflag_remark => {remark_id =>
|
||||
$last_remark->{'id'}}, (class => 'click') %>
|
||||
</nav>
|
||||
<% } =%>
|
||||
</article>
|
||||
</section>
|
||||
<% } =%><%# Close the last_remark 'if' %>
|
||||
<section class="pager">
|
||||
<h3 class="pager__title">Thread</h3>
|
||||
<article class="post">
|
||||
|
@ -87,40 +124,4 @@
|
|||
<% } =%>
|
||||
</article>
|
||||
</section>
|
||||
<% } =%>
|
||||
<% if (keys %{$last_remark}) { =%>
|
||||
<section class="pager">
|
||||
<h3 class="pager__title">Last Remark</h3>
|
||||
<article class="post">
|
||||
<h4 class="post__title">
|
||||
<span>
|
||||
<%= $last_remark->{'date'} %>
|
||||
</span>
|
||||
<%= link_to "#$last_remark->{'id'}", single_remark =>
|
||||
{remark_id => $last_remark->{'id'}}, (class => 'post__id') %>
|
||||
</h4>
|
||||
<h5 class="post__author"><%= $last_remark->{'author'} %></h5>
|
||||
<div class="post__body">
|
||||
<%== markdown $last_remark->{'body'} =%>
|
||||
</div>
|
||||
<nav class="post__nav">
|
||||
<%= link_to Thread => single_thread =>
|
||||
{thread_id => $last_remark->{'thread_id'}}, (class => 'click') %>
|
||||
<%= link_to Remark => post_remark =>
|
||||
{thread_id => $last_remark->{'thread_id'}}, (class => 'click') %>
|
||||
<%= link_to Flag => flag_remark => {remark_id => $last_remark->{'id'}},
|
||||
(class => 'click') %>
|
||||
</nav>
|
||||
<% if (is_mod) { =%>
|
||||
<nav class="post__nav">
|
||||
<%= link_to Hide => hide_remark => {remark_id => $last_remark->{'id'}},
|
||||
(class => 'click') %>
|
||||
<%= link_to Unhide => unhide_remark => {remark_id =>
|
||||
$last_remark->{'id'}}, (class => 'click') %>
|
||||
<%= link_to Unflag => unflag_remark => {remark_id =>
|
||||
$last_remark->{'id'}}, (class => 'click') %>
|
||||
</nav>
|
||||
<% } =%>
|
||||
</article>
|
||||
</section>
|
||||
<% } =%>
|
||||
<% } =%><%# Close the thread 'if' %>
|
||||
|
|
|
@ -66,7 +66,8 @@
|
|||
<%== markdown $remark->{'body'} =%>
|
||||
</div>
|
||||
<nav class="post__nav">
|
||||
<%= link_to Remark => post_remark => {thread_id => $thread->{'id'}},
|
||||
<%= link_to Remark => post_remark =>
|
||||
{thread_id => $thread->{'id'}, remark_id => $remark->{'id'}},
|
||||
(class => 'click') %>
|
||||
<%= link_to Flag => flag_remark => {remark_id => $remark->{'id'}},
|
||||
(class => 'click') %>
|
||||
|
|
Loading…
Reference in a new issue