app = require 'application' channelSchemas = 'app': require './schemas/subscriptions/app' #'bus': require './schemas/subscriptions/bus' #'editor': require './schemas/subscriptions/editor' #'errors': require './schemas/subscriptions/errors' #'level': require './schemas/subscriptions/level' #'misc': require './schemas/subscriptions/misc' #'play': require './schemas/subscriptions/play' #'surface': require './schemas/subscriptions/surface' #'tome': require './schemas/subscriptions/tome' #'user': require './schemas/subscriptions/user' #'world': require './schemas/subscriptions/world' definitionSchemas = 'bus': require './schemas/definitions/bus' 'misc': require './schemas/definitions/misc' init = -> app.initialize() Backbone.history.start({ pushState: true }) handleNormalUrls() treemaExt = require 'treema-ext' treemaExt.setup() filepicker.setKey('AvlkNoldcTOU4PvKi2Xm7z') # Set up Backbone.Mediator schemas setUpDefinitions() setUpChannels() $ -> init() handleNormalUrls = -> # http://artsy.github.com/blog/2012/06/25/replacing-hashbang-routes-with-pushstate/ $(document).on "click", "a[href^='/']", (event) -> href = $(event.currentTarget).attr('href') # chain 'or's for other black list routes passThrough = href.indexOf('sign_out') >= 0 # Allow shift+click for new tabs, etc. if !passThrough && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey event.preventDefault() # Remove leading slashes and hash bangs (backward compatablility) url = href.replace(/^\//,'').replace('\#\!\/','') # Instruct Backbone to trigger routing events app.router.navigate url, { trigger: true } return false setUpChannels = -> for channel of channelSchemas Backbone.Mediator.addChannelSchemas channelSchemas[channel] setUpDefinitions = -> for definition of definitionSchemas Backbone.Mediator.addDefSchemas definitionSchemas[definition]