diff options
Diffstat (limited to 'public/assets')
| -rw-r--r-- | public/assets/css/bucky.css | 35 | ||||
| -rw-r--r-- | public/assets/js/lib/router.js | 7 | ||||
| -rw-r--r-- | public/assets/js/lib/views/details/commentform.js | 7 | ||||
| -rw-r--r-- | public/assets/js/lib/views/details/index.js | 2 | ||||
| -rw-r--r-- | public/assets/js/lib/views/index/lastlog.js | 2 | ||||
| -rw-r--r-- | public/assets/js/lib/views/index/threadform.js | 53 | ||||
| -rw-r--r-- | public/assets/js/vendor/view/formview.js | 5 |
7 files changed, 102 insertions, 9 deletions
diff --git a/public/assets/css/bucky.css b/public/assets/css/bucky.css index a8901c3..315cad6 100644 --- a/public/assets/css/bucky.css +++ b/public/assets/css/bucky.css @@ -8,6 +8,9 @@ body { font-family: Trebuchet MS, Helvetica, Arial, sans-serif; padding: 20px 30px; } +* { + box-sizing: border-box; +} small { font-size: 10px; } @@ -86,6 +89,8 @@ table, tr { .lastlog { float: right; + width: 100%; + padding: 5px 0; } #sidebar, #content { @@ -349,6 +354,36 @@ tr:nth-child(even) td.black:hover { background-color: #f8f8f8; color: #000000; tr:nth-child(even) td.comment { background-color: #f3f1f2; } tr:nth-child(odd) td.comment { background-color: #fcf8f8; } +#thread_form form { + width: 530px; +} +#thread_form input[name=title] { + width: 100%; + padding: 5px; + font-size: 15px; + font-family: 'Trebuchet MS', sans-serif; + border: 1px solid #888; + margin-top: 10px; +} +#thread_form textarea { + width: 100%; + height: 240px; + font-family: 'Trebuchet MS', sans-serif; + padding: 5px; + font-size: 15px; + margin: 10px 0; +} +#thread_form .inputs { + display: flex; + flex-direction: row; + justify-content: space-between; + width: 100%; + padding: 5px; +} +#thread_form input[type=submit] { + margin: 0; +} + #comment_form form { width: 530px; margin-top: 5px; diff --git a/public/assets/js/lib/router.js b/public/assets/js/lib/router.js index 9879c6c..95b0ac6 100644 --- a/public/assets/js/lib/router.js +++ b/public/assets/js/lib/router.js @@ -7,6 +7,8 @@ var SiteRouter = Router.extend({ "/index": 'index', "/login": 'login', "/details/:id": 'details', + "/post": 'post', + "/post/:keyword": 'post', "/search": 'search', "/mail": 'mailbox', "/mail/:mailbox": 'mailbox', @@ -40,6 +42,11 @@ var SiteRouter = Router.extend({ app.view = new MessageView () app.view.load(id) }, + + post: function(keyword){ + app.view = new ThreadForm () + app.view.load(keyword || "") + }, compose: function(){ app.view = new ComposeView () diff --git a/public/assets/js/lib/views/details/commentform.js b/public/assets/js/lib/views/details/commentform.js index 30671f2..3b82ac7 100644 --- a/public/assets/js/lib/views/details/commentform.js +++ b/public/assets/js/lib/views/details/commentform.js @@ -5,7 +5,7 @@ var CommentForm = FormView.extend({ events: { }, - action: "/api/thread/1/comment", + action: "", initialize: function(){ this.__super__.initialize.call(this) @@ -26,8 +26,7 @@ var CommentForm = FormView.extend({ return errors.length ? errors : null }, - success: function(comment){ - this.prependComment(comment) - this.$("[name=comment]").val("") + success: function(){ + window.location.reload() } })
\ No newline at end of file diff --git a/public/assets/js/lib/views/details/index.js b/public/assets/js/lib/views/details/index.js index 0a40dbc..25ae020 100644 --- a/public/assets/js/lib/views/details/index.js +++ b/public/assets/js/lib/views/details/index.js @@ -23,7 +23,7 @@ var DetailsView = View.extend({ populate: function(data){ var thread = data.thread $("h1").html(thread.title) - $(".subtitle").show().html(metadata(thread)) + $(".subtitle").show().html("<a href='/'>< Home</a> | " + metadata(thread)) this.form.load(data.thread) this.comments.load(data.comments) this.files.load(data.files) diff --git a/public/assets/js/lib/views/index/lastlog.js b/public/assets/js/lib/views/index/lastlog.js index 0fed101..fe50e0f 100644 --- a/public/assets/js/lib/views/index/lastlog.js +++ b/public/assets/js/lib/views/index/lastlog.js @@ -23,7 +23,7 @@ var LastLog = View.extend({ }, parse: function(user){ - if (Date.now()/1000 - user.lastseen > 86400 * 14 *10000) return '' + if (Date.now()/1000 - user.lastseen > 86400 * 5 *10) return '' var t = this.template .replace(/{{username}}/g, user.username) .replace(/{{age}}/g, get_age(user.lastseen) ) 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 diff --git a/public/assets/js/vendor/view/formview.js b/public/assets/js/vendor/view/formview.js index 2c54d3e..485db7a 100644 --- a/public/assets/js/vendor/view/formview.js +++ b/public/assets/js/vendor/view/formview.js @@ -13,7 +13,6 @@ var FormView = View.extend({ } this.$form = this.$("form") this.$errors = this.$(".errors") - this.$errorList = this.$(".errorList") }, reset: function(){ @@ -22,9 +21,9 @@ var FormView = View.extend({ showErrors: function(errors){ if (errors && errors.length) { - this.$errorList.empty(); + this.$errors.empty(); for (var i in errors) { - this.$errorList.append('<div>' + errors[i] + '</div>'); + this.$errors.append('<div>' + errors[i] + '</div>'); } this.$errors.css("opacity", 1.0); setTimeout(function(){ |
