var ProfileView = View.extend({ el: "#profile", events: { }, action: "/api/user/", initialize: function(opt){ this.template = this.$(".template").html() }, load: function(username){ $.get(this.action + username, this.populate.bind(this)) }, populate: function(user){ $("body").removeClass('loading') var $table = this.$("table") var username = sanitize(user.username) var is_own_profile = (username === auth.user.username) if (is_own_profile) { $(".edit_profile a").attr("href", "/profile/" + username + "/edit") } else { $(".edit_profile").hide() } this.$("img").attr("src", profile_image(username)) var fields = [ ["username", "Username"], ["realname", "Real Name"], ["location", "Location"], ["phone", "Phone"], ].map(pair => { var key = pair[0], label = pair[1] if (! user[key]) return; return [key, sanitize(user[key])] }) if (user.email) { fields.push([ 'Email', '' + sanitize(user.email) + '' ]) } if (user.twitter) { if (user.twitter.match(/^http/)) { var partz = user.twitter.split('/') if (partz.length > 2) { var handle = sanitize(partz[3]) fields.push([ 'Twitter', '@' + handle + '' ]) } } else { var handle = sanitize(user.twitter) fields.push([ 'Twitter', '@' + handle + '' ]) } } if (user.website) { var websit = sanitize(user.website) fields.push([ 'Website', '' + website + '' ]) } fields = [ ["firstseen", "First Seen"], ["lastseen", "Last Seen"], ].split(" ").map((key) => { var key = pair[0], label = pair[1] if (! user[key]) return; var date = verbose_date(user[key]) return [key, date[0] + ' ' + date[1] + ''] }).concat(fields) var t = this.template.replace(/{{key}}/, " ") .replace(/{{value}}/, 'send ' + username + ' a message') $table.append(t) }, })