Add sessionless play for Teachers

This commit is contained in:
phoenixeliot 2016-04-08 12:59:10 -07:00 committed by Scott Erickson
parent a7114a2719
commit a524256b5b
62 changed files with 153 additions and 103 deletions

View file

@ -377,7 +377,7 @@ module.exports = class LevelLoader extends CocoClass
resource.markLoaded() if resource.spriteSheetKeys.length is 0 resource.markLoaded() if resource.spriteSheetKeys.length is 0
denormalizeSession: -> denormalizeSession: ->
return if @headless or @sessionDenormalized or @spectateMode or @sessionless return if @headless or @sessionDenormalized or @spectateMode or @sessionless or me.isTeacher()
# This is a way (the way?) PUT /db/level.sessions/undefined was happening # This is a way (the way?) PUT /db/level.sessions/undefined was happening
# See commit c242317d9 # See commit c242317d9
return if not @session.id return if not @session.id

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
done: "انتهاء" done: "انتهاء"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
home: "Home" # Not used any more, will be removed soon. home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "български език", englishDescri
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
done: "Готово" done: "Готово"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
home: "На главната" # Not used any more, will be removed soon. home: "На главната" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
completed_level: "Nivell completat:" completed_level: "Nivell completat:"
course: "Curs:" course: "Curs:"
done: "Fet" done: "Fet"
next_level: "Següent nivell:" next_level: "Següent nivell"
next_game: "Següent joc" next_game: "Següent joc"
show_menu: "Mostrar menú del joc" show_menu: "Mostrar menú del joc"
home: "Inici" # Not used any more, will be removed soon. home: "Inici" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
done: "Hotovo" done: "Hotovo"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
home: "Domů" # Not used any more, will be removed soon. home: "Domů" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
done: "Færdig" done: "Færdig"
# next_level: "Next Level:" # next_level: "Next Level"
next_game: "Næste spil" next_game: "Næste spil"
show_menu: "Vis spil menu" show_menu: "Vis spil menu"
home: "Hjem" # Not used any more, will be removed soon. home: "Hjem" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
done: "Fertig" done: "Fertig"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
home: "Startseite" # Not used any more, will be removed soon. home: "Startseite" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Dütsch (Schwiiz)", englishDescription: "Ge
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
done: "Fertig" done: "Fertig"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
home: "Home" # Not used any more, will be removed soon. home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
completed_level: "Abgeschlossene Level:" completed_level: "Abgeschlossene Level:"
course: "Kurse:" course: "Kurse:"
done: "Fertig" done: "Fertig"
next_level: "Nächster Level:" next_level: "Nächster Level"
next_game: "Nächstes Spiel" next_game: "Nächstes Spiel"
show_menu: "Menü anzeigen" show_menu: "Menü anzeigen"
home: "Startseite" # Not used any more, will be removed soon. home: "Startseite" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre
completed_level: "Ολοκληρωμένο Επίπεδο:" completed_level: "Ολοκληρωμένο Επίπεδο:"
course: "Μάθημα:" course: "Μάθημα:"
done: "Έτοιμο" done: "Έτοιμο"
next_level: "Επομένο Επίπεδο:" next_level: "Επομένο Επίπεδο"
next_game: "Επόμενο παιχνίδι" next_game: "Επόμενο παιχνίδι"
show_menu: "Εμφάνιση μενού παιχνιδιού" show_menu: "Εμφάνιση μενού παιχνιδιού"
home: "Αρχική" # Not used any more, will be removed soon. home: "Αρχική" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
# done: "Done" # done: "Done"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
# done: "Done" # done: "Done"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -335,10 +335,11 @@
years: "years" years: "years"
play_level: play_level:
level_complete: "Level Complete"
completed_level: "Completed Level:" completed_level: "Completed Level:"
course: "Course:" course: "Course:"
done: "Done" done: "Done"
next_level: "Next Level:" next_level: "Next Level"
next_game: "Next game" next_game: "Next game"
show_menu: "Show game menu" show_menu: "Show game menu"
home: "Home" # Not used any more, will be removed soon. home: "Home" # Not used any more, will be removed soon.
@ -378,6 +379,7 @@
victory_new_item: "New Item" victory_new_item: "New Item"
victory_viking_code_school: "Holy smokes, that was a hard level you just beat! If you aren't already a software developer, you should be. You just got fast-tracked for acceptance with Viking Code School, where you can take your skills to the next level and become a professional web developer in 14 weeks." victory_viking_code_school: "Holy smokes, that was a hard level you just beat! If you aren't already a software developer, you should be. You just got fast-tracked for acceptance with Viking Code School, where you can take your skills to the next level and become a professional web developer in 14 weeks."
victory_become_a_viking: "Become a Viking" victory_become_a_viking: "Become a Viking"
victory_no_progress_for_teachers: "Progress is not saved for teachers. But, you can add a student account to your classroom for yourself."
guide_title: "Guide" guide_title: "Guide"
tome_cast_button_run: "Run" tome_cast_button_run: "Run"
tome_cast_button_running: "Running" tome_cast_button_running: "Running"
@ -1798,4 +1800,4 @@
one_month_coupon: "coupon: choose either Rails or HTML" one_month_coupon: "coupon: choose either Rails or HTML"
one_month_discount: "discount, 30% off: choose either Rails or HTML" one_month_discount: "discount, 30% off: choose either Rails or HTML"
license: "license" license: "license"
oreilly: "ebook of your choice" oreilly: "ebook of your choice"

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Esperanto", englishDescription: "Esperanto"
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
# done: "Done" # done: "Done"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
completed_level: "Nivel Completado:" completed_level: "Nivel Completado:"
course: "Curso:" course: "Curso:"
done: "Listo" done: "Listo"
next_level: "Siguiente Nivel:" next_level: "Siguiente Nivel"
next_game: "Siguiente juego" next_game: "Siguiente juego"
show_menu: "Mostrar menú de juego" show_menu: "Mostrar menú de juego"
home: "Inicio" # Not used any more, will be removed soon. home: "Inicio" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
done: "Hecho" done: "Hecho"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
home: "Inicio" # Not used any more, will be removed soon. home: "Inicio" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Eesti", englishDescription: "Estonian", tra
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
# done: "Done" # done: "Done"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
# done: "Done" # done: "Done"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
completed_level: "Suoritit tason:" completed_level: "Suoritit tason:"
course: "Kurssi:" course: "Kurssi:"
done: "Valmis" done: "Valmis"
next_level: "Seuraava taso:" next_level: "Seuraava taso"
next_game: "Seuraava peli" next_game: "Seuraava peli"
show_menu: "Näytä pelivalikko" show_menu: "Näytä pelivalikko"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
completed_level: "Niveau terminé:" completed_level: "Niveau terminé:"
course: "Cours:" course: "Cours:"
done: "Fait" done: "Fait"
next_level: "Niveau Suivant:" next_level: "Niveau Suivant"
next_game: "Prochain jeu" next_game: "Prochain jeu"
show_menu: "Afficher le menu" show_menu: "Afficher le menu"
home: "Accueil" # Not used any more, will be removed soon. home: "Accueil" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
done: "Feito" done: "Feito"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
home: "Inicio" # Not used any more, will be removed soon. home: "Inicio" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
completed_level: "שלב שהושלם:" completed_level: "שלב שהושלם:"
course: "מסלול:" course: "מסלול:"
done: "סיים" done: "סיים"
next_level: "השלב הבא:" next_level: "השלב הבא"
next_game: "המשחק הבא" next_game: "המשחק הבא"
show_menu: "הצג תפריט משחק" show_menu: "הצג תפריט משחק"
home: "בית" # Not used any more, will be removed soon. home: "בית" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
# done: "Done" # done: "Done"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
completed_level: "Teljesített pálya:" completed_level: "Teljesített pálya:"
course: "Kurzus:" course: "Kurzus:"
done: "Kész" done: "Kész"
next_level: "Következő pálya:" next_level: "Következő pálya"
next_game: "Következő játék" next_game: "Következő játék"
show_menu: "Játék Menü" show_menu: "Játék Menü"
home: "Kezdőlap" # Not used any more, will be removed soon. home: "Kezdőlap" # Not used any more, will be removed soon.

