diff --git a/assets/scripts/app/pusher.coffee b/assets/scripts/app/pusher.coffee index 74802a85..b1abc51f 100644 --- a/assets/scripts/app/pusher.coffee +++ b/assets/scripts/app/pusher.coffee @@ -21,7 +21,6 @@ $.extend Travis.Pusher.prototype, Pusher.warn = @warn.bind(this) Pusher.host = config.host if config.host @pusher = new Pusher(config.key, encrypted: Travis.Pusher.ENCRYPTED, disableStats: true) - @subscribeAll(Travis.Pusher.CHANNELS) if Travis.Pusher.CHANNELS @callbacksToProcess = [] @@ -33,6 +32,9 @@ $.extend Travis.Pusher.prototype, subscribeAll: (channels) -> @subscribe(channel) for channel in channels + unsubscribeAll: (channels) -> + @unsubscribe(channel) for channel in channels + subscribe: (channel) -> return unless channel channel = @prefix(channel) diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/routes.coffee index 96233579..830bf89a 100644 --- a/assets/scripts/app/routes.coffee +++ b/assets/scripts/app/routes.coffee @@ -9,6 +9,7 @@ Ember.Router.reopen @_super(url) Travis.Router.map -> + @resource 'dashboard' @resource 'main', path: '/', -> @resource 'getting_started' @route 'recent' @@ -80,3 +81,4 @@ require 'routes/settings' require 'routes/simple_layout' require 'routes/ssh_key' require 'routes/stats' +require 'routes/dashboard' diff --git a/assets/scripts/app/routes/dashboard.coffee b/assets/scripts/app/routes/dashboard.coffee new file mode 100644 index 00000000..114efe6c --- /dev/null +++ b/assets/scripts/app/routes/dashboard.coffee @@ -0,0 +1,7 @@ +require 'routes/route' + +TravisRoute = Travis.Route + +Route = TravisRoute.extend() + +Travis.DashboardRoute = Route diff --git a/assets/scripts/app/routes/main.coffee b/assets/scripts/app/routes/main.coffee index b5bf6bb5..7ae7fe80 100644 --- a/assets/scripts/app/routes/main.coffee +++ b/assets/scripts/app/routes/main.coffee @@ -1,6 +1,8 @@ require 'routes/route' +require 'pusher' TravisRoute = Travis.Route +channels = Travis.Pusher.CHANNELS Route = TravisRoute.extend renderTemplate: -> @@ -15,5 +17,9 @@ Route = TravisRoute.extend toActivate = if @signedIn() then 'owned' else 'recent' @container.lookup('controller:repos').activate(toActivate) + activate: -> + # subscribe to pusher only if we're at a main route + if channels + @get('pusher').subscribeAll(channels) Travis.MainRoute = Route diff --git a/assets/scripts/app/templates/dashboard.hbs b/assets/scripts/app/templates/dashboard.hbs new file mode 100644 index 00000000..13a665c5 --- /dev/null +++ b/assets/scripts/app/templates/dashboard.hbs @@ -0,0 +1 @@ +DASHBOARD GOES HERE! diff --git a/assets/scripts/app/templates/layouts/dashboard.hbs b/assets/scripts/app/templates/layouts/dashboard.hbs new file mode 100644 index 00000000..8fd17179 --- /dev/null +++ b/assets/scripts/app/templates/layouts/dashboard.hbs @@ -0,0 +1,5 @@ +{{#link-to "main"}}Home{{/link-to}} + +{{yield}} + +END diff --git a/assets/scripts/app/views.coffee b/assets/scripts/app/views.coffee index ea0aa8b9..c7dda171 100644 --- a/assets/scripts/app/views.coffee +++ b/assets/scripts/app/views.coffee @@ -1,4 +1,5 @@ require 'ext/ember/namespace' +require 'views/view' Em.View.reopen init: -> @@ -9,25 +10,6 @@ Em.View.reopen Travis.NotFoundView = Ember.View.extend layoutName: 'layouts/simple' -@Travis.reopen - View: Em.View.extend - actions: - popup: (name) -> @popup(name) - popupClose: -> @popupClose() - - popup: (name) -> - @popupCloseAll() - name = event?.target?.name || name - $("##{name}").toggleClass('display') - popupClose: -> - $('.popup').removeClass('display') - popupCloseAll: -> - if view = Travis.View.currentPopupView - view.destroy() - Travis.View.currentPopupView = null - - $('.popup').removeClass('display') - Travis.MainView = Travis.View.extend layoutName: 'layouts/home' classNames: ['application'] @@ -120,3 +102,4 @@ require 'views/signin' require 'views/top' require 'views/status_images' require 'views/status_image_input' +require 'views/dashboard' diff --git a/assets/scripts/app/views/dashboard.coffee b/assets/scripts/app/views/dashboard.coffee new file mode 100644 index 00000000..4f29bfcd --- /dev/null +++ b/assets/scripts/app/views/dashboard.coffee @@ -0,0 +1,8 @@ +require 'views/view' + +TravisView = Travis.View + +View = TravisView.extend + layoutName: 'layouts/dashboard' + +Travis.DashboardView = View diff --git a/assets/scripts/app/views/view.coffee b/assets/scripts/app/views/view.coffee new file mode 100644 index 00000000..9ee4526a --- /dev/null +++ b/assets/scripts/app/views/view.coffee @@ -0,0 +1,19 @@ +View = Ember.View.extend + actions: + popup: (name) -> @popup(name) + popupClose: -> @popupClose() + + popup: (name) -> + @popupCloseAll() + name = event?.target?.name || name + $("##{name}").toggleClass('display') + popupClose: -> + $('.popup').removeClass('display') + popupCloseAll: -> + if view = Travis.View.currentPopupView + view.destroy() + Travis.View.currentPopupView = null + + $('.popup').removeClass('display') + +Travis.View = View diff --git a/assets/scripts/travis.coffee b/assets/scripts/travis.coffee index e6691600..eb0ee6d0 100644 --- a/assets/scripts/travis.coffee +++ b/assets/scripts/travis.coffee @@ -182,6 +182,13 @@ Travis.initializer application.inject('controller', 'config', 'config:main') application.inject('route', 'config', 'config:main') +Travis.initializer + name: 'inject-pusher' + + initialize: (container, application) -> + application.register 'pusher:main', Travis.pusher, { instantiate: false } + + application.inject('route', 'pusher', 'pusher:main') Travis.Router.reopen didTransition: ->