mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-03-14 07:00:01 -04:00
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'
|
||||
|
||||
# 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]
|
||||
|
|
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
|
||||
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.
|
||||
|
||||
|
||||
|
|
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
|
||||
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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
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
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue