summaryrefslogtreecommitdiff
path: root/public/assets/js/lib/views/index/threadform.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/js/lib/views/index/threadform.js')
-rw-r--r--public/assets/js/lib/views/index/threadform.js53
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