var MessageView = View.extend({ el: "#message", events: { 'click .discard_link': 'discard', }, action: '/api/message/', initialize: function(){ this.template = this.$(".template").html() }, load: function(name){ name = sanitize(name) || "inbox" $.ajax({ url: this.action + name, method: 'get', success: this.populate.bind(this), error: app.router.error404 }) }, populate: function(data){ this.parse(data) $("body").removeClass('loading') }, parse: function(data){ var message = data.message // var user = data.user $("h1").html(message.subject) var datetime = verbose_date(message.date) var id = message.id var is_sender = message.sender === auth.user.username var t = this.template .replace(/{{id}}/g, message.id) .replace(/{{sender}}/g, message.sender) .replace(/{{avatar}}/g, profile_image(message.sender)) .replace(/{{subject}}/g, message.subject) .replace(/{{date}}/g, datetime[0]) .replace(/{{time}}/g, datetime[1]) .replace(/{{body}}/g, tidy_urls(message.body) ) var $t = $(t) if (is_sender) { $t.find('.reply_link').remove() } this.$el.empty().append($t) }, discard: function(e){ var id = $(e.target).data('id') var ok = confirm("Really delete this message?") if (! ok) return $.ajax({ method: 'delete', url: '/api/message/' + id, headers: { "csrf-token": csrf() }, data: { _csrf: csrf() }, success: function(){ window.location.href = "/mail" }, error: function(){ window.location.href = "/mail" }, }) }, })