Merge branch 'master' into production

This commit is contained in:
Nick Winter 2015-08-29 08:02:31 -07:00
commit bf0422a9d6
25 changed files with 353 additions and 155 deletions

View file

@ -58,7 +58,7 @@ module.exports = class CocoRouter extends Backbone.Router
'contribute/diplomat': go('contribute/DiplomatView')
'contribute/scribe': go('contribute/ScribeView')
'courses': go('courses/mock1/CoursesView')
'courses': go('courses/CoursesView')
'courses/mock1': go('courses/mock1/CoursesView')
'courses/mock1/enroll/:courseID': go('courses/mock1/CourseEnrollView')
'courses/mock1/:courseID': go('courses/mock1/CourseDetailsView')

View file

@ -62,6 +62,11 @@ module.exports = class LevelSetupManager extends CocoClass
@session.set 'heroConfig', {"thangType":sorcerer,"inventory":{"misc-0":"53e2396a53457600003e3f0f","programming-book":"546e266e9df4a17d0d449be5","minion":"54eb5dbc49fa2d5c905ddf56","feet":"53e214f153457600003e3eab","right-hand":"54eab7f52b7506e891ca7202","left-hand":"5463758f3839c6e02811d30f","wrists":"54693797a2b1f53ce79443e9","gloves":"5469425ca2b1f53ce7944421","torso":"546d4a549df4a17d0d449a97","neck":"54693274a2b1f53ce79443c9","eyes":"546941fda2b1f53ce794441d","head":"546d4ca19df4a17d0d449abf"}}
@onInventoryModalPlayClicked()
return
if level.get('slug') is 'ace-of-coders'
goliath = '55e1a6e876cb0948c96af9f8'
@session.set 'heroConfig', {"thangType":goliath,"inventory":{"eyes":"53eb99f41a100989a40ce46e","neck":"54693274a2b1f53ce79443c9","wrists":"54693797a2b1f53ce79443e9","right-hand":"54eaa9622b7506e891ca71b1","feet":"546d4d8e9df4a17d0d449acd","minion":"54eb5dbc49fa2d5c905ddf56","programming-book":"557871261ff17fef5abee3ee","misc-0":"53e2396a53457600003e3f0f"}}
@onInventoryModalPlayClicked()
return
if @level.get('type', true) in ['course', 'course-ladder']
@onInventoryModalPlayClicked()
return

View file

