mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-29 15:35:15 -04:00
Half the account page is there
This commit is contained in:
parent
0288786098
commit
023a7adc81
7 changed files with 146 additions and 31 deletions
app
styles
templates
views/account
server/levels/sessions
|
@ -1,5 +1,12 @@
|
||||||
#user-home-view
|
#account-home-view
|
||||||
#avatar
|
dl
|
||||||
width: 150px
|
margin-bottom: 0px
|
||||||
|
|
||||||
content: "blub"
|
img#picture
|
||||||
|
max-width: 50%
|
||||||
|
|
||||||
|
.panel
|
||||||
|
margin-bottom: 10px
|
||||||
|
|
||||||
|
h2
|
||||||
|
margin-bottom: 0px
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
@import "../bootstrap/variables"
|
@import "../bootstrap/variables"
|
||||||
|
@import "../bootstrap/mixins"
|
||||||
|
|
||||||
// This is still very blocky. Browser reflows? Investigate why.
|
// This is still very blocky. Browser reflows? Investigate why.
|
||||||
.open > .dropdown-menu
|
.open > .dropdown-menu
|
||||||
|
@ -34,6 +35,9 @@
|
||||||
opacity: 1
|
opacity: 1
|
||||||
top: 100%
|
top: 100%
|
||||||
|
|
||||||
|
a.disabled
|
||||||
|
color: #5b5855
|
||||||
|
|
||||||
#top-nav
|
#top-nav
|
||||||
a.navbar-brand
|
a.navbar-brand
|
||||||
padding: 4px 20px 0px 20px
|
padding: 4px 20px 0px 20px
|
||||||
|
@ -53,6 +57,7 @@
|
||||||
.account-settings-image
|
.account-settings-image
|
||||||
width: 18px
|
width: 18px
|
||||||
height: 18px
|
height: 18px
|
||||||
|
margin-right: 5px
|
||||||
|
|
||||||
.glyphicon-user
|
.glyphicon-user
|
||||||
font-size: 16px
|
font-size: 16px
|
||||||
|
@ -86,19 +91,14 @@
|
||||||
padding: 15px
|
padding: 15px
|
||||||
letter-spacing: 1px
|
letter-spacing: 1px
|
||||||
font: 15px 'Helvetica Neue', Helvetica, Arial, sans-serif
|
font: 15px 'Helvetica Neue', Helvetica, Arial, sans-serif
|
||||||
&:after
|
+clearfix()
|
||||||
display: table
|
|
||||||
content: " "
|
|
||||||
clear: both
|
|
||||||
|
|
||||||
li.user-dropdown-footer
|
li.user-dropdown-footer
|
||||||
padding: 10px
|
padding: 10px
|
||||||
margin-left: 0px
|
margin-left: 0px
|
||||||
font-size: 14px
|
font-size: 14px
|
||||||
&:after
|
+clearfix()
|
||||||
display: table
|
|
||||||
content: " "
|
|
||||||
clear: both
|
|
||||||
.btn-flat
|
.btn-flat
|
||||||
border: #ddd 1px solid
|
border: #ddd 1px solid
|
||||||
border-radius: 0px
|
border-radius: 0px
|
||||||
|
@ -112,7 +112,7 @@
|
||||||
&:hover
|
&:hover
|
||||||
color: #f8e413
|
color: #f8e413
|
||||||
|
|
||||||
.navbar-link-text > a:hover
|
.navbar-link-text > li > a:hover
|
||||||
background: darken($body-bg, 3%)
|
background: darken($body-bg, 3%)
|
||||||
|
|
||||||
.btn, .btn-group, .fancy-select
|
.btn, .btn-group, .fancy-select
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
#account-home-view
|
|
||||||
.main-content-area
|
|
||||||
padding: 20px 20px
|
|
||||||
img#avatar
|
|
||||||
width: 150px
|
|
|
@ -1,8 +1,100 @@
|
||||||
extends /templates/base
|
extends /templates/base
|
||||||
|
|
||||||
block content
|
block content
|
||||||
|
.clearfix
|
||||||
|
.col-sm-6.clearfix
|
||||||
|
h2 Account Settings
|
||||||
|
hr
|
||||||
|
|
||||||
|
.panel.panel-default
|
||||||
|
.panel-heading
|
||||||
|
h3.panel-title
|
||||||
|
a(href="account/settings#me") Me
|
||||||
|
.panel-body
|
||||||
|
dl
|
||||||
|
dt Name
|
||||||
|
dd=me.get('name')
|
||||||
|
dt Email
|
||||||
|
dd abe@lincoln
|
||||||
|
.panel.panel-default
|
||||||
|
.panel-heading
|
||||||
|
h3.panel-title
|
||||||
|
a(href="account/settings#picture") Picture
|
||||||
|
.panel-body.text-center
|
||||||
|
img#picture(src="#{me.getPhotoURL(150)}" alt="")
|
||||||
|
.panel.panel-default
|
||||||
|
.panel-heading
|
||||||
|
h3.panel-title
|
||||||
|
a(href="account/settings#wizard") Wizard
|
||||||
|
//.panel-body
|
||||||
|
| Lorem Ipsum
|
||||||
|
.panel.panel-default
|
||||||
|
.panel-heading
|
||||||
|
h3.panel-title
|
||||||
|
a(href="account/settings#emails") Emails
|
||||||
|
.panel-body
|
||||||
|
.form
|
||||||
|
.form-group.checkbox
|
||||||
|
label.control-label(for="email_archmageNews")
|
||||||
|
span General
|
||||||
|
input#email_archmageNews(name="email_archmageNews", type="checkbox", checked=subs.generalNews, disabled="true")
|
||||||
|
.form-group.checkbox
|
||||||
|
label.control-label(for="email_archmageNews")
|
||||||
|
span.spr(data-i18n="classes.archmage_title")
|
||||||
|
| Archmage
|
||||||
|
span(data-i18n="classes.archmage_title_description")
|
||||||
|
| (Coder)
|
||||||
|
input#email_archmageNews(name="email_archmageNews", type="checkbox", checked=subs.archmageNews, disabled="true")
|
||||||
|
.form-group.checkbox
|
||||||
|
label.control-label(for="email_artisanNews")
|
||||||
|
span.spr(data-i18n="classes.artisan_title")
|
||||||
|
| Artisan
|
||||||
|
span(data-i18n="classes.artisan_title_description")
|
||||||
|
| (Level Builder)
|
||||||
|
input#email_artisanNews(name="email_artisanNews", type="checkbox", checked=subs.artisanNews, disabled="true")
|
||||||
|
.form-group.checkbox
|
||||||
|
label.control-label(for="email_adventurerNews")
|
||||||
|
span.spr(data-i18n="classes.adventurer_title")
|
||||||
|
| Adventurer
|
||||||
|
span(data-i18n="classes.adventurer_title_description")
|
||||||
|
| (Level Playtester)
|
||||||
|
input#email_adventurerNews(name="email_adventurerNews", type="checkbox", checked=subs.adventurerNews, disabled="true")
|
||||||
|
.form-group.checkbox
|
||||||
|
label.control-label(for="email_scribeNews")
|
||||||
|
span.spr(data-i18n="classes.scribe_title")
|
||||||
|
| Scribe
|
||||||
|
span(data-i18n="classes.scribe_title_description")
|
||||||
|
| (Article Editor)
|
||||||
|
input#email_scribeNews(name="email_scribeNews", type="checkbox", checked=subs.scribeNews, disabled="true")
|
||||||
|
.form-group.checkbox
|
||||||
|
label.control-label(for="email_diplomatNews")
|
||||||
|
span.spr(data-i18n="classes.diplomat_title")
|
||||||
|
| Diplomat
|
||||||
|
span(data-i18n="classes.diplomat_title_description")
|
||||||
|
| (Translator)
|
||||||
|
input#email_diplomatNews(name="email_diplomatNews", type="checkbox", checked=subs.diplomatNews, disabled="true")
|
||||||
|
.form-group.checkbox
|
||||||
|
label.control-label(for="email_ambassadorNews")
|
||||||
|
span.spr(data-i18n="classes.ambassador_title")
|
||||||
|
| Ambassador
|
||||||
|
span(data-i18n="classes.ambassador_title_description")
|
||||||
|
| (Support)
|
||||||
|
input#email_ambassadorNews(name="email_ambassadorNews", type="checkbox", checked=subs.ambassadorNews, disabled="true")
|
||||||
|
|
||||||
|
.panel.panel-default
|
||||||
|
.panel-heading
|
||||||
|
h3.panel-title
|
||||||
|
a(href="account/settings#password") Password
|
||||||
|
.panel.panel-default
|
||||||
|
.panel-heading
|
||||||
|
h3.panel-title
|
||||||
|
a(href="account/settings#job-profile") Job Profile
|
||||||
|
.col-sm-6
|
||||||
|
h2 Recently Played
|
||||||
|
hr
|
||||||
|
|
||||||
|
//block content
|
||||||
h2 Account
|
h2 Account
|
||||||
div
|
|
||||||
.col-sm-3.text-center
|
.col-sm-3.text-center
|
||||||
img#avatar(src="#{me.getPhotoURL(100)}")
|
img#avatar(src="#{me.getPhotoURL(100)}")
|
||||||
h3=me.get('name') || 'Anoner'
|
h3=me.get('name') || 'Anoner'
|
||||||
|
@ -10,11 +102,22 @@ block content
|
||||||
dl.dl-horizontal
|
dl.dl-horizontal
|
||||||
if me.get('firstName') || me.get('lastName')
|
if me.get('firstName') || me.get('lastName')
|
||||||
dt Full name
|
dt Full name
|
||||||
dd=me.get('firstName') + ' ' + me.get('lastName')
|
dd=me.get('firstName') || '' + ' ' + me.get('lastName') || ''
|
||||||
dt Email
|
dt Email
|
||||||
dd
|
dd
|
||||||
span.spr=me.get('email')
|
span.spr=me.get('email')
|
||||||
span (subscriptions)
|
//span (subscriptions)
|
||||||
|
hr
|
||||||
|
- var dateCreated = me.get('dateCreated');
|
||||||
|
- var signedCLA = me.get('signedCLA');
|
||||||
|
- console.log(moment)
|
||||||
|
dt Member since
|
||||||
|
dd= moment(dateCreated).format('MMMM Do YYYY')
|
||||||
|
if signedCLA
|
||||||
|
dt Signed CLA
|
||||||
|
dd= moment(signedCLA).format('MMMM Do YYYY')
|
||||||
|
|
||||||
|
// TODO Have social network icons here for easy linking
|
||||||
|
|
||||||
.col-sm-3
|
.col-sm-3
|
||||||
h3 Account
|
h3 Account
|
||||||
|
@ -33,3 +136,5 @@ block content
|
||||||
a Statistics
|
a Statistics
|
||||||
li
|
li
|
||||||
a Code
|
a Code
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -35,12 +35,6 @@ body
|
||||||
else
|
else
|
||||||
span.glyphicon.glyphicon-user
|
span.glyphicon.glyphicon-user
|
||||||
|
|
||||||
//else
|
|
||||||
button.btn.btn-primary.navbuttontext.header-font.auth-button
|
|
||||||
span(data-i18n="login.log_in") Log In
|
|
||||||
span.spr.spl /
|
|
||||||
span(data-i18n="login.sign_up") Create Account
|
|
||||||
|
|
||||||
ul(class='navbar-link-text').nav.navbar-nav.pull-right
|
ul(class='navbar-link-text').nav.navbar-nav.pull-right
|
||||||
li.play
|
li.play
|
||||||
a.header-font(href='/play', data-i18n="nav.play") Levels
|
a.header-font(href='/play', data-i18n="nav.play") Levels
|
||||||
|
@ -53,7 +47,7 @@ body
|
||||||
img.account-settings-image(src=me.getPhotoURL(18), alt="")
|
img.account-settings-image(src=me.getPhotoURL(18), alt="")
|
||||||
else
|
else
|
||||||
i.glyphicon.glyphicon-user
|
i.glyphicon.glyphicon-user
|
||||||
.navbuttontext-account(data-i18n="nav.account") Account
|
.navbuttontext-account(data-i18n="nav.account" href="/account") Account
|
||||||
span.caret
|
span.caret
|
||||||
ul.dropdown-menu(role="menu")
|
ul.dropdown-menu(role="menu")
|
||||||
li.user-dropdown-header
|
li.user-dropdown-header
|
||||||
|
@ -65,12 +59,18 @@ body
|
||||||
.col-xs-4.text-center
|
.col-xs-4.text-center
|
||||||
a(href="#") Stats
|
a(href="#") Stats
|
||||||
.col-xs-4.text-center
|
.col-xs-4.text-center
|
||||||
a.disabled(href="#") Code
|
a.disabled() Code
|
||||||
li.user-dropdown-footer
|
li.user-dropdown-footer
|
||||||
.pull-left
|
.pull-left
|
||||||
a.btn.btn-default.btn-flat(href="") Account
|
a.btn.btn-default.btn-flat(href="/account") Account
|
||||||
.pull-right
|
.pull-right
|
||||||
a.btn.btn-default.btn-flat(href="") Log Out
|
button#logout-button.btn.btn-default.btn-flat(data-i18n="login.log_out") Log Out
|
||||||
|
else
|
||||||
|
li
|
||||||
|
button.btn.btn-primary.navbuttontext.header-font.auth-button
|
||||||
|
span(data-i18n="login.log_in") Log In
|
||||||
|
span.spr.spl /
|
||||||
|
span(data-i18n="login.sign_up") Create Account
|
||||||
|
|
||||||
block outer_content
|
block outer_content
|
||||||
#outer-content-wrapper
|
#outer-content-wrapper
|
||||||
|
|
|
@ -12,6 +12,12 @@ module.exports = class AccountHomeView extends View
|
||||||
super options
|
super options
|
||||||
return unless me
|
return unless me
|
||||||
|
|
||||||
|
getRenderData: ->
|
||||||
|
c = super()
|
||||||
|
c.subs = {}
|
||||||
|
c.subs[sub] = 1 for sub in c.me.getEnabledEmails()
|
||||||
|
c
|
||||||
|
|
||||||
afterRender: ->
|
afterRender: ->
|
||||||
super()
|
super()
|
||||||
@openModelView new AuthModalView if me.isAnonymous()
|
@openModelView new AuthModalView if me.isAnonymous()
|
||||||
|
|
|
@ -42,4 +42,6 @@ LevelSessionSchema.pre 'save', (next) ->
|
||||||
delete previous[id] if initd
|
delete previous[id] if initd
|
||||||
next()
|
next()
|
||||||
|
|
||||||
|
LevelSessionSchema.index {user: 1, changed: -1}, {sparse: true, name: 'last played index'}
|
||||||
|
|
||||||
module.exports = LevelSession = mongoose.model('level.session', LevelSessionSchema, 'level.sessions')
|
module.exports = LevelSession = mongoose.model('level.session', LevelSessionSchema, 'level.sessions')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue