diaspora/app/assets/javascripts/app/app.js
Florian Staudacher 0092acd492 re-add hovercards
* added a presenter for hovercard json
* added new backbone view for handling hovercard JS
* refactoring of PeopleController

* finished the backbone js version of hovercards
* don't try to make people_controller more restfull, out of scope
  just add a new route and use that for hovercard json
* added spec for people_controller#hovercard
* add new exception for "AccountClosed" to be able to raise from anywhere

* removed legacy code, since everything got ported to backbone
  (except the "cache" stuff, but that's not strictly necessary)
2012-12-28 22:37:13 +01:00

87 lines
2.1 KiB
JavaScript

//= require_self
//= require_tree ./helpers
//= require ./router
//= require ./models
//= require ./views
//= require ./views/infinite_stream_view
//= require_tree ./models
//= require_tree ./pages
//= require_tree ./collections
//= require_tree ./views
//= require_tree ./forms
var app = {
collections: {},
models: {},
helpers: {},
views: {},
pages: {},
forms: {},
user: function(userAttrs) {
if(userAttrs) { return this._user = new app.models.User(userAttrs) }
return this._user || false
},
baseImageUrl: function(baseUrl){
if(baseUrl) { return this._baseImageUrl = baseUrl }
return this._baseImageUrl || "assets/"
},
initialize: function() {
app.router = new app.Router();
app.currentUser = app.user(window.current_user_attributes) || new app.models.User()
if(app.currentUser.authenticated()){
app.header = new app.views.Header();
$("header").prepend(app.header.el);
app.header.render();
}
Backbone.history.start({pushState: true});
// there's probably a better way to do this...
$("a[rel=backbone]").live("click", function(evt){
evt.preventDefault();
var link = $(this);
$(".stream_title").text(link.text())
app.router.navigate(link.attr("href").substring(1) ,true)
});
app.hovercard = new app.views.Hovercard();
},
hasPreload : function(prop) {
return !!(window.preloads && window.preloads[prop]) //returning boolean variable so that parsePreloads, which cleans up properly is used instead
},
setPreload : function(prop, val) {
window.preloads = window.preloads || {}
window.preloads[prop] = val
},
parsePreload : function(prop){
if(!app.hasPreload(prop)) { return }
var preload = window.preloads[prop]
delete window.preloads[prop] //prevent dirty state across navigates
return(preload)
},
/* mixpanel wrapper function */
instrument : function(type, name, object, callback) {
if(!window.mixpanel) { return }
window.mixpanel[type](name, object, callback)
}
};
$(function() {
app.initialize();
});