@ -247,14 +247,14 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
victory_saving_progress: "セーブ中"
victory_go_home: "ホームに戻る"
victory_review: "フィードバック"
# victory_review_placeholder: "How was the level?"
victory_review_placeholder: "どのレベルでしたか?"
victory_hour_of_code_done: "完了してよろしいですか?"
victory_hour_of_code_done_yes: "はい、構いません"
victory_experience_gained: "XP獲得"
victory_gems_gained: "ジェム獲得"
victory_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_become_a_viking: "Become a Viking"
victory_viking_code_school: "あなたはハードレベルのホーリー・スモークを打ち破りました! もしあなたが既にソフトウェア開発者でないなら, ぜひやってみましょう. あなたはちょうどViking Code Scoolで受け入れられるための出世街道にいます,そこでは次のレベルへのスキルを取得でき、14週間でプロのWeb開発者になれます。"
victory_become_a_viking: "バイキングになる"
guide_title: "ガイド"
tome_minion_spells: "操作できるキャラクターの呪文" # Only in old-style levels.
tome_read_only_spells: "読込専用の呪文" # Only in old-style levels.
@ -405,12 +405,12 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
feature4: "<strong>3500のジェム</strong>が毎月ボーナス!"
feature5: "ビデオチュートリアル"
feature6: "プレミアムメールサポート"
# feature7: "Private <strong>Clans</strong>"
feature7: "プライベート<strong>クラン</strong>"
free: "無料"
month: ""
subscribe_title: "課金"
unsubscribe: "無課金"
# confirm_unsubscribe: "Confirm Unsubscribe"
confirm_unsubscribe: "課金の解約確認"
never_mind: "気にしないでください, それでもあなたが好きです"
thank_you_months_prefix: "私達を "
thank_you_months_suffix: "ヶ月サポートしてくださりありがとうございます。"
@ -492,14 +492,14 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
blocks: "ブロックパワー" # As in "this shield blocks this much damage"
backstab: "バックスタブ" # As in "this dagger does this much backstab damage"
skills: "スキル"
# attack_1: "Deals"
# attack_2: "of listed"
# attack_3: "weapon damage."
# health_1: "Gains"
# health_2: "of listed"
# health_3: "armor health."
# speed_1: "Moves at"
# speed_2: "meters per second."
attack_1: "取引"
attack_2: "リスト"
attack_3: "武器攻撃力"
health_1: "収益"
health_2: "リスト"
health_3: "防具防御力"
speed_1: "移動速度"
speed_2: "メートル/秒"
available_for_purchase: "購入可能" # Shows up when you have unlocked, but not purchased, a hero in the hero store
level_to_unlock: "アンロックレベル:" # Label for which level you have to beat to unlock a particular hero (click a locked hero in the store to see)
restricted_to_certain_heroes: "特定のヒーローのみ、このレベルをプレイする事が出来ます。"
@ -601,7 +601,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
sub_includes_4: "メールによるサポート"
sub_includes_5: "10人の新しいヒーローとマスターのユニークなスキル"
sub_includes_6: "3500のジェムが月々支給されます"
# sub_includes_7: "Private Clans"
sub_includes_7: "プライベートクラン"
# monitor_progress_title: "How do I monitor student progress?"
# monitor_progress_1: "Student progress can be monitored by creating a"
# monitor_progress_2: "for your class."
@ -743,8 +743,8 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
shift: "シフト"
run_code: "現在のコードを実行"
run_real_time: "リアルタイムで実行"
# continue_script: "Continue past current script."
# skip_scripts: "Skip past all skippable scripts."
continue_script: "以前のスクリプトを続ける。"
skip_scripts: "過去のスキップできるスクリプトをスキップする。"
toggle_playback: "トグル:プレイ/ポーズ"
# scrub_playback: "Scrub back and forward through time."
# single_scrub_playback: "Scrub back and forward through time by a single frame."
@ -774,49 +774,49 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
social_hipchat: "公開されている CodeCombat の HipChat ルームで私たちとチャットする"
contribute_to_the_project: "プロジェクトに貢献する"
# clans:
# clan: "Clan"
# clans: "Clans"
# new_name: "New clan name"
# new_description: "New clan description"
# 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"
# name: "Name"
# chieftain: "Chieftain"
# type: "Type"
# edit_clan_name: "Edit Clan Name"
# edit_clan_description: "Edit Clan Description"
# edit_name: "edit name"
# edit_description: "edit description"
# private: "(private)"
# summary: "Summary"
# average_level: "Average Level"
# average_achievements: "Average Achievements"
# delete_clan: "Delete Clan"
# leave_clan: "Leave Clan"
# join_clan: "Join Clan"
# invite_1: "Invite:"
# invite_2: "*Invite players to this Clan by sending them this link."
# members: "Members"
# progress: "Progress"
# not_started_1: "not started"
# started_1: "started"
# complete_1: "complete"
# exp_levels: "Expand levels"
# rem_hero: "Remove Hero"
# status: "Status"
# complete_2: "Complete"
# started_2: "Started"
# not_started_2: "Not Started"
# view_solution: "Click to view solution."
# latest_achievement: "Latest Achievement"
# playtime: "Playtime"
# last_played: "Last played"
clans:
clan: "クラン"
clans: "クラン"
new_name: "新規クラン名"
new_description: "新規クラン紹介文"
make_private: "クランをプライベートにする"
subs_only: "課金者限定"
create_clan: "新規クラン作成"
private_preview: "プレビュー"
public_clans: "公開クラン"
my_clans: "マイ・クラン"
clan_name: "クラン名"
name: "名前"
chieftain: "リーダー"
type: "タイプ"
edit_clan_name: "クラン名の編集"
edit_clan_description: "クランの紹介文の編集"
edit_name: "名前の編集"
edit_description: "紹介文の編集"
private: "(プライベート)"
summary: "概要"
average_level: "平均レベル"
average_achievements: "平均業績"
delete_clan: "クランの削除"
leave_clan: "クランの脱退"
join_clan: "クランの参加"
invite_1: "招待:"
invite_2: "*このリンクを送信してクランに招待してください。"
members: "メンバー"
progress: "進捗"
not_started_1: "未着手"
started_1: "進行中"
complete_1: "完了"
exp_levels: "レベルの拡大"
rem_hero: "ヒーローの削除"
status: "状態"
complete_2: "完了"
started_2: "進行中"
not_started_2: "未着手"
view_solution: "クリックしてソリューションを見る。"
latest_achievement: "最新業績"
playtime: "プレイ時間"
last_played: "最終プレイ"
classes:
archmage_title: "アークメイジ"
@ -1058,7 +1058,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
winners: "勝者"
user:
# stats: "Stats"
stats: "ステータス"
singleplayer_title: "シングルプレイヤーレベル"
multiplayer_title: "マルチプレイヤーレベル"
achievements_title: "アーカイブ"
@ -1070,8 +1070,8 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
no_multiplayer: "まだマルチプレイヤーのゲームをプレイしていません。"
no_achievements: "まだアーカイブはありません。"
favorite_prefix: "お気に入りの言語は "
# favorite_postfix: "."
# not_member_of_clans: "Not a member of any clans yet."
favorite_postfix: ""
not_member_of_clans: "まだどのクランにも所属していません。"
# achievements:
# last_earned: "Last Earned"
@ -1233,7 +1233,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
multiplayer_coming_soon: "今後より多くのマルチプレイ機能が追加されます。"
# multiplayer_sign_in_leaderboard: "Sign in or create an account and get your solution on the leaderboard."
# legal:
legal:
# page_title: "Legal"
# opensource_intro: "CodeCombat is completely open source."
# opensource_description_prefix: "Check out "
@ -1247,7 +1247,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
# privacy_description: "We will not sell any of your personal information."
# security_title: "Security"
# security_description: "We strive to keep your personal information safe. As an open source project, our site is freely open to anyone to review and improve our security systems."
# email_title: "Email"
email_title: "メール"
# email_description_prefix: "We will not inundate you with spam. Through"
# email_settings_url: "your email settings"
# email_description_suffix: "or through links in the emails we send, you can change your preferences and easily unsubscribe at any time."
@ -1266,8 +1266,8 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
# art_description_prefix: "All common content is available under the"
# cc_license_url: "Creative Commons Attribution 4.0 International License"
# art_description_suffix: "Common content is anything made generally available by CodeCombat for the purpose of creating Levels. This includes:"
# art_music: "Music"
# art_sound: "Sound"
art_music: "音楽"
art_sound: ""
# art_artwork: "Artwork"
# art_sprites: "Sprites"
# art_other: "Any and all other non-code creative works that are made available when creating Levels."
@ -1432,7 +1432,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
# filter_experience_senior: "Senior"
# filter_experience_junior: "Junior"
# filter_experience_recent_grad: "Recent Grad"
# filter_experience_student: "College Student"
filter_experience_student: "大学生"
# filter_results: "results"
# start_hiring: "Start hiring."
# reasons: "Three reasons you should hire through us:"