View file

@ -375,7 +375,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
# done: "Done" # done: "Done"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
completed_level: "Livello completato:" completed_level: "Livello completato:"
course: "Corso:" course: "Corso:"
done: "Fatto" done: "Fatto"
next_level: "Prossimo livello:" next_level: "Prossimo livello"
next_game: "Prossimo gioco" next_game: "Prossimo gioco"
show_menu: "Visualizza menu gioco" show_menu: "Visualizza menu gioco"
home: "Pagina iniziale" # Not used any more, will be removed soon. home: "Pagina iniziale" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
completed_level: "コンプリートレベル:" completed_level: "コンプリートレベル:"
course: "コース:" course: "コース:"
done: "完了" done: "完了"
next_level: "次のレベル:" next_level: "次のレベル"
next_game: "次のゲーム" next_game: "次のゲーム"
show_menu: "ゲームメニューを見る" show_menu: "ゲームメニューを見る"
home: "ホーム" # Not used any more, will be removed soon. home: "ホーム" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
completed_level: "완료된 레벨:" completed_level: "완료된 레벨:"
course: "코스:" course: "코스:"
done: "완료" done: "완료"
next_level: "다음 레벨:" next_level: "다음 레벨"
next_game: "다음 게임" next_game: "다음 게임"
show_menu: "게임 매뉴 보이기" show_menu: "게임 매뉴 보이기"
home: "" # Not used any more, will be removed soon. home: "" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
completed_level: "Įveiktas Lygis:" completed_level: "Įveiktas Lygis:"
course: "Kursas:" course: "Kursas:"
done: "Gerai" done: "Gerai"
next_level: "Kitas Lygis:" next_level: "Kitas Lygis"
next_game: "Kitas žaidimas" next_game: "Kitas žaidimas"
show_menu: "Parodyti žaidimo meniu" show_menu: "Parodyti žaidimo meniu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Македонски", englishDescription:
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
done: "Готово" done: "Готово"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
home: "Дома" # Not used any more, will be removed soon. home: "Дома" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
# done: "Done" # done: "Done"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "မြန်မာစကား", englishDes
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
# done: "Done" # done: "Done"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
done: "Ferdig" done: "Ferdig"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
home: "Hjem" # Not used any more, will be removed soon. home: "Hjem" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
completed_level: "Voltooid Level:" completed_level: "Voltooid Level:"
course: "Les:" course: "Les:"
done: "Klaar" done: "Klaar"
next_level: "Volgende Level:" next_level: "Volgende Level"
next_game: "Volgend spel" next_game: "Volgend spel"
show_menu: "Geef spelmenu weer" show_menu: "Geef spelmenu weer"
home: "Home" # Not used any more, will be removed soon. home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
completed_level: "Voltooid Level:" completed_level: "Voltooid Level:"
course: "Les:" course: "Les:"
done: "Klaar" done: "Klaar"
next_level: "Volgende Level:" next_level: "Volgende Level"
next_game: "Volgende spel" next_game: "Volgende spel"
show_menu: "Geef spelmenu weer" show_menu: "Geef spelmenu weer"
home: "Home" # Not used any more, will be removed soon. home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Norsk Nynorsk", englishDescription: "Norweg
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
# done: "Done" # done: "Done"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "polski", englishDescription: "Polish", tran
completed_level: "Ukończony poziom:" completed_level: "Ukończony poziom:"
course: "Kurs:" course: "Kurs:"
done: "Zrobione" done: "Zrobione"
next_level: "Następny poziom:" next_level: "Następny poziom"
next_game: "Następna gra" next_game: "Następna gra"
show_menu: "Pokaż menu gry" show_menu: "Pokaż menu gry"
home: "Strona główna" # Not used any more, will be removed soon. home: "Strona główna" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription:
completed_level: "Nivel Completo:" completed_level: "Nivel Completo:"
course: "Curso:" course: "Curso:"
done: "Pronto" done: "Pronto"
next_level: "Proximo Nivel:" next_level: "Proximo Nivel"
next_game: "Próximo jogo" next_game: "Próximo jogo"
show_menu: "Mostrar menu do jogo" show_menu: "Mostrar menu do jogo"
home: "Início" # Not used any more, will be removed soon. home: "Início" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
completed_level: "Nível Completo:" completed_level: "Nível Completo:"
course: "Curso:" course: "Curso:"
done: "Concluir" done: "Concluir"
next_level: "Próximo Nível:" next_level: "Próximo Nível"
next_game: "Próximo jogo" next_game: "Próximo jogo"
show_menu: "Mostrar o menu do jogo" show_menu: "Mostrar o menu do jogo"
home: "Início" # Not used any more, will be removed soon. home: "Início" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
done: "Gata" done: "Gata"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
home: "Acasă" # Not used any more, will be removed soon. home: "Acasă" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
completed_level: "Завершённый уровень:" completed_level: "Завершённый уровень:"
course: "Курс:" course: "Курс:"
done: "Готово" done: "Готово"
next_level: "Следующий уровень:" next_level: "Следующий уровень"
next_game: "Следующая игра" next_game: "Следующая игра"
show_menu: "Показать меню игры" show_menu: "Показать меню игры"
home: "На главную" # Not used any more, will be removed soon. home: "На главную" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
# done: "Done" # done: "Done"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
completed_level: "Завршен ниво:" completed_level: "Завршен ниво:"
course: "Курс:" course: "Курс:"
done: "Урађено" done: "Урађено"
next_level: "Следећи ниво:" next_level: "Следећи ниво"
next_game: "Следећа игра" next_game: "Следећа игра"
show_menu: "Види мени игре" show_menu: "Види мени игре"
home: "Почетна" # Not used any more, will be removed soon. home: "Почетна" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
completed_level: "Avklarad nivå:" completed_level: "Avklarad nivå:"
course: "Lektion:" course: "Lektion:"
done: "Klar" done: "Klar"
next_level: "Nästa nivå:" next_level: "Nästa nivå"
next_game: "Nästa spel" next_game: "Nästa spel"
show_menu: "Visa spelmeny" show_menu: "Visa spelmeny"
home: "Hem" # Not used any more, will be removed soon. home: "Hem" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
done: "เสร็จสิ้น" done: "เสร็จสิ้น"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
home: "หน้าแรก" # Not used any more, will be removed soon. home: "หน้าแรก" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Українська", englishDescription:
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
done: "Готово" done: "Готово"
# next_level: "Next Level:" # next_level: "Next Level"
next_game: "Наступна гра" next_game: "Наступна гра"
show_menu: "Показати меню гри" show_menu: "Показати меню гри"
home: "На головну" # Not used any more, will be removed soon. home: "На головну" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
# done: "Done" # done: "Done"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "O'zbekcha", englishDescription: "Uzbek", tr
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
# done: "Done" # done: "Done"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
completed_level: "Hoàn thành Level:" completed_level: "Hoàn thành Level:"
course: "Khoá học:" course: "Khoá học:"
done: "Hoàn thành" done: "Hoàn thành"
next_level: "Level tiếp theo:" next_level: "Level tiếp theo"
next_game: "Game kế tiếp" next_game: "Game kế tiếp"
show_menu: "Hiện game menu" show_menu: "Hiện game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
completed_level: "完成关卡:" completed_level: "完成关卡:"
course: "课程:" course: "课程:"
done: "完成" done: "完成"
next_level: "下一个关卡:" next_level: "下一个关卡"
next_game: "下一场游戏" next_game: "下一场游戏"
show_menu: "显示游戏菜单" show_menu: "显示游戏菜单"
home: "主页" # Not used any more, will be removed soon. home: "主页" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
# done: "Done" # done: "Done"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
# home: "Home" # Not used any more, will be removed soon. # home: "Home" # Not used any more, will be removed soon.

