Merge conflict handling.

This commit is contained in:
Scott Erickson 2014-07-18 17:09:41 -07:00
commit e7a70bbd0b
102 changed files with 648 additions and 315 deletions

Binary file not shown.

After

(image error) Size: 3 KiB

Binary file not shown.

After

(image error) Size: 3 KiB

Binary file not shown.

After

(image error) Size: 2.9 KiB

Binary file not shown.

After

(image error) Size: 3 KiB

Binary file not shown.

After

(image error) Size: 3 KiB

Binary file not shown.

After

(image error) Size: 2.9 KiB

Binary file not shown.

After

(image error) Size: 4 KiB

View file

Before

(image error) Size: 15 KiB

After

(image error) Size: 15 KiB

Before After
Before After

Binary file not shown.

After

(image error) Size: 3 KiB

Binary file not shown.

After

(image error) Size: 3.9 KiB

Binary file not shown.

After

(image error) Size: 2.8 KiB

Binary file not shown.

After

(image error) Size: 2.9 KiB

Binary file not shown.

After

(image error) Size: 2.9 KiB

Binary file not shown.

After

(image error) Size: 3 KiB

Binary file not shown.

After

(image error) Size: 2.9 KiB

Binary file not shown.

Before

(image error) Size: 9.4 KiB

After

(image error) Size: 9.1 KiB

Before After
Before After

Binary file not shown.

Before

(image error) Size: 7.5 KiB

After

(image error) Size: 8.1 KiB

Before After
Before After

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "български език", englishDescri
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Избери своето ниво"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
for_beginners: "Per a principiants"
multiplayer: "Multijugador"
for_developers: "Per a Desenvolupadors"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Escull el teu nivell"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Zvolte si úroveň"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
for_beginners: "For Begyndere"
multiplayer: "Multiplayer"
for_developers: "For Udviklere"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Vælg Dit Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
for_beginners: "Für Afänger"
multiplayer: "Multiplayer"
for_developers: "Für Entwickler"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Wähl dis Level us"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
for_beginners: "Für Anfänger"
multiplayer: "Mehrspieler"
for_developers: "Für Entwickler"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Wähle dein Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra
for_beginners: "Für Anfänger"
multiplayer: "Mehrspieler"
for_developers: "Für Entwickler"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Wähle dein Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre
for_beginners: "Για αρχάριους"
# multiplayer: "Multiplayer"
for_developers: "Για προγραμματιστές"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Διάλεξε την πίστα σου"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@
for_beginners: "For Beginners"
multiplayer: "Multiplayer"
for_developers: "For Developers"
javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
coffeescript_blurb: "Nicer JavaScript syntax."
clojure_blurb: "A modern Lisp."
lua_blurb: "Game scripting language."
io_blurb: "Simple but obscure."
play:
choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
for_beginners: "Para Principiantes"
multiplayer: "Multijugador"
for_developers: "Para Desarrolladores"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Elige tu nivel"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
for_beginners: "Para principiantes"
multiplayer: "Multijugador"
for_developers: "Para programadores"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Elige tu nivel"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t
for_beginners: "Para principiantes"
multiplayer: "Multijugador"
for_developers: "Para desarrolladores"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Elige tu nivel"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "مرحله خود را انتخاب کنید"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
for_beginners: "Pour débutants"
multiplayer: "Multijoueurs"
for_developers: "Pour développeurs"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Choisissez votre niveau"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
for_beginners: "למתחילים"
multiplayer: "רב-משתתפים"
for_developers: "למומחים"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "בחר את השלב"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
for_beginners: "Kezdőknek"
# multiplayer: "Multiplayer"
for_developers: "Fejlesztőknek"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Válaszd ki a pályát!"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
for_beginners: "Per Principianti"
# multiplayer: "Multiplayer"
for_developers: "Per Sviluppatori"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Scegli il tuo livello"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
for_beginners: "初心者向け"
multiplayer: "マルチプレイヤー"
for_developers: "開発者向け"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "レベル選択"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
for_beginners: "초보자용"
multiplayer: "멀티플레이어"
for_developers: "개발자용"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "레벨을 선택하세요."

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Velg Ditt Nivå"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
for_beginners: "Voor Beginners"
multiplayer: "Multiplayer"
for_developers: "Voor ontwikkelaars"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Kies Je Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
for_beginners: "Voor Beginners"
multiplayer: "Multiplayer"
for_developers: "Voor ontwikkelaars"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Kies Je Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
for_beginners: "Voor Beginners"
multiplayer: "Multiplayer"
for_developers: "Voor ontwikkelaars"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Kies Je Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Velg Ditt Nivå"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
for_beginners: "Dla początkujących"
# multiplayer: "Multiplayer"
for_developers: "Dla developerów"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Wybierz poziom"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
for_beginners: "Para Iniciantes"
multiplayer: "Multijogador"
for_developers: "Para Desenvolvedores"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Escolha seu estágio"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
for_beginners: "Para Iniciantes"
multiplayer: "Multijogador"
for_developers: "Para Programadores"
# javascript_blurb: "A linguagem da web. Ótima para escrever websites, aplicações da web, jogos HTML5 e servidores."
# python_blurb: "Simples mas poderoso, o Python é uma linguagem de programação ótima para propósitos gerais."
# coffeescript_blurb: "Sintaxe do Javascript mais agradável."
# clojure_blurb: "Um Lisp moderno"
# lua_blurb: "Linguagem para scripts de jogos"
# io_blurb: "Simples mas obscuro"
play:
choose_your_level: "Escolha o Seu Nível"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Escolha seu estágio"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
for_beginners: "Pentru Începători"
multiplayer: "Multiplayer"
for_developers: "Pentru dezvoltatori"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Alege nivelul"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
for_beginners: "Новичкам"
multiplayer: "Мультиплеер"
for_developers: "Разработчикам"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Выберите ваш уровень"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
for_beginners: "Pre začiatočníkov"
# multiplayer: "Multiplayer"
for_developers: "Pre vývojárov"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Vyber si úroveň"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Изабери ниво"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
for_beginners: "För nybörjare"
multiplayer: "Flera spelare"
for_developers: "För utvecklare"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Välj din nivå"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
for_beginners: "Yeni Başlayanlar için"
multiplayer: "Çoklu-oyuncu Modu"
for_developers: "Geliştiriciler için"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Seviye Seçimi"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "українська мова", englishDesc
for_beginners: "Для новачків"
multiplayer: "Командна гра"
for_developers: "Для розробників"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Оберіть свій рівень"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "Chọn Trình của bạn"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
for_beginners: "适合初学者"
multiplayer: "多人游戏"
for_developers: "适合开发者"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "选择关卡"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "選取關卡"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
# play:
# choose_your_level: "Choose Your Level"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
for_beginners: "適合學起頭個人"
multiplayer: "聚隊打遊戲"
for_developers: "適合開發個人"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "揀關數"

