mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-26 22:13:32 -04:00
Update private clans preview image and copy
This commit is contained in:
parent
6a53237e65
commit
8d258c6943
8 changed files with 71 additions and 24 deletions
app
assets/images/pages/clans
locale
styles/clans
templates
views/clans
Binary file not shown.
Before ![]() (image error) Size: 103 KiB After ![]() (image error) Size: 192 KiB ![]() ![]() |
|
@ -790,6 +790,7 @@
|
|||
make_private: "Make clan private"
|
||||
subs_only: "subscribers only"
|
||||
create_clan: "Create New Clan"
|
||||
private_preview: "Preview"
|
||||
public_clans: "Public Clans"
|
||||
my_clans: "My Clans"
|
||||
clan_name: "Clan Name"
|
||||
|
|
|
@ -99,9 +99,23 @@
|
|||
background-color: blanchedalmond
|
||||
font-size: 10pt
|
||||
|
||||
.level-progression-campaign
|
||||
.level-progression-concepts
|
||||
color: #317EAC
|
||||
font-size: 12pt
|
||||
font-weight: bold
|
||||
margin-top: 8px
|
||||
margin-bottom: 4px
|
||||
|
||||
.level-progression-levels
|
||||
color: #317EAC
|
||||
font-size: 12pt
|
||||
font-weight: bold
|
||||
margin-top: 8px
|
||||
|
||||
.level-progression-campaign
|
||||
font-size: 10pt
|
||||
font-weight: bold
|
||||
margin-bottom: 4px
|
||||
margin-top: 4px
|
||||
|
||||
.progress-level-cell
|
||||
|
|
|
@ -118,15 +118,15 @@ block content
|
|||
if isOwner && member.id !== clan.get('ownerID')
|
||||
button.btn.btn-xs.btn-warning.remove-member-btn(data-id="#{member.id}", data-i18n="clans.rem_hero") Remove Hero
|
||||
td.progress-cell
|
||||
p
|
||||
div.level-progression-campaign(style='color:#317EAC;') Concepts
|
||||
each concept in conceptsProgression
|
||||
if userConceptsMap[member.id] && userConceptsMap[member.id][concept] === 'complete'
|
||||
span.spr.progress-level-cell.progress-level-cell-complete(data-i18n="concepts." + concept)
|
||||
else if userConceptsMap[member.id] && userConceptsMap[member.id][concept] === 'started'
|
||||
span.spr.progress-level-cell.progress-level-cell-started(data-i18n="concepts." + concept)
|
||||
else
|
||||
span.spr.progress-level-cell.progress-level-cell-not-started(data-i18n="concepts." + concept)
|
||||
.level-progression-concepts Concepts
|
||||
each concept in conceptsProgression
|
||||
if userConceptsMap[member.id] && userConceptsMap[member.id][concept] === 'complete'
|
||||
span.spr.progress-level-cell.progress-level-cell-complete(data-i18n="concepts." + concept)
|
||||
else if userConceptsMap[member.id] && userConceptsMap[member.id][concept] === 'started'
|
||||
span.spr.progress-level-cell.progress-level-cell-started(data-i18n="concepts." + concept)
|
||||
else
|
||||
span.spr.progress-level-cell.progress-level-cell-not-started(data-i18n="concepts." + concept)
|
||||
.level-progression-levels Levels
|
||||
each campaign in campaignLevelProgressions
|
||||
if lastUserCampaignLevelMap[member.id] && lastUserCampaignLevelMap[member.id][campaign.ID]
|
||||
div.level-progression-campaign= campaign.name
|
||||
|
|
|
@ -10,7 +10,7 @@ block content
|
|||
input(type='checkbox').private-clan-checkbox
|
||||
span.spl(data-i18n="clans.make_private") Make clan private
|
||||
span.spl (
|
||||
a.private-more-info(data-i18n="clans.subs_only") subscribers only
|
||||
a.private-more-info(data-i18n="clans.private_preview")
|
||||
span )
|
||||
p
|
||||
button.btn.btn-success.create-clan-btn(data-i18n="clans.create_clan") Create New Clan
|
||||
|
|
|
@ -48,11 +48,25 @@ block content
|
|||
span.spl(data-i18n="teachers.monitor_progress_4")
|
||||
p(data-i18n="teachers.monitor_progress_5")
|
||||
h4(data-i18n="teachers.sub_includes_7")
|
||||
p(data-i18n="teachers.private_clans_1")
|
||||
ul
|
||||
li
|
||||
strong Track concepts
|
||||
span.spl learned by each student
|
||||
li Track levels completed for each student
|
||||
li
|
||||
span See your students'
|
||||
strong.spl solutions
|
||||
li Sort students by name or progress
|
||||
li
|
||||
strong Requires invitation
|
||||
span.spl to join
|
||||
p
|
||||
img(src='/images/pages/clans/dashboard_preview.png' height='400')
|
||||
p
|
||||
span.spr(data-i18n="teachers.private_clans_2")
|
||||
a(href='/clans', data-i18n="clans.clan")
|
||||
span(data-i18n="teachers.private_clans_3")
|
||||
p Private clans require a subscription to create or join.
|
||||
|
||||
h3(data-i18n="teachers.material_title")
|
||||
if me.get('chinaVersion')
|
||||
|
@ -78,19 +92,19 @@ block content
|
|||
tbody
|
||||
tr
|
||||
td Syntax
|
||||
td If/Else
|
||||
td If Statements
|
||||
td Arithmetic
|
||||
td Object Literals
|
||||
tr
|
||||
td Methods
|
||||
td Relational Operators
|
||||
td While-loops
|
||||
td While Loops
|
||||
td Remote Method Invocation
|
||||
tr
|
||||
td Parameters
|
||||
td Object Properties
|
||||
td Break
|
||||
td For-Loops
|
||||
td Break Statements
|
||||
td For Loops
|
||||
tr
|
||||
td Strings
|
||||
td Input Handling
|
||||
|
|
|
@ -133,22 +133,34 @@ module.exports = class ClanDetailsView extends RootView
|
|||
@memberSessions.fetch cache: false
|
||||
|
||||
sortMembers: (highestUserLevelCountMap, userConceptsMap) ->
|
||||
# Progress sort precedence: most concepts, most levels, name sort
|
||||
# Progress sort precedence: most completed concepts, most started concepts, most levels, name sort
|
||||
return unless @members? and @memberSort?
|
||||
switch @memberSort
|
||||
when "nameDesc"
|
||||
@members.comparator = (a, b) -> return (b.get('name') or 'Anoner').localeCompare(a.get('name') or 'Anoner')
|
||||
when "progressAsc"
|
||||
@members.comparator = (a, b) ->
|
||||
if Object.keys(userConceptsMap[a.id]).length < Object.keys(userConceptsMap[b.id]).length then return -1
|
||||
else if Object.keys(userConceptsMap[a.id]).length > Object.keys(userConceptsMap[b.id]).length then return 1
|
||||
aComplete = (concept for concept, state of userConceptsMap[a.id] when state is 'complete')
|
||||
bComplete = (concept for concept, state of userConceptsMap[b.id] when state is 'complete')
|
||||
aStarted = (concept for concept, state of userConceptsMap[a.id] when state is 'started')
|
||||
bStarted = (concept for concept, state of userConceptsMap[b.id] when state is 'started')
|
||||
if aComplete < bComplete then return -1
|
||||
else if aComplete > bComplete then return 1
|
||||
else if aStarted < bStarted then return -1
|
||||
else if aStarted > bStarted then return 1
|
||||
if highestUserLevelCountMap[a.id] < highestUserLevelCountMap[b.id] then return -1
|
||||
else if highestUserLevelCountMap[a.id] > highestUserLevelCountMap[b.id] then return 1
|
||||
(a.get('name') or 'Anoner').localeCompare(b.get('name') or 'Anoner')
|
||||
when "progressDesc"
|
||||
@members.comparator = (a, b) ->
|
||||
if Object.keys(userConceptsMap[a.id]).length > Object.keys(userConceptsMap[b.id]).length then return -1
|
||||
else if Object.keys(userConceptsMap[a.id]).length < Object.keys(userConceptsMap[b.id]).length then return 1
|
||||
aComplete = (concept for concept, state of userConceptsMap[a.id] when state is 'complete')
|
||||
bComplete = (concept for concept, state of userConceptsMap[b.id] when state is 'complete')
|
||||
aStarted = (concept for concept, state of userConceptsMap[a.id] when state is 'started')
|
||||
bStarted = (concept for concept, state of userConceptsMap[b.id] when state is 'started')
|
||||
if aComplete > bComplete then return -1
|
||||
else if aComplete < bComplete then return 1
|
||||
else if aStarted > bStarted then return -1
|
||||
else if aStarted < bStarted then return 1
|
||||
if highestUserLevelCountMap[a.id] > highestUserLevelCountMap[b.id] then return -1
|
||||
else if highestUserLevelCountMap[a.id] < highestUserLevelCountMap[b.id] then return 1
|
||||
(b.get('name') or 'Anoner').localeCompare(a.get('name') or 'Anoner')
|
||||
|
|
|
@ -73,9 +73,15 @@ module.exports = class ClansView extends RootView
|
|||
|
||||
setupPrivateInfoPopover: ->
|
||||
popoverTitle = "<h3>Private Clans</h3>"
|
||||
popoverContent = "<p>Invite only</p>"
|
||||
popoverContent += "<p>Detailed dashboard:</p>"
|
||||
popoverContent += "<p><img src='/images/pages/clans/dashboard_preview.png' width='700'></p>"
|
||||
popoverContent = "<ul>"
|
||||
popoverContent += "<li><span style='font-weight:bold;'>Track concepts</span> learned by each member"
|
||||
popoverContent += "<li>Track levels completed for each member"
|
||||
popoverContent += "<li>See your members' <span style='font-weight:bold;'>solutions</span>"
|
||||
popoverContent += "<li>Sort members by name or progress"
|
||||
popoverContent += "<li><span style='font-weight:bold;'>Requires invitation</span> to join"
|
||||
popoverContent += "</ul>"
|
||||
popoverContent += "<p><img src='/images/pages/clans/dashboard_preview.png' height='400'></p>"
|
||||
popoverContent += "<p>Private clans require a subscription to create or join.</p>"
|
||||
@$el.find('.private-more-info').popover(
|
||||
animation: true
|
||||
html: true
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue