OSDN Git Service

change story related api endpoint to /api/v1/admin/story
authorhylom <hylom@users.osdn.me>
Mon, 3 Jun 2019 06:21:37 +0000 (06:21 +0000)
committerhylom <hylom@users.osdn.me>
Mon, 3 Jun 2019 06:21:37 +0000 (06:21 +0000)
src/newslash_web/lib/Newslash/Web.pm
src/newslash_web/lib/Newslash/Web/Controller/API/Story.pm
src/newslash_web/lib/Newslash/Web/Controller/Admin/Story.pm
src/newslash_web/public/js/article-editor.js
src/newslash_web/t/api/story.t
src/newslash_web/templates/admin/story/edit.html.tt2

index 0db3676..2d0174a 100644 (file)
@@ -408,12 +408,16 @@ sub startup {
     $admin_api->post('/sidebar')->to('API::Admin::Sidebar#post');
     $admin_api->get('/sidebar')->to('API::Admin::Sidebar#get');
 
+    $admin_api->get('/story')->to('API::Story#get');
+    $admin_api->post('/story')->to('API::Story#post');
+
     # ad codes management
     $app->rpc->route_to_model($admin_api->get('/ad/code/'), 'ad_codes', 'select');
     $app->rpc->route_to_model($admin_api->post('/ad/code/')->over(request_body => {action => "create"}), 'ad_codes', 'create');
     $app->rpc->route_to_model($admin_api->post('/ad/code/')->over(request_body => {action => "update"}), 'ad_codes', 'update');
     $app->rpc->route_to_model($admin_api->post('/ad/code/')->over(request_body => {action => "delete"}), 'ad_codes', 'delete');
 
+
     # API
     my $api = $r->under('/api/v1');
     $api->post('/login')->to('API::Login#login');
@@ -437,9 +441,6 @@ sub startup {
     $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');
-    $api->post('/story')->to('API::Story#post');
-
     $api->get('/timeline')->to('API::Timeline#get');
 
     $api->get('/poll')->to('API::Poll#get');
index 0bca5f7..6ee83d0 100644 (file)
@@ -14,6 +14,7 @@ sub _submission_to_story {
         $story->{$k} = $submission->{$k};
     }
     $story->{submitter} = $submission->{uid};
+    return $story;
 }
 
 sub _journal_to_story {
@@ -30,6 +31,7 @@ sub _journal_to_story {
         $story->{intro_text} = $journal->{full_text};
     }
     $story->{submitter} = $journal->{uid};
+    return $story;
 }
 
 sub get {
index c02c2fc..f4bf965 100644 (file)
@@ -10,7 +10,8 @@ sub edit {
     my $sub_id = $c->param('subid');
     my $stoid = $c->param('stoid');
     my $source = {};
-    my $page = {};
+    my $page = { content_type => "story",
+                 type => "edit" };
 
     if ($stoid) {
         my $story = $c->model('stories')->select(stoid => $stoid);
index 7726dd3..793e000 100644 (file)
@@ -437,20 +437,19 @@ articleEditor.init = function init () {
     // TODO: related stories
     // convert public to display
     this.editor.display = (item.public == "yes");
-    this.editor.createtime = newslash.util.formatToLocalISOString(newslash.util.decodeMySQLDateTime(item.create_time));
-    this.editor.id = item.stoid;
-
-    // convert create_time from UTC to localtime
-    if (item.createtime) {
-      var dt = newslash.util.decodeMySQLDateTime(item.createtime);
-      this.editor.createtime = newslash.util.formatToLocalISOString(dt);
+    if (item.create_time) {
+      this.editor.createtime = newslash.util.formatToLocalISOString(newslash.util.decodeMySQLDateTime(item.create_time));
+    } else {
+      this.editor.createtime = newslash.util.formatToLocalISOString(new Date());
     }
+    this.editor.id = item.stoid;
+    this.editor.author = user.nickname;
   }
 
   function _loadStory() {
     newslash.admin.getStory(this.contentId).then(
       resp => {
-        _prepareStory.call(this, resp.body.item);
+        _prepareStory.call(this, resp.item);
       },
       fail => {
         this.message = fail.body.message;
@@ -462,7 +461,7 @@ articleEditor.init = function init () {
   function _loadStoryFromSubmission() {
     newslash.admin.getStoryFromSubmission(this.sourceId).then(
       resp => {
-        _prepareStory.call(this, resp.body.item);
+        _prepareStory.call(this, resp.item);
       },
       fail => {
         this.message = fail.body.message;
@@ -474,7 +473,7 @@ articleEditor.init = function init () {
   function _loadStoryFromJournal() {
     newslash.admin.getStoryFromJournal(this.sourceId).then(
       resp => {
-        _prepareStory.call(this, resp.body.item);
+        _prepareStory.call(this, resp.item);
       },
       fail => {
         this.message = fail.body.message;
index 0255d83..0f443ca 100644 (file)
@@ -71,7 +71,7 @@ EOT
                         };
 
         # preview
-        $t->post_ok('/api/v1/story' => {Accept => '*/*'} => json => $test_data)
+        $t->post_ok('/api/v1/admin/story' => {Accept => '*/*'} => json => $test_data)
           ->status_is(200)
           ->json_has('/item')
           ->json_is('/item/title' => $test_title);
@@ -79,7 +79,7 @@ EOT
 
         # create
         $test_data->{action} = 'post';
-        $t->post_ok('/api/v1/story' => {Accept => '*/*'} => json => $test_data)
+        $t->post_ok('/api/v1/admin/story' => {Accept => '*/*'} => json => $test_data)
           ->status_is(200)
           ->json_has('/id')
           ->json_is('/type' => "story");
@@ -89,7 +89,7 @@ EOT
         return if !$stoid;
 
         # get
-        $t->get_ok("/api/v1/story?stoid=$stoid")
+        $t->get_ok("/api/v1/admin/story?stoid=$stoid")
           ->status_is(200)
           ->json_has('/item')
           ->json_is('/item/stoid', $stoid)
@@ -114,14 +114,14 @@ EOT
         $test_data->{item}->{title} = $new_title;
         $test_data->{item}->{stoid} = $stoid;
 
-        $t->post_ok('/api/v1/story' => {Accept => '*/*'} => json => $test_data)
+        $t->post_ok('/api/v1/admin/story' => {Accept => '*/*'} => json => $test_data)
           ->status_is(200)
           ->json_has('/id')
           ->json_is('/type' => "story");
         #diag $t->tx->res->json->{message} if $t->tx->res->code != 200;
 
         # get updated item
-        $t->get_ok("/api/v1/story?stoid=$stoid")
+        $t->get_ok("/api/v1/admin/story?stoid=$stoid")
           ->status_is(200)
           ->json_has('/item')
           ->json_is('/item/stoid', $stoid)
index aa17155..76ba591 100644 (file)
@@ -1,26 +1,25 @@
-[% WRAPPER common/layout enable_sidebar=1 %]
-[% INCLUDE common/components/article_item type="story" %]
+[% WRAPPER common/layout %]
 
-[%- USE date -%]
-<div class="main-column">
-  <div class="post story main-contents" id="story-editor">
-    <h2>ストーリーの編集</h2>
-    <div id="post-preview">
-      <h3>プレビュー:</h3>
-      <article-item :item="item" :show-editor="true"></article-item>
+<div class="article-wrapper">
+  <div class="content-wrapper">
+    <div class="main-column">
+      <div class="post submission main-contents" id="submission-editor">
+        <h2>ストーリーの編集</h2>
+        <div id="post-preview">
+          <article-editor content-type="story" source-type="[% source.type %]" :source-id="[% source.id %]"></article-editor>
+        </div>
+      </div>
+      [% helpers.insert_recaptcha %]
     </div>
   </div>
+  [%- INCLUDE common/sidebar -%]
 </div>
-[%- INCLUDE common/sidebar -%]
 
-[% helpers.load_js("editor.js") %]
-[%# <script src="/js/editor.js" ></script> %]
+[% INCLUDE common/components/article_editor %]
 <script>
-  editor.run({ type: 'story',
-  el: '#story-editor',
-  [%- IF source.type == "submission" %] submissionID: [% source.id %], [% END %]
-  [%- IF source.type == "story" %] storyID: [% source.id %], [% END %]
-  });
+  articleEditor.init();
+  articleEditor.instances.push(new articleEditor.ArticleEditor("#submission-editor"));
 </script>
 
+
 [% END %]