View file

@ -100,6 +100,12 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
# coffeescript_blurb: "Nicer JavaScript syntax."
# clojure_blurb: "A modern Lisp."
# lua_blurb: "Game scripting language."
# io_blurb: "Simple but obscure."
play:
choose_your_level: "选取难度"

View file

@ -230,13 +230,14 @@ _.extend LevelSchema.properties,
title: 'Next Level',
description: 'Reference to the next level players will play after beating this one.'
}
employerDescription: { type:'string' }
employerDescription: { type:'string', format: 'markdown', title: 'Employer Description' }
scripts: c.array {title: 'Scripts', description: 'An array of scripts that trigger based on what the player does and affect things outside of the core level simulation.', 'default': []}, ScriptSchema
thangs: c.array {title: 'Thangs', description: 'An array of Thangs that make up the level.', 'default': []}, LevelThangSchema
systems: c.array {title: 'Systems', description: 'Levels are configured by changing the Systems attached to them.', uniqueItems: true, default: []}, LevelSystemSchema # TODO: uniqueness should be based on 'original', not whole thing
victory: c.object {title: 'Victory Screen', default: {}, properties: {'body': {type: 'string', format: 'markdown', title: 'Body Text', description: 'Inserted into the Victory Modal once this level is complete. Tell the player they did a good job and what they accomplished!'}, i18n: {type: 'object', format: 'i18n', props: ['body'], description: 'Help translate this victory message'}}}
i18n: {type: 'object', format: 'i18n', props: ['name', 'description'], description: 'Help translate this level'}
icon: {type: 'string', format: 'image-file', title: 'Icon'}
banner: {type: 'string', format: 'image-file', title: 'Banner'}
goals: c.array {title: 'Goals', description: 'An array of goals which are visible to the player and can trigger scripts.'}, GoalSchema
type: c.shortString(title: 'Type', description: 'What kind of level this is.', 'enum': ['campaign', 'ladder', 'ladder-tutorial'])
showsGuide: c.shortString(title: 'Shows Guide', description: 'If the guide is shown at the beginning of the level.', 'enum': ['first-time', 'always'])