View file

@ -97,10 +97,10 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
log_out: "Uitloggen"
forgot_password: "Paswoord vergeten?"
# authenticate_gplus: "Authenticate G+"
# load_profile: "Load G+ Profile"
# finishing: "Finishing"
# sign_in_with_facebook: "Sign in with Facebook"
# sign_in_with_gplus: "Sign in with G+"
load_profile: "G+ Profiel laden"
finishing: "Voltooien"
sign_in_with_facebook: "Inloggen met Facebook"
sign_in_with_gplus: "Inloggen met G+"
signup_switch: "Account aanmaken?"
signup:
@ -122,12 +122,12 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
secondary: "Tweede"
armor: "Pantser"
accessories: "Bijhorigheden"
# misc: "Misc"
# misc: "Diversen" #of "Varia" ?
books: "Boeken"
common:
# back: "Back" # When used as an action verb, like "Navigate backward"
# continue: "Continue" # When used as an action verb, like "Continue forward"
back: "Terug" # When used as an action verb, like "Navigate backward"
continue: "Verder" # When used as an action verb, like "Continue forward"
loading: "Bezig met laden..."
saving: "Opslaan..."
sending: "Verzenden..."
@ -140,24 +140,24 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
fork: "Fork"
play: "Spelen" # When used as an action verb, like "Play next level"
retry: "Probeer opnieuw"
# actions: "Actions"
# info: "Info"
# help: "Help"
actions: "Acties"
info: "Info"
help: "Help"
watch: "Kijk"
unwatch: "Niet kijken"
# submit_patch: "Submit Patch"
# submit_changes: "Submit Changes"
# save_changes: "Save Changes"
submit_changes: "Wijzigingen indienen"
save_changes: "Wijzigingen opslaan"
general:
and: "en"
name: "Naam"
# date: "Date"
date: "Datum"
body: "Inhoud"
version: "Versie"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
accepted: "Geaccepteerd"
rejected: "Geweigerd"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
@ -170,7 +170,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
# undo_shortcut: "(Ctrl+Z)"
# redo_prefix: "Redo"
# redo_shortcut: "(Ctrl+Shift+Z)"
# play_preview: "Play preview of current level"
play_preview: "Voorbeeld van het huidige level spelen"
result: "Resultaat"
results: "Resultaten"
description: "Beschrijving"
@ -192,10 +192,10 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
medium: "Medium"
hard: "Moeilijk"
player: "Speler"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
ranger: "Boogschutter"
wizard: "Tovenaar"
units:
second: "seconde"
@ -216,7 +216,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
play_level:
done: "Klaar"
home: "Home" # Not used any more, will be removed soon.
# level: "Level" # Like "Level: Dungeons of Kithgard"
level: "Level" # Like "Level: Dungeons of Kithgard"
skip: "Sla over"
# game_menu: "Game Menu"
guide: "Handleiding"
@ -357,13 +357,13 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
multiplayer_caption: "Speel met vrienden!"
auth_caption: "Bewaar je vooruitgang."
# leaderboard:
leaderboard:
# leaderboard: "Leaderboard"
# view_other_solutions: "View Leaderboards"
# scores: "Scores"
# top_players: "Top Players by"
# day: "Today"
# week: "This Week"
day: "Vandaag"
week: "Deze week"
# all: "All-Time"
# time: "Time"
# damage_taken: "Damage Taken"
@ -466,21 +466,21 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
# subscribe_prepaid: "Click Subscribe to use prepaid code"
# using_prepaid: "Using prepaid code for monthly subscription"
# choose_hero:
choose_hero:
# choose_hero: "Choose Your Hero"
# programming_language: "Programming Language"
# programming_language_description: "Which programming language do you want to use?"
# default: "Default"
# experimental: "Experimental"
# python_blurb: "Simple yet powerful, great for beginners and experts."
# javascript_blurb: "The language of the web. (Not the same as Java.)"
programming_language: "Programmeertaal"
programming_language_description: "Welke programmeertaal wil je gebruiken?"
default: "Standaard"
experimental: "Experimenteel"
python_blurb: "Simpel en toch krachtig, ideaal voor beginners en experts."
javascript_blurb: "De taal van het web. (Niet hetzelfde als Java.)"
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# status: "Status"
# hero_type: "Type"
# weapons: "Weapons"
status: "Status"
hero_type: "Type"
weapons: "Wapens"
# weapons_warrior: "Swords - Short Range, No Magic"
# weapons_ranger: "Crossbows, Guns - Long Range, No Magic"
# weapons_wizard: "Wands, Staffs - Long Range, Magic"
@ -582,8 +582,8 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
# retrostyle_title: "Illustration"
# retrostyle_blurb: "RetroStyle Games"
# teachers:
# title: "CodeCombat: Info for Teachers"
teachers:
title: "CodeCombat: Info voor Leerkrachten"
# intro_1: "CodeCombat is an online game that teaches programming. Students write code in real programming languages."
# intro_2: "No experience required!"
# free_title: "How much does it cost?"
@ -678,7 +678,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
forum_page: "ons forum"
forum_suffix: "."
# faq_prefix: "There's also a"
# faq: "FAQ"
faq: "FAQ"
# subscribe_prefix: "If you need help figuring out a level, please"
# subscribe: "buy a CodeCombat subscription"
# subscribe_suffix: "and we'll be happy to help you with your code."
@ -695,11 +695,11 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
autosave: "Aanpassingen Automatisch Opgeslagen"
me_tab: "Ik"
picture_tab: "Afbeelding"
# delete_account_tab: "Delete Your Account"
# wrong_email: "Wrong Email"
# wrong_password: "Wrong Password"
# upload_picture: "Upload a picture"
# delete_this_account: "Delete this account permanently"
delete_account_tab: "Verwijder Je Account"
wrong_email: "Verkeerd e-mailadres"
wrong_password: "Verkeerd Wachtwoord"
upload_picture: "Upload een foto"
delete_this_account: "Verwijder dit account permanent"
# god_mode: "God Mode"
password_tab: "Wachtwoord"
emails_tab: "Emails"
@ -727,20 +727,20 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
error_saving: "Fout Tijdens Het Opslaan"
saved: "Aanpassingen Opgeslagen"
password_mismatch: "Het wachtwoord komt niet overeen."
# password_repeat: "Please repeat your password."
password_repeat: "Gelieve je wachtwoord te herhalen."
job_profile: "Job Profiel" # Rest of this section (the job profile stuff and wizard stuff) is deprecated
job_profile_approved: "Jouw job profiel werd goedgekeurd door CodeCombat. Werkgevers zullen het kunnen bekijken totdat je het inactief zet of als er geen verandering in komt voor vier weken."
job_profile_explanation: "Hey! Vul dit in en we zullen je contacteren om je een job als softwareontwikkelaar te helpen vinden."
# sample_profile: "See a sample profile"
# view_profile: "View Your Profile"
# keyboard_shortcuts:
# keyboard_shortcuts: "Keyboard Shortcuts"
# space: "Space"
# enter: "Enter"
# press_enter: "press enter"
# escape: "Escape"
# shift: "Shift"
keyboard_shortcuts:
keyboard_shortcuts: "Sneltoetsen"
space: "Spatie"
enter: "Enter"
press_enter: "Druk op enter"
escape: "Escape"
shift: "Shift"
# run_code: "Run current code."
# run_real_time: "Run in real time."
# continue_script: "Continue past current script."
@ -1188,33 +1188,33 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
# poll: "Poll"
# user_polls_record: "Poll Voting History"
# concepts:
# advanced_strings: "Advanced Strings"
# algorithms: "Algorithms"
# arguments: "Arguments"
# arithmetic: "Arithmetic"
# arrays: "Arrays"
# basic_syntax: "Basic Syntax"
# boolean_logic: "Boolean Logic"
concepts:
advanced_strings: "Geavanceerde Strings"
algorithms: "Algoritmes"
arguments: "Argumenten"
arithmetic: "Rekenkundig"
arrays: "Arrays"
basic_syntax: "Basissyntax"
boolean_logic: "Booleaanse Logica"
# break_statements: "Break Statements"
# classes: "Classes"
# for_loops: "For Loops"
# functions: "Functions"
classes: "Klasses"
for_loops: "For-lussen"
functions: "Functies"
# if_statements: "If Statements"
# input_handling: "Input Handling"
# math_operations: "Math Operations"
# object_literals: "Object Literals"
# strings: "Strings"
# variables: "Variables"
# vectors: "Vectors"
# while_loops: "Loops"
# recursion: "Recursion"
variables: "Variabelen"
vectors: "Vectoren"
while_loops: "Lussen"
recursion: "Recursie"
# delta:
# added: "Added"
# modified: "Modified"
# not_modified: "Not Modified"
# deleted: "Deleted"
delta:
added: "Toegevoegd"
modified: "Gewijzigd"
not_modified: "Niet Gewijzigd"
deleted: "Verwijderd"
# moved_index: "Moved Index"
# text_diff: "Text Diff"
# merge_conflict_with: "MERGE CONFLICT WITH"
@ -1288,7 +1288,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
nutshell_description: "Alle middelen die wij aanbieden in de Level Editor zijn gratis te gebruiken om levels aan te maken. Wij behouden ons echter het recht voor om levels die gemaakt zijn op codecombat.com te beperken, en hier in de toekomst geld voor te vragen, moest dat ooit gebeuren."
canonical: "De Engelse versie van dit document is de definitieve en kanonieke versie. Bij verschillen tussen vertalingen heeft de Engelse versie voorrang."
# ladder_prizes:
ladder_prizes:
# title: "Tournament Prizes" # This section was for an old tournament and doesn't need new translations now.
# blurb_1: "These prizes will be awarded according to"
# blurb_2: "the tournament rules"
@ -1296,16 +1296,16 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
# blurb_4: "Two teams means double the prizes!"
# blurb_5: "(There will be two first place winners, two second-place winners, etc.)"
# rank: "Rank"
# prizes: "Prizes"
# total_value: "Total Value"
# in_cash: "in cash"
prizes: "Prijzen"
total_value: "Totale Waarde"
in_cash: "in cash"
# custom_wizard: "Custom CodeCombat Wizard"
# custom_avatar: "Custom CodeCombat avatar"
# heap: "for six months of \"Startup\" access"
# credits: "credits"
credits: "credits"
# one_month_coupon: "coupon: choose either Rails or HTML"
# one_month_discount: "discount, 30% off: choose either Rails or HTML"
# license: "license"
license: "licentie"
# oreilly: "ebook of your choice"
account_profile:
@ -1324,7 +1324,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
# complete: "complete"
# next: "Next"
# next_city: "city?"
# next_country: "pick your country."
next_country: "Kies je land."
# next_name: "name?"
# next_short_description: "write a short description."
# next_long_description: "describe your desired position."
@ -1389,8 +1389,8 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
education: "Opleiding"
# education_header: "Recount your academic ordeals"
# education_blurb: "List your academic ordeals."
# education_school: "School"
# education_school_help: "Name of your school."
education_school: "School"
education_school_help: "Naam van je school."
# education_degree: "Degree"
# education_degree_help: "What was your degree and field of study?"
# education_duration: "Dates"

