Files
dss/static/js/app/appv2.js
2013-06-30 15:42:47 +01:00

80 lines
2.7 KiB
JavaScript
Executable File

// Generated by CoffeeScript 1.3.3
(function() {
define(['backbone', 'marionette', 'vent', 'app.lib/router', 'app.lib/panningRegion', 'app.lib/realtimeController', 'app.lib/audioController', 'views/widgets/headerView', 'views/sidebar/sidebarView', 'models/mix/mixCollection'], function(Backbone, Marionette, vent, DssRouter, PanningRegion, RealtimeController, AudioController, HeaderView, SidebarView, MixCollection) {
var App;
App = new Marionette.Application();
App.audioController = new AudioController();
App.realtimeController = new RealtimeController();
App.realtimeController.startSocketIO();
App.vent.on("routing:started", function() {
var enablePushState, pushState;
console.log("App(vent): routing:started");
enablePushState = true;
pushState = !!(enablePushState && window.history && window.history.pushState);
Backbone.history.start({
pushState: pushState,
hashChange: true
});
return true;
});
App.addRegions({
headerRegion: "#header",
contentRegion: {
selector: "#content"
},
footerRegion: "#footer",
sidebarRegion: "#sidebar"
});
App.addInitializer(function() {
console.log("App: routing starting");
App.Router = new DssRouter();
return App.vent.trigger("routing:started");
});
App.addInitializer(function() {
$(document).on("click", "a[href]:not([data-bypass])", function(evt) {
var href, root;
href = {
prop: $(this).prop("href"),
attr: $(this).attr("href")
};
root = location.protocol + "//" + location.host + (App.root || '/');
if (href.prop.slice(0, root.length) === root) {
evt.preventDefault();
App.Router.navigate(href.attr, true);
return true;
}
});
return true;
});
App.addInitializer(function() {
this.listenTo(vent, "mix:favourite", function(model) {
console.log("App(vent): mix:favourite");
model.save('favourited', !model.get('favourited'), {
patch: true
});
return true;
});
this.listenTo(vent, "mix:like", function(model) {
console.log("App(vent): mix:like");
model.save('liked', !model.get('liked'), {
patch: true
});
return true;
});
return this.listenTo(vent, "mix:share", function(mode, model) {
console.log("App(vent): mix:share");
if (mode === "facebook") {
social.sharePageToFacebook(model);
} else if (mode === "twitter") {
social.sharePageToTwitter(model);
}
return true;
});
});
App.headerRegion.show(new HeaderView());
return App;
});
}).call(this);