View file

@ -12,7 +12,23 @@ _.extend UserRemarkSchema.properties,
history: c.array {title: 'History', description: 'Records of our interactions with the user.'},
c.object {title: 'Record'}, {date: c.date(title: 'Date'), content: {title: 'Content', type: 'string', format: 'markdown'}}
tasks: c.array {title: 'Tasks', description: 'Task entries: when to email the contact about something.'},
c.object {title: 'Task'}, {date: c.date(title: 'Date'), action: {title: 'Action', type: 'string'}}
c.object {title: 'Task'},
date: c.date
title: 'Date'
action:
title: 'Action'
type: 'string'
status:
title: 'Status'
description: 'The current status of the task'
type: 'string'
enum: ['Not started', 'In progress', 'Completed']
notes:
title: 'Notes'
description: 'Notes about the task in progress'
type: 'string'
format: 'markdown'
# denormalization
userName: {title: 'Player Name', type: 'string'}

View file

@ -23,6 +23,9 @@ h1 h2 h3 h4
padding: 14px 12px 5px 12px
@include box-sizing(border-box)
#outer-content-wrapper
background: #B4B4B4
#outer-content-wrapper.show-background
background: #8cc63f url(/images/pages/base/repeat-tile.png) top center
@ -70,7 +73,7 @@ h1 h2 h3 h4
&:hover
color: $white
a[data-toggle="modal"]
a
cursor: pointer
.share-buttons, .partner-badges

View file

@ -1,18 +1,24 @@
.level-session-code-view
#level-icon
width: 100px
max-width: 60%
max-height: 150px
margin-right: 10px
display: inline-block
float: left
float: right
margin-bottom: 20px
#level-meta-data
margin-left: 120px
width: 35%
button
float: right
#session-code
clear: both
margin-top: 20px
h3
font-family: Arial
margin: 0
.code
height: 600px

View file

@ -167,6 +167,10 @@
h2
margin: 15px 0 5px
p
overflow: hidden
height: 40px
.secondary-code-languages
margin-left: -10px
@ -201,17 +205,22 @@
margin: 0
padding: 0
p
white-space: nowrap
text-overflow: ellipsis
overflow: hidden
#coffeescript .code-language-logo
background: transparent url(/images/pages/home/language_logo_coffeescript.png) no-repeat center
background: transparent url(/images/common/code_languages/coffeescript_small.png) no-repeat center
#clojure .code-language-logo
background: transparent url(/images/pages/home/language_logo_clojure.png) no-repeat center
background: transparent url(/images/common/code_languages/clojure_small.png) no-repeat center
#lua .code-language-logo
background: transparent url(/images/pages/home/language_logo_lua.png) no-repeat center
background: transparent url(/images/common/code_languages/lua_small.png) no-repeat center
#io .code-language-logo
background: transparent url(/images/pages/home/language_logo_io.png) no-repeat center
background: transparent url(/images/common/code_languages/io_small.png) no-repeat center
#multiplayer-launch-modal

View file

@ -53,6 +53,5 @@
.code-language-cell
padding: 0 10px
background: transparent url(/images/pages/home/language_logo_javascript.png) no-repeat center center
background-size: contain
height: 19px
background: transparent url(/images/common/code_languages/javascript_icon.png) no-repeat center center
height: 16px

View file

@ -40,6 +40,5 @@
.code-language-cell
padding: 0 10px
background: transparent url(/images/pages/home/language_logo_javascript.png) no-repeat center center
background-size: contain
height: 19px
background: transparent url(/images/common/code_languages/javascript_icon.png) no-repeat center center
height: 16px

View file

@ -98,12 +98,12 @@
.code-language
position: absolute
background: transparent url(/images/pages/home/language_logo_javascript.png) no-repeat center center
background: transparent url(/images/common/code_languages/javascript_small.png) no-repeat center center
background-size: contain
width: 40px
height: 40px
right: -5px
top: -15px
width: 50px
height: 50px
right: -0px
top: -30px
display: block
.my-name

View file