7
app/models/Course.coffee Normal file
View file

@ -0,0 +1,7 @@
CocoModel = require './CocoModel'
schema = require 'schemas/models/course.schema'
module.exports = class Course extends CocoModel
@className: 'Course'
@schema: schema
urlRoot: '/db/course'

View file

@ -0,0 +1,7 @@
CocoModel = require './CocoModel'
schema = require 'schemas/models/course_instance.schema'
module.exports = class CourseInstance extends CocoModel
@className: 'CourseInstance'
@schema: schema
urlRoot: '/db/course_instance'

View file

@ -14,7 +14,7 @@ module.exports = class ThangType extends CocoModel
knight: '529ffbf1cf1818f2be000001'
samurai: '53e12be0d042f23505c3023b'
raider: '55527eb0b8abf4ba1fe9a107'
goliath: ''
goliath: '55e1a6e876cb0948c96af9f8'
guardian: ''
ninja: '52fc0ed77e01835453bd8f6c'
'forest-archer': '5466d4f2417c8b48a9811e87'

View file

@ -0,0 +1,14 @@
c = require './../schemas'
CourseSchema = c.object {title: 'Course', required: ['name']}
c.extendNamedProperties CourseSchema # name first
_.extend CourseSchema.properties,
campaignID: c.objectId()
concepts: c.array {title: 'Programming Concepts', uniqueItems: true}, c.concept
description: {type: 'string'}
screenshot: c.url {title: 'URL', description: 'Link to course screenshot.'}
c.extendBasicProperties CourseSchema, 'Course'
module.exports = CourseSchema