View file

@ -315,7 +315,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
# completed_level: "Completed Level:" # completed_level: "Completed Level:"
# course: "Course:" # course: "Course:"
done: "妝下落" done: "妝下落"
# next_level: "Next Level:" # next_level: "Next Level"
# next_game: "Next game" # next_game: "Next game"
# show_menu: "Show game menu" # show_menu: "Show game menu"
home: "主頁" # Not used any more, will be removed soon. home: "主頁" # Not used any more, will be removed soon.

View file

@ -23,7 +23,7 @@ module.exports = class SuperModel extends Backbone.Model
console.info "#{_.values(@resources).length} resources." console.info "#{_.values(@resources).length} resources."
unfinished = [] unfinished = []
for resource in _.values(@resources) when resource for resource in _.values(@resources) when resource
console.info "\t", resource.name, 'loaded', resource.isLoaded console.info "\t", resource.name, 'loaded', resource.isLoaded, resource.model
unfinished.push resource unless resource.isLoaded unfinished.push resource unless resource.isLoaded
unfinished unfinished
@ -158,7 +158,7 @@ module.exports = class SuperModel extends Backbone.Model
# Tracking resources being loaded for this supermodel # Tracking resources being loaded for this supermodel
finished: -> finished: ->
return (@progress is 1.0) or (not @denom) or @failed return (@progress is 1.0) or (not @denom) or @failed
addModelResource: (modelOrCollection, name, fetchOptions, value=1) -> addModelResource: (modelOrCollection, name, fetchOptions, value=1) ->
# Deprecating name. Handle if name is not included # Deprecating name. Handle if name is not included