@ -70,10 +70,10 @@
.code-language-logo
position: absolute
width: 20px
height: 20px
left: 12px
top: 34px
width: 16px
height: 16px
left: 16px
top: 36px
z-index: 10
background-color: transparent
background-repeat: no-repeat
@ -81,21 +81,27 @@
cursor: pointer
&.javascript
background-image: url(/images/pages/home/language_logo_javascript.png)
background-image: url(/images/common/code_languages/javascript_icon.png)
&.python
background-image: url(/images/pages/home/language_logo_python.png)
background-image: url(/images/common/code_languages/python_icon.png)
&.coffeescript
background-image: url(/images/pages/home/language_logo_coffeescript.png)
background-image: url(/images/common/code_languages/coffeescript_icon.png)
&.clojure
background-image: url(/images/pages/home/language_logo_clojure.png)
background-image: url(/images/common/code_languages/clojure_icon.png)
&.lua
background-image: url(/images/pages/home/language_logo_lua.png)
background-image: url(/images/common/code_languages/lua_icon.png)
&.io
background-image: url(/images/pages/home/language_logo_io.png)
background-image: url(/images/common/code_languages/io_icon.png)
&:hover
outline: 1px outset #ccc
&:active
outline: 1px inset #ccc
html.no-borderimage
#spell-palette-view
span.code-palette-background
display: none
img.code-palette-background
display: block
display: block

View file

@ -1,12 +1,11 @@
extends /templates/modal/modal_base
block modal-header-content
.modal-header
h3 Applicant Code
h3 Applicant Code for
span.spl= session.get('levelName')
block modal-body-content
.modal-body
.level-session-code-view
.level-session-code-view
block modal-footer
.modal-footer

View file

@ -181,14 +181,12 @@ block content
ul.sessions
each session in sessions
li
span.session-link(data-session-id=session._id)= session.levelName
//- var sessionLink = "/play/level/" + session.levelID + "?team=" + (session.team || 'humans') + (myProfile ? '' : "&session=" + session._id);
//a(href=sessionLink)
// span= session.levelName
// if session.team
// span #{session.team}
//if session.codeLanguage != 'javascript'
// span - #{{coffeescript: 'CoffeeScript', python: 'Python', lua: 'Lua', io: 'Io', clojure: 'Clojure'}[session.codeLanguage]}
a.session-link(data-session-id=session._id)
span= session.levelName
if session.team
span.spl - #{session.team}
if session.codeLanguage != 'javascript'
span.spl - #{{coffeescript: 'CoffeeScript', python: 'Python', lua: 'Lua', io: 'Io', clojure: 'Clojure'}[session.codeLanguage]}
.middle-column.full-height-column
.sub-column

View file

@ -1,7 +1,7 @@
div#session-info
img(src='/file/'+levelIcon alt='levelIcon')#level-icon
div#level-meta-data
strong= levelName
a.btn.btn-primary(href=sessionLink, target=_blank) Spectate
p!= levelDescription
div#session-code
@ -10,4 +10,4 @@ div#session-code
.panel-heading
h3= spell.name
.panel-body
.code= spell.code
.code(data-height=spell.height)= spell.code

View file

@ -10,14 +10,14 @@ block content
.code-language#javascript(data-code-language='javascript')
.code-wizard
h2 JavaScript
p The language of the web. Great for writing websites, web apps, HTML5 games, and servers.
p(data-i18n="home.javascript_blurb") The language of the web. Great for writing websites, web apps, HTML5 games, and servers.
.col-md-6
.code-language.beta#python(data-code-language='python')
.code-wizard
.code-language-beta
h2 Python
p Simple yet powerful, Python is a great general purpose programming language.
p(data-i18n="home.python_blurb") Simple yet powerful, Python is a great general purpose programming language.
.secondary-code-languages.row
.col-md-3
@ -26,7 +26,7 @@ block content
.code-wizard
.code-language-beta
h3 CoffeeScript
p Nicer JavaScript syntax
p(data-i18n="home.coffeescript_blurb") Nicer JavaScript syntax.
.col-md-3
.code-language.beta#clojure(data-code-language='clojure')
@ -34,7 +34,7 @@ block content
.code-wizard
.code-language-beta
h3 Clojure
p A modern Lisp
p(data-i18n="home.clojure_blurb") A modern Lisp.
.col-md-3
.code-language.beta#lua(data-code-language='lua')
@ -42,7 +42,7 @@ block content
.code-wizard
.code-language-beta
h3 Lua
p Game scripting language
p(data-i18n="home.lua_blurb") Game scripting language.
.col-md-3
.code-language.beta#io(data-code-language='io', title="Careful: Io is still quite buggy")
@ -50,7 +50,7 @@ block content
.code-wizard
.code-language-beta
h3 Io
p Simple but obscure
p(data-i18n="home.io_blurb") Simple but obscure.
.alert.alert-danger.lt-ie10
strong(data-i18n="home.no_ie") CodeCombat does not run in Internet Explorer 9 or older. Sorry!

