Plug proper layouts and links on profile view

This commit is contained in:
Piotr Sarnacki 2012-09-26 18:18:47 +02:00
parent 1134028996
commit 0885cdf674
15 changed files with 105 additions and 67 deletions

View File

@ -43,12 +43,6 @@ Travis.reopen
signOut: ->
@get('auth').signOut()
@routes.route('')
render: (name, action, params) ->
layout = @connectLayout(name)
layout.activate(action, params || {})
$('body').attr('id', name)
receive: ->
@store.receive.apply(@store, arguments)

View File

@ -19,6 +19,9 @@ Travis.reopen
TopController: Em.Controller.extend
userBinding: 'Travis.app.currentUser'
ApplicationController: Em.Controller.extend()
MainController: Em.Controller.extend()
StatsLayoutController: Em.Controller.extend()
ProfileLayoutController: Em.Controller.extend()
require 'controllers/accounts'
require 'controllers/builds'

View File

@ -2,6 +2,7 @@ Travis.AccountsController = Ember.ArrayController.extend
defaultTab: 'accounts'
init: ->
@_super()
@activate(@defaultTab)
activate: (tab, params) ->
@ -10,3 +11,6 @@ Travis.AccountsController = Ember.ArrayController.extend
viewAccounts: ->
@set('content', Travis.Account.filter())
findByLogin: (login) ->
@find (account) -> account.get('login') == 'login'

View File

@ -1,5 +1 @@
Travis.HomeController = Travis.Controller.extend
name: 'home'
activate: (action, params) ->
@repositoryController.activate(action, params)
Travis.HomeController = Travis.Controller.extend()

View File

@ -1,18 +1,11 @@
Travis.ProfileController = Travis.Controller.extend
name: 'profile'
userBinding: 'Travis.app.currentUser'
init: ->
@_super()
# @_super('top', 'accounts')
# @connectTop()
# @connectOutlet outletName: 'left', controller: @accountsController, viewClass: Travis.AccountsView
# @connectOutlet(outletName: 'main', controller: this, viewClass: Travis.ProfileView)
# @accounts = @accountsController.get('content')
accountsBinding: 'Travis.app.router.accountsController'
account: (->
login = @get('params.login') || Travis.app.get('currentUser.login')
@accounts.toArray().filter((account) -> account if account.get('login') == login)[0]
@get('accounts').filter((account) -> account if account.get('login') == login)[0]
).property('accounts.length', 'params.login')
activate: (action, params) ->

View File

@ -4,13 +4,16 @@ Travis.Router = Ember.Router.extend
initialState: 'loading'
goToRoot: Ember.Route.transitionTo('root.home.show')
goToStats: Ember.Route.transitionTo('root.home.stats')
goToStats: Ember.Route.transitionTo('root.stats')
showRepository: Ember.Route.transitionTo('root.home.repository.show')
showBuilds: Ember.Route.transitionTo('root.home.repository.builds.index')
showBuild: Ember.Route.transitionTo('root.home.repository.builds.show')
showPullRequests: Ember.Route.transitionTo('root.home.repository.pullRequests')
showBranches: Ember.Route.transitionTo('root.home.repository.branches')
showJob: Ember.Route.transitionTo('root.home.repository.job')
showProfile: Ember.Route.transitionTo('root.profile')
showAccount: Ember.Route.transitionTo('root.profile.account')
showUserProfile: Ember.Route.transitionTo('root.profile.account.profile')
signedIn: ->
!!Travis.app.get('currentUser')
@ -56,25 +59,76 @@ Travis.Router = Ember.Router.extend
initialState: 'home'
loading: Ember.State.extend()
stats: Ember.Route.extend
route: '/stats'
connectOutlets: (router) ->
router.get('applicationController').connectOutlet 'statsLayout'
$('body').attr('id', 'stats')
router.get('statsLayoutController').connectOutlet 'top', 'top'
router.get('statsLayoutController').connectOutlet 'main', 'stats'
profile: Ember.Route.extend
initialState: 'index'
route: '/profile'
connectOutlets: (router) ->
router.get('applicationController').connectOutlet 'profileLayout'
$('body').attr('id', 'profile')
router.get('profileLayoutController').connectOutlet 'top', 'top'
router.get('profileLayoutController').connectOutlet 'left', 'accounts'
index: Ember.Route.extend
route: '/'
connectOutlets: (router) ->
router.get('profileLayoutController').connectOutlet 'main', 'profile'
router.get('profileController').activate 'hooks'
account: Ember.Route.extend
initialState: 'index'
route: '/:login'
connectOutlets: (router, account) ->
if account
params = { login: account.get('login') }
router.get('profileController').setParams(params)
else
router.send 'showProfile'
deserialize: (router, params) ->
router.get('accountsController').findByLogin(params.login)
serialize: (router, account) ->
if account
{ login: account.get('login') }
else
{}
index: Ember.Route.extend
route: '/'
connectOutlets: (router) ->
router.get('profileController').activate 'hooks'
profile: Ember.Route.extend
route: '/profile'
connectOutlets: (router) ->
router.get('profileController').activate 'user'
home: Ember.Route.extend
initialState: 'show'
route: '/'
connectOutlets: (router) ->
router.get('applicationController').connectOutlet 'left', 'repositories'
router.get('applicationController').connectOutlet 'right', 'sidebar'
router.get('applicationController').connectOutlet 'top', 'top'
router.get('applicationController').connectOutlet 'main', 'repository'
router.get('applicationController').connectOutlet 'home'
$('body').attr('id', 'home')
router.get('homeController').connectOutlet 'left', 'repositories'
router.get('homeController').connectOutlet 'right', 'sidebar'
router.get('homeController').connectOutlet 'top', 'top'
router.get('homeController').connectOutlet 'main', 'repository'
show: Ember.Route.extend
route: '/'
connectOutlets: (router) ->
router.get('repositoryController').activate('index')
stats: Ember.Route.extend
route: '/stats'
connectOutlets: (router) ->
router.get('applicationController').connectOutlet 'main', 'stats'
repository: Ember.Route.extend
initialState: 'show'
route: '/:owner/:name'

