diff --git a/assets/scripts/app/controllers.coffee b/assets/scripts/app/controllers.coffee index f1afaeb1..9f5375ab 100644 --- a/assets/scripts/app/controllers.coffee +++ b/assets/scripts/app/controllers.coffee @@ -20,6 +20,14 @@ Travis.ProfileLayoutController = Em.Controller.extend() Travis.AuthLayoutController = Em.Controller.extend() Travis.CurrentUserController = Em.ObjectController.extend() +Travis.AccountProfileController = Em.Controller.extend + needs: ['currentUser'] + userBinding: 'controllers.currentUser' + +Travis.AccountIndexController = Em.Controller.extend + needs: ['profile'] + hooksBinding: 'controllers.profile.hooks' + require 'controllers/accounts' require 'controllers/build' require 'controllers/builds' diff --git a/assets/scripts/app/controllers/accounts.coffee b/assets/scripts/app/controllers/accounts.coffee index 7bc7dff0..213d2c85 100644 --- a/assets/scripts/app/controllers/accounts.coffee +++ b/assets/scripts/app/controllers/accounts.coffee @@ -1,8 +1,5 @@ Travis.AccountsController = Ember.ArrayController.extend tab: 'accounts' - init: -> - @_super() - findByLogin: (login) -> @find (account) -> account.get('login') == login diff --git a/assets/scripts/app/controllers/profile.coffee b/assets/scripts/app/controllers/profile.coffee index 744214a0..ae0dc24f 100644 --- a/assets/scripts/app/controllers/profile.coffee +++ b/assets/scripts/app/controllers/profile.coffee @@ -1,7 +1,9 @@ Travis.ProfileController = Travis.Controller.extend name: 'profile' - userBinding: 'Travis.app.currentUser' - accountsBinding: 'Travis.app.router.accountsController' + + needs: ['currentUser', 'accounts'] + userBinding: 'controllers.currentUser' + accountsBinding: 'controllers.accounts' init: -> self = this @@ -10,7 +12,7 @@ Travis.ProfileController = Travis.Controller.extend )) account: (-> - login = @get('params.login') || Travis.app.get('currentUser.login') + login = @get('params.login') || @get('user.login') account = @get('accounts').filter((account) -> account if account.get('login') == login)[0] account.select() if account account @@ -25,7 +27,7 @@ Travis.ProfileController = Travis.Controller.extend @reloadHooks() reloadHooks: -> - @set('hooks', Travis.Hook.find(owner_name: @get('params.login') || Travis.app.get('currentUser.login'))) + @set('hooks', Travis.Hook.find(owner_name: @get('params.login') || @get('user.login'))) viewUser: -> @connectTab('user') @@ -33,7 +35,6 @@ Travis.ProfileController = Travis.Controller.extend connectTab: (tab) -> viewClass = Travis["#{$.camelize(tab)}View"] @set('tab', tab) - @connectOutlet(outletName: 'pane', controller: this, viewClass: viewClass) setParams: (params) -> @set('params', {}) diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/routes.coffee index 27f2b01c..6e9c54ff 100644 --- a/assets/scripts/app/routes.coffee +++ b/assets/scripts/app/routes.coffee @@ -389,6 +389,12 @@ Travis.Router.map -> @route 'stats', path: '/stats' + @resource 'profile', path: '/profile', -> + @route 'index', path: '/' + @resource 'account', path: '/:login', -> + @route 'index', path: '/' + @route 'profile', path: '/profile' + Travis.IndexCurrentRoute = Ember.Route.extend renderTemplate: -> @render 'repo' @@ -504,3 +510,70 @@ Travis.StatsRoute = Ember.Route.extend setupController: -> @container.lookup('controller:application').connectLayout('simple') + +Travis.ProfileRoute = Ember.Route.extend + setupController: -> + @container.lookup('controller:application').connectLayout('profile') + @container.lookup('controller:accounts').set('content', Travis.Account.find()) + + renderTemplate: -> + $('body').attr('id', 'profile') + + @render 'top', outlet: 'top' + @render 'accounts', outlet: 'left' + @render 'flash', outlet: 'flash' + @render 'profile' + +Travis.ProfileIndexRoute = Ember.Route.extend + setupController: -> + @container.lookup('controller:profile').activate 'hooks' + + renderTemplate: -> + @render 'hooks', outlet: 'pane', into: 'profile' + +Travis.AccountRoute = Ember.Route.extend + setupController: (controller, account) -> + profileController = @container.lookup('controller:profile') + profileController.activate 'hooks' + + if account + params = { login: account.get('login') } + profileController.setParams(params) + + deserialize: (params) -> + controller = @container.lookup('controller:accounts') + account = controller.findByLogin(params.login) + + if account + account + else + content = Ember.Object.create(login: params.login) + proxy = Ember.ObjectProxy.create(content: content) + + observer = -> + if account = controller.findByLogin(params.login) + controller.removeObserver 'content.length', observer + proxy.set('content', account) + controller.addObserver 'content.length', observer + + proxy + + serialize: (account) -> + if account + { login: account.get('login') } + else + {} + +Travis.AccountIndexRoute = Ember.Route.extend + setupController: -> + @container.lookup('controller:profile').activate 'hooks' + + renderTemplate: -> + @render 'hooks', outlet: 'pane', into: 'profile' + +Travis.AccountProfileRoute = Ember.Route.extend + setupController: -> + @container.lookup('controller:profile').activate 'user' + + renderTemplate: -> + @render 'user', outlet: 'pane', into: 'profile' diff --git a/assets/scripts/app/templates/layouts/top.hbs b/assets/scripts/app/templates/layouts/top.hbs index 10ccca1f..27c96af5 100644 --- a/assets/scripts/app/templates/layouts/top.hbs +++ b/assets/scripts/app/templates/layouts/top.hbs @@ -18,12 +18,12 @@
{{t layouts.top.github_login}}
- {{view.userName}}
+ {{#linkTo "profile.index" class="signed-in"}}
{{view.userName}}{{/linkTo}}
{{t layouts.top.signing_in}}
Repositories: {{view.account.reposCount}} diff --git a/assets/scripts/app/templates/profile/tabs.hbs b/assets/scripts/app/templates/profile/tabs.hbs index 05b4bacd..8f770575 100644 --- a/assets/scripts/app/templates/profile/tabs.hbs +++ b/assets/scripts/app/templates/profile/tabs.hbs @@ -1,13 +1,17 @@