View file

@ -21,7 +21,7 @@ div#columns.row
for session, rank in topSessions
- var myRow = session.get('creator') == me.id
tr(class=myRow ? "success" : "", data-player-id=session.get('creator'), data-session-id=session.id)
td.code-language-cell(style="background-image: url(/images/pages/home/language_logo_" + session.get('submittedCodeLanguage') + ".png)")
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + session.get('submittedCodeLanguage') + "_icon.png)")
td.rank-cell= rank + 1
td.score-cell= Math.round(session.get('totalScore') * 100)
td.name-col-cell= session.get('creatorName') || "Anonymous"
@ -35,7 +35,7 @@ div#columns.row
for session in team.leaderboard.nearbySessions()
- var myRow = session.get('creator') == me.id
tr(class=myRow ? "success" : "", data-player-id=session.get('creator'), data-session-id=session.id)
td.code-language-cell(style="background-image: url(/images/pages/home/language_logo_" + session.get('submittedCodeLanguage') + ".png)")
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + session.get('submittedCodeLanguage') + "_icon.png)")
td.rank-cell= session.rank
td.score-cell= Math.round(session.get('totalScore') * 100)
td.name-col-cell= session.get('creatorName') || "Anonymous"

View file

@ -39,7 +39,7 @@ div#columns.row
span(data-i18n="general.loss").loss Loss
if match.state === 'tie'
span(data-i18n="general.tie").tie Tie
td.code-language-cell(style="background-image: url(/images/pages/home/language_logo_" + match.codeLanguage + ".png)")
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + match.codeLanguage + "_icon.png)")
td.name-cell= match.opponentName || "Anonymous"
td.time-cell= match.when
td.battle-cell

View file

@ -33,7 +33,7 @@ block modal-body-content
span= myName
div.opponent-name.name-label
span(data-i18n="ladder.simple_ai") Simple AI
//span.code-language(style="background-image: url(/images/pages/home/language_logo_javascript.png)")
//span.code-language(style="background-image: url(/images/common/code_languages/javascript_small.png)")
div.difficulty
span(data-i18n="ladder.warmup") Warmup
div(data-i18n="ladder.vs").vs VS
@ -50,7 +50,7 @@ block modal-body-content
div.opponent-name.name-label
span= challengers.easy.opponentName
if challengers.easy.codeLanguage
span.code-language(style="background-image: url(/images/pages/home/language_logo_" + challengers.easy.codeLanguage + ".png)")
span.code-language(style="background-image: url(/images/common/code_languages/" + challengers.easy.codeLanguage + "_small.png)")
div.difficulty
span(data-i18n="general.easy") Easy
div(data-i18n="ladder.vs").vs VS
@ -67,7 +67,7 @@ block modal-body-content
div.opponent-name.name-label
span= challengers.medium.opponentName
if challengers.medium.codeLanguage
span.code-language(style="background-image: url(/images/pages/home/language_logo_" + challengers.medium.codeLanguage + ".png)")
span.code-language(style="background-image: url(/images/common/code_languages/" + challengers.medium.codeLanguage + "_small.png)")
div.difficulty
span(data-i18n="general.medium") Medium
div(data-i18n="ladder.vs").vs VS
@ -84,7 +84,7 @@ block modal-body-content
div.opponent-name.name-label
span= challengers.hard.opponentName
if challengers.hard.codeLanguage
span.code-language(style="background-image: url(/images/pages/home/language_logo_" + challengers.hard.codeLanguage + ".png)")
span.code-language(style="background-image: url(/images/common/code_languages/" + challengers.hard.codeLanguage + "_small.png)")
div.difficulty
span(data-i18n="general.hard") Hard
div(data-i18n="ladder.vs").vs VS

View file

