1 package Newslash::Web::Controller::API::Submission;
2 use Mojo::Base 'Mojolicious::Controller';
3 use Mojo::Util qw(dumper);
4 use Mojo::JSON qw(decode_json encode_json);
8 my $subid = $c->param('subid');
11 $c->render(json => { err => 1, message => "not_found" });
15 my $submissions = $c->model('submissions');
16 my $submission = $submissions->select(submission_id => $subid);
18 $c->render(json => { err => 1, message => "not_found" });
22 $c->render(json => { item => $submission });
29 my $extra_params = {};
32 my $user = $c->stash('user');
35 if (!$user->{permissions}->{submission}) {
36 $c->render(json => { err => 1, reason => "not_allowed", message => "not_allowed" });
41 my $submissions = $c->model('submissions');
42 my $util = $c->model('util');
45 my $allowed = $c->app->config->{Editor}->{allowed_tags};
46 my $data = $c->req->json;
47 my $item = $data->{item};
49 $params->{title} = $util->escape_html({}, $item->{title});
50 $params->{url} = $item->{url};
51 $params->{email} = $item->{email};
52 $params->{introtext} = $util->clean_html($allowed, $item->{introtext});
53 $params->{tid} = 49; #mainpage
54 $params->{action} = $data->{action} || 'preview';
55 $extra_params->{createheaders} = $c->req->headers->to_string;
57 if ($params->{action} eq 'preview') {
59 title => $params->{title},
60 introtext => $params->{introtext},
61 email => $params->{email},
62 tid => $params->{tid},
64 $c->render(json => {item => $result});
66 elsif ($params->{action} eq 'post') {
67 my $sub_id = $submissions->create($params, $user, $extra_params, $opts);
69 $c->render(json => {type => "submission", id => $sub_id});
70 $c->event_que->emit("submission", "post", $user->{uid}, $sub_id);
73 #if ($submissions->last_errorno && $submissions->last_errorno == 1062) { #ER_DUP_ENTRY
74 if (defined $sub_id) {
75 $c->render(json => { err => 1, reason => "duplicated_post", message => "duplicated_post" });
79 $c->render(json => { err => 1, reason => "server_error", message => $submissions->last_error });