$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');
$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');
$story->{$k} = $submission->{$k};
}
$story->{submitter} = $submission->{uid};
+ return $story;
}
sub _journal_to_story {
$story->{intro_text} = $journal->{full_text};
}
$story->{submitter} = $journal->{uid};
+ return $story;
}
sub get {
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);
// 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;
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;
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;
};
# 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);
# 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");
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)
$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)
-[% 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 %]