View File

@ -1 +1,6 @@
heyho
{{! TODO apparently styles assume that there is more divs here...
I should fix that later }}
<div>
{{outlet}}
</div>

View File

@ -1,21 +1,17 @@
{{! TODO apparently styles assume that there is more divs here...
I should fix that later }}
<div><div>
<div id="top">
{{outlet top}}
<div id="top">
{{outlet top}}
</div>
<div id="page">
<div id="left">
{{outlet left}}
</div>
<div id="page">
<div id="left">
{{outlet left}}
</div>
<div id="main">
{{outlet main}}
</div>
<div id="right">
{{outlet right}}
</div>
<div id="main">
{{outlet main}}
</div>
</div></div>
<div id="right">
{{outlet right}}
</div>
</div>

View File

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

View File

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

View File

@ -6,4 +6,3 @@
{{outlet pane}}
</div>

View File

@ -1,13 +1,13 @@
<ul class="tabs">
<li id="tab_hooks" {{bindAttr class="view.classHooks"}}>
<h5>
<a {{bindAttr href="view.urlAccount"}} {{action route}}>Repositories</a>
<a {{action showAccount view.account href=true}}>Repositories</a>
</h5>
</li>
{{#if view.displayUser}}
<li id="tab_user" {{bindAttr class="view.classUser"}}>
<h5>
<a {{bindAttr href="view.urlUser"}} {{action route}}>Profile</a>
<a {{action showUserProfile view.account href=true}}>Profile</a>
</h5>
</li>
{{/if}}

View File

@ -6,10 +6,10 @@ require 'ext/ember/namespace'
$("##{event.target.name}").remove().appendTo('body').toggle()
@Travis.reopen
HomeLayout: Travis.View.extend(templateName: 'layouts/home')
ProfileLayout: Travis.View.extend(templateName: 'layouts/profile')
StatsLayout: Travis.View.extend(templateName: 'layouts/simple')
ApplicationView: Travis.View.extend(templateName: 'layouts/home')
HomeView: Travis.View.extend(templateName: 'layouts/home')
ProfileLayoutView: Travis.View.extend(templateName: 'layouts/profile')
StatsLayoutView: Travis.View.extend(templateName: 'layouts/simple')
ApplicationView: Travis.View.extend(templateName: 'application')
require 'views/build'
require 'views/job'

View File

@ -53,13 +53,7 @@
'active' if @get('tab') == 'user'
).property('tab')
urlAccount: (->
Travis.Urls.account(@get('controller.account.login'))
).property('controller.account.login')
urlUser: (->
Travis.Urls.user(@get('controller.user.login'))
).property('controller.user.login')
accountBinding: 'controller.account'
displayUser: (->
@get('controller.account.login') == @get('controller.user.login')

File diff suppressed because one or more lines are too long