View file

@ -0,0 +1,14 @@
c = require './../schemas'
CourseInstanceSchema = c.object {title: 'Course Instance'}
c.extendNamedProperties CourseInstanceSchema # name first
_.extend CourseInstanceSchema.properties,
description: {type: 'string'}
members: c.array {title: 'Members'}, c.objectId()
ownerID: c.objectId()
prepaidID: c.objectId()
c.extendBasicProperties CourseInstanceSchema, 'CourseInstance'
module.exports = CourseInstanceSchema

View file

@ -1,5 +1,8 @@
#course-details-view
.section-selector
margin-bottom: 0px
.concept-completion-container
font-size: 10pt

View file

@ -0,0 +1,26 @@
extends /templates/base
block content
//- DO NOT localize / i18n
div(style='border-bottom: 1px solid black')
span *UNDER CONSTRUCTION, please send feedback to
a.spl(href='mailto:team@codecombat.com') team@codecombat.com
h1(style='text-align: center;') Courses
.container-fluid
.row(style='font-size: 20px;')
.col-md-3
.col-md-3 Name
.col-md-3 Description
.col-md-3 Concepts
each course in courses
.row(style='border-top: 1px solid gray; padding: 10px;')
.col-md-3
img(src="#{course.get('screenshot')}", style="width: 100%;")
.col-md-3
p= course.get('name')
a(href="/editor/campaign/#{course.get('campaignID')}") Campaign (levels)
.col-md-3= course.get('description')
.col-md-3= course.get('concepts').join(' ')