@ -52,7 +52,7 @@ module.exports = class HomeView extends RootView
@updateLanguageLogos codeLanguage
updateLanguageLogos: (codeLanguage) ->
@$el.find('.game-mode-wrapper .code-language-logo').css('background-image', "url(/images/pages/home/language_logo_#{codeLanguage}.png)").toggleClass 'inverted', (codeLanguage in ['io', 'coffeescript'])
@$el.find('.game-mode-wrapper .code-language-logo').css('background-image', "url(/images/common/code_languages/#{codeLanguage}_small.png)").toggleClass 'inverted', (codeLanguage in ['io', 'coffeescript'])
onCodeLanguageSelected: (e) ->
target = $(e.target).closest('.code-language')

View file

@ -6,14 +6,20 @@ console.log 'template', template
module.exports = class JobProfileCodeModal extends ModalView
id: 'job_profile_code_modal'
template: template
modalWidthPercent: 90
plain: true
constructor: (options) ->
super(arguments...)
@session = options.session
getRenderData: ->
c = super()
c.session = @session
c
afterRender: ->
super()
return unless @session.loaded
codeView = new LevelSessionCodeView({session:@session})
@insertSubView(codeView)
@insertSubView(codeView, @$el.find('.level-session-code-view'))

View file

@ -590,7 +590,7 @@ module.exports = class ProfileView extends RootView
]
onSessionLinkPressed: (e) ->
sessionID = $(e.target).data('session-id')
sessionID = $(e.target).closest('.session-link').data('session-id')
session = _.find @sessions.models, (session) -> session.id is sessionID
modal = new JobProfileCodeModal({session:session})
@openModalView modal

View file

@ -7,27 +7,28 @@ LevelSession = require 'models/LevelSession'
module.exports = class LevelSessionCodeView extends CocoView
className: 'level-session-code-view'
template: template
modalWidthPercent: 80
plain: true
constructor: (options) ->
super(options)
@session = options.session
@level = LevelSession.getReferencedModel(@session.get('level'), LevelSession.schema.properties.level)
@level.setProjection ['employerDescription', 'name', 'icon']
@level.setProjection ['employerDescription', 'name', 'icon', 'banner', 'slug']
@supermodel.loadModel @level, 'level'
getRenderData: ->
c = super()
c.levelIcon = @level.get('icon')
c.levelIcon = @level.get('banner') or @level.get('icon')
c.levelName = @level.get('name')
c.levelDescription = marked(@level.get('employerDescription') or '')
c.levelSpells = @organizeCode()
c.sessionLink = "/play/level/" + (@level.get('slug') or @level.id) + "?team=" + (@session.get('team') || 'humans') + "&session=" + @session.id
c
afterRender: ->
super()
@$el.find('.code').each (index, codeEl) ->
height = parseInt($(codeEl).data('height'))
$(codeEl).height(height)
editor = ace.edit codeEl
editor.setReadOnly true
aceSession = editor.getSession()
@ -38,9 +39,12 @@ module.exports = class LevelSessionCodeView extends CocoView
teamSpells = @session.get('teamSpells')[team] or []
filteredSpells = []
for spell in teamSpells
code = @session.getSourceFor(spell)
code = @session.getSourceFor(spell) ? ''
lines = code.split('\n').length
height = lines * 16 + 20
filteredSpells.push {
code: code
name: spell.split('/')[1]
name: spell
height: height
}
filteredSpells

View file

@ -13,7 +13,7 @@ module.exports = class SettingsTabView extends CocoView
# not thangs or scripts or the backend stuff
editableSettings: [
'name', 'description', 'documentation', 'nextLevel', 'background', 'victory', 'i18n', 'icon', 'goals',
'type', 'showsGuide'
'type', 'showsGuide', 'banner', 'employerDescription'
]
subscriptions:

View file

@ -25,6 +25,8 @@ LevelHandler = class LevelHandler extends Handler
'goals'
'type'
'showsGuide'
'banner'
'employerDescription'
]
postEditableProperties: ['name']

View file

