Basics for account and user home pages
This commit is contained in:
parent
a60451368e
commit
40ba28f49b
11 changed files with 100 additions and 11 deletions
|
@ -20,7 +20,7 @@ module.exports = class CocoRouter extends Backbone.Router
|
||||||
'user/:nameOrID(/:subview)': 'userView'
|
'user/:nameOrID(/:subview)': 'userView'
|
||||||
|
|
||||||
# account views
|
# account views
|
||||||
# 'account(/:subview)(/*rest)': 'accountView'
|
'account(/:subview)': 'accountView'
|
||||||
|
|
||||||
# Direct links
|
# Direct links
|
||||||
'test': go('TestView')
|
'test': go('TestView')
|
||||||
|
@ -63,6 +63,18 @@ module.exports = class CocoRouter extends Backbone.Router
|
||||||
view.render()
|
view.render()
|
||||||
@openView if view then view else @notFoundView()
|
@openView if view then view else @notFoundView()
|
||||||
|
|
||||||
|
# TODO There should be a uniform way to define these routes. This is backwards compatible
|
||||||
|
accountView: (subview) ->
|
||||||
|
modulePrefix = 'views/account/'
|
||||||
|
suffix = subview or 'home'
|
||||||
|
suffix2 = suffix + '_view'
|
||||||
|
ViewClass = @tryToLoadModule modulePrefix + suffix
|
||||||
|
ViewClass = @tryToLoadModule modulePrefix + suffix2 unless ViewClass
|
||||||
|
if ViewClass
|
||||||
|
view = new ViewClass
|
||||||
|
view.render()
|
||||||
|
@openView if view then view else @notFoundView()
|
||||||
|
|
||||||
cache: {}
|
cache: {}
|
||||||
openRoute: (route) ->
|
openRoute: (route) ->
|
||||||
route = route.split('?')[0]
|
route = route.split('?')[0]
|
||||||
|
|
5
app/styles/account/home.sass
Normal file
5
app/styles/account/home.sass
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#user-home-view
|
||||||
|
#avatar
|
||||||
|
width: 150px
|
||||||
|
|
||||||
|
content: "blub"
|
5
app/styles/user/home.sass
Normal file
5
app/styles/user/home.sass
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#account-home-view
|
||||||
|
.main-content-area
|
||||||
|
padding: 20px 20px
|
||||||
|
img#avatar
|
||||||
|
width: 150px
|
35
app/templates/account/home.jade
Normal file
35
app/templates/account/home.jade
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
extends /templates/base
|
||||||
|
|
||||||
|
block content
|
||||||
|
h2 Account
|
||||||
|
div
|
||||||
|
.col-sm-3.text-center
|
||||||
|
img#avatar(src="#{me.getPhotoURL(100)}")
|
||||||
|
h3=me.get('name') || 'Anoner'
|
||||||
|
.col-sm-6
|
||||||
|
dl.dl-horizontal
|
||||||
|
if me.get('firstName') || me.get('lastName')
|
||||||
|
dt Full name
|
||||||
|
dd=me.get('firstName') + ' ' + me.get('lastName')
|
||||||
|
dt Email
|
||||||
|
dd
|
||||||
|
span.spr=me.get('email')
|
||||||
|
span (subscriptions)
|
||||||
|
|
||||||
|
.col-sm-3
|
||||||
|
h3 Account
|
||||||
|
ul
|
||||||
|
li
|
||||||
|
a Settings
|
||||||
|
li
|
||||||
|
a Payment
|
||||||
|
h3 Public
|
||||||
|
ul
|
||||||
|
li
|
||||||
|
a Public profile
|
||||||
|
li
|
||||||
|
a Job Profile
|
||||||
|
li
|
||||||
|
a Statistics
|
||||||
|
li
|
||||||
|
a Code
|
|
@ -3,14 +3,15 @@ extends /templates/base
|
||||||
// User pages might have some user page specific header, if not remove this
|
// User pages might have some user page specific header, if not remove this
|
||||||
block content
|
block content
|
||||||
div
|
div
|
||||||
if user
|
if user && viewName
|
||||||
ol.breadcrumb
|
ol.breadcrumb
|
||||||
li
|
li
|
||||||
- var userName = user.get('name');
|
- var userName = user.get('name');
|
||||||
a(href="/user/#{user.id}") #{userName}
|
a(href="/user/#{user.id}") #{userName}
|
||||||
li.active
|
li.active
|
||||||
| #{currentUserView}
|
| #{viewName}
|
||||||
else
|
else if !user
|
||||||
// TODO Ruben make this all fancy as soon as we can query users by name
|
// TODO Ruben make this all fancy as soon as we can query users by name
|
||||||
| User not found.
|
| User not found.
|
||||||
|
|
||||||
|
|
||||||
|
|
3
app/templates/user/home.jade
Normal file
3
app/templates/user/home.jade
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
extends /templates/kinds/user
|
||||||
|
|
||||||
|
block append content
|
17
app/views/account/home.coffee
Normal file
17
app/views/account/home.coffee
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
View = require 'views/kinds/RootView'
|
||||||
|
template = require 'templates/account/home'
|
||||||
|
{me} = require 'lib/auth'
|
||||||
|
User = require 'models/User'
|
||||||
|
AuthModalView = require 'views/modal/auth_modal'
|
||||||
|
|
||||||
|
module.exports = class AccountHomeView extends View
|
||||||
|
id: 'account-home-view'
|
||||||
|
template: template
|
||||||
|
|
||||||
|
constructor: (options) ->
|
||||||
|
super options
|
||||||
|
return unless me
|
||||||
|
|
||||||
|
afterRender: ->
|
||||||
|
super()
|
||||||
|
@openModelView new AuthModalView if me.isAnonymous()
|
|
@ -5,6 +5,7 @@ User = require 'models/User'
|
||||||
module.exports = class UserView extends RootView
|
module.exports = class UserView extends RootView
|
||||||
template: template
|
template: template
|
||||||
className: 'user-view'
|
className: 'user-view'
|
||||||
|
viewName: null # Used for the breadcrumbs
|
||||||
|
|
||||||
constructor: (options, @userID) ->
|
constructor: (options, @userID) ->
|
||||||
super options
|
super options
|
||||||
|
@ -27,7 +28,7 @@ module.exports = class UserView extends RootView
|
||||||
|
|
||||||
getRenderData: ->
|
getRenderData: ->
|
||||||
context = super()
|
context = super()
|
||||||
context.currentUserView = 'Achievements'
|
context.viewName = @viewName
|
||||||
context.user = @user unless @user?.isAnonymous()
|
context.user = @user unless @user?.isAnonymous()
|
||||||
context
|
context
|
||||||
|
|
||||||
|
|
|
@ -10,9 +10,6 @@ module.exports = class UserAchievementsView extends UserView
|
||||||
id: 'user-achievements-view'
|
id: 'user-achievements-view'
|
||||||
template: template
|
template: template
|
||||||
|
|
||||||
events:
|
|
||||||
'userLoaded': 'onUserLoaded'
|
|
||||||
|
|
||||||
constructor: (options, userID) ->
|
constructor: (options, userID) ->
|
||||||
super options, userID
|
super options, userID
|
||||||
|
|
||||||
|
|
15
app/views/user/home.coffee
Normal file
15
app/views/user/home.coffee
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
UserView = require 'views/kinds/UserView'
|
||||||
|
template = require 'templates/user/home'
|
||||||
|
{me} = require 'lib/auth'
|
||||||
|
|
||||||
|
module.exports = class UserHomeView extends UserView
|
||||||
|
id: 'user-home-view'
|
||||||
|
template: template
|
||||||
|
|
||||||
|
constructor: (options) ->
|
||||||
|
super options
|
||||||
|
|
||||||
|
getRenderData: ->
|
||||||
|
context = super()
|
||||||
|
context
|
||||||
|
|
|
@ -70,17 +70,15 @@ setupMiddlewareToSendOldBrowserWarningWhenPlayersViewLevelDirectly = (app) ->
|
||||||
return next() if req.query['try-old-browser-anyway'] or not isOldBrowser req
|
return next() if req.query['try-old-browser-anyway'] or not isOldBrowser req
|
||||||
res.sendfile(path.join(__dirname, 'public', 'index_old_browser.html'))
|
res.sendfile(path.join(__dirname, 'public', 'index_old_browser.html'))
|
||||||
|
|
||||||
<<<<<<< HEAD
|
|
||||||
setupRedirectMiddleware = (app) ->
|
setupRedirectMiddleware = (app) ->
|
||||||
app.all '/account/profile/*', (req, res, next) ->
|
app.all '/account/profile/*', (req, res, next) ->
|
||||||
nameOrID = req.path.split('/')[3]
|
nameOrID = req.path.split('/')[3]
|
||||||
res.redirect 301, "/user/#{nameOrID}/profile"
|
res.redirect 301, "/user/#{nameOrID}/profile"
|
||||||
=======
|
|
||||||
setupTrailingSlashRemovingMiddleware = (app) ->
|
setupTrailingSlashRemovingMiddleware = (app) ->
|
||||||
app.use (req, res, next) ->
|
app.use (req, res, next) ->
|
||||||
return res.redirect 301, req.url[...-1] if req.url.length > 1 and req.url.slice(-1) is '/'
|
return res.redirect 301, req.url[...-1] if req.url.length > 1 and req.url.slice(-1) is '/'
|
||||||
next()
|
next()
|
||||||
>>>>>>> master
|
|
||||||
|
|
||||||
exports.setupMiddleware = (app) ->
|
exports.setupMiddleware = (app) ->
|
||||||
setupMiddlewareToSendOldBrowserWarningWhenPlayersViewLevelDirectly app
|
setupMiddlewareToSendOldBrowserWarningWhenPlayersViewLevelDirectly app
|
||||||
|
|
Reference in a new issue