View file

@ -5,4 +5,9 @@
margin-bottom: 5px margin-bottom: 5px
p p
margin-top: 30px margin-top: 30px
.course-title
white-space: nowrap
text-overflow: ellipsis
overflow: hidden

View file

@ -20,20 +20,20 @@ block content
.courses.container .courses.container
- var courses = view.courses.models; - var courses = view.courses.models;
- var i = 0; - var courseIndex = 0;
while i < courses.length while courseIndex < courses.length
- var course = courses[i]; - var course = courses[courseIndex];
- i++; - courseIndex++;
.course.row .course.row
.col-sm-9 .col-sm-9
+course-info(course) +course-info(course)
.col-sm-3.hidden .col-sm-3
.play-level-form .play-level-form(data-course-id=course.id)
.form-group .form-group
label.control-label label.control-label
span(data-i18n="courses.select_language") span(data-i18n="courses.select_language")
| : | :
select.form-control select.language-select.form-control
// TODO: Automate this list @scott // TODO: Automate this list @scott
option(value="python") option(value="python")
| Python | Python
@ -51,11 +51,17 @@ block content
label.control-label label.control-label
span(data-i18n="courses.select_level") span(data-i18n="courses.select_level")
| : | :
select.form-control select.level-select.form-control
// TODO: Automate this list @scott if view.campaigns.loaded
option(value='TODO') each level, levelIndex in view.campaigns.get(course.get('campaignID')).getLevels().models
| 1. Dungeons of Kithgard option(value=level.get('slug'))
a.btn.btn-lg.btn-primary span
= levelIndex + 1
span
| .
span
= level.get('name')
a.play-level-button.btn.btn-lg.btn-primary
span(data-i18n="courses.play_level") span(data-i18n="courses.play_level")
.clearfix .clearfix

