Fix profile views

This commit is contained in:
Piotr Sarnacki 2013-02-20 02:54:56 +01:00
parent f121a008c6
commit 4f21b097a8
9 changed files with 98 additions and 15 deletions

View File

@ -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'

View File

@ -1,8 +1,5 @@
Travis.AccountsController = Ember.ArrayController.extend
tab: 'accounts'
init: ->
@_super()
findByLogin: (login) ->
@find (account) -> account.get('login') == login

View File

@ -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', {})

View File

@ -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'

View File

@ -18,12 +18,12 @@
<li {{bindAttr class="view.classProfile"}}>
<p class="handle">
<a class="signed-out" href="#" {{action signIn target="Travis"}}>{{t layouts.top.github_login}}</a>
<a class="signed-in" {{action showProfile href=true}}><img {{bindAttr src="view.gravatarUrl"}}>{{view.userName}}</a>
{{#linkTo "profile.index" class="signed-in"}}<img {{bindAttr src="view.gravatarUrl"}}>{{view.userName}}{{/linkTo}}
<span class="signing-in">{{t layouts.top.signing_in}}</span>
</p>
<ul>
<li>
<a {{action showProfile href=true}}>{{t layouts.top.accounts}}</a>
{{#linkTo "profile.index" class="signed-in"}}{{t layouts.top.accounts}}{{/linkTo}}
</li>
<li>
<a href="/" {{action signOut target="Travis"}}>{{t layouts.top.sign_out}}</a>

View File

@ -9,7 +9,7 @@
<div class="tab">
{{#collection Travis.AccountsListView contentBinding="controller"}}
<a {{action showAccount view.account href=true}} class="name">{{view.name}}</a>
{{#linkTo "account.index" view.account class="name"}}{{view.name}}{{/linkTo}}
<p class="summary">
<span class="repos_label">Repositories:</span>
<abbr class="repos">{{view.account.reposCount}}</abbr>

View File

@ -1,13 +1,17 @@
<ul class="tabs">
<li id="tab_hooks" {{bindAttr class="view.classHooks"}}>
<h5>
<a {{action showAccount view.account href=true}}>Repositories</a>
{{#with view.account}}
{{#if login}}
{{#linkTo "account.index" this}}Repositories{{/linkTo}}
{{/if}}
{{/with}}
</h5>
</li>
{{#if view.displayUser}}
<li id="tab_user" {{bindAttr class="view.classUser"}}>
<h5>
<a {{action showUserProfile view.account href=true}}>Profile</a>
{{#linkTo "account.profile" view.account}}Profile{{/linkTo}}
</h5>
</li>
{{/if}}

View File

@ -32,7 +32,7 @@
<dd>
{{view Ember.Select id="locale"
contentBinding="view.locales"
valueBinding="Travis.app.currentUser.locale"
valueBinding="user.locale"
optionLabelPath="content.name"
optionValuePath="content.key"}}
</dd>

View File

@ -1,4 +1,4 @@
@Travis.reopen
Travis.reopen
ProfileView: Travis.View.extend
templateName: 'profile/show'
accountBinding: 'controller.account'