View file

@ -4,7 +4,6 @@ block content
//- DO NOT localize / i18n
div TODO: fix ugly tabs
div
span *UNDER CONSTRUCTION, send feedback to
a.spl(href='mailto:team@codecombat.com') team@codecombat.com
@ -52,8 +51,8 @@ block content
p
button.btn.btn-xs.btn-edit-settings(data-toggle='modal', data-target='#editSettingsModal') edit class settings
div(role='tabpanel')
ul.nav.nav-tabs(role='tablist')
div.well.well-sm.section-selector(role='tabpanel')
ul.nav.nav-pills(role='tablist')
if studentMode
li.active(role='presentation')
a(href='#levels', aria-controls='levels', role='tab', data-toggle='tab') Levels
@ -250,6 +249,7 @@ mixin progress-tab
- i++
mixin levels-tab
br
table.table.table-striped.table-condensed
thead
tr

View file

@ -24,7 +24,7 @@ block content
input.input-quantity(type='text', value="#{quantity}")
h3 3. Name your class
p This will be displayed on the course page for you and your students, and it can be changed later.
p This will be displayed on the course page for you and your students. It can be changed later.
input.session-name(type='text', placeholder="Mrs. Smith's 4th Period")
h3 4. Buy

View file

@ -4,7 +4,6 @@ block content
//- DO NOT localize / i18n
div TODO: Add already enrolled view checkbox
div(style='border-bottom: 1px solid black')
span *UNDER CONSTRUCTION, send feedback to
a.spl(href='mailto:team@codecombat.com') team@codecombat.com
@ -50,9 +49,11 @@ block content
.col-md-12
button.btn.btn-success.btn-lg.btn-buy Buy this course
br
if !studentMode
br
button.btn.btn-warning.btn-student Students Click Here
else
button.btn.btn-warning.btn-teacher Teachers Click Here
h1.center Courses on CodeCombat

