aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrr-2016-07-26 20:37:55 +0200
committerrr-2016-07-26 20:38:12 +0200
commit8a68e182fd8bd32502b60b3e7d0907ea44a40238 (patch)
treea4c9c8b5764c43c7d0a0cc4503810777eebd6f84
parent865c4f3b79eed5228bb968455c6ebef9bf56a6e8 (diff)
client/posts: implement loop video flag
-rw-r--r--client/html/post_edit_sidebar.tpl2
-rw-r--r--client/js/controllers/post_controller.js3
-rw-r--r--client/js/controls/post_edit_sidebar_control.js8
-rw-r--r--client/js/models/post.js7
4 files changed, 19 insertions, 1 deletions
diff --git a/client/html/post_edit_sidebar.tpl b/client/html/post_edit_sidebar.tpl
index 54a3388..7bc8439 100644
--- a/client/html/post_edit_sidebar.tpl
+++ b/client/html/post_edit_sidebar.tpl
@@ -50,10 +50,10 @@
<section class='flags'>
<label>Miscellaneous</label>
- <!-- TODO: bind state -->
<%= ctx.makeCheckbox({
text: 'Loop video',
name: 'loop',
+ checked: ctx.post.flags.includes('loop'),
}) %>
</section>
<% } %>
diff --git a/client/js/controllers/post_controller.js b/client/js/controllers/post_controller.js
index c2ba12a..56ca535 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 b6817e1..cb02d18 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 e269eec..16d11ca 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 || []),

© 2015 - 2026 Jakob L. Kreuze