Basics for account and user home pages

This commit is contained in:
Ruben Vereecken 2014-07-15 16:15:21 +02:00
parent a60451368e
commit 40ba28f49b
11 changed files with 100 additions and 11 deletions

View file

@ -20,7 +20,7 @@ module.exports = class CocoRouter extends Backbone.Router
'user/:nameOrID(/:subview)': 'userView'
# account views
# 'account(/:subview)(/*rest)': 'accountView'
'account(/:subview)': 'accountView'
# Direct links
'test': go('TestView')
@ -63,6 +63,18 @@ module.exports = class CocoRouter extends Backbone.Router
view.render()
@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: {}
openRoute: (route) ->
route = route.split('?')[0]

View file

@ -0,0 +1,5 @@
#user-home-view
#avatar
width: 150px
content: "blub"

View file

@ -0,0 +1,5 @@
#account-home-view
.main-content-area
padding: 20px 20px
img#avatar
width: 150px

View 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

View file

@ -3,14 +3,15 @@ extends /templates/base
// User pages might have some user page specific header, if not remove this
block content
div
if user
if user && viewName
ol.breadcrumb
li
- var userName = user.get('name');
a(href="/user/#{user.id}") #{userName}
li.active
| #{currentUserView}
else
| #{viewName}
else if !user
// TODO Ruben make this all fancy as soon as we can query users by name
| User not found.

View file

@ -0,0 +1,3 @@
extends /templates/kinds/user
block append content

View 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()

View file

@ -5,6 +5,7 @@ User = require 'models/User'
module.exports = class UserView extends RootView
template: template
className: 'user-view'
viewName: null # Used for the breadcrumbs
constructor: (options, @userID) ->
super options
@ -27,7 +28,7 @@ module.exports = class UserView extends RootView
getRenderData: ->
context = super()
context.currentUserView = 'Achievements'
context.viewName = @viewName
context.user = @user unless @user?.isAnonymous()
context

View file

@ -10,9 +10,6 @@ module.exports = class UserAchievementsView extends UserView
id: 'user-achievements-view'
template: template
events:
'userLoaded': 'onUserLoaded'
constructor: (options, userID) ->
super options, userID

View 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

View file

@ -70,17 +70,15 @@ setupMiddlewareToSendOldBrowserWarningWhenPlayersViewLevelDirectly = (app) ->
return next() if req.query['try-old-browser-anyway'] or not isOldBrowser req
res.sendfile(path.join(__dirname, 'public', 'index_old_browser.html'))
<<<<<<< HEAD
setupRedirectMiddleware = (app) ->
app.all '/account/profile/*', (req, res, next) ->
nameOrID = req.path.split('/')[3]
res.redirect 301, "/user/#{nameOrID}/profile"
=======
setupTrailingSlashRemovingMiddleware = (app) ->
app.use (req, res, next) ->
return res.redirect 301, req.url[...-1] if req.url.length > 1 and req.url.slice(-1) is '/'
next()
>>>>>>> master
exports.setupMiddleware = (app) ->
setupMiddlewareToSendOldBrowserWarningWhenPlayersViewLevelDirectly app