From 8a68e182fd8bd32502b60b3e7d0907ea44a40238 Mon Sep 17 00:00:00 2001 From: rr- Date: Tue, 26 Jul 2016 20:37:55 +0200 Subject: [PATCH] client/posts: implement loop video flag --- client/html/post_edit_sidebar.tpl | 2 +- client/js/controllers/post_controller.js | 3 +++ client/js/controls/post_edit_sidebar_control.js | 8 ++++++++ client/js/models/post.js | 7 +++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/client/html/post_edit_sidebar.tpl b/client/html/post_edit_sidebar.tpl index 54a3388b..7bc84397 100644 --- a/client/html/post_edit_sidebar.tpl +++ b/client/html/post_edit_sidebar.tpl @@ -50,10 +50,10 @@
- <%= ctx.makeCheckbox({ text: 'Loop video', name: 'loop', + checked: ctx.post.flags.includes('loop'), }) %>
<% } %> diff --git a/client/js/controllers/post_controller.js b/client/js/controllers/post_controller.js index c2ba12ae..56ca5355 100644 --- a/client/js/controllers/post_controller.js +++ b/client/js/controllers/post_controller.js @@ -106,6 +106,9 @@ class PostController { if (e.detail.safety !== undefined) { post.safety = e.detail.safety; } + if (e.detail.flags !== undefined) { + post.flags = e.detail.flags; + } if (e.detail.relations !== undefined) { post.relations = e.detail.relations; } diff --git a/client/js/controls/post_edit_sidebar_control.js b/client/js/controls/post_edit_sidebar_control.js index b6817e1b..cb02d18e 100644 --- a/client/js/controls/post_edit_sidebar_control.js +++ b/client/js/controls/post_edit_sidebar_control.js @@ -51,6 +51,10 @@ class PostEditSidebarControl extends events.EventTarget { .value.toLowerCase() : undefined, + flags: this._loopVideoInputNode ? + (this._loopVideoInputNode.checked ? ['loop'] : []) : + undefined, + tags: this._tagInputNode ? misc.splitByWhitespace(this._tagInputNode.value) : undefined, @@ -78,6 +82,10 @@ class PostEditSidebarControl extends events.EventTarget { return this._formNode.querySelector('.tags input'); } + get _loopVideoInputNode() { + return this._formNode.querySelector('.flags input[name=loop]'); + } + get _relationsInputNode() { return this._formNode.querySelector('.relations input'); } diff --git a/client/js/models/post.js b/client/js/models/post.js index e269eecc..16d11ca1 100644 --- a/client/js/models/post.js +++ b/client/js/models/post.js @@ -28,6 +28,7 @@ class Post extends events.EventTarget { this._canvasHeight = null; this._fileSize = null; + this._flags = []; this._tags = []; this._notes = []; this._comments = []; @@ -51,6 +52,7 @@ class Post extends events.EventTarget { get canvasHeight() { return this._canvasHeight || 450; } get fileSize() { return this._fileSize || 0; } + get flags() { return this._flags; } get tags() { return this._tags; } get notes() { return this._notes; } get comments() { return this._comments; } @@ -61,6 +63,7 @@ class Post extends events.EventTarget { get ownFavorite() { return this._ownFavorite; } get ownScore() { return this._ownScore; } + set flags(value) { this._flags = value; } set tags(value) { this._tags = value; } set safety(value) { this._safety = value; } set relations(value) { this._relations = value; } @@ -108,6 +111,9 @@ class Post extends events.EventTarget { if (this._safety !== this._orig._safety) { detail.safety = this._safety; } + if (_arraysDiffer(this._flags, this._orig._flags)) { + detail.flags = this._flags; + } if (_arraysDiffer(this._tags, this._orig._tags)) { detail.tags = this._tags; } @@ -212,6 +218,7 @@ class Post extends events.EventTarget { _canvasHeight: response.canvasHeight, _fileSize: response.fileSize, + _flags: response.flags || [], _tags: response.tags || [], _notes: response.notes || [], _comments: CommentList.fromResponse(response.comments || []),