View file

@ -7,7 +7,7 @@
.levels-link-area .levels-link-area
a.levels-link(href=homeLink || "/") a.levels-link(href=homeLink || "/")
.glyphicon.glyphicon-play .glyphicon.glyphicon-play
span(data-i18n=ladderGame ? "general.ladder" : "nav.play").home-text Levels span(data-i18n=me.isTeacher() ? "nav.courses" : (ladderGame ? "general.ladder" : "nav.play")).home-text Levels
if isMultiplayerLevel && !observing if isMultiplayerLevel && !observing
.multiplayer-area-container .multiplayer-area-container

View file

@ -2,7 +2,7 @@
#close-modal.well.well-sm.well-parchment(data-dismiss="modal") #close-modal.well.well-sm.well-parchment(data-dismiss="modal")
span.glyphicon.glyphicon-remove span.glyphicon.glyphicon-remove
.well.well-sm.well-parchment .well.well-sm.well-parchment
h1 Level Complete h1(data-i18n='play_level.level_complete')
.modal-body .modal-body
.container-fluid .container-fluid
@ -10,23 +10,32 @@
- var colClass = view.nextLevel ? 'col-sm-7' : 'col-sm-12' - var colClass = view.nextLevel ? 'col-sm-7' : 'col-sm-12'
div(class=colClass) div(class=colClass)
.well.well-sm.well-parchment .well.well-sm.well-parchment
h3.text-uppercase Completed Level: h3.text-uppercase(data-i18n='play_level.completed_level')
h2.text-uppercase.text-center= i18n(view.level.attributes, 'name') h2.text-uppercase.text-center= i18n(view.level.attributes, 'name')
.well.well-sm.well-parchment .well.well-sm.well-parchment
h3.text-uppercase Course: if me.isTeacher()
.row h3.course-title
.col-sm-8 span.text-uppercase.spr(data-i18n='play_level.course')
h3.text-uppercase.text-center= i18n(view.course.attributes, 'name') span.text-uppercase.text-center= i18n(view.course.attributes, 'name')
.col-sm-4 span(data-i18n='play_level.victory_no_progress_for_teachers')
- var stats = view.campaign.statsForSessions(view.levelSessions)
h1 else
span #{stats.levels.numDone}/#{stats.levels.size} h3.text-uppercase(data-i18n='play_level.course')
.row
.col-sm-8
h3.text-uppercase.text-center= i18n(view.course.attributes, 'name')
.col-sm-4
- var stats = view.campaign.statsForSessions(view.levelSessions)
h1
span #{stats.levels.numDone}/#{stats.levels.size}
if view.nextLevel if view.nextLevel
.col-sm-5 .col-sm-5
.well.well-sm.well-parchment .well.well-sm.well-parchment
h3.text-uppercase Next Level: h3.text-uppercase
span(data-i18n='play_level.next_level')
span :
h2.text-uppercase= i18n(view.nextLevel.attributes, 'name') h2.text-uppercase= i18n(view.nextLevel.attributes, 'name')
p= i18n(view.nextLevel.attributes, 'description') p= i18n(view.nextLevel.attributes, 'description')
@ -37,6 +46,6 @@
// button#continue-btn.btn.btn-illustrated.btn-default.btn-block.btn-lg.text-uppercase View Leaderboards // button#continue-btn.btn.btn-illustrated.btn-default.btn-block.btn-lg.text-uppercase View Leaderboards
.col-sm-5 .col-sm-5
if view.nextLevel if view.nextLevel
button#next-level-btn.btn.btn-illustrated.btn-primary.btn-block.btn-lg.text-uppercase Next Level button#next-level-btn.btn.btn-illustrated.btn-primary.btn-block.btn-lg.text-uppercase(data-i18n='play_level.next_level')
else else
button#done-btn.btn.btn-illustrated.btn-primary.btn-block.btn-lg.text-uppercase Done button#done-btn.btn.btn-illustrated.btn-primary.btn-block.btn-lg.text-uppercase(data-i18n='play_level.done')