View file

@ -0,0 +1,18 @@
RootView = require 'views/core/RootView'
template = require 'templates/courses/courses'
CocoCollection = require 'collections/CocoCollection'
Course = require 'models/Course'
module.exports = class CoursesView extends RootView
id: 'courses-view'
template: template
constructor: (options) ->
super options
@courses = new CocoCollection([], { url: "/db/course", model: Course})
@supermodel.loadCollection(@courses, 'courses')
getRenderData: ->
context = super()
context.courses = @courses.models ? []
context

View file

@ -13,6 +13,7 @@ module.exports = class CoursesView extends RootView
'click .btn-enroll': 'onClickEnroll'
'click .btn-enter': 'onClickEnter'
'click .btn-student': 'onClickStudent'
'click .btn-teacher': 'onClickTeacher'
'hidden.bs.modal #continueModal': 'onHideContinueModal'
constructor: (options) ->
@ -107,5 +108,12 @@ module.exports = class CoursesView extends RootView
navigationEvent = route: route, viewClass: viewClass, viewArgs: viewArgs
Backbone.Mediator.publish 'router:navigate', navigationEvent
onClickTeacher: (e) ->
route = "/courses/mock1?student=false"
viewClass = require 'views/courses/mock1/CoursesView'
viewArgs = [studentMode: false]
navigationEvent = route: route, viewClass: viewClass, viewArgs: viewArgs
Backbone.Mediator.publish 'router:navigate', navigationEvent
onHideContinueModal: (e) ->
$('#continueModal .row-pick-class').hide()

View file

@ -278,6 +278,9 @@ module.exports = class PlayLevelView extends RootView
if e.session.get('creator') is '532dbc73a622924444b68ed9' # Wizard Dude gets his own avatar
sorcerer = '53e126a4e06b897606d38bef'
e.session.set 'heroConfig', {"thangType":sorcerer,"inventory":{"misc-0":"53e2396a53457600003e3f0f","programming-book":"546e266e9df4a17d0d449be5","minion":"54eb5dbc49fa2d5c905ddf56","feet":"53e214f153457600003e3eab","right-hand":"54eab7f52b7506e891ca7202","left-hand":"5463758f3839c6e02811d30f","wrists":"54693797a2b1f53ce79443e9","gloves":"5469425ca2b1f53ce7944421","torso":"546d4a549df4a17d0d449a97","neck":"54693274a2b1f53ce79443c9","eyes":"546941fda2b1f53ce794441d","head":"546d4ca19df4a17d0d449abf"}}
else if e.level.get('slug') is 'ace-of-coders'
goliath = '55e1a6e876cb0948c96af9f8'
e.session.set 'heroConfig', {"thangType":goliath,"inventory":{"eyes":"53eb99f41a100989a40ce46e","neck":"54693274a2b1f53ce79443c9","wrists":"54693797a2b1f53ce79443e9","right-hand":"54eaa9622b7506e891ca71b1","feet":"546d4d8e9df4a17d0d449acd","minion":"54eb5dbc49fa2d5c905ddf56","programming-book":"557871261ff17fef5abee3ee","misc-0":"53e2396a53457600003e3f0f"}}
else if e.level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop'] and not _.size e.session.get('heroConfig')?.inventory ? {}
@setupManager?.destroy()
@setupManager = new LevelSetupManager({supermodel: @supermodel, level: @level, levelID: @levelID, parent: @, session: @session})

View file

@ -42,7 +42,7 @@ module.exports = class GameMenuModal extends ModalView
'guide': 'list'
'save-load': 'floppy-disk'
'multiplayer': 'globe'
context.showsChooseHero = (@level?.get('type') not in ['course', 'course-ladder']) and (@options.levelID not in ['zero-sum'])
context.showsChooseHero = (@level?.get('type') not in ['course', 'course-ladder']) and (@options.levelID not in ['zero-sum', 'ace-of-coders'])
context
afterRender: ->

View file

