Merge conflict handling.
BIN
app/assets/images/common/code_languages/c_icon.png
Executable file
After ![]() (image error) Size: 3 KiB |
BIN
app/assets/images/common/code_languages/clojure_icon.png
Executable file
After ![]() (image error) Size: 3 KiB |
Before ![]() (image error) Size: 6.1 KiB After ![]() (image error) Size: 6.1 KiB ![]() ![]() |
BIN
app/assets/images/common/code_languages/coffeescript_icon.png
Executable file
After ![]() (image error) Size: 2.9 KiB |
Before ![]() (image error) Size: 16 KiB After ![]() (image error) Size: 16 KiB ![]() ![]() |
BIN
app/assets/images/common/code_languages/cpp_icon.png
Executable file
After ![]() (image error) Size: 3 KiB |
BIN
app/assets/images/common/code_languages/csharp_icon.png
Executable file
After ![]() (image error) Size: 3 KiB |
BIN
app/assets/images/common/code_languages/go_icon.png
Executable file
After ![]() (image error) Size: 2.9 KiB |
BIN
app/assets/images/common/code_languages/io_icon.png
Normal file
After ![]() (image error) Size: 4 KiB |
Before ![]() (image error) Size: 15 KiB After ![]() (image error) Size: 15 KiB ![]() ![]() |
BIN
app/assets/images/common/code_languages/java_icon.png
Executable file
After ![]() (image error) Size: 3 KiB |
BIN
app/assets/images/common/code_languages/javascript_icon.png
Normal file
After ![]() (image error) Size: 3.9 KiB |
Before ![]() (image error) Size: 3.7 KiB After ![]() (image error) Size: 3.7 KiB ![]() ![]() |
BIN
app/assets/images/common/code_languages/lua_icon.png
Executable file
After ![]() (image error) Size: 2.8 KiB |
Before ![]() (image error) Size: 1.5 KiB After ![]() (image error) Size: 1.5 KiB ![]() ![]() |
BIN
app/assets/images/common/code_languages/php_icon.png
Executable file
After ![]() (image error) Size: 2.9 KiB |
BIN
app/assets/images/common/code_languages/python_icon.png
Executable file
After ![]() (image error) Size: 2.9 KiB |
Before ![]() (image error) Size: 17 KiB After ![]() (image error) Size: 17 KiB ![]() ![]() |
BIN
app/assets/images/common/code_languages/ruby_icon.png
Executable file
After ![]() (image error) Size: 3 KiB |
BIN
app/assets/images/common/code_languages/swift_icon.png
Executable file
After ![]() (image error) Size: 2.9 KiB |
Before ![]() (image error) Size: 9.4 KiB After ![]() (image error) Size: 9.1 KiB ![]() ![]() |
Before ![]() (image error) Size: 7.5 KiB After ![]() (image error) Size: 8.1 KiB ![]() ![]() |
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "български език", englishDescri
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
play:
|
||||||
choose_your_level: "Избери своето ниво"
|
choose_your_level: "Избери своето ниво"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
||||||
for_beginners: "Per a principiants"
|
for_beginners: "Per a principiants"
|
||||||
multiplayer: "Multijugador"
|
multiplayer: "Multijugador"
|
||||||
for_developers: "Per a Desenvolupadors"
|
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:
|
play:
|
||||||
choose_your_level: "Escull el teu nivell"
|
choose_your_level: "Escull el teu nivell"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
play:
|
||||||
choose_your_level: "Zvolte si úroveň"
|
choose_your_level: "Zvolte si úroveň"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
|
||||||
for_beginners: "For Begyndere"
|
for_beginners: "For Begyndere"
|
||||||
multiplayer: "Multiplayer"
|
multiplayer: "Multiplayer"
|
||||||
for_developers: "For Udviklere"
|
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:
|
play:
|
||||||
choose_your_level: "Vælg Dit Level"
|
choose_your_level: "Vælg Dit Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
|
||||||
for_beginners: "Für Afänger"
|
for_beginners: "Für Afänger"
|
||||||
multiplayer: "Multiplayer"
|
multiplayer: "Multiplayer"
|
||||||
for_developers: "Für Entwickler"
|
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:
|
play:
|
||||||
choose_your_level: "Wähl dis Level us"
|
choose_your_level: "Wähl dis Level us"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
for_beginners: "Für Anfänger"
|
for_beginners: "Für Anfänger"
|
||||||
multiplayer: "Mehrspieler"
|
multiplayer: "Mehrspieler"
|
||||||
for_developers: "Für Entwickler"
|
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:
|
play:
|
||||||
choose_your_level: "Wähle dein Level"
|
choose_your_level: "Wähle dein Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra
|
||||||
for_beginners: "Für Anfänger"
|
for_beginners: "Für Anfänger"
|
||||||
multiplayer: "Mehrspieler"
|
multiplayer: "Mehrspieler"
|
||||||
for_developers: "Für Entwickler"
|
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:
|
play:
|
||||||
choose_your_level: "Wähle dein Level"
|
choose_your_level: "Wähle dein Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre
|
||||||
for_beginners: "Για αρχάριους"
|
for_beginners: "Για αρχάριους"
|
||||||
# multiplayer: "Multiplayer"
|
# 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:
|
play:
|
||||||
choose_your_level: "Διάλεξε την πίστα σου"
|
choose_your_level: "Διάλεξε την πίστα σου"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@
|
||||||
for_beginners: "For Beginners"
|
for_beginners: "For Beginners"
|
||||||
multiplayer: "Multiplayer"
|
multiplayer: "Multiplayer"
|
||||||
for_developers: "For Developers"
|
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:
|
play:
|
||||||
choose_your_level: "Choose Your Level"
|
choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
||||||
for_beginners: "Para Principiantes"
|
for_beginners: "Para Principiantes"
|
||||||
multiplayer: "Multijugador"
|
multiplayer: "Multijugador"
|
||||||
for_developers: "Para Desarrolladores"
|
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:
|
play:
|
||||||
choose_your_level: "Elige tu nivel"
|
choose_your_level: "Elige tu nivel"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
for_beginners: "Para principiantes"
|
for_beginners: "Para principiantes"
|
||||||
multiplayer: "Multijugador"
|
multiplayer: "Multijugador"
|
||||||
for_developers: "Para programadores"
|
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:
|
play:
|
||||||
choose_your_level: "Elige tu nivel"
|
choose_your_level: "Elige tu nivel"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t
|
||||||
for_beginners: "Para principiantes"
|
for_beginners: "Para principiantes"
|
||||||
multiplayer: "Multijugador"
|
multiplayer: "Multijugador"
|
||||||
for_developers: "Para desarrolladores"
|
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:
|
play:
|
||||||
choose_your_level: "Elige tu nivel"
|
choose_your_level: "Elige tu nivel"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
play:
|
||||||
choose_your_level: "مرحله خود را انتخاب کنید"
|
choose_your_level: "مرحله خود را انتخاب کنید"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
for_beginners: "Pour débutants"
|
for_beginners: "Pour débutants"
|
||||||
multiplayer: "Multijoueurs"
|
multiplayer: "Multijoueurs"
|
||||||
for_developers: "Pour développeurs"
|
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:
|
play:
|
||||||
choose_your_level: "Choisissez votre niveau"
|
choose_your_level: "Choisissez votre niveau"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
||||||
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:
|
play:
|
||||||
choose_your_level: "בחר את השלב"
|
choose_your_level: "בחר את השלב"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
||||||
for_beginners: "Kezdőknek"
|
for_beginners: "Kezdőknek"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
for_developers: "Fejlesztőknek"
|
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:
|
play:
|
||||||
choose_your_level: "Válaszd ki a pályát!"
|
choose_your_level: "Válaszd ki a pályát!"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
|
||||||
for_beginners: "Per Principianti"
|
for_beginners: "Per Principianti"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
for_developers: "Per Sviluppatori"
|
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:
|
play:
|
||||||
choose_your_level: "Scegli il tuo livello"
|
choose_your_level: "Scegli il tuo livello"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
|
||||||
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:
|
play:
|
||||||
choose_your_level: "レベル選択"
|
choose_your_level: "レベル選択"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
||||||
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:
|
play:
|
||||||
choose_your_level: "레벨을 선택하세요."
|
choose_your_level: "레벨을 선택하세요."
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
play:
|
||||||
choose_your_level: "Velg Ditt Nivå"
|
choose_your_level: "Velg Ditt Nivå"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
|
||||||
for_beginners: "Voor Beginners"
|
for_beginners: "Voor Beginners"
|
||||||
multiplayer: "Multiplayer"
|
multiplayer: "Multiplayer"
|
||||||
for_developers: "Voor ontwikkelaars"
|
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:
|
play:
|
||||||
choose_your_level: "Kies Je Level"
|
choose_your_level: "Kies Je Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
for_beginners: "Voor Beginners"
|
for_beginners: "Voor Beginners"
|
||||||
multiplayer: "Multiplayer"
|
multiplayer: "Multiplayer"
|
||||||
for_developers: "Voor ontwikkelaars"
|
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:
|
play:
|
||||||
choose_your_level: "Kies Je Level"
|
choose_your_level: "Kies Je Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
|
||||||
for_beginners: "Voor Beginners"
|
for_beginners: "Voor Beginners"
|
||||||
multiplayer: "Multiplayer"
|
multiplayer: "Multiplayer"
|
||||||
for_developers: "Voor ontwikkelaars"
|
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:
|
play:
|
||||||
choose_your_level: "Kies Je Level"
|
choose_your_level: "Kies Je Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
play:
|
||||||
choose_your_level: "Velg Ditt Nivå"
|
choose_your_level: "Velg Ditt Nivå"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
|
||||||
for_beginners: "Dla początkujących"
|
for_beginners: "Dla początkujących"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
for_developers: "Dla developerów"
|
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:
|
play:
|
||||||
choose_your_level: "Wybierz poziom"
|
choose_your_level: "Wybierz poziom"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
|
||||||
for_beginners: "Para Iniciantes"
|
for_beginners: "Para Iniciantes"
|
||||||
multiplayer: "Multijogador"
|
multiplayer: "Multijogador"
|
||||||
for_developers: "Para Desenvolvedores"
|
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:
|
play:
|
||||||
choose_your_level: "Escolha seu estágio"
|
choose_your_level: "Escolha seu estágio"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
|
||||||
for_beginners: "Para Iniciantes"
|
for_beginners: "Para Iniciantes"
|
||||||
multiplayer: "Multijogador"
|
multiplayer: "Multijogador"
|
||||||
for_developers: "Para Programadores"
|
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:
|
play:
|
||||||
choose_your_level: "Escolha o Seu Nível"
|
choose_your_level: "Escolha o Seu Nível"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
play:
|
||||||
choose_your_level: "Escolha seu estágio"
|
choose_your_level: "Escolha seu estágio"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
|
||||||
for_beginners: "Pentru Începători"
|
for_beginners: "Pentru Începători"
|
||||||
multiplayer: "Multiplayer"
|
multiplayer: "Multiplayer"
|
||||||
for_developers: "Pentru dezvoltatori"
|
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:
|
play:
|
||||||
choose_your_level: "Alege nivelul"
|
choose_your_level: "Alege nivelul"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
||||||
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:
|
play:
|
||||||
choose_your_level: "Выберите ваш уровень"
|
choose_your_level: "Выберите ваш уровень"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
|
||||||
for_beginners: "Pre začiatočníkov"
|
for_beginners: "Pre začiatočníkov"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
for_developers: "Pre vývojárov"
|
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:
|
play:
|
||||||
choose_your_level: "Vyber si úroveň"
|
choose_your_level: "Vyber si úroveň"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
play:
|
||||||
choose_your_level: "Изабери ниво"
|
choose_your_level: "Изабери ниво"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
|
||||||
for_beginners: "För nybörjare"
|
for_beginners: "För nybörjare"
|
||||||
multiplayer: "Flera spelare"
|
multiplayer: "Flera spelare"
|
||||||
for_developers: "För utvecklare"
|
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:
|
play:
|
||||||
choose_your_level: "Välj din nivå"
|
choose_your_level: "Välj din nivå"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
|
||||||
for_beginners: "Yeni Başlayanlar için"
|
for_beginners: "Yeni Başlayanlar için"
|
||||||
multiplayer: "Çoklu-oyuncu Modu"
|
multiplayer: "Çoklu-oyuncu Modu"
|
||||||
for_developers: "Geliştiriciler için"
|
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:
|
play:
|
||||||
choose_your_level: "Seviye Seçimi"
|
choose_your_level: "Seviye Seçimi"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
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:
|
play:
|
||||||
choose_your_level: "Оберіть свій рівень"
|
choose_your_level: "Оберіть свій рівень"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
play:
|
||||||
choose_your_level: "Chọn Trình của bạn"
|
choose_your_level: "Chọn Trình của bạn"
|
||||||
|
|
|
@ -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:
|
play:
|
||||||
choose_your_level: "选择关卡"
|
choose_your_level: "选择关卡"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
play:
|
||||||
choose_your_level: "選取關卡"
|
choose_your_level: "選取關卡"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
# play:
|
||||||
# choose_your_level: "Choose Your Level"
|
# choose_your_level: "Choose Your Level"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
|
||||||
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:
|
play:
|
||||||
choose_your_level: "揀關數"
|
choose_your_level: "揀關數"
|
||||||
|
|
|
@ -100,6 +100,12 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra
|
||||||
# for_beginners: "For Beginners"
|
# for_beginners: "For Beginners"
|
||||||
# multiplayer: "Multiplayer"
|
# multiplayer: "Multiplayer"
|
||||||
# for_developers: "For Developers"
|
# 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:
|
play:
|
||||||
choose_your_level: "选取难度"
|
choose_your_level: "选取难度"
|
||||||
|
|
|
@ -230,13 +230,14 @@ _.extend LevelSchema.properties,
|
||||||
title: 'Next Level',
|
title: 'Next Level',
|
||||||
description: 'Reference to the next level players will play after beating this one.'
|
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
|
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
|
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
|
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'}}}
|
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'}
|
i18n: {type: 'object', format: 'i18n', props: ['name', 'description'], description: 'Help translate this level'}
|
||||||
icon: {type: 'string', format: 'image-file', title: 'Icon'}
|
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
|
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'])
|
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'])
|
showsGuide: c.shortString(title: 'Shows Guide', description: 'If the guide is shown at the beginning of the level.', 'enum': ['first-time', 'always'])
|
||||||
|
|
|
@ -12,7 +12,23 @@ _.extend UserRemarkSchema.properties,
|
||||||
history: c.array {title: 'History', description: 'Records of our interactions with the user.'},
|
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'}}
|
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.'},
|
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
|
# denormalization
|
||||||
userName: {title: 'Player Name', type: 'string'}
|
userName: {title: 'Player Name', type: 'string'}
|
||||||
|
|
|
@ -23,6 +23,9 @@ h1 h2 h3 h4
|
||||||
padding: 14px 12px 5px 12px
|
padding: 14px 12px 5px 12px
|
||||||
@include box-sizing(border-box)
|
@include box-sizing(border-box)
|
||||||
|
|
||||||
|
#outer-content-wrapper
|
||||||
|
background: #B4B4B4
|
||||||
|
|
||||||
#outer-content-wrapper.show-background
|
#outer-content-wrapper.show-background
|
||||||
background: #8cc63f url(/images/pages/base/repeat-tile.png) top center
|
background: #8cc63f url(/images/pages/base/repeat-tile.png) top center
|
||||||
|
|
||||||
|
@ -70,7 +73,7 @@ h1 h2 h3 h4
|
||||||
&:hover
|
&:hover
|
||||||
color: $white
|
color: $white
|
||||||
|
|
||||||
a[data-toggle="modal"]
|
a
|
||||||
cursor: pointer
|
cursor: pointer
|
||||||
|
|
||||||
.share-buttons, .partner-badges
|
.share-buttons, .partner-badges
|
||||||
|
|
|
@ -1,18 +1,24 @@
|
||||||
.level-session-code-view
|
.level-session-code-view
|
||||||
#level-icon
|
#level-icon
|
||||||
width: 100px
|
max-width: 60%
|
||||||
|
max-height: 150px
|
||||||
margin-right: 10px
|
margin-right: 10px
|
||||||
display: inline-block
|
display: inline-block
|
||||||
float: left
|
float: right
|
||||||
|
margin-bottom: 20px
|
||||||
|
|
||||||
#level-meta-data
|
#level-meta-data
|
||||||
margin-left: 120px
|
width: 35%
|
||||||
|
button
|
||||||
|
float: right
|
||||||
|
|
||||||
#session-code
|
#session-code
|
||||||
clear: both
|
clear: both
|
||||||
|
margin-top: 20px
|
||||||
|
|
||||||
h3
|
h3
|
||||||
font-family: Arial
|
font-family: Arial
|
||||||
|
margin: 0
|
||||||
|
|
||||||
.code
|
.code
|
||||||
height: 600px
|
height: 600px
|
||||||
|
|
|
@ -167,6 +167,10 @@
|
||||||
h2
|
h2
|
||||||
margin: 15px 0 5px
|
margin: 15px 0 5px
|
||||||
|
|
||||||
|
p
|
||||||
|
overflow: hidden
|
||||||
|
height: 40px
|
||||||
|
|
||||||
.secondary-code-languages
|
.secondary-code-languages
|
||||||
margin-left: -10px
|
margin-left: -10px
|
||||||
|
|
||||||
|
@ -201,17 +205,22 @@
|
||||||
margin: 0
|
margin: 0
|
||||||
padding: 0
|
padding: 0
|
||||||
|
|
||||||
|
p
|
||||||
|
white-space: nowrap
|
||||||
|
text-overflow: ellipsis
|
||||||
|
overflow: hidden
|
||||||
|
|
||||||
#coffeescript .code-language-logo
|
#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
|
#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
|
#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
|
#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
|
#multiplayer-launch-modal
|
||||||
|
|
|
@ -53,6 +53,5 @@
|
||||||
|
|
||||||
.code-language-cell
|
.code-language-cell
|
||||||
padding: 0 10px
|
padding: 0 10px
|
||||||
background: transparent url(/images/pages/home/language_logo_javascript.png) no-repeat center center
|
background: transparent url(/images/common/code_languages/javascript_icon.png) no-repeat center center
|
||||||
background-size: contain
|
height: 16px
|
||||||
height: 19px
|
|
||||||
|
|
|
@ -40,6 +40,5 @@
|
||||||
|
|
||||||
.code-language-cell
|
.code-language-cell
|
||||||
padding: 0 10px
|
padding: 0 10px
|
||||||
background: transparent url(/images/pages/home/language_logo_javascript.png) no-repeat center center
|
background: transparent url(/images/common/code_languages/javascript_icon.png) no-repeat center center
|
||||||
background-size: contain
|
height: 16px
|
||||||
height: 19px
|
|
||||||
|
|
|
@ -98,12 +98,12 @@
|
||||||
|
|
||||||
.code-language
|
.code-language
|
||||||
position: absolute
|
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
|
background-size: contain
|
||||||
width: 40px
|
width: 50px
|
||||||
height: 40px
|
height: 50px
|
||||||
right: -5px
|
right: -0px
|
||||||
top: -15px
|
top: -30px
|
||||||
display: block
|
display: block
|
||||||
|
|
||||||
.my-name
|
.my-name
|
||||||
|
|
|
@ -70,10 +70,10 @@
|
||||||
|
|
||||||
.code-language-logo
|
.code-language-logo
|
||||||
position: absolute
|
position: absolute
|
||||||
width: 20px
|
width: 16px
|
||||||
height: 20px
|
height: 16px
|
||||||
left: 12px
|
left: 16px
|
||||||
top: 34px
|
top: 36px
|
||||||
z-index: 10
|
z-index: 10
|
||||||
background-color: transparent
|
background-color: transparent
|
||||||
background-repeat: no-repeat
|
background-repeat: no-repeat
|
||||||
|
@ -81,21 +81,27 @@
|
||||||
cursor: pointer
|
cursor: pointer
|
||||||
|
|
||||||
&.javascript
|
&.javascript
|
||||||
background-image: url(/images/pages/home/language_logo_javascript.png)
|
background-image: url(/images/common/code_languages/javascript_icon.png)
|
||||||
&.python
|
&.python
|
||||||
background-image: url(/images/pages/home/language_logo_python.png)
|
background-image: url(/images/common/code_languages/python_icon.png)
|
||||||
&.coffeescript
|
&.coffeescript
|
||||||
background-image: url(/images/pages/home/language_logo_coffeescript.png)
|
background-image: url(/images/common/code_languages/coffeescript_icon.png)
|
||||||
&.clojure
|
&.clojure
|
||||||
background-image: url(/images/pages/home/language_logo_clojure.png)
|
background-image: url(/images/common/code_languages/clojure_icon.png)
|
||||||
&.lua
|
&.lua
|
||||||
background-image: url(/images/pages/home/language_logo_lua.png)
|
background-image: url(/images/common/code_languages/lua_icon.png)
|
||||||
&.io
|
&.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
|
html.no-borderimage
|
||||||
#spell-palette-view
|
#spell-palette-view
|
||||||
span.code-palette-background
|
span.code-palette-background
|
||||||
display: none
|
display: none
|
||||||
img.code-palette-background
|
img.code-palette-background
|
||||||
display: block
|
display: block
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
extends /templates/modal/modal_base
|
extends /templates/modal/modal_base
|
||||||
|
|
||||||
block modal-header-content
|
block modal-header-content
|
||||||
.modal-header
|
h3 Applicant Code for
|
||||||
h3 Applicant Code
|
span.spl= session.get('levelName')
|
||||||
|
|
||||||
block modal-body-content
|
block modal-body-content
|
||||||
.modal-body
|
.level-session-code-view
|
||||||
.level-session-code-view
|
|
||||||
|
|
||||||
block modal-footer
|
block modal-footer
|
||||||
.modal-footer
|
.modal-footer
|
||||||
|
|
|
@ -181,14 +181,12 @@ block content
|
||||||
ul.sessions
|
ul.sessions
|
||||||
each session in sessions
|
each session in sessions
|
||||||
li
|
li
|
||||||
span.session-link(data-session-id=session._id)= session.levelName
|
a.session-link(data-session-id=session._id)
|
||||||
//- var sessionLink = "/play/level/" + session.levelID + "?team=" + (session.team || 'humans') + (myProfile ? '' : "&session=" + session._id);
|
span= session.levelName
|
||||||
//a(href=sessionLink)
|
if session.team
|
||||||
// span= session.levelName
|
span.spl - #{session.team}
|
||||||
// if session.team
|
if session.codeLanguage != 'javascript'
|
||||||
// span #{session.team}
|
span.spl - #{{coffeescript: 'CoffeeScript', python: 'Python', lua: 'Lua', io: 'Io', clojure: 'Clojure'}[session.codeLanguage]}
|
||||||
//if session.codeLanguage != 'javascript'
|
|
||||||
// span - #{{coffeescript: 'CoffeeScript', python: 'Python', lua: 'Lua', io: 'Io', clojure: 'Clojure'}[session.codeLanguage]}
|
|
||||||
|
|
||||||
.middle-column.full-height-column
|
.middle-column.full-height-column
|
||||||
.sub-column
|
.sub-column
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
div#session-info
|
div#session-info
|
||||||
img(src='/file/'+levelIcon alt='levelIcon')#level-icon
|
img(src='/file/'+levelIcon alt='levelIcon')#level-icon
|
||||||
div#level-meta-data
|
div#level-meta-data
|
||||||
strong= levelName
|
a.btn.btn-primary(href=sessionLink, target=_blank) Spectate
|
||||||
p!= levelDescription
|
p!= levelDescription
|
||||||
|
|
||||||
div#session-code
|
div#session-code
|
||||||
|
@ -10,4 +10,4 @@ div#session-code
|
||||||
.panel-heading
|
.panel-heading
|
||||||
h3= spell.name
|
h3= spell.name
|
||||||
.panel-body
|
.panel-body
|
||||||
.code= spell.code
|
.code(data-height=spell.height)= spell.code
|
|
@ -10,14 +10,14 @@ block content
|
||||||
.code-language#javascript(data-code-language='javascript')
|
.code-language#javascript(data-code-language='javascript')
|
||||||
.code-wizard
|
.code-wizard
|
||||||
h2 JavaScript
|
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
|
.col-md-6
|
||||||
.code-language.beta#python(data-code-language='python')
|
.code-language.beta#python(data-code-language='python')
|
||||||
.code-wizard
|
.code-wizard
|
||||||
.code-language-beta
|
.code-language-beta
|
||||||
h2 Python
|
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
|
.secondary-code-languages.row
|
||||||
.col-md-3
|
.col-md-3
|
||||||
|
@ -26,7 +26,7 @@ block content
|
||||||
.code-wizard
|
.code-wizard
|
||||||
.code-language-beta
|
.code-language-beta
|
||||||
h3 CoffeeScript
|
h3 CoffeeScript
|
||||||
p Nicer JavaScript syntax
|
p(data-i18n="home.coffeescript_blurb") Nicer JavaScript syntax.
|
||||||
|
|
||||||
.col-md-3
|
.col-md-3
|
||||||
.code-language.beta#clojure(data-code-language='clojure')
|
.code-language.beta#clojure(data-code-language='clojure')
|
||||||
|
@ -34,7 +34,7 @@ block content
|
||||||
.code-wizard
|
.code-wizard
|
||||||
.code-language-beta
|
.code-language-beta
|
||||||
h3 Clojure
|
h3 Clojure
|
||||||
p A modern Lisp
|
p(data-i18n="home.clojure_blurb") A modern Lisp.
|
||||||
|
|
||||||
.col-md-3
|
.col-md-3
|
||||||
.code-language.beta#lua(data-code-language='lua')
|
.code-language.beta#lua(data-code-language='lua')
|
||||||
|
@ -42,7 +42,7 @@ block content
|
||||||
.code-wizard
|
.code-wizard
|
||||||
.code-language-beta
|
.code-language-beta
|
||||||
h3 Lua
|
h3 Lua
|
||||||
p Game scripting language
|
p(data-i18n="home.lua_blurb") Game scripting language.
|
||||||
|
|
||||||
.col-md-3
|
.col-md-3
|
||||||
.code-language.beta#io(data-code-language='io', title="Careful: Io is still quite buggy")
|
.code-language.beta#io(data-code-language='io', title="Careful: Io is still quite buggy")
|
||||||
|
@ -50,7 +50,7 @@ block content
|
||||||
.code-wizard
|
.code-wizard
|
||||||
.code-language-beta
|
.code-language-beta
|
||||||
h3 Io
|
h3 Io
|
||||||
p Simple but obscure
|
p(data-i18n="home.io_blurb") Simple but obscure.
|
||||||
|
|
||||||
.alert.alert-danger.lt-ie10
|
.alert.alert-danger.lt-ie10
|
||||||
strong(data-i18n="home.no_ie") CodeCombat does not run in Internet Explorer 9 or older. Sorry!
|
strong(data-i18n="home.no_ie") CodeCombat does not run in Internet Explorer 9 or older. Sorry!
|
||||||
|
|
|
@ -21,7 +21,7 @@ div#columns.row
|
||||||
for session, rank in topSessions
|
for session, rank in topSessions
|
||||||
- var myRow = session.get('creator') == me.id
|
- var myRow = session.get('creator') == me.id
|
||||||
tr(class=myRow ? "success" : "", data-player-id=session.get('creator'), data-session-id=session.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.rank-cell= rank + 1
|
||||||
td.score-cell= Math.round(session.get('totalScore') * 100)
|
td.score-cell= Math.round(session.get('totalScore') * 100)
|
||||||
td.name-col-cell= session.get('creatorName') || "Anonymous"
|
td.name-col-cell= session.get('creatorName') || "Anonymous"
|
||||||
|
@ -35,7 +35,7 @@ div#columns.row
|
||||||
for session in team.leaderboard.nearbySessions()
|
for session in team.leaderboard.nearbySessions()
|
||||||
- var myRow = session.get('creator') == me.id
|
- var myRow = session.get('creator') == me.id
|
||||||
tr(class=myRow ? "success" : "", data-player-id=session.get('creator'), data-session-id=session.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.rank-cell= session.rank
|
||||||
td.score-cell= Math.round(session.get('totalScore') * 100)
|
td.score-cell= Math.round(session.get('totalScore') * 100)
|
||||||
td.name-col-cell= session.get('creatorName') || "Anonymous"
|
td.name-col-cell= session.get('creatorName') || "Anonymous"
|
||||||
|
|
|
@ -39,7 +39,7 @@ div#columns.row
|
||||||
span(data-i18n="general.loss").loss Loss
|
span(data-i18n="general.loss").loss Loss
|
||||||
if match.state === 'tie'
|
if match.state === 'tie'
|
||||||
span(data-i18n="general.tie").tie 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.name-cell= match.opponentName || "Anonymous"
|
||||||
td.time-cell= match.when
|
td.time-cell= match.when
|
||||||
td.battle-cell
|
td.battle-cell
|
||||||
|
|
|
@ -33,7 +33,7 @@ block modal-body-content
|
||||||
span= myName
|
span= myName
|
||||||
div.opponent-name.name-label
|
div.opponent-name.name-label
|
||||||
span(data-i18n="ladder.simple_ai") Simple AI
|
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
|
div.difficulty
|
||||||
span(data-i18n="ladder.warmup") Warmup
|
span(data-i18n="ladder.warmup") Warmup
|
||||||
div(data-i18n="ladder.vs").vs VS
|
div(data-i18n="ladder.vs").vs VS
|
||||||
|
@ -50,7 +50,7 @@ block modal-body-content
|
||||||
div.opponent-name.name-label
|
div.opponent-name.name-label
|
||||||
span= challengers.easy.opponentName
|
span= challengers.easy.opponentName
|
||||||
if challengers.easy.codeLanguage
|
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
|
div.difficulty
|
||||||
span(data-i18n="general.easy") Easy
|
span(data-i18n="general.easy") Easy
|
||||||
div(data-i18n="ladder.vs").vs VS
|
div(data-i18n="ladder.vs").vs VS
|
||||||
|
@ -67,7 +67,7 @@ block modal-body-content
|
||||||
div.opponent-name.name-label
|
div.opponent-name.name-label
|
||||||
span= challengers.medium.opponentName
|
span= challengers.medium.opponentName
|
||||||
if challengers.medium.codeLanguage
|
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
|
div.difficulty
|
||||||
span(data-i18n="general.medium") Medium
|
span(data-i18n="general.medium") Medium
|
||||||
div(data-i18n="ladder.vs").vs VS
|
div(data-i18n="ladder.vs").vs VS
|
||||||
|
@ -84,7 +84,7 @@ block modal-body-content
|
||||||
div.opponent-name.name-label
|
div.opponent-name.name-label
|
||||||
span= challengers.hard.opponentName
|
span= challengers.hard.opponentName
|
||||||
if challengers.hard.codeLanguage
|
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
|
div.difficulty
|
||||||
span(data-i18n="general.hard") Hard
|
span(data-i18n="general.hard") Hard
|
||||||
div(data-i18n="ladder.vs").vs VS
|
div(data-i18n="ladder.vs").vs VS
|
||||||
|
|
|
@ -52,7 +52,7 @@ module.exports = class HomeView extends RootView
|
||||||
@updateLanguageLogos codeLanguage
|
@updateLanguageLogos codeLanguage
|
||||||
|
|
||||||
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) ->
|
onCodeLanguageSelected: (e) ->
|
||||||
target = $(e.target).closest('.code-language')
|
target = $(e.target).closest('.code-language')
|
||||||
|
|
|
@ -6,14 +6,20 @@ console.log 'template', template
|
||||||
module.exports = class JobProfileCodeModal extends ModalView
|
module.exports = class JobProfileCodeModal extends ModalView
|
||||||
id: 'job_profile_code_modal'
|
id: 'job_profile_code_modal'
|
||||||
template: template
|
template: template
|
||||||
|
modalWidthPercent: 90
|
||||||
|
plain: true
|
||||||
|
|
||||||
constructor: (options) ->
|
constructor: (options) ->
|
||||||
super(arguments...)
|
super(arguments...)
|
||||||
@session = options.session
|
@session = options.session
|
||||||
|
|
||||||
|
getRenderData: ->
|
||||||
|
c = super()
|
||||||
|
c.session = @session
|
||||||
|
c
|
||||||
|
|
||||||
afterRender: ->
|
afterRender: ->
|
||||||
super()
|
super()
|
||||||
return unless @session.loaded
|
|
||||||
codeView = new LevelSessionCodeView({session:@session})
|
codeView = new LevelSessionCodeView({session:@session})
|
||||||
@insertSubView(codeView)
|
@insertSubView(codeView, @$el.find('.level-session-code-view'))
|
||||||
|
|
|
@ -590,7 +590,7 @@ module.exports = class ProfileView extends RootView
|
||||||
]
|
]
|
||||||
|
|
||||||
onSessionLinkPressed: (e) ->
|
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
|
session = _.find @sessions.models, (session) -> session.id is sessionID
|
||||||
modal = new JobProfileCodeModal({session:session})
|
modal = new JobProfileCodeModal({session:session})
|
||||||
@openModalView modal
|
@openModalView modal
|
|
@ -7,27 +7,28 @@ LevelSession = require 'models/LevelSession'
|
||||||
module.exports = class LevelSessionCodeView extends CocoView
|
module.exports = class LevelSessionCodeView extends CocoView
|
||||||
className: 'level-session-code-view'
|
className: 'level-session-code-view'
|
||||||
template: template
|
template: template
|
||||||
modalWidthPercent: 80
|
|
||||||
plain: true
|
|
||||||
|
|
||||||
constructor: (options) ->
|
constructor: (options) ->
|
||||||
super(options)
|
super(options)
|
||||||
@session = options.session
|
@session = options.session
|
||||||
@level = LevelSession.getReferencedModel(@session.get('level'), LevelSession.schema.properties.level)
|
@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'
|
@supermodel.loadModel @level, 'level'
|
||||||
|
|
||||||
getRenderData: ->
|
getRenderData: ->
|
||||||
c = super()
|
c = super()
|
||||||
c.levelIcon = @level.get('icon')
|
c.levelIcon = @level.get('banner') or @level.get('icon')
|
||||||
c.levelName = @level.get('name')
|
c.levelName = @level.get('name')
|
||||||
c.levelDescription = marked(@level.get('employerDescription') or '')
|
c.levelDescription = marked(@level.get('employerDescription') or '')
|
||||||
c.levelSpells = @organizeCode()
|
c.levelSpells = @organizeCode()
|
||||||
|
c.sessionLink = "/play/level/" + (@level.get('slug') or @level.id) + "?team=" + (@session.get('team') || 'humans') + "&session=" + @session.id
|
||||||
c
|
c
|
||||||
|
|
||||||
afterRender: ->
|
afterRender: ->
|
||||||
super()
|
super()
|
||||||
@$el.find('.code').each (index, codeEl) ->
|
@$el.find('.code').each (index, codeEl) ->
|
||||||
|
height = parseInt($(codeEl).data('height'))
|
||||||
|
$(codeEl).height(height)
|
||||||
editor = ace.edit codeEl
|
editor = ace.edit codeEl
|
||||||
editor.setReadOnly true
|
editor.setReadOnly true
|
||||||
aceSession = editor.getSession()
|
aceSession = editor.getSession()
|
||||||
|
@ -38,9 +39,12 @@ module.exports = class LevelSessionCodeView extends CocoView
|
||||||
teamSpells = @session.get('teamSpells')[team] or []
|
teamSpells = @session.get('teamSpells')[team] or []
|
||||||
filteredSpells = []
|
filteredSpells = []
|
||||||
for spell in teamSpells
|
for spell in teamSpells
|
||||||
code = @session.getSourceFor(spell)
|
code = @session.getSourceFor(spell) ? ''
|
||||||
|
lines = code.split('\n').length
|
||||||
|
height = lines * 16 + 20
|
||||||
filteredSpells.push {
|
filteredSpells.push {
|
||||||
code: code
|
code: code
|
||||||
name: spell.split('/')[1]
|
name: spell
|
||||||
|
height: height
|
||||||
}
|
}
|
||||||
filteredSpells
|
filteredSpells
|
|
@ -13,7 +13,7 @@ module.exports = class SettingsTabView extends CocoView
|
||||||
# not thangs or scripts or the backend stuff
|
# not thangs or scripts or the backend stuff
|
||||||
editableSettings: [
|
editableSettings: [
|
||||||
'name', 'description', 'documentation', 'nextLevel', 'background', 'victory', 'i18n', 'icon', 'goals',
|
'name', 'description', 'documentation', 'nextLevel', 'background', 'victory', 'i18n', 'icon', 'goals',
|
||||||
'type', 'showsGuide'
|
'type', 'showsGuide', 'banner', 'employerDescription'
|
||||||
]
|
]
|
||||||
|
|
||||||
subscriptions:
|
subscriptions:
|
||||||
|
|
|
@ -25,6 +25,8 @@ LevelHandler = class LevelHandler extends Handler
|
||||||
'goals'
|
'goals'
|
||||||
'type'
|
'type'
|
||||||
'showsGuide'
|
'showsGuide'
|
||||||
|
'banner'
|
||||||
|
'employerDescription'
|
||||||
]
|
]
|
||||||
|
|
||||||
postEditableProperties: ['name']
|
postEditableProperties: ['name']
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
mail = require '../commons/mail'
|
mail = require '../commons/mail'
|
||||||
MailSent = require '../mail/sent/MailSent'
|
MailSent = require '../mail/sent/MailSent'
|
||||||
|
UserRemark = require '../users/remarks/UserRemark'
|
||||||
User = require '../users/User'
|
User = require '../users/User'
|
||||||
async = require 'async'
|
async = require 'async'
|
||||||
errors = require '../commons/errors'
|
errors = require '../commons/errors'
|
||||||
|
@ -28,6 +29,12 @@ setupScheduledEmails = ->
|
||||||
,
|
,
|
||||||
taskFunction: employerNewCandidatesAvailableTask
|
taskFunction: employerNewCandidatesAvailableTask
|
||||||
frequencyMs: 10 * 60 * 1000 #10 minutes
|
frequencyMs: 10 * 60 * 1000 #10 minutes
|
||||||
|
,
|
||||||
|
taskFunction: unapprovedCandidateFinishProfileTask
|
||||||
|
frequencyMs: 10 * 60 * 1000
|
||||||
|
,
|
||||||
|
taskFunction: emailUserRemarkTaskRemindersTask
|
||||||
|
frequencyMs: 10 * 60 * 1000
|
||||||
]
|
]
|
||||||
|
|
||||||
for mailTask in mailTasks
|
for mailTask in mailTasks
|
||||||
|
@ -35,8 +42,7 @@ setupScheduledEmails = ->
|
||||||
|
|
||||||
testForLockManager = -> unless lockManager then throw "The system isn't configured to do distributed locking!"
|
testForLockManager = -> unless lockManager then throw "The system isn't configured to do distributed locking!"
|
||||||
|
|
||||||
### Candidate Update Reminder Task ###
|
### Approved Candidate Update Reminder Task ###
|
||||||
|
|
||||||
candidateUpdateProfileTask = ->
|
candidateUpdateProfileTask = ->
|
||||||
mailTaskName = "candidateUpdateProfileTask"
|
mailTaskName = "candidateUpdateProfileTask"
|
||||||
lockDurationMs = 2 * 60 * 1000
|
lockDurationMs = 2 * 60 * 1000
|
||||||
|
@ -132,7 +138,103 @@ sendReminderEmailToCandidate = (candidate, sendEmailCallback) ->
|
||||||
sendwithus.api.send context, (err, result) ->
|
sendwithus.api.send context, (err, result) ->
|
||||||
log.error "Error sending candidate update reminder email: #{err} with result #{result}" if err
|
log.error "Error sending candidate update reminder email: #{err} with result #{result}" if err
|
||||||
sendEmailCallback null
|
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 ###
|
### Internal Candidate Update Reminder Email ###
|
||||||
internalCandidateUpdateTask = ->
|
internalCandidateUpdateTask = ->
|
||||||
mailTaskName = "internalCandidateUpdateTask"
|
mailTaskName = "internalCandidateUpdateTask"
|
||||||
|
@ -304,6 +406,99 @@ sendEmployerNewCandidatesAvailableEmail = (employer, cb) ->
|
||||||
cb null
|
cb null
|
||||||
|
|
||||||
### End Employer New Candidates Available Email ###
|
### 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 ###
|
### New Recruit Leaderboard Email ###
|
||||||
###
|
###
|
||||||
|
|