View file

@ -48,5 +48,5 @@ module.exports = class ContactModal extends ModalView
updateScreenshot: -> updateScreenshot: ->
return unless @screenshotURL return unless @screenshotURL
screenshotEl = @$el.find('#contact-screenshot').removeClass('secret') screenshotEl = @$el.find('#contact-screenshot').removeClass('secret')
screenshotEl.find('a').prop('href', @screenshotURL) screenshotEl.find('a').prop('href', @screenshotURL.replace("http://codecombat.com/", "/"))
screenshotEl.find('img').prop('src', @screenshotURL) screenshotEl.find('img').prop('src', @screenshotURL.replace("http://codecombat.com/", "/"))

View file

@ -3,6 +3,7 @@ app = require 'core/application'
CocoCollection = require 'collections/CocoCollection' CocoCollection = require 'collections/CocoCollection'
CocoModel = require 'models/CocoModel' CocoModel = require 'models/CocoModel'
Course = require 'models/Course' Course = require 'models/Course'
Campaigns = require 'collections/Campaigns'
Classroom = require 'models/Classroom' Classroom = require 'models/Classroom'
Classrooms = require 'collections/Classrooms' Classrooms = require 'collections/Classrooms'
InviteToClassroomModal = require 'views/courses/InviteToClassroomModal' InviteToClassroomModal = require 'views/courses/InviteToClassroomModal'
@ -22,6 +23,7 @@ module.exports = class TeacherCoursesView extends RootView
'click .btn-add-students': 'onClickAddStudents' 'click .btn-add-students': 'onClickAddStudents'
'click .create-new-class': 'onClickCreateNewClassButton' 'click .create-new-class': 'onClickCreateNewClassButton'
'click .edit-classroom-small': 'onClickEditClassroomSmall' 'click .edit-classroom-small': 'onClickEditClassroomSmall'
'click .play-level-button': 'onClickPlayLevel'
guideLinks: guideLinks:
{ {
@ -43,6 +45,9 @@ module.exports = class TeacherCoursesView extends RootView
@classrooms.comparator = '_id' @classrooms.comparator = '_id'
@listenToOnce @classrooms, 'sync', @onceClassroomsSync @listenToOnce @classrooms, 'sync', @onceClassroomsSync
@supermodel.loadCollection(@classrooms, 'classrooms', {data: {ownerID: me.id}}) @supermodel.loadCollection(@classrooms, 'classrooms', {data: {ownerID: me.id}})
@campaigns = new Campaigns()
@campaigns.fetch()
@supermodel.trackCollection(@campaigns)
@courseInstances = new CocoCollection([], { url: "/db/course_instance", model: CourseInstance }) @courseInstances = new CocoCollection([], { url: "/db/course_instance", model: CourseInstance })
@courseInstances.comparator = 'courseID' @courseInstances.comparator = 'courseID'
@courseInstances.sliceWithMembers = -> return @filter (courseInstance) -> _.size(courseInstance.get('members')) and courseInstance.get('classroomID') @courseInstances.sliceWithMembers = -> return @filter (courseInstance) -> _.size(courseInstance.get('members')) and courseInstance.get('classroomID')
@ -99,6 +104,14 @@ module.exports = class TeacherCoursesView extends RootView
modal = new ClassroomSettingsModal({classroom: classroom}) modal = new ClassroomSettingsModal({classroom: classroom})
@openModalView(modal) @openModalView(modal)
@listenToOnce modal, 'hide', @render @listenToOnce modal, 'hide', @render
onClickPlayLevel: (e) ->
form = $(e.currentTarget).closest('.play-level-form')
levelSlug = form.find('.level-select').val()
courseID = form.data('course-id')
language = form.find('.language-select').val()
url = "/play/level/#{levelSlug}?course=#{courseID}&codeLanguage=#{language}"
application.router.navigate(url, { trigger: true })
onLoaded: -> onLoaded: ->
super() super()

View file

@ -75,7 +75,10 @@ module.exports = class ControlBarView extends CocoView
c.spectateGame = @spectateGame c.spectateGame = @spectateGame
c.observing = @observing c.observing = @observing
@homeViewArgs = [{supermodel: if @hasReceivedMemoryWarning then null else @supermodel}] @homeViewArgs = [{supermodel: if @hasReceivedMemoryWarning then null else @supermodel}]
if @level.get('type', true) in ['ladder', 'ladder-tutorial', 'hero-ladder', 'course-ladder'] if me.isTeacher()
@homeLink = "/teachers/courses"
@homeViewClass = "views/courses/TeacherCoursesView"
else if @level.get('type', true) in ['ladder', 'ladder-tutorial', 'hero-ladder', 'course-ladder']
levelID = @level.get('slug')?.replace(/\-tutorial$/, '') or @level.id levelID = @level.get('slug')?.replace(/\-tutorial$/, '') or @level.id
@homeLink = '/play/ladder/' + levelID @homeLink = '/play/ladder/' + levelID
@homeViewClass = 'views/ladder/LadderView' @homeViewClass = 'views/ladder/LadderView'

View file

@ -136,7 +136,10 @@ module.exports = class PlayLevelView extends RootView
load: -> load: ->
@loadStartTime = new Date() @loadStartTime = new Date()
@god = new God() @god = new God()
@levelLoader = new LevelLoader supermodel: @supermodel, levelID: @levelID, sessionID: @sessionID, opponentSessionID: @opponentSessionID, team: @getQueryVariable('team'), observing: @observing, courseID: @courseID levelLoaderOptions = supermodel: @supermodel, levelID: @levelID, sessionID: @sessionID, opponentSessionID: @opponentSessionID, team: @getQueryVariable('team'), observing: @observing, courseID: @courseID
if me.isTeacher()
levelLoaderOptions.fakeSessionConfig = {}
@levelLoader = new LevelLoader levelLoaderOptions
@listenToOnce @levelLoader, 'world-necessities-loaded', @onWorldNecessitiesLoaded @listenToOnce @levelLoader, 'world-necessities-loaded', @onWorldNecessitiesLoaded
trackLevelLoadEnd: -> trackLevelLoadEnd: ->
@ -549,7 +552,7 @@ module.exports = class PlayLevelView extends RootView
@endHighlight() @endHighlight()
options = {level: @level, supermodel: @supermodel, session: @session, hasReceivedMemoryWarning: @hasReceivedMemoryWarning, courseID: @courseID, courseInstanceID: @courseInstanceID, world: @world} options = {level: @level, supermodel: @supermodel, session: @session, hasReceivedMemoryWarning: @hasReceivedMemoryWarning, courseID: @courseID, courseInstanceID: @courseInstanceID, world: @world}
ModalClass = if @level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop', 'course', 'course-ladder'] then HeroVictoryModal else VictoryModal ModalClass = if @level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop', 'course', 'course-ladder'] then HeroVictoryModal else VictoryModal
ModalClass = CourseVictoryModal if @isCourseMode() ModalClass = CourseVictoryModal if @isCourseMode() or me.isTeacher()
ModalClass = PicoCTFVictoryModal if window.serverConfig.picoCTF ModalClass = PicoCTFVictoryModal if window.serverConfig.picoCTF
victoryModal = new ModalClass(options) victoryModal = new ModalClass(options)
@openModalView(victoryModal) @openModalView(victoryModal)

View file

@ -100,20 +100,23 @@ module.exports = class CourseVictoryModal extends ModalView
triggeredBy: @session.id triggeredBy: @session.id
achievement: achievement.id achievement: achievement.id
}) })
ea.save() if me.isTeacher()
# Can't just add models to supermodel because each ea has the same url @newEarnedAchievements.push ea
ea.sr = @supermodel.addSomethingResource(ea.cid) else
@newEarnedAchievements.push ea ea.save()
@listenToOnce ea, 'sync', (model) -> # Can't just add models to supermodel because each ea has the same url
model.sr.markLoaded() ea.sr = @supermodel.addSomethingResource(ea.cid)
if _.all((ea.id for ea in @newEarnedAchievements)) @newEarnedAchievements.push ea
unless me.loading @listenToOnce ea, 'sync', (model) ->
@supermodel.loadModel(me, {cache: false}) model.sr.markLoaded()
@newEarnedAchievementsResource.markLoaded() if _.all((ea.id for ea in @newEarnedAchievements))
unless me.loading
@supermodel.loadModel(me, {cache: false})
@newEarnedAchievementsResource.markLoaded()
unless me.isTeacher()
# have to use a something resource because addModelResource doesn't handle models being upserted/fetched via POST like we're doing here # have to use a something resource because addModelResource doesn't handle models being upserted/fetched via POST like we're doing here
@newEarnedAchievementsResource = @supermodel.addSomethingResource('earned achievements') if @newEarnedAchievements.length @newEarnedAchievementsResource = @supermodel.addSomethingResource('earned achievements') if @newEarnedAchievements.length
onLoaded: -> onLoaded: ->
@ -160,9 +163,15 @@ module.exports = class CourseVictoryModal extends ModalView
@showView(@views[index+1]) @showView(@views[index+1])
onNextLevel: -> onNextLevel: ->
link = "/play/level/#{@nextLevel.get('slug')}?course=#{@courseID}&course-instance=#{@courseInstanceID}" if me.isTeacher()
link = "/play/level/#{@nextLevel.get('slug')}?course=#{@courseID}&codeLanguage=#{me.get('aceConfig').language}"
else
link = "/play/level/#{@nextLevel.get('slug')}?course=#{@courseID}&course-instance=#{@courseInstanceID}"
application.router.navigate(link, {trigger: true}) application.router.navigate(link, {trigger: true})
onDone: -> onDone: ->
link = "/courses/#{@courseID}/#{@courseInstanceID}" if me.isTeacher()
link = "/teachers/courses"
else
link = "/courses/#{@courseID}/#{@courseInstanceID}"
application.router.navigate(link, {trigger: true}) application.router.navigate(link, {trigger: true})