@ -174,12 +174,13 @@ module.exports = class PlayHeroesModal extends ModalView
#- maybe put some more normalization here?
m = multiplier
m *= 0.75 if fullHero.get('slug') in ['knight', 'samurai', 'librarian', 'sorcerer', 'necromancer'] # These heroes are larger for some reason. Shrink 'em.
m *= 0.4 if fullHero.get('slug') is 'goliath' # Just too big!
layer.container.scaleX = layer.container.scaleY = m
layer.container.children[0].x = 160/m
layer.container.children[0].y = 250/m
if fullHero.get('slug') in ['forest-archer', 'librarian', 'sorcerer', 'potion-master', 'necromancer']
layer.container.children[0].y -= 3
if fullHero.get('slug') in ['librarian', 'sorcerer', 'potion-master', 'necromancer']
if fullHero.get('slug') in ['librarian', 'sorcerer', 'potion-master', 'necromancer', 'goliath']
layer.container.children[0].x -= 3
stage = new createjs.SpriteStage(canvas[0])

View file

@ -0,0 +1,27 @@
// Update course data
// Usage:
// mongo <address>:<port>/<database> <script file> -u <username> -p <password>
// NOTE: uses name as unique identifier, so changing the name will insert a new course
var documents =
[
{
name: "Introduction to Computer Science",
slug: "introduction-to-computer-science",
campaignID: ObjectId("55b29efd1cd6abe8ce07db0d"),
concepts: ['basic_syntax', 'arguments', 'while_loops', 'strings', 'variables'],
description: "Learn basic syntax, while loops, and the CodeCombat environment.",
screenshot: "/images/pages/courses/101_info.png"
}
];
for (var i = 0; i < documents.length; i++) {
var doc = documents[i];
db.courses.update({name: doc.name}, doc, {upsert: true});
}
function log(str) {
print(new Date().toISOString() + " " + str);
}

View file

@ -8,6 +8,8 @@ module.exports.handlers =
'article': 'articles/article_handler'
'campaign': 'campaigns/campaign_handler'
'clan': 'clans/clan_handler'
'course': 'courses/course_handler'
'course_instance': 'courses/course_instance_handler'
'level': 'levels/level_handler'
'level_component': 'levels/components/level_component_handler'
'level_feedback': 'levels/feedbacks/level_feedback_handler'

View file

@ -0,0 +1,16 @@
mongoose = require 'mongoose'
config = require '../../server_config'
plugins = require '../plugins/plugins'
jsonSchema = require '../../app/schemas/models/course.schema'
CourseSchema = new mongoose.Schema {}, {strict: false, minimize: false, read:config.mongo.readpref}
CourseSchema.plugin plugins.NamedPlugin
CourseSchema.plugin plugins.SearchablePlugin, {searchable: ['name', 'description']}
CourseSchema.statics.privateProperties = []
CourseSchema.statics.editableProperties = []
CourseSchema.statics.jsonSchema = jsonSchema
module.exports = Course = mongoose.model 'course', CourseSchema, 'courses'

View file

@ -0,0 +1,20 @@
mongoose = require 'mongoose'
config = require '../../server_config'
plugins = require '../plugins/plugins'
jsonSchema = require '../../app/schemas/models/course_instance.schema'
CourseInstanceSchema = new mongoose.Schema {}, {strict: false, minimize: false, read:config.mongo.readpref}
CourseInstanceSchema.plugin plugins.NamedPlugin
CourseInstanceSchema.plugin plugins.SearchablePlugin, {searchable: ['name', 'description']}
CourseInstanceSchema.statics.privateProperties = []
CourseInstanceSchema.statics.editableProperties = [
'description'
'members'
'name'
]
CourseInstanceSchema.statics.jsonSchema = jsonSchema
module.exports = CourseInstance = mongoose.model 'course.instance', CourseInstanceSchema, 'course.instances'

View file

@ -0,0 +1,13 @@
mongoose = require 'mongoose'
Handler = require '../commons/Handler'
Course = require './Course'
CourseHandler = class CourseHandler extends Handler
modelClass: Course
jsonSchema: require '../../app/schemas/models/course.schema'
allowedMethods: ['GET']
hasAccess: (req) ->
req.method in @allowedMethods or req.user?.isAdmin()
module.exports = new CourseHandler()

View file

@ -0,0 +1,13 @@
mongoose = require 'mongoose'
Handler = require '../commons/Handler'
CourseInstance = require './CourseInstance'
CourseInstanceHandler = class CourseInstanceHandler extends Handler
modelClass: CourseInstance
jsonSchema: require '../../app/schemas/models/course_instance.schema'
allowedMethods: ['GET', 'POST', 'PUT', 'DELETE']
hasAccess: (req) ->
req.method is 'GET' or req.user?.isAdmin()
module.exports = new CourseInstanceHandler()