OSDN Git Service

fe1357be6ac70ce8c547f1726d7e8ef35bc492bb
[newslash/newslash.git] / src / newslash_web / lib / Newslash / Web / Controller / Story.pm
1 package Newslash::Web::Controller::Story;
2 use Mojo::Base 'Mojolicious::Controller';
3 use Mojo::Util qw(dumper);
4
5 sub story {
6     my $c = shift;
7     my $session = $c->session('session');
8     my $sid = $c->stash('sid');
9     my $stories = $c->model('stories');
10     my $users = $c->model('users');
11     my $user = $c->stash('user');
12
13     my $story = $stories->select(sid => $sid);
14     #$c->app->log->debug(dumper($story));
15     if (!$story) {
16         $c->render('Not found', status => '404');
17         return;
18     }
19
20     if ($story->{public} eq 'no' && !$user->{is_admin}) {
21         $c->render('Not found', status => '404');
22         return;
23     }
24
25     my $discuss = $c->model('discussions')->select(sid => $sid);
26     my $d_id = $discuss->{id};
27     my $comments = [];
28     if ($d_id) {
29         $comments = $c->model('comments')->select(discussion_id => $d_id);
30     }
31     my $related = $stories->related($story->{stoid});
32     #$c->app->log->debug(dumper($related));
33
34     my $params = $stories->parameters($story->{stoid});
35     #$c->app->log->debug(dumper($params));
36
37     my $authors = $users->select(author => 1);
38     my $mod_reasons = $c->model('moderations')->reasons;
39     $c->stash(moderate_reasons => $mod_reasons);
40
41     $c->render(story => $story,
42                discussion => $discuss,
43                comments => $comments,
44                related => $related,
45                params => $params,
46                authors => $authors,
47                use_captcha => 1,
48               );
49 }
50
51 1;
52