diff options
Diffstat (limited to 'public/assets/js/lib/views/index/threadform.js')
| -rw-r--r-- | public/assets/js/lib/views/index/threadform.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/public/assets/js/lib/views/index/threadform.js b/public/assets/js/lib/views/index/threadform.js new file mode 100644 index 0000000..2ea6988 --- /dev/null +++ b/public/assets/js/lib/views/index/threadform.js @@ -0,0 +1,53 @@ +var ThreadForm = FormView.extend({ + + el: "#thread_form", + + events: { + }, + + action: "/api/thread", + + initialize: function(){ + this.__super__.initialize.call(this) + this.template = this.$(".template").html() + }, + + load: function(selected_keyword){ + $.get("/api/keywords", function(data){ + var tags = {} + data.keywords.forEach(keyword => { + var kw = keyword.keyword + var opt = document.createElement('option') + opt.value = kw + opt.innerHTML = kw + if (selected_keyword === kw) { + opt.setAttribute("selected", "selected") + } + tags[kw] = opt + }) + var sorted = Object.keys(tags).sort().map(kw => tags[kw]) + this.$('[name=keyword]').append(sorted) + }.bind(this)) + }, + + validate: function(){ + var errors = [] + var title = this.$("[name=title]").val() + if (! title || ! title.length) { + errors.push("Please title your post.") + } + var comment = this.$("[name=comment]").val() + var files = this.$("[name=files]").val() + if ((! comment || ! comment.length) && ! files) { + errors.push("Please enter a comment.") + } + return errors.length ? errors : null + }, + + success: function(data){ + if (data.error) { + return alert(data.error) + } + window.location.href = "/details/" + data.id + } +})
\ No newline at end of file |