@ -1,5 +1,6 @@
mail = require '../commons/mail'
MailSent = require '../mail/sent/MailSent'
UserRemark = require '../users/remarks/UserRemark'
User = require '../users/User'
async = require 'async'
errors = require '../commons/errors'
@ -28,6 +29,12 @@ setupScheduledEmails = ->
,
taskFunction: employerNewCandidatesAvailableTask
frequencyMs: 10 * 60 * 1000 #10 minutes
,
taskFunction: unapprovedCandidateFinishProfileTask
frequencyMs: 10 * 60 * 1000
,
taskFunction: emailUserRemarkTaskRemindersTask
frequencyMs: 10 * 60 * 1000
]
for mailTask in mailTasks
@ -35,8 +42,7 @@ setupScheduledEmails = ->
testForLockManager = -> unless lockManager then throw "The system isn't configured to do distributed locking!"
### Candidate Update Reminder Task ###
### Approved Candidate Update Reminder Task ###
candidateUpdateProfileTask = ->
mailTaskName = "candidateUpdateProfileTask"
lockDurationMs = 2 * 60 * 1000
@ -132,7 +138,103 @@ sendReminderEmailToCandidate = (candidate, sendEmailCallback) ->
sendwithus.api.send context, (err, result) ->
log.error "Error sending candidate update reminder email: #{err} with result #{result}" if err
sendEmailCallback null
### End Candidate Update Reminder Task ###
### End Approved Candidate Update Reminder Task ###
### Unapproved Candidate Finish Reminder Task ###
unapprovedCandidateFinishProfileTask = ->
mailTaskName = "unapprovedCandidateFinishProfileTask"
lockDurationMs = 2 * 60 * 1000
currentDate = new Date()
timeRanges = []
for weekPair in [[4, 2,'two weeks'], [8, 4, 'four weeks'], [52, 8, 'eight weeks']]
timeRanges.push
start: generateWeekOffset currentDate, weekPair[0]
end: generateWeekOffset currentDate, weekPair[1]
name: weekPair[2]
lockManager.setLock mailTaskName, lockDurationMs, (err) ->
if err? then return log.error "Error getting a distributed lock for task #{mailTaskName}: #{err}"
async.each timeRanges, emailUnapprovedCandidateTimeRange.bind({mailTaskName: mailTaskName}), (err) ->
if err
log.error "There was an error sending the candidate profile update reminder emails: #{err}"
else
log.info "Completed mail task #{mailTaskName}"
lockManager.releaseLock mailTaskName, (err) ->
if err? then return log.error "There was an error releasing the distributed lock for task #{mailTaskName}: #{err}"
emailUnapprovedCandidateTimeRange = (timeRange, emailTimeRangeCallback) ->
waterfallContext =
"timeRange": timeRange
"mailTaskName": @mailTaskName
async.waterfall [
findAllUnapprovedCandidatesWithinTimeRange.bind(waterfallContext)
(unfilteredCandidates, cb) ->
async.reject unfilteredCandidates, ignoredCandidateFilter, cb.bind(null,null)
(unfilteredPotentialCandidates, cb) ->
async.reject unfilteredPotentialCandidates, unapprovedCandidateFilter.bind(waterfallContext), cb.bind(null, null)
(filteredCandidates, cb) ->
async.each filteredCandidates, sendReminderEmailToUnapprovedCandidate.bind(waterfallContext), cb
], emailTimeRangeCallback
findAllUnapprovedCandidatesWithinTimeRange = (cb) ->
findParameters =
"jobProfile":
$exists: true
"jobProfile.updated":
$gt: @timeRange.start
$lte: @timeRange.end
"jobProfileApproved": false
selection = "_id email jobProfile.name jobProfile.updated emails"
User.find(findParameters).select(selection).lean().exec cb
ignoredCandidateFilter = (candidate, cb) ->
findParameters =
"user": candidate._id
"contactName": "Ignore"
UserRemark.count findParameters, (err, results) ->
if err? then return true
return cb Boolean(results.length)
unapprovedCandidateFilter = (candidate, sentEmailFilterCallback) ->
if candidate.emails?.anyNotes?.enabled is false or candidate.emails?.recruitNotes?.enabled is false
return sentEmailFilterCallback true
findParameters =
"user": candidate._id
"mailTask": @mailTaskName
"metadata.timeRangeName": @timeRange.name
"metadata.updated": candidate.jobProfile.updated
MailSent.find(findParameters).lean().exec (err, sentMail) ->
if err?
log.error "Error finding mail sent for task #{@mailTaskName} and user #{candidate._id}!"
sentEmailFilterCallback true
else
sentEmailFilterCallback Boolean(sentMail.length)
sendReminderEmailToUnapprovedCandidate = (candidate, sendEmailCallback) ->
if err?
log.error "There was an error finding employers who signed up after #{candidate.jobProfile.updated}: #{err}"
return sendEmailCallback err
context =
email_id: "tem_RXyjzmc7S2HJH287pfoSPN"
recipient:
address: candidate.email
name: candidate.jobProfile.name
email_data:
user_profile: "http://codecombat.com/account/profile/#{candidate._id}"
recipient_address: encodeURIComponent(candidate.email)
log.info "Sending #{@timeRange.name} finish profile reminder to #{context.recipient.name}(#{context.recipient.address})"
newSentMail =
mailTask: @mailTaskName
user: candidate._id
metadata:
timeRangeName: @timeRange.name
updated: candidate.jobProfile.updated
MailSent.create newSentMail, (err) ->
if err? then return sendEmailCallback err
sendwithus.api.send context, (err, result) ->
log.error "Error sending candidate finish profile reminder email: #{err} with result #{result}" if err
sendEmailCallback null
### End Unapproved Candidate Finish Reminder Task ###
### Internal Candidate Update Reminder Email ###
internalCandidateUpdateTask = ->
mailTaskName = "internalCandidateUpdateTask"
@ -304,6 +406,99 @@ sendEmployerNewCandidatesAvailableEmail = (employer, cb) ->
cb null
### End Employer New Candidates Available Email ###
### Task Emails ###
emailUserRemarkTaskRemindersTask = ->
mailTaskName = "emailUserRemarkTaskRemindersTask"
lockDurationMs = 2 * 60 * 1000
lockManager.setLock mailTaskName, lockDurationMs, (err) ->
if err? then return log.error "Error getting a distributed lock for task #{mailTaskName}: #{err}"
emailUserRemarkTaskReminders.call {"mailTaskName":mailTaskName}, (err) ->
if err
log.error "There was an error completing the #{mailTaskName}: #{err}"
else
log.info "Completed the #{mailTaskName}"
lockManager.releaseLock mailTaskName, (err) ->
if err? then return log.error "There was an error releasing the distributed lock for task #{mailTaskName}: #{err}"
emailUserRemarkTaskReminders = (cb) ->
currentTime = new Date()
asyncContext =
"currentTime": currentTime
"mailTaskName": @mailTaskName
async.waterfall [
findAllIncompleteUserRemarkTasksDue.bind(asyncContext)
processRemarksIntoTasks.bind(asyncContext)
(allTasks, cb) ->
async.reject allTasks, taskReminderAlreadySentThisWeekFilter.bind(asyncContext), cb.bind(null,null)
(tasksToRemind, cb) ->
async.each tasksToRemind, sendUserRemarkTaskEmail.bind(asyncContext), cb
], cb
findAllIncompleteUserRemarkTasksDue = (cb) ->
findParameters =
tasks:
$exists: true
$elemMatch:
date:
$lte: @currentTime.toISOString()
status:
$ne: 'Completed'
selection = "contact user tasks"
UserRemark.find(findParameters).select(selection).lean().exec cb
processRemarksIntoTasks = (remarks, cb) ->
tasks = []
for remark in remarks
for task in remark.tasks
taskObject =
date: task.date
action: task.action
contact: remark.contact
user: remark.user
remarkID: remark._id
tasks.push taskObject
cb null, tasks
taskReminderAlreadySentThisWeekFilter = (task, cb) ->
findParameters =
"user": task.contact
"mailTask": @mailTaskName
"sent":
$gt: new Date(@currentTime.getTime() - 7 * 24 * 60 * 60 * 1000)
"metadata":
remarkID: task.remarkID
taskAction: task.action
date: task.date
MailSent.count findParameters, (err, count) ->
if err? then return cb true
return cb Boolean(count)
sendUserRemarkTaskEmail = (task, cb) ->
mailTaskName = @mailTaskName
User.findOne("_id":task.contact).select("email").lean().exec (err, contact) ->
if err? then return cb err
context =
email_id: "tem_aryDjyw6JmEmbKtCMTSwAM"
recipient:
address: contact.email
email_data:
candidate_link: "http://codecombat.com/account/profile/#{task.user}"
due_date: task.date
log.info "Sending recruitment task reminder to #{contact.email}"
newSentMail =
mailTask: mailTaskName
user: task.contact
"metadata":
remarkID: task.remarkID
taskAction: task.action
date: task.date
MailSent.create newSentMail, (err) ->
if err? then return cb err
sendwithus.api.send context, (err, result) ->
log.error "Error sending #{mailTaskName} to #{contact.email}: #{err} with result #{result}" if err
cb null
### New Recruit Leaderboard Email ###
###

Some files were not shown because too many files have changed in this diff Show more