From f1bc9e9acb5381a49c8214da5d7a5a323a576a67 Mon Sep 17 00:00:00 2001 From: hylom Date: Tue, 29 Aug 2017 21:32:48 +0900 Subject: [PATCH] move functions from Web::Controller::Admin::Submiossions to Web::Controller::API::Submission --- src/newslash_web/lib/Newslash/Web.pm | 2 +- .../lib/Newslash/Web/Controller/API/Submission.pm | 38 +++++++ .../Newslash/Web/Controller/Admin/Submissions.pm | 119 --------------------- src/newslash_web/public/js/submissions-manager.js | 6 +- 4 files changed, 42 insertions(+), 123 deletions(-) diff --git a/src/newslash_web/lib/Newslash/Web.pm b/src/newslash_web/lib/Newslash/Web.pm index 6d8902df..15feea61 100644 --- a/src/newslash_web/lib/Newslash/Web.pm +++ b/src/newslash_web/lib/Newslash/Web.pm @@ -211,7 +211,6 @@ sub startup { my $admin = $r->under('/admin' => sub { my $c = shift; $c->stash(seclev => 10000); return 1; }); $admin->get('/submissions')->to('admin-submissions#index'); - $admin->get('/submissions/list')->to('admin-submissions#list'); $admin->get('/css')->to('admin-css#edit'); $admin->get('/story/edit')->to('admin-story#edit'); @@ -258,6 +257,7 @@ sub startup { $api->post('/journal')->to('API::Journal#post', seclev => 1, csrf_check_id => 'journal'); $api->get('/submission')->to('API::Submission#get'); + $api->get('/submissions')->to('API::Submission#list'); $api->post('/submission')->to('API::Submission#post', captcha_check => 1, csrf_check_id => 'submission'); $api->get('/story')->to('API::Story#get'); diff --git a/src/newslash_web/lib/Newslash/Web/Controller/API/Submission.pm b/src/newslash_web/lib/Newslash/Web/Controller/API/Submission.pm index d6a9e304..9d83c4a2 100644 --- a/src/newslash_web/lib/Newslash/Web/Controller/API/Submission.pm +++ b/src/newslash_web/lib/Newslash/Web/Controller/API/Submission.pm @@ -23,6 +23,44 @@ sub get { return; } +sub list { + my $c = shift; + my $submissions = $c->app->model('submissions'); + my $items = []; + my $message = ""; + my $user = $c->stash('user'); + + my $show_deleted = 0; + if ($c->param('show_deleted') && $user->{is_admin}) { + $show_deleted = 1; + } + + my $limit = 50; + my $skip = 0; + if ($c->param('limit') + && $c->param('limit') =~ m/\A[0-9]+\z/ + && $c->param('limit') < 50) { + $limit = $c->param('limit'); + } + if ($c->param('skip') + && $c->param('skip') =~ m/\A[0-9]+\z/) { + $skip = $c->param('skip'); + } + + $items = $submissions->select(del => $show_deleted, + order_by => {create_time => "DESC"}, + limit => $limit, + skip => $skip); + if (!$items) { + $message = $submissions->last_error; + $c->render(json => {message => $message, error => 1}); + } + else { + $c->render(json => {message => $message, items => $items}); + } + return; +} + sub post { my $c = shift; my $params = {}; diff --git a/src/newslash_web/lib/Newslash/Web/Controller/Admin/Submissions.pm b/src/newslash_web/lib/Newslash/Web/Controller/Admin/Submissions.pm index ca0cc2e9..83dd9eb5 100644 --- a/src/newslash_web/lib/Newslash/Web/Controller/Admin/Submissions.pm +++ b/src/newslash_web/lib/Newslash/Web/Controller/Admin/Submissions.pm @@ -8,124 +8,5 @@ sub index { $c->render; } -sub list { - my $c = shift; - my $submissions = $c->app->model('submissions'); - my $items = []; - my $message = ""; - - my $show_deleted = $c->param('show_deleted') ? 1 : 0; - my $limit = 50; - my $skip = 0; - if ($c->param('limit') - && $c->param('limit') =~ m/\A[0-9]+\z/ - && $c->param('limit') < 50) { - $limit = $c->param('limit'); - } - if ($c->param('skip') - && $c->param('skip') =~ m/\A[0-9]+\z/) { - $skip = $c->param('skip'); - } - - $items = $submissions->select(del => $show_deleted, limit => $limit, skip => $skip); - if (!$items) { - $message = $submissions->last_error; - $c->render(json => {message => $message, error => 1}); - } - else { - $c->render(json => {message => $message, items => $items}); - } - return; -} - -sub update { - my $c = shift; - my $boxes = $c->app->model('boxes'); - my $data = $c->req->json; - - if (!$data) { - $c->rendered(400); - return; - } - - my $params = {}; - my $err = ""; - $err = "no name" if !$data->{name}; - for my $i (qw(name model query_params limit template comment)) { - $params->{$i} = $data->{$i} || ""; - } - - if (length $err) { - $c->render(json => {error => 1, message => $err}); - return; - } - - my $id; - if ($data->{id}) { # update item - $id = $boxes->update(id => $data->{id}, $params); - } - else { # create new item - $id = $boxes->create($params); - } - if (!$id) { - $c->render(json => {error => 1, message => $boxes->last_error}); - return; - } - $c->render(json => {id => $id}); - return; -} - -sub delete { - my $c = shift; - my $boxes = $c->app->model('boxes'); - my $data = $c->req->json; - - if (!$data) { - $c->rendered(400); - return; - } - - my $params = {}; - my $err = ""; - if (!$data->{id}) { - $err = "no id given"; - } - if (length $err) { - $c->render(json => {error => 1, message => $err}); - return; - } - - my $rs = $boxes->delete($data->{id}); - - if (!$rs) { - $c->render(json => {error => 1, message => $boxes->last_error}); - return; - } - $c->render(json => {error => 0, id => $data->{id}}); - return; -} - -sub get { - my $c = shift; - my $boxes = $c->app->model('boxes'); - my $message = ""; - - my $data = $c->req->json; - - if (!$data || !$data->{id}) { - $c->rendered(400); - return; - } - - my $item = $boxes->select(id => $data->{id}); - if (!$item) { - $c->render(json => {message => "no item"}); - return; - } - - $c->render(json => {item => $item}); - return; -} - 1; diff --git a/src/newslash_web/public/js/submissions-manager.js b/src/newslash_web/public/js/submissions-manager.js index 1bb2eed6..5161fdc9 100644 --- a/src/newslash_web/public/js/submissions-manager.js +++ b/src/newslash_web/public/js/submissions-manager.js @@ -9,10 +9,10 @@ submissionsManager.run = function run (params) { status: '', showDeletedSubjs: false, urls: { - update: '/admin/submissions/update', - get: '/admin/submissions/get', + // update: '/admin/submissions/update', + // get: '/admin/submissions/get', delete: '/admin/submissions/delete', - list: '/admin/submissions/list', + list: '/api/v1/submissions', }, }; const computed = {}; -- 2.11.0