Update private clans preview image and copy

This commit is contained in:
Matt Lott 2015-07-02 18:44:13 -07:00
parent 6a53237e65
commit 8d258c6943
8 changed files with 71 additions and 24 deletions

Binary file not shown.

Before

(image error) Size: 103 KiB

After

(image error) Size: 192 KiB

Before After
Before After

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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')

View file

@ -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