From f5e3e717f1ed50141885ca5b71b89d88b2f5dc69 Mon Sep 17 00:00:00 2001 From: pouyio Date: Mon, 17 Mar 2014 12:33:35 +0100 Subject: [PATCH 01/41] Update diplomat.jade added a spanish translator --- app/templates/contribute/diplomat.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/templates/contribute/diplomat.jade b/app/templates/contribute/diplomat.jade index 881ebc42e..c553bf9f9 100644 --- a/app/templates/contribute/diplomat.jade +++ b/app/templates/contribute/diplomat.jade @@ -76,7 +76,7 @@ block content li Dutch - Glen De Cauwsemaecker, Guido Zuidhof, Ruben Vereecken li Greek - Stergios li Latin American Spanish - Jesús Ruppel, Matthew Burt, Mariano Luzza - li Spain Spanish - Matthew Burt, DanielRodriguezRivero, Anon + li Spain Spanish - Matthew Burt, DanielRodriguezRivero, Anon, Pouyio li French - Xeonarno, Elfisen, Armaldio, MartinDelille, pstweb, veritable, jaybi, xavismeh, Anon li Hungarian - ferpeter, csuvsaregal, atlantisguru, Anon li Japanese - g1itch, kengos From 4d09844de83961cdab4a6fb89562b6ed8631c6c6 Mon Sep 17 00:00:00 2001 From: Glen De Cauwsemaecker Date: Fri, 21 Mar 2014 03:26:26 +0100 Subject: [PATCH 02/41] new variable system implemented and refactored a lot of files already. --- .../coco-dev-setup/batch/config/config | 3 -- .../coco-dev-setup/batch/config/config.coco | 3 ++ .../coco-dev-setup/batch/config/downloads | 1 - .../batch/config/downloads.coco | 21 +++++++++ .../coco-dev-setup/batch/config/downloads_32 | 3 -- .../coco-dev-setup/batch/config/downloads_64 | 3 -- .../batch/config/downloads_7_32 | 1 - .../batch/config/downloads_7_64 | 1 - .../batch/config/downloads_vista_32 | 1 - .../batch/config/downloads_vista_64 | 1 - .../batch/config/{header => header.coco} | 0 .../windows/coco-dev-setup/batch/config/info | 13 ------ .../batch/{README.txt => config/info.coco} | 3 +- .../coco-dev-setup/batch/config/license.coco | 10 ++++ .../batch/config/{tips => tips.coco} | 0 .../coco-dev-setup/batch/get_config.bat | 4 ++ .../coco-dev-setup/batch/get_download.bat | 4 ++ .../windows/coco-dev-setup/batch/get_text.bat | 4 ++ .../windows/coco-dev-setup/batch/get_var.exe | Bin 0 -> 28160 bytes .../windows/coco-dev-setup/batch/license.txt | 11 ----- .../coco-dev-setup/batch/localisation/en | 43 ------------------ .../coco-dev-setup/batch/localisation/en.coco | 41 +++++++++++++++++ .../coco-dev-setup/batch/localisation/fr | 43 ------------------ .../batch/localisation/languages | 3 -- .../coco-dev-setup/batch/localisation/nl | 43 ------------------ .../coco-dev-setup/batch/localisation/nl.coco | 41 +++++++++++++++++ .../coco-dev-setup/batch/print_file.bat | 7 +++ .../coco-dev-setup/batch/print_header.bat | 4 ++ .../coco-dev-setup/batch/print_info.bat | 4 ++ .../coco-dev-setup/batch/print_license.bat | 4 ++ .../coco-dev-setup/batch/print_tips.bat | 4 ++ .../batch/{ => recycle_bin}/dev-setup.bat | 0 .../batch/{ => recycle_bin}/git-test.bat | 0 33 files changed, 152 insertions(+), 172 deletions(-) delete mode 100755 scripts/windows/coco-dev-setup/batch/config/config create mode 100755 scripts/windows/coco-dev-setup/batch/config/config.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/config/downloads create mode 100755 scripts/windows/coco-dev-setup/batch/config/downloads.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/config/downloads_32 delete mode 100755 scripts/windows/coco-dev-setup/batch/config/downloads_64 delete mode 100755 scripts/windows/coco-dev-setup/batch/config/downloads_7_32 delete mode 100755 scripts/windows/coco-dev-setup/batch/config/downloads_7_64 delete mode 100755 scripts/windows/coco-dev-setup/batch/config/downloads_vista_32 delete mode 100755 scripts/windows/coco-dev-setup/batch/config/downloads_vista_64 rename scripts/windows/coco-dev-setup/batch/config/{header => header.coco} (100%) delete mode 100755 scripts/windows/coco-dev-setup/batch/config/info rename scripts/windows/coco-dev-setup/batch/{README.txt => config/info.coco} (93%) create mode 100755 scripts/windows/coco-dev-setup/batch/config/license.coco rename scripts/windows/coco-dev-setup/batch/config/{tips => tips.coco} (100%) create mode 100755 scripts/windows/coco-dev-setup/batch/get_config.bat create mode 100755 scripts/windows/coco-dev-setup/batch/get_download.bat create mode 100755 scripts/windows/coco-dev-setup/batch/get_text.bat create mode 100755 scripts/windows/coco-dev-setup/batch/get_var.exe delete mode 100755 scripts/windows/coco-dev-setup/batch/license.txt delete mode 100755 scripts/windows/coco-dev-setup/batch/localisation/en create mode 100755 scripts/windows/coco-dev-setup/batch/localisation/en.coco delete mode 100755 scripts/windows/coco-dev-setup/batch/localisation/fr delete mode 100755 scripts/windows/coco-dev-setup/batch/localisation/languages delete mode 100755 scripts/windows/coco-dev-setup/batch/localisation/nl create mode 100755 scripts/windows/coco-dev-setup/batch/localisation/nl.coco create mode 100755 scripts/windows/coco-dev-setup/batch/print_file.bat create mode 100755 scripts/windows/coco-dev-setup/batch/print_header.bat create mode 100755 scripts/windows/coco-dev-setup/batch/print_info.bat create mode 100755 scripts/windows/coco-dev-setup/batch/print_license.bat create mode 100755 scripts/windows/coco-dev-setup/batch/print_tips.bat rename scripts/windows/coco-dev-setup/batch/{ => recycle_bin}/dev-setup.bat (100%) rename scripts/windows/coco-dev-setup/batch/{ => recycle_bin}/git-test.bat (100%) diff --git a/scripts/windows/coco-dev-setup/batch/config/config b/scripts/windows/coco-dev-setup/batch/config/config deleted file mode 100755 index 921ce4db9..000000000 --- a/scripts/windows/coco-dev-setup/batch/config/config +++ /dev/null @@ -1,3 +0,0 @@ -1.0 -GlenDC -CodeCombat.com 2013-2014 \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/config.coco b/scripts/windows/coco-dev-setup/batch/config/config.coco new file mode 100755 index 000000000..3ce86efa4 --- /dev/null +++ b/scripts/windows/coco-dev-setup/batch/config/config.coco @@ -0,0 +1,3 @@ +version=1.0 +author=GlenDC +copyright=CodeCombat.com 2013-2014 \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/downloads b/scripts/windows/coco-dev-setup/batch/config/downloads deleted file mode 100755 index 8b9a58324..000000000 --- a/scripts/windows/coco-dev-setup/batch/config/downloads +++ /dev/null @@ -1 +0,0 @@ -https://msysgit.googlecode.com/files/Git-1.8.5.2-preview20131230.exe \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/downloads.coco b/scripts/windows/coco-dev-setup/batch/config/downloads.coco new file mode 100755 index 000000000..47253f152 --- /dev/null +++ b/scripts/windows/coco-dev-setup/batch/config/downloads.coco @@ -0,0 +1,21 @@ +[general] + [32] + nodejs=http://nodejs.org/dist/v0.10.25/node-v0.10.25-x86.msi + ruby=http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.0.0-p353.exe?direct + python=http://www.python.org/ftp/python/2.7.6/python-2.7.6.msi + [64] + nodejs=http://nodejs.org/dist/v0.10.25/x64/node-v0.10.25-x64.msi + ruby=http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.0.0-p353-x64.exe?direct + python=http://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi + [general] + gitbash=https://msysgit.googlecode.com/files/Git-1.8.5.2-preview20131230.exe +[win7] + [32] + mongodb=http://fastdl.mongodb.org/win32/mongodb-win32-i386-2.5.4.zip + [64] + mongodb=http://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.5.4.zip +[vista] + [64] + mongodb=http://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2.5.4.zip + [32] + mongodb=http://fastdl.mongodb.org/win32/mongodb-win32-i386-2.5.4.zip \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/downloads_32 b/scripts/windows/coco-dev-setup/batch/config/downloads_32 deleted file mode 100755 index 28a9db70d..000000000 --- a/scripts/windows/coco-dev-setup/batch/config/downloads_32 +++ /dev/null @@ -1,3 +0,0 @@ -http://nodejs.org/dist/v0.10.25/node-v0.10.25-x86.msi -http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.0.0-p353.exe?direct -http://www.python.org/ftp/python/2.7.6/python-2.7.6.msi \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/downloads_64 b/scripts/windows/coco-dev-setup/batch/config/downloads_64 deleted file mode 100755 index b22b5f2da..000000000 --- a/scripts/windows/coco-dev-setup/batch/config/downloads_64 +++ /dev/null @@ -1,3 +0,0 @@ -http://nodejs.org/dist/v0.10.25/x64/node-v0.10.25-x64.msi -http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.0.0-p353-x64.exe?direct -http://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/downloads_7_32 b/scripts/windows/coco-dev-setup/batch/config/downloads_7_32 deleted file mode 100755 index dad624f59..000000000 --- a/scripts/windows/coco-dev-setup/batch/config/downloads_7_32 +++ /dev/null @@ -1 +0,0 @@ -http://fastdl.mongodb.org/win32/mongodb-win32-i386-2.5.4.zip \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/downloads_7_64 b/scripts/windows/coco-dev-setup/batch/config/downloads_7_64 deleted file mode 100755 index 5e7032e29..000000000 --- a/scripts/windows/coco-dev-setup/batch/config/downloads_7_64 +++ /dev/null @@ -1 +0,0 @@ -http://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.5.4.zip \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/downloads_vista_32 b/scripts/windows/coco-dev-setup/batch/config/downloads_vista_32 deleted file mode 100755 index dad624f59..000000000 --- a/scripts/windows/coco-dev-setup/batch/config/downloads_vista_32 +++ /dev/null @@ -1 +0,0 @@ -http://fastdl.mongodb.org/win32/mongodb-win32-i386-2.5.4.zip \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/downloads_vista_64 b/scripts/windows/coco-dev-setup/batch/config/downloads_vista_64 deleted file mode 100755 index 16d48a86a..000000000 --- a/scripts/windows/coco-dev-setup/batch/config/downloads_vista_64 +++ /dev/null @@ -1 +0,0 @@ -http://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2.5.4.zip \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/header b/scripts/windows/coco-dev-setup/batch/config/header.coco similarity index 100% rename from scripts/windows/coco-dev-setup/batch/config/header rename to scripts/windows/coco-dev-setup/batch/config/header.coco diff --git a/scripts/windows/coco-dev-setup/batch/config/info b/scripts/windows/coco-dev-setup/batch/config/info deleted file mode 100755 index b42a74484..000000000 --- a/scripts/windows/coco-dev-setup/batch/config/info +++ /dev/null @@ -1,13 +0,0 @@ -====================================================================== - _____ _ _____ _ _ - / __ \ | | / __ \ | | | | - | / \/ ___ __| | ___ | / \/ ___ _ __ ___ | |__ __ _| |_ - | | / _ \ / _` |/ _ \ | | / _ \| '_ ` _ \| '_ \ / _` | __| - | \__/\ (_) | (_| | __/ | \__/\ (_) | | | | | | |_) | (_| | |_ - \____/\___/ \__,_|\___| \____/\___/|_| |_| |_|_.__/ \__,_|\__| - -====================================================================== - -The installation of your CodeCombat Development Environment was succesfull! -You are now ready to start contributing and join our wonderfull community! -But where and how do you start your journey? \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/README.txt b/scripts/windows/coco-dev-setup/batch/config/info.coco similarity index 93% rename from scripts/windows/coco-dev-setup/batch/README.txt rename to scripts/windows/coco-dev-setup/batch/config/info.coco index 1d5b84cd0..66ee83329 100755 --- a/scripts/windows/coco-dev-setup/batch/README.txt +++ b/scripts/windows/coco-dev-setup/batch/config/info.coco @@ -6,5 +6,4 @@ | \__/\ (_) | (_| | __/ | \__/\ (_) | | | | | | |_) | (_| | |_ \____/\___/ \__,_|\___| \____/\___/|_| |_| |_|_.__/ \__,_|\__| -====================================================================== - Readme: Hello World! \ No newline at end of file +====================================================================== \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/config/license.coco b/scripts/windows/coco-dev-setup/batch/config/license.coco new file mode 100755 index 000000000..9b753bf10 --- /dev/null +++ b/scripts/windows/coco-dev-setup/batch/config/license.coco @@ -0,0 +1,10 @@ + +The MIT License (MIT) + +Copyright (c) 2014 CodeCombat Inc. and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN sCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THESOFTWARE. diff --git a/scripts/windows/coco-dev-setup/batch/config/tips b/scripts/windows/coco-dev-setup/batch/config/tips.coco similarity index 100% rename from scripts/windows/coco-dev-setup/batch/config/tips rename to scripts/windows/coco-dev-setup/batch/config/tips.coco diff --git a/scripts/windows/coco-dev-setup/batch/get_config.bat b/scripts/windows/coco-dev-setup/batch/get_config.bat new file mode 100755 index 000000000..ccd995c70 --- /dev/null +++ b/scripts/windows/coco-dev-setup/batch/get_config.bat @@ -0,0 +1,4 @@ +@echo off +setlocal EnableDelayedExpansion +get_var config/config.coco %1 +endlocal \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/get_download.bat b/scripts/windows/coco-dev-setup/batch/get_download.bat new file mode 100755 index 000000000..38f745faf --- /dev/null +++ b/scripts/windows/coco-dev-setup/batch/get_download.bat @@ -0,0 +1,4 @@ +@echo off +setlocal EnableDelayedExpansion +get_var config/downloads.coco %1 +endlocal \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/get_text.bat b/scripts/windows/coco-dev-setup/batch/get_text.bat new file mode 100755 index 000000000..e7a5d399b --- /dev/null +++ b/scripts/windows/coco-dev-setup/batch/get_text.bat @@ -0,0 +1,4 @@ +@echo off +setlocal EnableDelayedExpansion +get_var localisation/%1.coco %2 +endlocal \ No newline at end of file diff --git a/scripts/windows/coco-dev-setup/batch/get_var.exe b/scripts/windows/coco-dev-setup/batch/get_var.exe new file mode 100755 index 0000000000000000000000000000000000000000..e07a3cf14ad077979999ff908ee47bce7e5a5133 GIT binary patch literal 28160 zcmeHwe_T}8weJ}ibkxxq6EN72hz3)y7(2rN&M*TE$RH}{ATVhBF(S-35Cp=^_#;)L z9cZ0y=hmB~x3*1NjcJ>k_Vp&MjkL{8Kn!4F4O*|UjcvUt%{>%eLVna>LY?7t3*+8YLR#xHeqrunXtEei}yej5$A_ z!5yFS%eif;;$O}!_tpB7o0=Q9Hdk#+uC8imXbdE8@gz3~8)Kf6wDWzcsbhKEnBN95@{uSFDQT-uUO#G8yIy7o(b{n#yrD)GQWjd+fOCQJnN_ z7w=;@E{;=C#psngf(HoE1sTS2_Wc4N^`p+hb@W1&+%uabl>0dDxQI%qA3Yu7xbirT z8!F|vq|wToZw`ZcyRzEJaqSb~lVBDHJUaupZ?fVyn@SA(KB>_EA=*;C&L z!1BpxIE11>@uDaWJICcK9{+LscSxXHWh=9D(fLo6+PO10D%hZlz0*BOs7;{Ss}7AS zFx3@Jcm@xlQ)ZCZBruB3nKALdEY3Ewo15=rv^{|*aRkT-xWE|75 zQZ*}xF{62k(44P{UXk%QOQQ(~G0@M+8JSLpPHDW>le(|A%k7}AF6#5GuyZv>iEU?S z&~`Mj$Kh~q+}Lc?pJZ;_G$tX}HFmUU_^B|*{)2?MB(X5{ zY$-b%akNp_a{^A>SuX}Qg!Uw9nx`|2H7YpM>!#D)jwDj-@Ww=MxI`1$8?W&vvO;~N zoQqil!d!rUQV_FtU^1Hlknr8ir4LsCC_d~+3UAVfH^qncoFUvLZIG2TDWH}M?cu4q z;=-EIYLWTY$Z@&!rYwKtgZ|ia9UrRM$qs%_?8)%P=YuJx z)8VE1((a}4BoW`>gV3&?DEr78p2j~H4;jyci(roSP*-0#*kigH+8M722TwJ}FwPnI zsunD*;TzBu^GyDZwNe!;QnQ286LEL7W0J0=1r4V2Yosx{m+J96Zm8S&l^BXegubQf zNNWIH!2@9oJ9@fX5~$@MOe7LX5}HQHaq%7~2FZME)Pyt8`0!)X2|f}bG|_|rs`}Rh z7fpO0vDxjof-{H7??v}mkXtu3a!}|LO*js4-HF~c5rGwFq@q!P86Z|hG z5&NYt2x{+-pI{EA@!hw9f<1ktJS2Eh;@&YOHnoR?ecrI6_kd$0BFvN|MgCy`vrdH? zyEn0tL8$S91!#a8*JTTW`C2TDT2z_HP8GiZBr(U8)NUtxm32lcdihz9+;{>Y&rvHf zotI|M8?NX*P%+ZK9sEf?PxMEN#_XfiRVf*V!Y)*i2Ys09aB!%*z<5|tr&Ui$4vL=* za&S)?!(4~ibW$XiuMQU*4zshO5{+l^2Kx;44Z}oFuTYriJ_tsn;#9aGWoMa8(EDgJ&~QvJ-PA6Qvas#& z4WnSRMZn4N|27NqXc0ytZ5TMzMnssd!e11m)Pw^mo4w)U6sH72=4d*PmLjwic*Er> z>0M&yShh^fdLrv$yliHuBgSjJ82oeUE9b72g12&hDMn$-GyvE&4&YT0z|7AB08l2P zB%vgS29wwbP#?#D>Tpep!PMTpOz>Ud9eNkx^oA#w!i7aPq}cfPbwK|SUvdqT`m4~X zq%{P9mL~q`58;eYshvReI8enM6(q+mox^d0P)T~vr|d&h^9)v;Qa`4L=$^>4nS$Jl z&1wmE{q3nTz8@1OuHs=V~d3duNe;y-&ZJzN$TMZ&rtM${jd@Z%hP*Vg*G&( zfvO@d_$(U^MODqopH!EwPVw{VX51l=R*Q*^H++Y4;6AzIuZYsmt7#-vo0p~)o4N!_3OToODK|J z_JsK>bFrW%)TKAQUdgUoHkAj}rs%*t_B-B*xoBw*#+ah4up9<542-aBC?cv%ud}lU zHaQP$l1ZFSB!)MYhgTJcHx*bv3f@lcSI<_c%Ro?%ND!=1)+CV(QQlu4lXq#E>*n?4 z9a>ogshD05ZyW)Ufn>HyA8{2~W(H?5myH$L!!y~c#?C;C+Z|*L99P?-rg#{xoC!g$5Um2A7EE zmCt;?fi$=eUP0O=tQ@e5v(i{~b|{P#r0a3BwGGUe?wB z2CYD!FXwbEzrr0`s%KneWs$WbIFl{4vof30xrV(GO(>!{{Coiyyq7I4cOvVdWaMWw ztdNRy=uUL$TK|mF{B1?-Qp~oZ((r_f8NRI;FP`>00|o`vG~^(iJL8MUSra=csMHs%x#KK%=BD zbS+sIdJ%PSda36^A8K@8{2rbn4{Ac!uj{__4cuF=`ebru(aGu zSb9Y=DlWi3s%M4^W~z~d=mCL<4b(a=bg2zo|Np)ojkaD5oM9_#|CpC zX@*!=^=>q(JF!OtlZtzhBo2x3yRm?JS@*!b^w20gI5Y!^z9B>p(S&wLj2c{M5Orfr z5ouu)a+*64l8icN=o|7|R+!AVO14J>-OPfaSX6$Kka2pguLUM~EjzCV?_q_8D95%Z zhbCQTC%x9;z!cqyZnu#8x=roE6&3>o`GR_Qt*-{mp}o+Y1ZQP5p#`%cU=-BmWH27a z7bz^Vr~n(!CPiAk|*fNO8bk*7wSin{%GZm{eu&I&w zA`E{ATV{Zj0YD>K8B_Jw!W=C-%5^R4$u5_Xg{>AXY?+-^3Kj;xOBQC?Q4pNZmXXsu z1VQOev4f<@PqGwH{;yenhn2dYKRmxTuM3#|3AC?T-0uo@* zd$&N{b*-uNw5Kmd_l0K(m*awEBQF?BT@0mXIAi-nkjkE37&Phk_N#&w^iM`tGT~w} zKEcXFvSDa2s7ll#-?5ay*h7SRBT>vcLLU)p@D*?!L*T^P<&R-Q;5(h2qqaCmguR^F z<&3?!29Y9dKoGwr7gD=Ir?e!Eu!GFG1m>*bCYXTMhhfS@=h;6;qXU~2#>s*bcfkv( z!85TzNPF*H?5+beM8z4lx?J}{!K~=2QfCxFvZnRw!~O68y@VhMt&3;)RwVdvz5t_rA4kviz@h;(4KfzFkbNVGmrzZpgz=nJ#;ZT zFbTJm6bVbkqmUwBi=eutUDxtO66tHxE(Rx2=fEAz5fAU{bX9_~02sntA;zeNH;a^~ z=+|Htn}k|8nP3T9smItDc^1|htTJ@!h-cj4B7}9D!g_QJ7ZIQYMm_}oPUIidQXr#+7)laN z=i&VH$Px6&q~a}Qu-QWxhTl6$WOY9t6nqR~G@73F-~;UJv{wTOtgO6FRq28ujxp|p zFpvuBDcKlfJd0H%vCeQ=G5;>acndCz^k7utG8tJNfs3pf1wIX%z-rj32|Ec;;4*o9 zxF+pivQ_1k@R;|r3QBNW&j)9)?r9EvaB>@ob0Egl9viK6lClp8tkJ~X$M%-9vt5Nw z)mT_5#%z1b-3Z#`n3A?XwVb#FXgT=j(B5(`u!uad)w+4$Szr0k4iL^{DZecK*J0!@^Qeovd!)`fjf?*e1X({P z7i@9GBQczT#PBR)4^=o%jr3C3lR(21HmS?5;aFGafkF+=5^lO+S(2BD9n%z!%7x{E zb@Trr*m}T(ZL^;X*eYolVeiZvPAWpCZ$XWgO*WnPhU1%9H$P4B-W}224P9U#@GryWSf}YU-+`M=tQ!dcNbly;L{e4* zU7J8kUOe_br&yMaQiO~-l9X8%(Uz7v`R@uFFIw931C`BsiNx43i~^aX&yq|qKa?3G z@fJu9>Jg|--DGMP=2FWcF{gYyoef(**s-_`%MUWn*x`xta=q@v?JPQBa;_DUbM`CN zgGFcNCrr(?+-PbJkGv5%y)r>Z{y)$P9?IBk2wI)`-UK;w<^JnMkEBf5KFyaXOaVoU zY?mhWBN6uP*w^G8>B88P)}iflS?{?&y|^4*Qa`i~`_-oQffzKq=pN;KA2q<(rz(Qqu7@zF>{Jp*&#?I#B+f=ivmd@J_a~+EpMSW|6haAXj*$eC0od` z#$k)4h$`5d`mQ2TD=S}fQ=;~@Q7S|pDBhs>4(o`JqK#%|-$8?%nGuj8GkY3KnwTU~ zTDF*ajwOo~eSbAG`%uixu*EViGy8)S&P4}^!-1(JxA$=Wj7m9k*lVX(M$f|?Q_!Vw zrlh#i!JPU?QITb8Fp(A6U98C#PGipG@Kk0uq@F%^Ej(V^;h&v)7fVAI>pOvjaFdNS z8CYf|+nLOABk4QBO?Ef>3J7`$#ktVQ73V$->ql)y)StG(QG1zSw%n)!ZhdH2BQ6K)y?$~x`L~V(vmpUWb6$s9ROr%f`a#Fj=v4#uv>)~8y2rF40 z>vDHu^{0hcxEIFXfBj}L6~$Z6`r}!Vz7#ADAgMI9Tf6Z7>{2HdJ6*U*PZNUIiiAo( z+9t9k>QnDnd?oHt-?Rl6_6%WLVUK2il-7^&OU^1y>Wm3qf zUNxJA9p|2~V~~$d!*t}ZRq7jFqW-31U=HH(*xx{)v#7@;zJ@%>tg-b3vl!97gi0>8 zhdBl#@dqN>-wKbfgk2guhF$9LB!xapVYeFdKZw*tdR;)$pxSsfDj?P@kO@LA@LZ~MX1Pe1*^o9vZy{pbE< zeR=!sZJ6$r$a<#)Tc)fs#nc zU}>b}a<_xtXJaqvhiLb4>#(6zad}O*<1&2#!B-@ZL1-gIDi9QQ@U#WZAAkx0MO&WH z&UF%rL7r{Y!}dM{tI^BmU*@FkXMQ>`i1tM9QFI_g5-nQ0CUfD*;T`d0q}TOO!Qn3T z9OY)JG%1L~umdf=iBZgP9d^8x?_%mWyp7?Xz{_2Ewq$v?E9H$m@a7m|oV+JXR`gdz z{_r@FKdcaW;(mCp=)*hWV^5EhyP91Za7HQy*F;LLOdxj06(?To3S$4=?c>C*6~tbJ z6&zO4)|MuVUCTBidetM-OA@@EPpAI)hfknE&j6@a!mBX9rQgk2&V!Xi}zn6->~D(i29d;C3eKN z!{aG5Gx$%Dk`XB7(CGT4P|6`F<&Yqq_S?Xjw9TQwZzD~gp_DlAIYzM0JQ2QcQQBV04RDMQ*bxbIt{nsh=G3n#<5zDeeYl?>V3`U$Wktb6~XkMm4=#R}- zyvsd_*BB0-5^pstPD^10Y00gpch7m4Y<#x$)!hjX<2wj``;1fvf9I?08oLzU(>E}g z-jMXMk63w{IUKx%k0qwC81^!7MDdzm{A6env#Ue94O$L~M}ffxba+o3O{hnJKs&2q zo9?lW1LQu0w`nb>gIcIGmSC=*f;v)Ibd8@+-{OUa?SVXr{?_Pj0| za)X@}8_dwn%|NdVSzCVyM4^&F?5PiO!NtPJv=_{d(^nCc95MnkV*y88NO!TuxP1X|9rr%!jVk=%iXKEv|h?pBNkrx4Tq zSpX%B6@AfxpJ6!@UX|6U>eTYPGKr_Qo=oxwK~4YN=ppLYLZyCvtiKcV3)HODVaX z6Q05izA2n+ZPNPhVc5jgKHGXac-Ow2@m%1JXu@SQQ`2qCsbT3q9++f0J@5zi4noj1 zEQsCs;L3<&s1mbr5P*p8@PSq^$+rkm2$sue!U$@8J!^%hQvN@*n9vf0oZ;yL71t0f z1E7+B0YjWBxmo_e#<#5cGtYH^Izc^?T6?@{(>20~&hK98Hg36)q$s|3J( zd*0@PvA_>HR;cT^GWlx*j7JlKPtQgN5k#YcMnuow@GS!Ei(s!wl>bl1@{frYOZHCW zp?K5lWG|6rgI0$o5U{=%@Qr?XgU?10o>+$h6%)km=cPbK0Gbub)zG`W5j*8#s|QQ* z23-CiRl_O=!?VKfK{O*1W4iDvM6M&@IoQs^_k#m1Hz=9F0ru@jKL&;i$Ncw1Z|h`& zpVsi?L)XD`>e+NnGt5YX3b3%2uo4)3V&L_)?&Zi8dF5bsif|wSdh-S2q2g%@wmWz1DMkcR~1~t)yB!I3P zsHxNNB>-GU?26C=Tr^`JI@0Zx2%_eQqtA(6EW;)sa`LyM58~di<8n0E7rl6lhKUBR z;Ewu14Jk+BK`j=A%X|)?J2BF0;2s}n(9{4MzXmYEXQr3d6>WsvIDrSXaMs}L`*11v zAoh>0C9LX{6o@^VQI3aWbnA#xstf+tke56@N9e| zD8OdsT|0pyIIXO#PK9?3dN76k$eN?ro1pKC5xu<_000ajnxI7^wj5{UgAk4BY9aQq z2J}828Fe&4gQkJspz>%FpaC$oZVvxC@i<@=s-Pi@!Wq=)yF&b2z=?0bCj2^5$vY%5 zwc(8p*H5W)IAakAm$BXH>!nWZ)X5}t>W(8^@V}g8V_#5H2J+OP!E)DbR0n4J=)xBh z!$3b3AN_zisyj+@V$;pQ6jntu=qZ{(VvA;w-1ylS>4QP-u?2Xr+?9lLa0!-)bigB5 zhbx(a5CxxJmJ)B6Ko8z(UlE{5mIC}_z%K&4$Mz6L{0Fwp|$|7Gqztaowgj{ajW}k2kWR) z9iw5R3FR1NT^-gS(o8meGq@F0P|(PuPPB$KM~iV`(>I_ktl{k-gTDg=gt8Yk*)gEj z_l$#36%i`_Kfz-tdjVRa!6}5efT~UHo&1|<>Ho=JppNsksB_jtGcXez-biXwYf`k( zmhb|`%lkIb;E3dnM}IFc?mJ>J`zsZ#VgKL)P<71g2Zhtq>6~Do^IePRoUwq;*(o@C z4<QCP6ge*2}ceB&0y-$MylJPQ`B_ z<*0)klTqo5Uqd2I!fhy<0JxwAFgXO{Bizx1M6^L^;&D0M38%Gy?DJI!RB%Nl`kh&D z)u|;~{6ryI5kK(1p^0!{^w|J{p({|p{pM=_wkv^Y*h!&zfTQW;{{S&UJte*4Uqby! zJy)mo6%qCa1?+v;>(H_;-M>5ZD(pm(7*UY_2K@ehfp@L2^H zoQdCSM1y+KmGX8-0^Umxorunl7tV<|%NeO}9lV&NEBLNiAFfZ)M^I9)$P2B}F=Bej z8TRne;4pKL+K~4QJBAUiiJwtJbB5#}Qn<%yj*=2zOg1D>YYqS3F_7b_#EqhQQCPu= z;tDPd?bOExQ3M+`t zPX=!+>T3HT7MU05gbi7|!P2qGa5^#3-cYyNdcFA_H{M$U>Nr8s>0_ay^9>4VVSk>M z2h4=zDOBVoz(<}fwqw6p@DOjC&PzU`C{g#=Np@24YZAFXI4-iq_UKOJA(+&icyJOv zNQe|@60wPXCw+}kq_tkdTimsp*k4;eYMz=OYF}Wz*vy;SA>DE4M0)D3`+U$KaW0QS z73gO{^eM4m?ncKjCUA7NFq4==0`iep;}>E!5ivtN<(P^41WzZnIE5DR8!>wdez@{M zZ|DkzoTLECITzDk!5N#*?r&3IND|CgwL%Khk1zYtJRj1{22tw+J%`+#0Y&`yG$Gaef9kmW#B z842z(!F@0+VI6J1g!Y-#?pu%c*W`A*+Urm3Rg8BEaQ*M2V#NsVeviAh$Ee45#U3OL zGw7qMK}jc#|13d|5cCcu{Y_xDK^;ob0Jse^WSV?sL0i`|+p~G4ND<`nK zWyF%qm}3YwscX^0IzpbI>u^n>4qtSB04U&>@t}{+_Ypo)1Oc&7*?;W3f+*6t_mOS3 z9i}mU{=wLkfSyqQS_y?LYa;0-0zXCIOaTu4JR{J9{2cV0xz2*m_w#2-jf7t=^`ChK z!?Y_Df{rMmVb9oy z8%9zes`B$Gi!693q~`Pj^EA{XeCy;_cG{mgD_T2-m~? z-=OQa1gNh-a3sJlp-LFw3jy-XUv3g*I1k7}?Qkh1#snJaAdU1otU%J9GiT}&+L90q z{fvHo$basQXw+v|iMy+SUf1dK(*2)=d#Oh#n?t;$Y1SR39&nb=z>Q(~K&~A}E%;~$ zG1>^)=~Bz>!dP^it>d^$C~u$)qFhCZe}LoCQC6Wepge-|ILgx~KSp^T!ejjB2Wfb|y%CU2It+aC-73r8^w{z`F$DZYSy2^j^AO`n9 z$6YByS&F}hP;TcEv+W#Z7?gSVxB&h&aar8w@Nb9kZ!x!(Ys9~;Ts`N(A4#ajy`%<& z8hZ>?E&dE48;abhr;wSvO@LYvbj~>;yt4FOL*8r}KTmxFXxD&D73QqvE5&q>| z0nWS7KZt7;*DTc12#wqWz}5gd32!4>77O(G1I@J!TayEgjmh**U%5&ZR^4bQIuu^SvlZcCHC! zAIi|(c5cLG=Z?(5J<3(w520L{hjNdd>rJt9_W6KCc?_~|$CVDKK362%eYz8cWljW7 zcx}(EDJv*D{ajXx>fG^VFUD^E$ z@}a^_6P|aj5JlG*+^r58<6?eC1fwcOCp_xDYyu(vPxm8GJ0tVU%{1 zD<~Qmw;jcY@^zHIpe$O>aR*R-iqeZRg0gT0U{Fq@+<1@-_7&PW+7}?Y+7z@aVP%>r zWu^Kv(p7%eNd8NHMk*k{(en$rcJ4e19df&}e^I`jdk}>Vx&4BoKh>Yjx6@^`{gR@6 zr2}ar3LWyCpjjASi@KU@J2i2~rTJ2}Edbp#w?~lox1i9mSmNb*>6zw?4rMgbTKcHv1p%`=Uc$v4t&rtvYwShAd+l;|d(6~H~o@VEkwu>Y;J zeBU^pmV59_c$M>$jO_=EnuC1rK48525=?1_enTtJpL9qs6QRgppUG-BuAR-MH}tZ zbkiZrh8pBPb_LXJhOsAtrLq&a2ruc15BF4e;0F9M-XV#8dTze~235i#!zQl~>7I|P zjDPSJeVl-$V=bi-MdaAbB-IW!&Db>EJW_O^usy5(9g$Qal+Vi+?fTH}og4KnEQh)b~eCW0+H`l#H z##DPtOak$l`F8AH0AFEkW0R*rCexW$;jV4m67<^b&U|-e5lLwJq}*UbbyaYyFW~m< ztoAff<|}t_uL9c#iEAW?TLV6~r@6VYS#FiMR;hDqYwTbQf7P*idjL!o6p0{dE`ub} zH1PLwT&}+<7-#^fC>D_yBIn};BhRLL1ySr?0gC5C%C$A%O2$*$NRs?G(TW)I9Uu#x zxe9Qz+V9;t+WXd%Bh#>!bl^isb$J8yOdkCcbFnWmO?@ z@MvtVw?63ijVjG2*Z#abm*@tM2>R;}R0TYvXg-MvLj8*b@na8B$-%AVFH@g2DR<|m zbRi{BwJ{gMEg?*>pD`!$iOpEV1Tz$z5%(iV!`HZDTUEoZPcfweGR$cQur%P0vVIB_ zFrsC^@DwnBp-+#13n^#i6N^Khn;(noX>}EO#+#Rdvb^QaJZHYkTUG4|$O~;6mLXSq znw{+84qAu&zFP0Z{o%8U^74wDc?HHitjy%fd37$WwG)jdLu1Jxa9q&EBzNS}uwv27 z-%RFcM`4)!0&=%PKf!qaB__A3en-_Vzq_Hay0KxqT|(f-dM3pJKp-rd+_xc*0#9|b z$7>(Qv%HwVa~ac2bHl<9VPqGoAaqfE!!)+#_+Q4A9*`9B#HFz~FYp zc?G|RcUy7Z>iR}MdM6Mc*v@y;cD@*}kf6j+j*FkTH7{Rcavj=@<9kbDoUY2<;e#36 zDCB$xPz!VEb}!wzvk-qC+f!84P*d+|Hi@&iW^@)KGSA$4mD`PpZG?BI4RH5}lHpFr zx}}u<22Oj{!=B=-b*L)JmOP1sfy z@F7gZU)Uf>s80=K?Z8Zlci#~q-BnFZ?!c}lw0#7)=777#vn9B7tEbuRYivaR7Ng3g z(ZL3m8PZ8e?kz4?=mXlkjqVz}o53BR8mj8u+dKhZV~w3q3e7?eAjDg9iEj#Q-9Ay; z=^|YXTpMw=z3~B$dq-8kj~71N+X8oi=Eiz&6Y2V&I7b5+xwBCihau!|rwK3P6|GAfw>4EYdq#n{U&R!8s+!6?f#u+a#73{2xOR29 z%r@S*RD1lOqFuGj6IdE-ZpOPAx$;-)iUyG%8dnV4r77jUs|MDOZ;oB=FOY=oZ1(tp zl>2^cY0%TW%jszrNNK3{ENu)DXWXMP7`wc-`T?PW<6ctGQZA^#@)~6Bidu<6RPUm` zWxMl&_VnAw5Owl&rNYJZ}e|Lwk<45kE->0 z`~ep}OTc=VJ0 zWBc4F?(v;R@hc#18r}A}akSb#H_9}++de1DGY7d;UO~a~Rm;{QRu^vmo@e?$K%T7Xe&eP{aP z>33xmW>jPZG9Jx%BI9(%>lytS@tMmrAIc0Z`RMWfD(ktdlUY4kA7&L>J=O=T%=$g+PpxOHGi@ohg|>WKo$Vpp7j0j)>9gl%AIyF^ zyDjI1oVB@EbGc-^BLbQ@x~mN$rw1&4cFkmi?CRS&mzNZTYk1 zBa1#OCCi*uob|6+-_4q5^;=ikN^KWyf3QVu)3Se@-Il#Rrz+=LIls>Nea^kP=G=9; z?%Z>^AP7cbgWe|^@(tS!2Mm8QOf~9^pE25ue&bJ#ZyJY4vWEJv*cS=TIwv1T8>!$&GIA5Nz2QYKUlO`w`JW6 zK6YpQAnOlV$yS@S$m$bh{Gs(8o5vQmeZzLl_7mGF+ke{Lw7qK^wq3WWv*WWDWP7vg zv;En7vs<#imi@!*6WPDa{$uvr*$ZW-)kaHmCt2s~P zJeTug&Tn%1az4mW#@f1m!B^qCoVWbDmo$#_2F_ZfrGATCpr8K0S*>Bw|ux-vIpZprjzHbA2u%52U2 zX6DP8f6V+S)3#*ylBbuPU-Isf6!RK$i}|bOADAzh|7d>8tg|ezHU4Z?oQQO|xcM^Q^^Im$k~e)e60G;yXmh=9IC=c*b}Md}!13Y4PB} zY_gf`rXo|Z$!RJ#tu<{hZ8p`Ie5QKv5-{yF?KbU$mK}hVUI15X(>J8or#Hb~52YVT ze=_}edRzMQ>Fw#Kz-MndpFW&E0&7ucXfpH}3o;gE6l4@-Y|dzcRqxE$4elS$_+iE~ z8OI@o3mJVGe8y0QCR3Z4lDQz$4mp%()<6pNkix;t$1{&)K9$*?*_(MGvk!VZnE8ID zc1hBb?FOS~o7Vz(4q>ft{QS{}DNV|m_k%5vG#XBmNxCuc3nN{6kk%{r3xOxCHaOIdwc zgISB9?M`crwaL2EddT{?^?Bt8%I?h`${x;E=cME;%E1?YIh%8QIZZh`bM`^&AIrf Date: Fri, 21 Mar 2014 12:19:47 -0400 Subject: [PATCH 03/41] Select dependents when a extant component is selected. --- app/styles/editor/components/main.sass | 3 +++ app/views/editor/components/main.coffee | 28 +++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/app/styles/editor/components/main.sass b/app/styles/editor/components/main.sass index bb8e437d6..5803020a7 100644 --- a/app/styles/editor/components/main.sass +++ b/app/styles/editor/components/main.sass @@ -14,6 +14,9 @@ h3 margin: 5px 0 + .treema-dependent > .treema-row + background-color: #FFC671 + #extant-components-column left: 0 width: 20% diff --git a/app/views/editor/components/main.coffee b/app/views/editor/components/main.coffee index 06337a6c8..aa2b71306 100644 --- a/app/views/editor/components/main.coffee +++ b/app/views/editor/components/main.coffee @@ -96,6 +96,34 @@ module.exports = class ThangComponentEditView extends CocoView @closeExistingView() @alreadySaving = false + return unless selected.length + + # select dependencies. + node = selected[0] + original = node.data.original + + toRemoveTreema = [] + dependent_class = 'treema-dependent' + try + for index, child of @extantComponentsTreema.childrenTreemas + $(child.$el).removeClass(dependent_class) + + for index, child of @extantComponentsTreema.childrenTreemas + if child.data.original == original # Here we assume that the treemas are sorted by their dependency. + break + + dep_originals = (d.original for d in child.component.attributes.dependencies) + for dep_original in dep_originals + if original == dep_original + toRemoveTreema.push child + + for dep_treema in toRemoveTreema + dep_treema.toggleSelect() + $(dep_treema.$el).addClass(dependent_class) + + catch error + console.error error + return unless selected.length row = selected[0] @selectedRow = row From dde626e759d6e7420c1421917f1a7f7f8d549b66 Mon Sep 17 00:00:00 2001 From: JasperDhaene Date: Sun, 23 Mar 2014 16:57:33 +0100 Subject: [PATCH 04/41] Update nl.coffee - small revisions/additions --- app/locale/nl.coffee | 82 ++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/app/locale/nl.coffee b/app/locale/nl.coffee index 786ac8d6c..87b4ef717 100644 --- a/app/locale/nl.coffee +++ b/app/locale/nl.coffee @@ -70,7 +70,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t old_browser_suffix: "Je kan toch proberen, maar het zal waarschijnlijk niet werken!" campaign: "Campagne" for_beginners: "Voor Beginners" -# multiplayer: "Multiplayer" + multiplayer: "Multiplayer" for_developers: "Voor ontwikkelaars" play: @@ -130,7 +130,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t wizard_tab: "Tovenaar" password_tab: "Wachtwoord" emails_tab: "Emails" -# admin: "Admin" + admin: "Administrator" gravatar_select: "Selecteer welke Gravatar foto je wilt gebruiken" gravatar_add_photos: "Voeg thumbnails en foto's toe aan je Gravatar account, gekoppeld aan jouw email-adres, om een afbeelding te kiezen." gravatar_add_more_photos: "Voeg meer afbeeldingen toe aan je Gravatar account om ze hier te gebruiken." @@ -154,7 +154,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t account_profile: edit_settings: "Instellingen Aanpassen" profile_for_prefix: "Profiel voor " -# profile_for_suffix: "" + profile_for_suffix: "" profile: "Profiel" user_not_found: "Geen gebruiker gevonden. Controleer de URL?" gravatar_not_found_mine: "We konden geen account vinden gekoppeld met:" @@ -182,7 +182,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t reload_title: "Alle Code Herladen?" reload_really: "Weet je zeker dat je dit level tot het begin wilt herladen?" reload_confirm: "Herlaad Alles" -# victory_title_prefix: "" + victory_title_prefix: "" victory_title_suffix: " Compleet" victory_sign_up: "Schrijf je in om je progressie op te slaan" victory_sign_up_poke: "Wil je jouw code opslaan? Maak een gratis account aan!" @@ -217,28 +217,28 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t editor_config: "Editor Configuratie" editor_config_title: "Editor Configuratie" editor_config_keybindings_label: "Toets instellingen" -# editor_config_keybindings_default: "Default (Ace)" + editor_config_keybindings_default: "Standaard (Ace)" editor_config_keybindings_description: "Voeg extra shortcuts toe van de gebruikelijke editors." editor_config_invisibles_label: "Toon onzichtbare" editor_config_invisibles_description: "Toon onzichtbare whitespace karakters." editor_config_indentguides_label: "Toon inspringing regels" editor_config_indentguides_description: "Toon verticale hulplijnen om de zichtbaarheid te verbeteren." editor_config_behaviors_label: "Slim gedrag" - editor_config_behaviors_description: "Auto-aanvulling (gekrulde) haakjes en aanhalingstekens." -# loading_ready: "Ready!" -# tip_insert_positions: "Shift+Click a point on the map to insert it into the spell editor." -# tip_toggle_play: "Toggle play/paused with Ctrl+P." -# tip_scrub_shortcut: "Ctrl+[ and Ctrl+] rewind and fast-forward." -# tip_guide_exists: "Click the guide at the top of the page for useful info." -# tip_open_source: "CodeCombat is 100% open source!" -# tip_beta_launch: "CodeCombat launched its beta in October, 2013." -# tip_js_beginning: "JavaScript is just the beginning." -# tip_autocast_setting: "Adjust autocast settings by clicking the gear on the cast button." -# tip_baby_coders: "In the future, even babies will be Archmages." -# tip_morale_improves: "Loading will continue until morale improves." -# tip_all_species: "We believe in equal opportunities to learn programming for all species." + editor_config_behaviors_description: "Automatisch aanvullen van (gekrulde) haakjes en aanhalingstekens." + loading_ready: "Klaar!" + tip_insert_positions: "Shift+Klik een punt op de kaart om het toe te voegen aan je spreuk editor." + tip_toggle_play: "Verwissel speel/pauze met Ctrl+P." + tip_scrub_shortcut: "Ctrl+[ and Ctrl+] om terug te spoelen en vooruit te spoelen." + tip_guide_exists: "Klik op de handleiding bovenaan het scherm voor nuttige informatie." + tip_open_source: "CodeCombat is 100% open source!" + tip_beta_launch: "CodeCombat lanceerde zijn beta versie in Oktober, 2013." + tip_js_beginning: "JavaScript is nog maar het begin." + tip_autocast_setting: "Verander de autocast instelling door te klikken op het tandwiel naast de cast knop." + tip_baby_coders: "In de toekomst zullen zelfs babies archmages zijn." #Zelfs babies zullen in de toekomst archmages zijn. + tip_morale_improves: "Het spel zal blijven laden tot de moreel verbeterd." + tip_all_species: "Wij geloven in gelijke kansen voor alle wezens om te leren programmeren." # tip_reticulating: "Reticulating spines." -# tip_harry: "Yer a Wizard, " + tip_harry: "Je bent een tovenaar, " admin: av_title: "Administrator panels" @@ -249,7 +249,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t av_other_debug_base_url: "Base (om base.jade te debuggen)" u_title: "Gebruikerslijst" lg_title: "Laatste Spelletjes" -# clas: "CLAs" + clas: "CLAs" editor: main_title: "CodeCombat Editors" @@ -434,21 +434,21 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t archmage_attribute_2: "Ervaring in programmeren en individueel initiatief. We kunnen jou helpen bij het opstarten, maar kunnen niet veel tijd spenderen om je op te leiden." how_to_join: "Hoe deel te nemen" join_desc_1: "Iedereen kan helpen! Bekijk onze " - join_desc_2: "om te starten, en vink het vierkantje hieronder aan om jouzelf te abonneren als dappere tovenaar en het laatste magische nieuws te ontvangen. Wil je met ons praten over wat er te doen is of hoe je nog meer met ons kan samenwerken? " + join_desc_2: "om te starten, en vink het vierkantje hieronder aan om jezelf te abonneren als dappere tovenaar en het laatste magische nieuws te ontvangen. Wil je met ons praten over wat er te doen is of hoe je nog meer kunt helpen? " join_desc_3: ", of vind ons in " join_desc_4: "en we bekijken het verder vandaar!" join_url_email: "E-mail ons" join_url_hipchat: "ons publiek (Engelstalig) HipChat kanaal" more_about_archmage: "Leer meer over hoe je een Machtige Tovenaar kan worden" - archmage_subscribe_desc: "Ontvang e-mails met nieuwe codeer oppurtiniteiten en aankondigingen." + archmage_subscribe_desc: "Ontvang e-mails met nieuwe codeer mogelijkheden en aankondigingen." #TODO artisan_summary_pref: "Wil je levels ontwerpen en CodeCombat's arsenaal vergroten? Mensen spelen sneller door onze content dan wij bij kunnen houden! Op dit moment is onze level editor nog wat kaal, dus wees daarvan bewust. Levels maken zal een beetje uitdagend en buggy zijn. Als jij een visie van campagnes hebt van for-loops tot" artisan_summary_suf: "dan is dit de klasse voor jou." - artisan_introduction_pref: "We moeten meer levels bouwen! Mensen schreeuwen om meer inhoud, en er zijn ook maar zoveel levels dat wij kunnen maken. Momenteel is jouw werkplaats level een; onze level editor is amper gebruikt door zelfs ons, wees dus voorzichtig. Indien je visioenen hebt van campagnes, gaande van for-loops tot" + artisan_introduction_pref: "We moeten meer levels bouwen! Mensen schreeuwen om meer inhoud, en er zijn ook maar zoveel levels dat wij kunnen maken. Momenteel is jouw werkplaats level een; onze level editor is amper gebruikt door zelfs ons, wees dus voorzichtig. Indien je visioenen hebt van campagnes, gaande van for-loops tot"#TODO artisan_introduction_suf: "dan is deze klasse waarschijnlijk iets voor jou." - artisan_attribute_1: "Enige ervaring in het maken van gelijkbare inhoud. Bijvoorbeeld ervaring het gebruiken van Blizzard's level editor. Maar dit is niet vereist!" - artisan_attribute_2: "Tot in detail testen en itereren staat voor jou gelijk aan plezier. Om goede levels te maken, moet jet het door anderen laten spelen en bereid zijn om een hele boel aan te passen." - artisan_attribute_3: "Momenteel heb je nog veel geduld nodig, doordat onze editor nog vrij ruw is en op je frustraties kan werken. Samenwerken met een Adventurer kan jou ook veel helpen." - artisan_join_desc: "Gebruik de Level Editor in deze volgorde, min of meer:" + artisan_attribute_1: "Enige ervaring in het maken van vergelijkbare inhoud. Bijvoorbeeld ervaring het gebruiken van Blizzard's level editor. Maar dit is niet vereist!" + artisan_attribute_2: "Tot in het detail testen en opnieuw proberen staat voor jou gelijk aan plezier. Om goede levels te maken, moet je het door anderen laten spelen en bereid zijn om een hele boel aan te passen." + artisan_attribute_3: "Momenteel heb je nog veel geduld nodig, doordat onze editor nog vrij ruw is en op je zenuwen kan werken. Samenwerken met een Avonturier kan jou ook veel helpen." + artisan_join_desc: "Gebruik de Level Editor min of meer in deze volgorde:" artisan_join_step1: "Lees de documentatie." artisan_join_step2: "Maak een nieuw level en bestudeer reeds bestaande levels." artisan_join_step3: "Praat met ons in ons publieke (Engelstalige) HipChat kanaal voor hulp. (optioneel)" @@ -456,28 +456,28 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t more_about_artisan: "Leer meer over hoe je een Creatieve Ambachtsman kan worden." artisan_subscribe_desc: "Ontvang e-mails met nieuws over de Level Editor." adventurer_summary: "Laten we duidelijk zijn over je rol: jij bent de tank. Jij krijgt de zware klappen te verduren. We hebben mensen nodig om spiksplinternieuwe levels te proberen en te kijken hoe deze beter kunnen. De pijn zal groot zijn, het maken van een goede game is een lang proces en niemand doet het de eerste keer goed. Als jij dit kan verduren en een hoge constitution score hebt, dan is dit de klasse voor jou." - adventurer_introduction: "Laten we duidelijk zijn over je rol: jij bent de tank. Jij krijgt de zware klappen te verduren. We hebben mensen nodig om spiksplinternieuwe levels te proberen en te kijken hoe deze beter kunnen. De pijn zal groot zijn, het maken van een goede game is een lang proces en niemand doet het de eerste keer goed. Als jij dit kan verduren en een hoge constitution score hebt, dan is dit de klasse voor jou." + adventurer_introduction: "Laten we duidelijk zijn over je rol: jij bent de tank. Jij krijgt de zware klappen te verduren. We hebben mensen nodig om spiksplinternieuwe levels uit te proberen en te kijken hoe deze beter kunnen. Je zult veel afzien.Het maken van een goede game is een lang proces en niemand doet het de eerste keer goed. Als jij dit kan verduren en een hoge constitution score hebt, dan is dit de klasse voor jou." adventurer_attribute_1: "Een wil om te leren. Jij wilt leren hoe je programmeert en wij willen het jou leren. Je zal overigens zelf het meeste leren doen." adventurer_attribute_2: "Charismatisch. Wees netjes maar duidelijk over wat er beter kan en geef suggesties over hoe het beter kan." - adventurer_join_pref: "Werk samen met een Ambachtsman of recruteer er een, of tik het veld hieronder aan om e-mails te ontvangen wanneer er nieuwe levels zijn om te testen. We zullen ook posten over levels die beoordeeld moeten worden op onze netwerken zoals" + adventurer_join_pref: "Werk samen met een Ambachtsman of recruteer er een, of tik het veld hieronder aan om e-mails te ontvangen wanneer er nieuwe levels zijn om te testen. We zullen ook posten over levels die beoordeeld moeten worden op onze netwerken zoals" #TODO adventurer_forum_url: "ons forum" adventurer_join_suf: "dus als je liever op deze manier wordt geïnformeerd, schrijf je daar in!" - more_about_adventurer: "Leer meer over hoe je een dappere avonturier kunt worden." + more_about_adventurer: "Leer meer over hoe je een Dappere Avonturier kunt worden." adventurer_subscribe_desc: "Ontvang e-mails wanneer er nieuwe levels zijn die getest moeten worden." - scribe_summary_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis kennis zijn en een wiki met programmeerconcepten waar levels op in kunnen gaan. Op die manier zal een Ambachtslied een link kunnen geven naar een artikel wat past bij een level. Net zoiets als het " + scribe_summary_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis zijn en een wiki met programmeerconcepten waar levels op in kunnen gaan. Op die manier zal een Ambachtslied een link kunnen geven naar een artikel dat past bij een level. Net zoiets als het " #TODO scribe_summary_suf: " heeft gebouwd. Als jij het leuk vindt programmeerconcepten uit te leggen, dan is deze klasse iets voor jou." - scribe_introduction_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis kennis zijn en een wiki met programmeerconcepten waar levels op in kunnen gaan. Op die manier zal elk Ambachtslied niet in detail hoeven uit te leggen wat een vergelijkingsoperator is, maar een link kunnen geven naar een artikel wat deze informatie bevat voor de speler. Net zoiets als het " + scribe_introduction_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis zijn en een wiki met programmeerconcepten waar levels op in kunnen gaan. Op die manier zal elk Ambachtslied niet in detail hoeven uit te leggen wat een vergelijkingsoperator is, maar een link kunnen geven naar een artikel wat deze informatie bevat voor de speler. Net zoiets als het " scribe_introduction_url_mozilla: "Mozilla Developer Network" scribe_introduction_suf: " heeft gebouwd. Als jij het leuk vindt om programmeerconcepten uit te leggen in Markdown-vorm, dan is deze klasse wellicht iets voor jou." - scribe_attribute_1: "Taal-skills zijn praktisch alles wat je nodig hebt. Niet alleen grammatica of spelling, maar ook moeilijke ideeën overbrengen aan anderen." + scribe_attribute_1: "Taalvaardigheid is praktisch alles wat je nodig hebt. Je moet niet enkel bedreven zijn in grammatica en spelling, maar ook moeilijke ideeën kunnen overbrengen aan anderen." contact_us_url: "Contacteer ons" scribe_join_description: "vertel ons wat over jezelf, je ervaring met programmeren en over wat voor soort dingen je graag zou schrijven. Verder zien we wel!" more_about_scribe: "Leer meer over het worden van een ijverige Klerk." scribe_subscribe_desc: "Ontvang e-mails met aankondigingen over het schrijven van artikelen." - diplomat_summary: "Er is grote interesse in CodeCombat in landen waar geen Engels wordt gesproken! We zijn op zoek naar vertalers wie tijd willen spenderen aan het vertalen van de site's corpus aan woorden zodat CodeCombat zo snel mogelijk toegankelijk wordt voor heel de wereld. Als jij wilt helpen met CodeCombat internationaal maken, dan is dit de klasse voor jou." + diplomat_summary: "Er is grote interesse in CodeCombat in landen waar geen Engels wordt gesproken! We zijn op zoek naar vertalers die tijd willen spenderen aan het vertalen van de site's corpus aan woorden zodat CodeCombat zo snel mogelijk toegankelijk wordt voor heel de wereld. Als jij wilt helpen om CodeCombat internationaal maken, dan is dit de klasse voor jou." diplomat_introduction_pref: "Dus, als er iets is wat we geleerd hebben van de " diplomat_launch_url: "release in oktober" - diplomat_introduction_suf: "dan is het wel dat er een significante interesse is in CodeCombat in andere landen, vooral Brazilië! We zijn een corps aan vertalers aan het creëren dat ijverig de ene set woorden in een andere omzet om CodeCombat zo toegankelijk te maken als mogelijk in heel de wereld. Als jij het leuk vindt glimpsen op te vangen van aankomende content en deze levels zo snel mogelijk naar je landgenoten te krijgen, dan is dit de klasse voor jou." + diplomat_introduction_suf: "dan is het wel dat er een significante interesse is in CodeCombat in andere landen, vooral Brazilië! We zijn een corps aan vertalers aan het creëren dat ijverig de ene set woorden in de andere omzet om CodeCombat zo toegankelijk mogelijk te maken in de hele wereld. Als jij het leuk vindt glimpsen op te vangen van aankomende content en deze levels zo snel mogelijk naar je landgenoten te krijgen, dan is dit de klasse voor jou." diplomat_attribute_1: "Vloeiend Engels en de taal waar naar je wilt vertalen kunnen spreken. Wanneer je moeilijke ideeën wilt overbrengen, is het belangrijk beide goed te kunnen!" diplomat_join_pref_github: "Vind van jouw taal het locale bestand " diplomat_github_url: "op GitHub" @@ -485,7 +485,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t more_about_diplomat: "Leer meer over het worden van een geweldige Diplomaat" diplomat_subscribe_desc: "Ontvang e-mails over i18n ontwikkelingen en levels om te vertalen." ambassador_summary: "We proberen een gemeenschap te bouwen en elke gemeenschap heeft een supportteam nodig wanneer er problemen zijn. We hebben chats, e-mails en sociale netwerken zodat onze gebruikers het spel kunnen leren kennen. Als jij mensen wilt helpen betrokken te raken, plezier te hebben en wat te leren programmeren, dan is dit wellicht de klasse voor jou." - ambassador_introduction: "We zijn een community aan het uitbouwen, en jij maakt er deel van uit. We hebben Olark chatkamers, emails, en soeciale netwerken met veel andere mensen waarmee je kan praten en hulp kan vragen over het spel en om bij te leren. Als jij mensen wil helpen en te werken nabij de hartslag van CodeCombat in het bijsturen van onze toekomstvisie, dan is dit de geknipte klasse voor jou!" + ambassador_introduction: "We zijn een gemeenschap aan het uitbouwen, en jij maakt er deel van uit. We hebben Olark chatkamers, emails, en sociale netwerken met veel andere mensen waarmee je kan praten en hulp kan vragen over het spel en om bij te leren. Als jij mensen wil helpen en te werken nabij de hartslag van CodeCombat in het bijsturen van onze toekomstvisie, dan is dit de geknipte klasse voor jou!" ambassador_attribute_1: "Communicatieskills. Problemen die spelers hebben kunnen identificeren en ze helpen deze op te lossen. Verder zul je ook de rest van ons geïnformeerd houden over wat de spelers zeggen, wat ze leuk vinden, wat ze minder vinden en waar er meer van moet zijn!" ambassador_join_desc: "vertel ons wat over jezelf, wat je hebt gedaan en wat je graag zou doen. We zien verder wel!" ambassador_join_note_strong: "Opmerking" @@ -505,12 +505,12 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t creative_artisans: "Onze creatieve Ambachtslieden:" brave_adventurers: "Onze dappere Avonturiers:" translating_diplomats: "Onze vertalende Diplomaten:" - helpful_ambassadors: "Onze helpvolle Ambassadeurs:" + helpful_ambassadors: "Onze behulpzame Ambassadeurs:" classes: archmage_title: "Tovenaar" archmage_title_description: "(Programmeur)" - artisan_title: "Ambachtsman" + artisan_title: "Ambachtsman" #ambachtsman / ambachtslied ? artisan_title_description: "(Level Bouwer)" adventurer_title: "Avonturier" adventurer_title_description: "(Level Tester)" @@ -530,8 +530,8 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t simulation_explanation: "Door spellen te simuleren kan je zelf sneller beoordeeld worden!" simulate_games: "Simuleer spellen!" simulate_all: "RESET EN SIMULEER SPELLEN" -# games_simulated_by: "Games simulated by you:" -# games_simulated_for: "Games simulated for you:" + games_simulated_by: "Door jou gesimuleerde spellen:" + games_simulated_for: "Voor jou gesimuleerde spellen:" leaderboard: "Leaderboard" battle_as: "Vecht als " summary_your: "Jouw " @@ -561,7 +561,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t introducing_dungeon_arena: "Introductie van Dungeon Arena" new_way: "17 maart, 2014: De nieuwe manier om te concurreren met code." to_battle: "Naar het slagveld, ontwikkelaars!" - modern_day_sorcerer: "Kan jij programmeren? Hoe stoer is dat. Jij bent een modere voetballer! is het niet tijd dat je jouw magische krachten gebruikt voor het controlleren van jou minions in het slagveld? En nee, we praten heir niet over robots." + modern_day_sorcerer: "Kan jij programmeren? Hoe stoer is dat. Jij bent een modere voetballer! is het niet tijd dat je jouw magische krachten gebruikt voor het controlleren van jou minions in het slagveld? En nee, we praten hier niet over robots." #TODO arenas_are_here: "CodeCombat head-to-head multiplayer arenas are here." ladder_explanation: "Kies jouw helden, betover jouw mens of ogre legers, en beklim jouw weg naar de top in de ladder, door het verslagen van vriend en vijand. Daag nu je vrienden uit in multiplayer coding arenas en verkrijg faam en glorie. Indien je creatief bent, kan je zelfs" fork_our_arenas: "onze arenas forken" From e5d2c07ff1d0ba663c8e842c0b889f8ffca2e6f0 Mon Sep 17 00:00:00 2001 From: JasperDhaene Date: Sun, 23 Mar 2014 17:30:45 +0100 Subject: [PATCH 05/41] general revision until line 254 --- app/locale/nl.coffee | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/app/locale/nl.coffee b/app/locale/nl.coffee index 87b4ef717..f4933742c 100644 --- a/app/locale/nl.coffee +++ b/app/locale/nl.coffee @@ -31,18 +31,18 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t about: "Over Ons" contact: "Contact" twitter_follow: "Volgen" - employers: "Werknemers" + employers: "Werkgevers" versions: save_version_title: "Nieuwe versie opslagen" new_major_version: "Nieuwe hoofd versie" - cla_prefix: "Om bewerkingen op te slagen, moet je eerst akkoord gaan met onze" + cla_prefix: "Om bewerkingen op te slaan, moet je eerst akkoord gaan met onze" cla_url: "CLA" cla_suffix: "." cla_agree: "IK GA AKKOORD" login: - sign_up: "Account Maken" + sign_up: "Account maken" log_in: "Inloggen" log_out: "Uitloggen" recover: "account herstellen" @@ -52,7 +52,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t send_password: "Verzend nieuw wachtwoord" signup: - create_account_title: "Maak een account aan om je progressie op te slagen" + create_account_title: "Maak een account aan om je vooruitgang op te slaan" description: "Het is gratis. We hebben maar een paar dingen nodig en dan kan je aan de slag:" email_announcements: "Ontvang aankondigingen via email" coppa: "13+ of niet uit de VS" @@ -79,7 +79,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t adventurer_forum: "het Avonturiersforum" adventurer_suffix: "." campaign_beginner: "Beginnercampagne" - campaign_beginner_description: "... waarin je de toverkunst van programmeren leert." + campaign_beginner_description: "... waarin je de toverkunst van het programmeren leert." campaign_dev: "Willekeurige moeilijkere levels" campaign_dev_description: "... waarin je de interface leert kennen terwijl je wat moeilijkers doet." campaign_multiplayer: "Multiplayer Arena's" @@ -88,7 +88,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t campaign_player_created_description: "... waarin je ten strijde trekt tegen de creativiteit van andere Ambachtelijke Tovenaars." level_difficulty: "Moeilijkheidsgraad: " play_as: "Speel als " - spectate: "Schouw toe" + spectate: "Toeschouwen" contact: contact_us: "Contact opnemen met CodeCombat" @@ -118,12 +118,12 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t spell: "Spreuk" boots: "Laarzen" hue: "Hue" - saturation: "Saturation" - lightness: "Lightness" + saturation: "Saturatie" + lightness: "Helderheid" account_settings: title: "Account Instellingen" - not_logged_in: "Log in of maak een account om je instellingen aan te passen." + not_logged_in: "Log in of maak een account aan om je instellingen aan te passen." autosave: "Aanpassingen Automatisch Opgeslagen" me_tab: "Ik" picture_tab: "Afbeelding" @@ -143,8 +143,8 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t email_notifications_description: "Krijg periodieke meldingen voor jouw account." email_announcements_description: "Verkrijg emails over het laatste nieuws en de ontwikkelingen bij CodeCombat." contributor_emails: "Medewerker Klasse emails" - contribute_prefix: "We zoeken mensen om bij ons feest aan te voegen! Bekijk de " - contribute_page: "contributiepagina" + contribute_prefix: "We zoeken mensen om met ons te komen feesten! Bekijk de " + contribute_page: "bijdragepagina" contribute_suffix: " om meer te weten te komen." email_toggle: "Vink alles aan/af" error_saving: "Fout Tijdens Het Opslaan" @@ -184,7 +184,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t reload_confirm: "Herlaad Alles" victory_title_prefix: "" victory_title_suffix: " Compleet" - victory_sign_up: "Schrijf je in om je progressie op te slaan" + victory_sign_up: "Schrijf je in om je vooruitgang op te slaan" victory_sign_up_poke: "Wil je jouw code opslaan? Maak een gratis account aan!" victory_rate_the_level: "Beoordeel het level: " victory_rank_my_game: "Rankschik mijn Wedstrijd" @@ -234,7 +234,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t tip_beta_launch: "CodeCombat lanceerde zijn beta versie in Oktober, 2013." tip_js_beginning: "JavaScript is nog maar het begin." tip_autocast_setting: "Verander de autocast instelling door te klikken op het tandwiel naast de cast knop." - tip_baby_coders: "In de toekomst zullen zelfs babies archmages zijn." #Zelfs babies zullen in de toekomst archmages zijn. + tip_baby_coders: "Zelfs babies zullen in de toekomst Archmages zijn." tip_morale_improves: "Het spel zal blijven laden tot de moreel verbeterd." tip_all_species: "Wij geloven in gelijke kansen voor alle wezens om te leren programmeren." # tip_reticulating: "Reticulating spines." From 459a1f9e480680a51abb7034025c5f0dd90a360b Mon Sep 17 00:00:00 2001 From: Dominik Maier Date: Sun, 23 Mar 2014 18:41:15 +0100 Subject: [PATCH 06/41] fixes codecombat/codecombat#655 --- app/views/modal/wizard_settings_modal.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/modal/wizard_settings_modal.coffee b/app/views/modal/wizard_settings_modal.coffee index 1651ca43b..cddf30012 100644 --- a/app/views/modal/wizard_settings_modal.coffee +++ b/app/views/modal/wizard_settings_modal.coffee @@ -29,6 +29,7 @@ module.exports = class WizardSettingsModal extends View $.ajax("/db/user/#{me.get('name')}/nameToID", {success: success}) onWizardSettingsDone: -> + me.set('name', $('#wizard-settings-name').val()) forms.clearFormAlerts(@$el) res = me.validate() if res? From 58601e95f6aaefc26ce999c9aea66b7061b43767 Mon Sep 17 00:00:00 2001 From: JasperDhaene Date: Sun, 23 Mar 2014 22:54:30 +0100 Subject: [PATCH 07/41] finished review of nl.coffee --- app/locale/nl.coffee | 88 ++++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/app/locale/nl.coffee b/app/locale/nl.coffee index f4933742c..11834e423 100644 --- a/app/locale/nl.coffee +++ b/app/locale/nl.coffee @@ -234,7 +234,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t tip_beta_launch: "CodeCombat lanceerde zijn beta versie in Oktober, 2013." tip_js_beginning: "JavaScript is nog maar het begin." tip_autocast_setting: "Verander de autocast instelling door te klikken op het tandwiel naast de cast knop." - tip_baby_coders: "Zelfs babies zullen in de toekomst Archmages zijn." + tip_baby_coders: "Zelfs babies zullen in de toekomst een Tovenaar zijn." tip_morale_improves: "Het spel zal blijven laden tot de moreel verbeterd." tip_all_species: "Wij geloven in gelijke kansen voor alle wezens om te leren programmeren." # tip_reticulating: "Reticulating spines." @@ -257,10 +257,10 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t article_title: "Artikel Editor" article_description: "Schrijf artikels die spelers een overzicht geven over programmeer concepten die kunnen gebruikt worden over een variëteit van levels en campagnes." thang_title: "Thang Editor" - thang_description: "Maak eenheden, beschrijf hun standaard logica, graphics en audio. Momenteel is enkel het importeren van vector graphics geëxporteerd in Flash ondersteund." + thang_description: "Maak eenheden, beschrijf hun standaard logica, graphics en audio. Momenteel is enkel het importeren van vector graphics geëxporteerd uit Flash ondersteund." level_title: "Level Editor" - level_description: "Bevat het programma om te programmeren, audio te uploaden en aangepaste logica te creëren om alle soorten levels te maken. Het is alles wat wijzelf ook gebruiken!" - security_notice: "Veel belangrijke elementen in deze editors zijn momenteel niet actief. Met dat wij de veiligheid van deze systemen verbeteren, zullen ook deze elementen beschikbaar worden. Indien u deze elementen al eerder wil gebruiken, " + level_description: "Bevat de benodigdheden om scripts te schrijven, audio te uploaden en aangepaste logica te creëren om alle soorten levels te maken. Het is alles wat wij zelf ook gebruiken!" + security_notice: "Veel belangrijke elementen in deze editors zijn momenteel niet actief. Als wij de veiligheid van deze systemen verbeteren, zullen ook deze elementen beschikbaar worden. Indien u deze elementen al eerder wil gebruiken, " contact_us: "contacteer ons!" hipchat_prefix: "Je kan ons ook vinden in ons" hipchat_url: "(Engelstalig) HipChat kanaal." @@ -277,7 +277,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t level_tab_thangs_add: "Voeg element toe" level_settings_title: "Instellingen" level_component_tab_title: "Huidige Componenten" - level_component_btn_new: "Maak een nieuw component aan" + level_component_btn_new: "Maak een nieuwe component aan" level_systems_tab_title: "Huidige Systemen" level_systems_btn_new: "Maak een nieuw systeem aan" level_systems_btn_add: "Voeg Systeem toe" @@ -288,7 +288,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t level_component_settings: "Instellingen" level_system_edit_title: "Wijzig Systeem" create_system_title: "Maak een nieuw Systeem aan" - new_component_title: "Maak een nieuw Component aan" + new_component_title: "Maak een nieuwe Component aan" new_component_field_system: "Systeem" new_article_title: "Maak een Nieuw Artikel" new_thang_title: "Maak een Nieuw Thang Type" @@ -324,7 +324,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t score: "Score" win: "Win" loss: "Verlies" - tie: "Gelijk" + tie: "Gelijkstand" easy: "Gemakkelijk" medium: "Medium" hard: "Moeilijk" @@ -335,7 +335,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t who_description_prefix: "hebben samen CodeCombat opgericht in 2013. We creëerden ook " who_description_suffix: "en in 2008, groeide het uit tot de #1 web en iOS applicatie om Chinese en Japanse karakters te leren schrijven." who_description_ending: "Nu is het tijd om mensen te leren programmeren." - why_paragraph_1: "Tijdens het maken van Skritter wist George niet hoe hij moest programmeren en was hij constant gefrustreerd doordat hij zijn ideeën niet kon verwezelijken. Nadien probeerde hij te studeren maar de lessen gingen te traag. Ook zijn huisgenoot wou opnieuw studeren en stopte met lesgeven. Hij probeerde Codecademy maar was al snel \"verveeld\". Iedere week startte een andere vriend met Codecademy, met telkens als resultaat dat hij/zij vrij snel met de lessen stopte. We realiseerden ons dat het hetzelfde probleem was zoals we al eerder hadden opgelost met Skritter: mensen leren iets via langzame en intensieve lessen, terwijl ze het eigenlijk zo snel mogelijk nodig hebben via uitgebreide oefeningen. Wij weten hoe dat op te lossen." + why_paragraph_1: "Tijdens het maken van Skritter wist George niet hoe hij moest programmeren en was hij constant gefrustreerd doordat hij zijn ideeën niet kon verwezelijken. Nadien probeerde hij te studeren maar de lessen gingen te traag. Ook zijn huisgenoot wou opnieuw studeren en stopte met lesgeven. Hij probeerde Codecademy maar was al snel \"verveeld\". Iedere week startte een andere vriend met Codecademy, met telkens als resultaat dat hij/zij vrij snel met de lessen stopte. We realiseerden ons dat het hetzelfde probleem was zoals we al eerder hadden opgelost met Skritter: mensen leren iets via langzame en intensieve lessen, terwijl ze eigenlijk beter een snelle en uitgebreide opleiding nodig hebben. Wij weten hoe dat op te lossen." why_paragraph_2: "Wil je leren programmeren? Je hebt geen lessen nodig. Je moet vooral veel code schrijven en je amuseren terwijl je dit doet." why_paragraph_3_prefix: "Dat is waar programmeren om draait. Het moet tof zijn. Niet tof zoals" why_paragraph_3_italic: "joepie een medaille" @@ -357,13 +357,13 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t opensource_intro: "CodeCombat is gratis en volledig open source." opensource_description_prefix: "Bekijk " github_url: "onze GitHub" - opensource_description_center: "en help ons als je wil! CodeCombat is gebouwd met de hulp van duizende open source projecten, en wij zijn er gek van. Bekijk ook " + opensource_description_center: "en help ons als je wil! CodeCombat is gebouwd met de hulp van tientallen open source projecten, en wij zijn er gek op. Bekijk ook " archmage_wiki_url: "onze Tovenaar wiki" - opensource_description_suffix: "voor een lijst van de software dat dit spel mogelijk maakt." + opensource_description_suffix: "voor een lijst van de software die dit spel mogelijk maakt." practices_title: "Goede Respectvolle gewoonten" - practices_description: "Dit zijn onze beloften aan u, de speler, en iets minder juridische jargon." + practices_description: "Dit zijn onze beloften aan u, de speler, in een iets minder juridische jargon." privacy_title: "Privacy" - privacy_description: "We zullen nooit jouw persoonlijke informatie verkopen. We willen geld verdienen dankzij aanwerving in verloop van tijd, maar je mag op je twee oren slapen dat wij nooit jouw persoonlijke informatie zullen verspreiden aan geïnteresseerde bedrijven zonder dat jij daar expliciet mee akkoord gaat." + privacy_description: "We zullen nooit jouw persoonlijke informatie verkopen. We willen in verloop van tijd geld verdienen dankzij aanwervingen, maar je mag op je beide oren slapen dat wij nooit jouw persoonlijke informatie zullen verspreiden aan geïnteresseerde bedrijven zonder dat jij daar expliciet mee akkoord gaat." security_title: "Beveiliging" security_description: "We streven ernaar om jouw persoonlijke informatie veilig te bewaren. Onze website is open en beschikbaar voor iedereen, opdat ons beveiliging systeem kan worden nagekeken en geoptimaliseerd door iedereen die dat wil. Dit alles is mogelijk doordat we volledig open source en transparant zijn." email_title: "E-mail" @@ -375,7 +375,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t recruitment_title: "Aanwervingen" recruitment_description_prefix: "Hier bij CodeCombat, ga je ontplooien tot een krachtige tovenoor-niet enkel virtueel, maar ook in het echt." url_hire_programmers: "Niemand kan snel genoeg programmeurs aanwerven" - recruitment_description_suffix: "dus eenmaal je jouw vaardigheden hebt aangescherp en ermee akkoord gaat, zullen we jouw beste codeer prestaties voorstellen aan duizenden bedrijven die niet kunnen wachten om jou aan te werven. Zij betalen ons een beetje, maar betalen jou" + recruitment_description_suffix: "dus eenmaal je jouw vaardigheden hebt aangescherp en ermee akkoord gaat, zullen we jouw beste programmeer prestaties voorstellen aan duizenden werkgevers die niet kunnen wachten om jou aan te werven. Zij betalen ons een beetje, maar betalen jou" recruitment_description_italic: "enorm veel" recruitment_description_ending: "de site blijft volledig gratis en iedereen is gelukkig. Dat is het plan." copyrights_title: "Auteursrechten en licenties" @@ -384,25 +384,25 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t cla_url: "CLA" contributor_description_suffix: "waarmee je moet akkoord gaan voordat wij jouw bijdragen kunnen gebruiken." code_title: "Code - MIT" - code_description_prefix: "Alle code in het bezit van CodeCombat of aanwezig op codecombat.com, zowel in de GitHub respository of in de codecombat.com database, is erkend onder de" + code_description_prefix: "Alle code in het bezit van CodeCombat of aanwezig op codecombat.com, zowel in de GitHub respository als in de codecombat.com database, is erkend onder de" mit_license_url: "MIT licentie" - code_description_suffix: "Dit geldt ook voor code in Systemen en Componenten dat publiekelijk is gemaakt met als doelstellingen het maken van levels." + code_description_suffix: "Dit geldt ook voor code in Systemen en Componenten dat publiek is gemaakt met als doel het maken van levels." art_title: "Art/Music - Creative Commons " art_description_prefix: "Alle gemeenschappelijke inhoud valt onder de" cc_license_url: "Creative Commons Attribution 4.0 Internationale Licentie" - art_description_suffix: "Gemeenschappelijke inhoud is alles dat algemeen verkrijgbaar is bij CodeCombat voor het doel levels te maken. Dit omvat:" + art_description_suffix: "Gemeenschappelijke inhoud is alles dat algemeen verkrijgbaar is bij CodeCombat met als doel levels te maken. Dit omvat:" art_music: "Muziek" art_sound: "Geluid" - art_artwork: "Artwork" + art_artwork: "Kunst" art_sprites: "Sprites" art_other: "Eender wat en al het creatief werk dat niet als code aanzien wordt en verkrijgbaar is bij het aanmaken van levels." - art_access: "Momenteel is er geen universeel en gebruiksvriendelijk systeem voor het ophalen van deze assets. In het algemeen, worden deze opgehaald via de links zoals gebruikt door de website. Contacteer ons voor assitentie, of help ons met de website uit te breiden en de assets bereikbaarder te maken." + art_access: "Momenteel is er geen universeel en gebruiksvriendelijk systeem voor het ophalen van deze assets. In het algemeen, worden deze opgehaald via de links zoals gebruikt door de website. Contacteer ons voor assistentie, of help ons met de website uit te breiden en de assets bereikbaarder te maken." art_paragraph_1: "Voor toekenning, gelieve de naam en link naar codecombat.com te plaatsen waar dit passend is voor de vorm waarin het voorkomt. Bijvoorbeeld:" use_list_1: "Wanneer gebruikt in een film of een ander spel, voeg codecombat.com toe in de credits." - use_list_2: "Wanneer toegepast op een website, inclusief een link naar het gebruik, bijvoorbeeld onderaan een afbeelding. Of in een algemene webpagina waar je eventueel ook andere Create Commons werken en open source software vernoemd die je gebruikt op de website. Iets dat alreeds duidelijk is gespecificeerd met CodeCombat, zoals een blog artikel, dat CodeCombat vernoemt, heeft geen aparte vermelding nodig." - art_paragraph_2: "Wanneer de gebruikte inhoud is gemaakt door een gebruiker van codecombat.com, vernoem hem/haar in plaats van ons en volg verspreidingsaanwijzingen van die brons als die er zijn." + use_list_2: "Wanneer toegepast op een website, inclusief een link naar het gebruik, bijvoorbeeld onderaan een afbeelding. Of in een algemene webpagina waar je eventueel ook andere Creative Commons werken en open source software vernoemd die je gebruikt op de website. Iets dat al duidelijk gerelateerd is met CodeCombat, zoals een blog artikel dat CodeCombat vernoemd, heeft geen aparte vermelding nodig." + art_paragraph_2: "Wanneer de gebruikte inhoud is gemaakt door een gebruiker van codecombat.com, vernoem hem/haar in plaats van ons en volg toekenningsaanwijzingen als deze in de beschrijving van de bron staan." rights_title: "Rechten Voorbehouden" - rights_desc: "Alle rechten zijn voorbehouden voor de Levels. Dit omvat:" + rights_desc: "Alle rechten zijn voorbehouden voor de Levels zelf. Dit omvat:" rights_scripts: "Scripts" rights_unit: "Eenheid Configuratie" rights_description: "Beschrijvingen" @@ -419,15 +419,15 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t introduction_desc_intro: "We hebben hoge verwachtingen over CodeCombat." introduction_desc_pref: "We willen zijn waar programmeurs van alle niveaus komen om te leren en samen te spelen, anderen introduceren aan de wondere wereld van code, en de beste delen van de gemeenschap te reflecteren. We kunnen en willen dit niet alleen doen; wat projecten zoals GitHub, Stack Overflow en Linux groots en succesvol maken, zijn de mensen die deze software gebruiken en verbeteren. Daartoe, " introduction_desc_github_url: "CodeCombat is volledig open source" - introduction_desc_suf: ", en we mikken ernaar om zoveel mogelijk manieren mogelijk maken voor u om deel te nemen en dit project van zowel jou als ons te maken." + introduction_desc_suf: ", en we streven ernaar om op zoveel mogelijk manieren het mogelijk te maken voor u om deel te nemen en dit project van zowel jou als ons te maken." introduction_desc_ending: "We hopen dat je met ons meedoet!" introduction_desc_signature: "- Nick, George, Scott, Michael, en Jeremy" alert_account_message_intro: "Hallo!" alert_account_message_pref: "Om je te abonneren voor de klasse e-mails, moet je eerst " alert_account_message_suf: "." alert_account_message_create_url: "een account aanmaken" - archmage_summary: "Geïnteresserd in werken aan game graphics, user interface design, database- en serverorganisatie, multiplayer networking, physics, geluid of game engine prestaties? Wil jij helpen een game te bouwen wat anderen leert waar jij goed in bent? We moeten nog veel doen en als jij een ervaren programmeur bent en wil ontwikkelen voor CodeCombat, dan is dit de klasse voor jou. We zouden graag je hulp hebben bij het maken van de beste programmeergame ooit." - archmage_introduction: "Een van de beste aspecten aan het maken van spelletjes is dat zij zoveel verschillende zaken omvatten. Visualisaties, geluid, real-time netwerken, sociale netwerken, en natuurlijk veel van de voorkomende aspecten van programmeren, van low-level database beheer en server administratie tot gebruiksvriendelijke interfaces maken. Er is veel te doen, en als jij een ervaren programmeur bent met de motivatie om je handen veel te maken met CodeCombat, dan ben je de tovenaar die wij zoeken! We zouden graag jouw help hebben met het bouwen aan het allerbeste programmeerspel ooit." + archmage_summary: "Geïnteresserd in het werken aan game graphics, user interface design, database- en serverorganisatie, multiplayer networking, physics, geluid of game engine prestaties? Wil jij helpen een game te bouwen wat anderen leert waar jij goed in bent? We moeten nog veel doen en als jij een ervaren programmeur bent en wil ontwikkelen voor CodeCombat, dan is dit de klasse voor jou. We zouden graag je hulp hebben bij het maken van de beste programmeergame ooit." + archmage_introduction: "Een van de beste aspecten aan het maken van spelletjes is dat zij zoveel verschillende zaken omvatten. Visualisaties, geluid, real-time netwerken, sociale netwerken, en natuurlijk enkele veelvoorkomende aspecten van programmeren, van low-level database beheer en server administratie tot gebruiksvriendelijke interfaces maken. Er is veel te doen, en als jij een ervaren programmeur bent met de motivatie om je volledig te verdiepen in de details van CodeCombat, dan ben je de tovenaar die wij zoeken! We zouden graag jouw hulp krijgen bij het bouwen van het allerbeste programmeerspel ooit." class_attributes: "Klasse kenmerken" archmage_attribute_1_pref: "Ervaring met " archmage_attribute_1_suf: ", of de wil om het te leren. De meeste van onze code is in deze taal. Indien je een fan van Ruby of Python bent, zal je je meteen thuis voelen! Het is zoals JavaScript, maar met een mooiere syntax." @@ -440,12 +440,12 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t join_url_email: "E-mail ons" join_url_hipchat: "ons publiek (Engelstalig) HipChat kanaal" more_about_archmage: "Leer meer over hoe je een Machtige Tovenaar kan worden" - archmage_subscribe_desc: "Ontvang e-mails met nieuwe codeer mogelijkheden en aankondigingen." #TODO - artisan_summary_pref: "Wil je levels ontwerpen en CodeCombat's arsenaal vergroten? Mensen spelen sneller door onze content dan wij bij kunnen houden! Op dit moment is onze level editor nog wat kaal, dus wees daarvan bewust. Levels maken zal een beetje uitdagend en buggy zijn. Als jij een visie van campagnes hebt van for-loops tot" + archmage_subscribe_desc: "Ontvang e-mails met nieuwe programmeer mogelijkheden en aankondigingen." + artisan_summary_pref: "Wil je levels ontwerpen en CodeCombat's arsenaal vergroten? Mensen spelen sneller door onze content dan wij bij kunnen houden! Op dit moment is onze level editor nog wat beperkt, dus wees daarvan bewust. Het maken van levels zal een uitdaging zijn met een grote kans op fouten. Als jij een visie van campagnes hebt van for-loops tot" artisan_summary_suf: "dan is dit de klasse voor jou." - artisan_introduction_pref: "We moeten meer levels bouwen! Mensen schreeuwen om meer inhoud, en er zijn ook maar zoveel levels dat wij kunnen maken. Momenteel is jouw werkplaats level een; onze level editor is amper gebruikt door zelfs ons, wees dus voorzichtig. Indien je visioenen hebt van campagnes, gaande van for-loops tot"#TODO + artisan_introduction_pref: "We moeten meer levels bouwen! Mensen schreeuwen om meer inhoud, en er zijn ook maar zoveel levels dat wij kunnen maken. Momenteel is jouw werkplaats level een; onze level editor wordt zelfs door ons amper gebruikt, dus wees voorzichtig. Indien je een visie hebt van een campagne, gaande van for-loops tot" artisan_introduction_suf: "dan is deze klasse waarschijnlijk iets voor jou." - artisan_attribute_1: "Enige ervaring in het maken van vergelijkbare inhoud. Bijvoorbeeld ervaring het gebruiken van Blizzard's level editor. Maar dit is niet vereist!" + artisan_attribute_1: "Enige ervaring in het maken van vergelijkbare inhoud. Bijvoorbeeld ervaring in het gebruiken van Blizzard's level editor. Maar dit is niet vereist!" artisan_attribute_2: "Tot in het detail testen en opnieuw proberen staat voor jou gelijk aan plezier. Om goede levels te maken, moet je het door anderen laten spelen en bereid zijn om een hele boel aan te passen." artisan_attribute_3: "Momenteel heb je nog veel geduld nodig, doordat onze editor nog vrij ruw is en op je zenuwen kan werken. Samenwerken met een Avonturier kan jou ook veel helpen." artisan_join_desc: "Gebruik de Level Editor min of meer in deze volgorde:" @@ -455,18 +455,18 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t artisan_join_step4: "Maak een bericht over jouw level op ons forum voor feedback." more_about_artisan: "Leer meer over hoe je een Creatieve Ambachtsman kan worden." artisan_subscribe_desc: "Ontvang e-mails met nieuws over de Level Editor." - adventurer_summary: "Laten we duidelijk zijn over je rol: jij bent de tank. Jij krijgt de zware klappen te verduren. We hebben mensen nodig om spiksplinternieuwe levels te proberen en te kijken hoe deze beter kunnen. De pijn zal groot zijn, het maken van een goede game is een lang proces en niemand doet het de eerste keer goed. Als jij dit kan verduren en een hoge constitution score hebt, dan is dit de klasse voor jou." - adventurer_introduction: "Laten we duidelijk zijn over je rol: jij bent de tank. Jij krijgt de zware klappen te verduren. We hebben mensen nodig om spiksplinternieuwe levels uit te proberen en te kijken hoe deze beter kunnen. Je zult veel afzien.Het maken van een goede game is een lang proces en niemand doet het de eerste keer goed. Als jij dit kan verduren en een hoge constitution score hebt, dan is dit de klasse voor jou." + adventurer_summary: "Laten we duidelijk zijn over je rol: jij bent de tank. Jij krijgt de zware klappen te verduren. We hebben mensen nodig om spiksplinternieuwe levels te proberen en te kijken hoe deze beter kunnen. Je zult veel afzien, want het maken van een goede game is een lang proces en niemand doet het de eerste keer goed. Als jij dit kan verduren en een hoog uihoudingsvermogen hebt, dan is dit de klasse voor jou." + adventurer_introduction: "Laten we duidelijk zijn over je rol: jij bent de tank. Jij krijgt de zware klappen te verduren. We hebben mensen nodig om spiksplinternieuwe levels uit te proberen en te kijken hoe deze beter kunnen. Je zult veel afzien.Het maken van een goede game is een lang proces en niemand doet het de eerste keer goed. Als jij dit kan verduren en een hoog uihoudingsvermogen hebt, dan is dit de klasse voor jou." adventurer_attribute_1: "Een wil om te leren. Jij wilt leren hoe je programmeert en wij willen het jou leren. Je zal overigens zelf het meeste leren doen." adventurer_attribute_2: "Charismatisch. Wees netjes maar duidelijk over wat er beter kan en geef suggesties over hoe het beter kan." - adventurer_join_pref: "Werk samen met een Ambachtsman of recruteer er een, of tik het veld hieronder aan om e-mails te ontvangen wanneer er nieuwe levels zijn om te testen. We zullen ook posten over levels die beoordeeld moeten worden op onze netwerken zoals" #TODO + adventurer_join_pref: "Werk samen met een Ambachtsman of recruteer er een, of tik het veld hieronder aan om e-mails te ontvangen wanneer er nieuwe levels zijn om te testen. We zullen ook berichten over levels die beoordeeld moeten worden op onze netwerken zoals" adventurer_forum_url: "ons forum" adventurer_join_suf: "dus als je liever op deze manier wordt geïnformeerd, schrijf je daar in!" more_about_adventurer: "Leer meer over hoe je een Dappere Avonturier kunt worden." adventurer_subscribe_desc: "Ontvang e-mails wanneer er nieuwe levels zijn die getest moeten worden." - scribe_summary_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis zijn en een wiki met programmeerconcepten waar levels op in kunnen gaan. Op die manier zal een Ambachtslied een link kunnen geven naar een artikel dat past bij een level. Net zoiets als het " #TODO + scribe_summary_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis zijn die spelers kunnen nakijken. Op die manier zal een Ambachtsman een link kunnen geven naar een artikel dat past bij een level. Net zoiets als het " scribe_summary_suf: " heeft gebouwd. Als jij het leuk vindt programmeerconcepten uit te leggen, dan is deze klasse iets voor jou." - scribe_introduction_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis zijn en een wiki met programmeerconcepten waar levels op in kunnen gaan. Op die manier zal elk Ambachtslied niet in detail hoeven uit te leggen wat een vergelijkingsoperator is, maar een link kunnen geven naar een artikel wat deze informatie bevat voor de speler. Net zoiets als het " + scribe_introduction_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis zijn en een wiki met programmeerconcepten waar levels op in kunnen gaan. Op die manier zal niet elke Ambachtsman in detail hoeven uit te leggen wat een vergelijkingsoperator is, maar een link kunnen geven naar een artikel die deze informatie al verduidelijkt voor speler. Net zoiets als het " scribe_introduction_url_mozilla: "Mozilla Developer Network" scribe_introduction_suf: " heeft gebouwd. Als jij het leuk vindt om programmeerconcepten uit te leggen in Markdown-vorm, dan is deze klasse wellicht iets voor jou." scribe_attribute_1: "Taalvaardigheid is praktisch alles wat je nodig hebt. Je moet niet enkel bedreven zijn in grammatica en spelling, maar ook moeilijke ideeën kunnen overbrengen aan anderen." @@ -474,22 +474,22 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t scribe_join_description: "vertel ons wat over jezelf, je ervaring met programmeren en over wat voor soort dingen je graag zou schrijven. Verder zien we wel!" more_about_scribe: "Leer meer over het worden van een ijverige Klerk." scribe_subscribe_desc: "Ontvang e-mails met aankondigingen over het schrijven van artikelen." - diplomat_summary: "Er is grote interesse in CodeCombat in landen waar geen Engels wordt gesproken! We zijn op zoek naar vertalers die tijd willen spenderen aan het vertalen van de site's corpus aan woorden zodat CodeCombat zo snel mogelijk toegankelijk wordt voor heel de wereld. Als jij wilt helpen om CodeCombat internationaal maken, dan is dit de klasse voor jou." + diplomat_summary: "Er is grote interesse voor CodeCombat in landen waar geen Engels wordt gesproken! We zijn op zoek naar vertalers die tijd willen spenderen aan het vertalen van de site's corpus aan woorden zodat CodeCombat zo snel mogelijk toegankelijk wordt voor de hele wereld. Als jij wilt helpen om CodeCombat internationaal maken, dan is dit de klasse voor jou." diplomat_introduction_pref: "Dus, als er iets is wat we geleerd hebben van de " diplomat_launch_url: "release in oktober" - diplomat_introduction_suf: "dan is het wel dat er een significante interesse is in CodeCombat in andere landen, vooral Brazilië! We zijn een corps aan vertalers aan het creëren dat ijverig de ene set woorden in de andere omzet om CodeCombat zo toegankelijk mogelijk te maken in de hele wereld. Als jij het leuk vindt glimpsen op te vangen van aankomende content en deze levels zo snel mogelijk naar je landgenoten te krijgen, dan is dit de klasse voor jou." - diplomat_attribute_1: "Vloeiend Engels en de taal waar naar je wilt vertalen kunnen spreken. Wanneer je moeilijke ideeën wilt overbrengen, is het belangrijk beide goed te kunnen!" + diplomat_introduction_suf: "dan is het wel dat er een enorme belangstelling is voor CodeCombat in andere landen, vooral Brazilië! We zijn een groep van vertalers aan het creëren dat ijverig de ene set woorden in de andere omzet om CodeCombat zo toegankelijk mogelijk te maken in de hele wereld. Als jij het leuk vindt glimpsen op te vangen van aankomende content en deze levels zo snel mogelijk naar je landgenoten te krijgen, dan is dit de klasse voor jou." + diplomat_attribute_1: "Vloeiend Engels en de taal waar naar je wilt vertalen kunnen spreken. Wanneer je moeilijke ideeën wilt overbrengen, is het belangrijk beide talen goed te begrijpen!" diplomat_join_pref_github: "Vind van jouw taal het locale bestand " diplomat_github_url: "op GitHub" diplomat_join_suf_github: ", edit het online, en submit een pull request. Daarnaast kun je hieronder aanvinken als je up-to-date wilt worden gehouden met nieuwe internationalisatie-ontwikkelingen." more_about_diplomat: "Leer meer over het worden van een geweldige Diplomaat" diplomat_subscribe_desc: "Ontvang e-mails over i18n ontwikkelingen en levels om te vertalen." ambassador_summary: "We proberen een gemeenschap te bouwen en elke gemeenschap heeft een supportteam nodig wanneer er problemen zijn. We hebben chats, e-mails en sociale netwerken zodat onze gebruikers het spel kunnen leren kennen. Als jij mensen wilt helpen betrokken te raken, plezier te hebben en wat te leren programmeren, dan is dit wellicht de klasse voor jou." - ambassador_introduction: "We zijn een gemeenschap aan het uitbouwen, en jij maakt er deel van uit. We hebben Olark chatkamers, emails, en sociale netwerken met veel andere mensen waarmee je kan praten en hulp kan vragen over het spel en om bij te leren. Als jij mensen wil helpen en te werken nabij de hartslag van CodeCombat in het bijsturen van onze toekomstvisie, dan is dit de geknipte klasse voor jou!" + ambassador_introduction: "We zijn een gemeenschap aan het uitbouwen, en jij maakt er deel van uit. We hebben Olark chatkamers, emails, en sociale netwerken met veel andere mensen waarmee je kan praten en hulp aan kan vragen over het spel of om bij te leren. Als jij mensen wil helpen en te werken nabij de hartslag van CodeCombat in het bijsturen van onze toekomstvisie, dan is dit de geknipte klasse voor jou!" ambassador_attribute_1: "Communicatieskills. Problemen die spelers hebben kunnen identificeren en ze helpen deze op te lossen. Verder zul je ook de rest van ons geïnformeerd houden over wat de spelers zeggen, wat ze leuk vinden, wat ze minder vinden en waar er meer van moet zijn!" ambassador_join_desc: "vertel ons wat over jezelf, wat je hebt gedaan en wat je graag zou doen. We zien verder wel!" ambassador_join_note_strong: "Opmerking" - ambassador_join_note_desc: "Een van onze topprioriteiten is om een multiplayer te bouwen waar spelers die moeite hebben een level op te lossen een wizard met een hoger level kunnen oproepen om te helpen. Dit zal een goede manier zijn voor ambassadeurs om hun ding te doen. We houden je op de hoogte!" + ambassador_join_note_desc: "Een van onze topprioriteiten is om een multiplayer te bouwen waar spelers die moeite hebben een level op te lossen een tovenaar met een hoger level kunnen oproepen om te helpen. Dit zal een goede manier zijn voor ambassadeurs om hun ding te doen. We houden je op de hoogte!" more_about_ambassador: "Leer meer over het worden van een behulpzame Ambassadeur" ambassador_subscribe_desc: "Ontvang e-mails met updates over ondersteuning en multiplayer-ontwikkelingen." counselor_summary: "Geen van de rollen hierboven in jouw interessegebied? Maak je geen zorgen, we zijn op zoek naar iedereen die wil helpen met het ontwikkelen van CodeCombat! Als je geïnteresseerd bent in lesgeven, gameontwikkeling, open source management of iets anders waarvan je denkt dat het relevant voor ons is, dan is dit de klasse voor jou." @@ -510,7 +510,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t classes: archmage_title: "Tovenaar" archmage_title_description: "(Programmeur)" - artisan_title: "Ambachtsman" #ambachtsman / ambachtslied ? + artisan_title: "Ambachtsman" artisan_title_description: "(Level Bouwer)" adventurer_title: "Avonturier" adventurer_title_description: "(Level Tester)" @@ -551,7 +551,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t tutorial_play: "Speel de Tutorial" tutorial_recommended: "Aanbevolen als je nog niet eerder hebt gespeeld" tutorial_skip: "Sla Tutorial over" - tutorial_not_sure: "Niet zeker wat er aan de gang is?" + tutorial_not_sure: "Niet zeker wat er aan de hand is?" tutorial_play_first: "Speel eerst de Tutorial." simple_ai: "Simpele AI" warmup: "Opwarming" @@ -561,12 +561,12 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t introducing_dungeon_arena: "Introductie van Dungeon Arena" new_way: "17 maart, 2014: De nieuwe manier om te concurreren met code." to_battle: "Naar het slagveld, ontwikkelaars!" - modern_day_sorcerer: "Kan jij programmeren? Hoe stoer is dat. Jij bent een modere voetballer! is het niet tijd dat je jouw magische krachten gebruikt voor het controlleren van jou minions in het slagveld? En nee, we praten hier niet over robots." #TODO - arenas_are_here: "CodeCombat head-to-head multiplayer arenas are here." - ladder_explanation: "Kies jouw helden, betover jouw mens of ogre legers, en beklim jouw weg naar de top in de ladder, door het verslagen van vriend en vijand. Daag nu je vrienden uit in multiplayer coding arenas en verkrijg faam en glorie. Indien je creatief bent, kan je zelfs" + modern_day_sorcerer: "Kan jij programmeren? Dat is pas stoer. Jij bent een modere tovenaar! Is het niet tijd dat je jouw magische krachten gebruikt voor het besturen van jou minions in het slagveld? En nee, we praten hier niet over robots." + arenas_are_here: "CodeCombat's kop aan kop multiplayer arena's zijn er." + ladder_explanation: "Kies jouw helden, betover jouw mensen of ogre legers, en beklim jouw weg naar de top in de ladder, door het verslagen van vriend en vijand. Daag nu je vrienden uit in de multiplayer programmeer arena's en verdien eeuwige roem. Indien je creatief bent, kan je zelfs" fork_our_arenas: "onze arenas forken" create_worlds: "en jouw eigen werelden creëren." - javascript_rusty: "Jouw JavaScript is een beetje roest? Wees niet bang, er is een" + javascript_rusty: "Jouw JavaScript is een beetje roestig? Wees niet bang, er is een" tutorial: "tutorial" new_to_programming: ". Ben je net begonnen met programmeren? Speel dan eerst onze beginners campagne." so_ready: "Ik ben hier zo klaar voor" From 0dee3d042f3ea94fbddf4214e6a8f262fe5a40ce Mon Sep 17 00:00:00 2001 From: Dominik Maier Date: Sun, 23 Mar 2014 23:04:39 +0100 Subject: [PATCH 08/41] fixes codecombat/codecombat#655 completely Removes asynchronous name checking, though, if it ever worked. --- app/views/modal/wizard_settings_modal.coffee | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/app/views/modal/wizard_settings_modal.coffee b/app/views/modal/wizard_settings_modal.coffee index cddf30012..038c24a82 100644 --- a/app/views/modal/wizard_settings_modal.coffee +++ b/app/views/modal/wizard_settings_modal.coffee @@ -11,7 +11,6 @@ module.exports = class WizardSettingsModal extends View closesOnClickOutside: false events: - 'change #wizard-settings-name': 'onNameChange' 'click #wizard-settings-done': 'onWizardSettingsDone' afterRender: -> @@ -19,15 +18,6 @@ module.exports = class WizardSettingsModal extends View view = new WizardSettingsView() @insertSubView view - onNameChange: -> - me.set('name', $('#wizard-settings-name').val()) - @checkNameExists() - - checkNameExists: -> - forms.clearFormAlerts(@$el) - success = (id) => forms.applyErrorsToForm(@$el, {property:'name', message:'is already taken'}) if id and id isnt me.id - $.ajax("/db/user/#{me.get('name')}/nameToID", {success: success}) - onWizardSettingsDone: -> me.set('name', $('#wizard-settings-name').val()) forms.clearFormAlerts(@$el) @@ -45,8 +35,9 @@ module.exports = class WizardSettingsModal extends View errors = JSON.parse(res.responseText) forms.applyErrorsToForm(@$el, errors) @disableModalInProgress(@$el) + res.success (model, response, options) => @hide() @enableModalInProgress(@$el) - me.save() \ No newline at end of file + me.save() From d6178aa2cc7d21a6271a7cff725b6db4fb5ade5b Mon Sep 17 00:00:00 2001 From: Glen De Cauwsemaecker Date: Mon, 24 Mar 2014 00:46:44 +0100 Subject: [PATCH 09/41] Fixed a small error --- app/locale/nl.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/locale/nl.coffee b/app/locale/nl.coffee index 11834e423..90b8680cd 100644 --- a/app/locale/nl.coffee +++ b/app/locale/nl.coffee @@ -228,7 +228,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t loading_ready: "Klaar!" tip_insert_positions: "Shift+Klik een punt op de kaart om het toe te voegen aan je spreuk editor." tip_toggle_play: "Verwissel speel/pauze met Ctrl+P." - tip_scrub_shortcut: "Ctrl+[ and Ctrl+] om terug te spoelen en vooruit te spoelen." + tip_scrub_shortcut: "Ctrl+[ en Ctrl+] om terug te spoelen en vooruit te spoelen." tip_guide_exists: "Klik op de handleiding bovenaan het scherm voor nuttige informatie." tip_open_source: "CodeCombat is 100% open source!" tip_beta_launch: "CodeCombat lanceerde zijn beta versie in Oktober, 2013." From 656b34fc34ad22c9114c3cfa24f039320e868e66 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Sun, 23 Mar 2014 16:00:23 -0700 Subject: [PATCH 10/41] Fixed comment gutter icons jumping all over the place. --- app/views/play/level/tome/spell_view.coffee | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/views/play/level/tome/spell_view.coffee b/app/views/play/level/tome/spell_view.coffee index e9ac98dab..4b08efaac 100644 --- a/app/views/play/level/tome/spell_view.coffee +++ b/app/views/play/level/tome/spell_view.coffee @@ -518,8 +518,10 @@ module.exports = class SpellView extends View highlightComments: -> lines = $(@ace.container).find('.ace_text-layer .ace_line_group') session = @aceSession + top = Math.floor @ace.renderer.getScrollTopRow() $(@ace.container).find('.ace_gutter-cell').each (index, el) -> line = $(lines[index]) + index = index - top session.removeGutterDecoration index, 'comment-line' if line.find('.ace_comment').length session.addGutterDecoration index, 'comment-line' From fcfa0d4eca88eb55b8dbf57f090ef7c5d1e3c777 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Sun, 23 Mar 2014 16:15:30 -0700 Subject: [PATCH 11/41] Updated Glen's portrait URL in the README. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4d23640e3..e26e5b2f2 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ Whether you're novice or pro, the CodeCombat team is ready to help you implement ![Nick Winter](http://codecombat.com/images/pages/about/nick_small.png) ![Michael Schmatz](http://codecombat.com/images/pages/about/michael_small.png) ![Jeremy Arns](http://codecombat.com/images/pages/about/jeremy_small.png) +![Glen De Cauwsemaecker](http://codecombat.com/images/pages/about/glen_small.png) ![Tom Steinbrecher](http://codecombat.com/images/pages/contribute/archmage/tom_small.png) -![Glen De Cauwsemaecker](http://codecombat.com/images/pages/contribute/archmage/glen_small.png) ![Sébastien Moratinos](http://codecombat.com/images/pages/contribute/archmage/sebastien_small.png) ![deepak1556](http://codecombat.com/images/pages/contribute/archmage/deepak_small.png) ![Ronnie Cheng](http://codecombat.com/images/pages/contribute/archmage/ronald_small.png) From 4a47c5b5177db84299fa8999709adc43bd326161 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Sun, 23 Mar 2014 16:21:36 -0700 Subject: [PATCH 12/41] Dead Thangs sink down a bit in the layer order. --- app/lib/surface/Layer.coffee | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/lib/surface/Layer.coffee b/app/lib/surface/Layer.coffee index a8fcbb0f8..aee8f0596 100644 --- a/app/lib/surface/Layer.coffee +++ b/app/lib/surface/Layer.coffee @@ -67,9 +67,13 @@ module.exports = class Layer extends createjs.Container # TODO: remove this z stuff az = if a.z then a.z else 1000 bz = if b.z then b.z else 1000 + aThang = a.sprite?.thang + bThang = b.sprite?.thang + az -= 1 if aThang?.health < 0 + bz -= 1 if bThang?.health < 0 if az == bz - return 0 unless a.sprite?.thang?.pos and b.sprite?.thang?.pos - return (b.sprite.thang.pos.y - a.sprite.thang.pos.y) or (b.sprite.thang.pos.x - a.sprite.thang.pos.x) + return 0 unless aThang?.pos and bThang?.pos + return (bThang.pos.y - aThang.pos.y) or (bThang.pos.x - aThang.pos.x) return az - bz onZoomUpdated: (e) -> From dcbd55a86474177e53e7a8672ef183bd7ee8238a Mon Sep 17 00:00:00 2001 From: Dominik Maier Date: Mon, 24 Mar 2014 00:47:41 +0100 Subject: [PATCH 13/41] regarding codecombat/codecombat#655 -> adds asynchronous name checking that actually works. --- app/views/modal/wizard_settings_modal.coffee | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/views/modal/wizard_settings_modal.coffee b/app/views/modal/wizard_settings_modal.coffee index 038c24a82..f9f4dc193 100644 --- a/app/views/modal/wizard_settings_modal.coffee +++ b/app/views/modal/wizard_settings_modal.coffee @@ -11,6 +11,7 @@ module.exports = class WizardSettingsModal extends View closesOnClickOutside: false events: + 'keyup #wizard-settings-name': 'onNameChange' 'click #wizard-settings-done': 'onWizardSettingsDone' afterRender: -> @@ -18,7 +19,18 @@ module.exports = class WizardSettingsModal extends View view = new WizardSettingsView() @insertSubView view - onWizardSettingsDone: -> + onNameChange: => + forms.clearFormAlerts(@$el) + checkNameExists = => + name = $('#wizard-settings-name').val() + success = (id) => + forms.clearFormAlerts(@$el) + forms.applyErrorsToForm(@$el, {property:'name', message:'is already taken'}) if id and id isnt me.id + $.ajax("/db/user/#{name}/nameToID", {success: success}) + _.debounce(checkNameExists, 300)() + + + onWizardSettingsDone: => me.set('name', $('#wizard-settings-name').val()) forms.clearFormAlerts(@$el) res = me.validate() From dbeb3d445b0eb54c68077a1cea69cd3dd097ddea Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Sun, 23 Mar 2014 16:48:30 -0700 Subject: [PATCH 14/41] Give focus back to spell view on palette click. --- app/lib/God.coffee | 4 ++-- app/models/ThangType.coffee | 4 ++-- .../play/level/tome/spell_palette_entry.sass | 2 -- app/views/play/ladder/ladder_tab.coffee | 14 +++++++------- .../level/tome/spell_palette_entry_view.coffee | 3 --- 5 files changed, 11 insertions(+), 16 deletions(-) diff --git a/app/lib/God.coffee b/app/lib/God.coffee index 3839013a6..6fe758391 100644 --- a/app/lib/God.coffee +++ b/app/lib/God.coffee @@ -7,7 +7,7 @@ World = require 'lib/world/world' # Also uncomment vendor_with_box2d.js in index.html if you want Collision to run and things to move. module.exports = class God - @ids: ['Athena', 'Baldr', 'Crom', 'Dagr', 'Eris', 'Freyja', 'Great Gish', 'Hades', 'Ishtar', 'Janus', 'Khronos', 'Loki', 'Marduk', 'Negafook', 'Odin', 'Poseidon', 'Quetzalcoatl', 'Ra', 'Shiva', 'Thor', 'Umvelinqangi', 'Týr', 'Vishnu', 'Wepwawet', 'Xipe Totec', 'Yahweh', 'Zeus', '上帝', 'Tiamat', '盘古', 'Phoebe', 'Artemis', 'Osiris', "嫦娥", 'Anhur', 'Teshub', 'Enlil', 'Perkele', 'Aether', 'Chaos', 'Hera', 'Iris', 'Theia', 'Uranus', 'Stribog', 'Sabazios', 'Izanagi', 'Ao', 'Tāwhirimātea', 'Tengri', 'Inmar', 'Torngarsuk', 'Centzonhuitznahua', 'Hunab Ku', 'Apollo', 'Helios', 'Thoth', 'Hyperion', 'Alectrona', 'Eos', 'Mitra', 'Saranyu', 'Freyr', 'Koyash', 'Atropos', 'Clotho', 'Lachesis', 'Tyche', 'Skuld', 'Urðr', 'Verðandi', 'Camaxtli', 'Huhetotl', 'Set', 'Anu', 'Allah', 'Anshar', 'Hermes', 'Lugh', 'Brigit', 'Manannan Mac Lir', 'Persephone', 'Mercury', 'Venus', 'Mars', 'Azrael', 'He-Man', 'Anansi', 'Issek', 'Mog', 'Kos', 'Amaterasu Omikami', 'Raijin', 'Susanowo', 'Blind Io', 'The Lady', 'Offler', 'Ptah', 'Anubis', 'Ereshkigal', 'Nergal', 'Thanatos', 'Macaria', 'Angelos', 'Erebus', 'Hecate', 'Hel', 'Orcus', 'Ishtar-Deela Nakh', 'Prometheus', 'Hephaestos', 'Sekhmet', 'Ares', 'Enyo', 'Otrera', 'Pele', 'Hadúr', 'Hachiman', 'Dayisun Tngri', 'Ullr', 'Lua', 'Minerva'] + @ids: ['Athena', 'Baldr', 'Crom', 'Dagr', 'Eris', 'Freyja', 'Great Gish', 'Hades', 'Ishtar', 'Janus', 'Khronos', 'Loki', 'Marduk', 'Negafook', 'Odin', 'Poseidon', 'Quetzalcoatl', 'Ra', 'Shiva', 'Thor', 'Umvelinqangi', 'Týr', 'Vishnu', 'Wepwawet', 'Xipe Totec', 'Yahweh', 'Zeus', '上帝', 'Tiamat', '盘古', 'Phoebe', 'Artemis', 'Osiris', "嫦娥", 'Anhur', 'Teshub', 'Enlil', 'Perkele', 'Chaos', 'Hera', 'Iris', 'Theia', 'Uranus', 'Stribog', 'Sabazios', 'Izanagi', 'Ao', 'Tāwhirimātea', 'Tengri', 'Inmar', 'Torngarsuk', 'Centzonhuitznahua', 'Hunab Ku', 'Apollo', 'Helios', 'Thoth', 'Hyperion', 'Alectrona', 'Eos', 'Mitra', 'Saranyu', 'Freyr', 'Koyash', 'Atropos', 'Clotho', 'Lachesis', 'Tyche', 'Skuld', 'Urðr', 'Verðandi', 'Camaxtli', 'Huhetotl', 'Set', 'Anu', 'Allah', 'Anshar', 'Hermes', 'Lugh', 'Brigit', 'Manannan Mac Lir', 'Persephone', 'Mercury', 'Venus', 'Mars', 'Azrael', 'He-Man', 'Anansi', 'Issek', 'Mog', 'Kos', 'Amaterasu Omikami', 'Raijin', 'Susanowo', 'Blind Io', 'The Lady', 'Offler', 'Ptah', 'Anubis', 'Ereshkigal', 'Nergal', 'Thanatos', 'Macaria', 'Angelos', 'Erebus', 'Hecate', 'Hel', 'Orcus', 'Ishtar-Deela Nakh', 'Prometheus', 'Hephaestos', 'Sekhmet', 'Ares', 'Enyo', 'Otrera', 'Pele', 'Hadúr', 'Hachiman', 'Dayisun Tngri', 'Ullr', 'Lua', 'Minerva'] @nextID: -> @lastID = (if @lastID? then @lastID + 1 else Math.floor(@ids.length * Math.random())) % @ids.length @ids[@lastID] @@ -52,7 +52,7 @@ module.exports = class God onWorkerMessage: (event) => worker = event.target if event.data.type is 'worker-initialized' - #console.log "Worker initialized after", ((new Date()) - worker.creationTime), "ms (before it was needed)" + #console.log @id, "worker initialized after", ((new Date()) - worker.creationTime), "ms (before it was needed)" worker.initialized = true worker.removeEventListener 'message', @onWorkerMessage diff --git a/app/models/ThangType.coffee b/app/models/ThangType.coffee index 8d372c3cc..281a31c2d 100644 --- a/app/models/ThangType.coffee +++ b/app/models/ThangType.coffee @@ -143,9 +143,9 @@ module.exports = class ThangType extends CocoModel @builder.buildAsync() unless buildQueue.length > 1 @builder.on 'complete', @onBuildSpriteSheetComplete, @, true, key return true - t0 = new Date().getTime() + t0 = new Date() spriteSheet = @builder.build() - console.warn "Built #{@get('name')} in #{new Date().getTime() - t0}ms on main thread." + console.warn "Built #{@get('name')} in #{new Date() - t0}ms on main thread." @spriteSheets[key] = spriteSheet delete @building[key] spriteSheet diff --git a/app/styles/play/level/tome/spell_palette_entry.sass b/app/styles/play/level/tome/spell_palette_entry.sass index 5e8ee3a0f..f6afd320e 100644 --- a/app/styles/play/level/tome/spell_palette_entry.sass +++ b/app/styles/play/level/tome/spell_palette_entry.sass @@ -9,8 +9,6 @@ border: 1px solid transparent cursor: pointer @include user-select(all) - ::selection - background: transparent &:hover border: 1px solid #000000 diff --git a/app/views/play/ladder/ladder_tab.coffee b/app/views/play/ladder/ladder_tab.coffee index d629c7d94..4dfff429c 100644 --- a/app/views/play/ladder/ladder_tab.coffee +++ b/app/views/play/ladder/ladder_tab.coffee @@ -19,10 +19,10 @@ module.exports = class LadderTabView extends CocoView id: 'ladder-tab-view' template: require 'templates/play/ladder/ladder_tab' startsLoading: true - + events: 'click .connect-facebook': 'onConnectFacebook' - + subscriptions: 'facebook-logged-in': 'onConnectedWithFacebook' @@ -48,13 +48,13 @@ module.exports = class LadderTabView extends CocoView # FACEBOOK # Connect button pressed - + onConnectFacebook: -> @connecting = true FB.login() - + onConnectedWithFacebook: -> location.reload() if @connecting - + # Load friends loadFacebookFriendSessions: -> @@ -101,7 +101,7 @@ module.exports = class LadderTabView extends CocoView onGPlusFriendSessionsLoaded: (result) => @loadingGPlusFriends = false @renderMaybe() - + # LADDER LOADING refreshLadder: -> @@ -117,7 +117,7 @@ module.exports = class LadderTabView extends CocoView leaderboardsLoaded: => @loadingLeaderboards = false @renderMaybe() - + renderMaybe: -> return if @loadingFacebookFriends or @loadingLeaderboards @startsLoading = false diff --git a/app/views/play/level/tome/spell_palette_entry_view.coffee b/app/views/play/level/tome/spell_palette_entry_view.coffee index 770f71e0a..ba6665931 100644 --- a/app/views/play/level/tome/spell_palette_entry_view.coffee +++ b/app/views/play/level/tome/spell_palette_entry_view.coffee @@ -171,9 +171,6 @@ module.exports = class SpellPaletteEntryView extends View Backbone.Mediator.publish 'tome:palette-pin-toggled', entry: @, pinned: @popoverPinned onClick: (e) => - unless @popoverPinned - $(e.target).selectText() - e.stopPropagation() # don't re-focus editor since we might want to select text @togglePinned() Backbone.Mediator.publish 'tome:palette-clicked', thang: @thang, prop: @doc.name, entry: @ From f66e210c73ce47020f9336b0b44614186b74d4f4 Mon Sep 17 00:00:00 2001 From: Dominik Maier Date: Mon, 24 Mar 2014 01:18:36 +0100 Subject: [PATCH 15/41] regarding codecombat/codecombat#655 debounce debounces. --- app/views/modal/wizard_settings_modal.coffee | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/app/views/modal/wizard_settings_modal.coffee b/app/views/modal/wizard_settings_modal.coffee index f9f4dc193..a6ec66199 100644 --- a/app/views/modal/wizard_settings_modal.coffee +++ b/app/views/modal/wizard_settings_modal.coffee @@ -10,6 +10,10 @@ module.exports = class WizardSettingsModal extends View template: template closesOnClickOutside: false + constructor: (options) -> + @onNameChange = _.debounce(@checkNameExists, 200) + super options + events: 'keyup #wizard-settings-name': 'onNameChange' 'click #wizard-settings-done': 'onWizardSettingsDone' @@ -19,16 +23,13 @@ module.exports = class WizardSettingsModal extends View view = new WizardSettingsView() @insertSubView view - onNameChange: => + checkNameExists: => forms.clearFormAlerts(@$el) - checkNameExists = => - name = $('#wizard-settings-name').val() - success = (id) => - forms.clearFormAlerts(@$el) - forms.applyErrorsToForm(@$el, {property:'name', message:'is already taken'}) if id and id isnt me.id - $.ajax("/db/user/#{name}/nameToID", {success: success}) - _.debounce(checkNameExists, 300)() - + name = $('#wizard-settings-name').val() + success = (id) => + forms.clearFormAlerts(@$el) + forms.applyErrorsToForm(@$el, {property:'name', message:'is already taken'}) if id and id isnt me.id + $.ajax("/db/user/#{name}/nameToID", {success: success}) onWizardSettingsDone: => me.set('name', $('#wizard-settings-name').val()) From 5852b87aa3c63299c4eb664e05f4785fb1fbdbc7 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Sun, 23 Mar 2014 18:55:44 -0700 Subject: [PATCH 16/41] A little longer debounce is better. --- app/views/modal/wizard_settings_modal.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/modal/wizard_settings_modal.coffee b/app/views/modal/wizard_settings_modal.coffee index a6ec66199..0223187bd 100644 --- a/app/views/modal/wizard_settings_modal.coffee +++ b/app/views/modal/wizard_settings_modal.coffee @@ -11,7 +11,7 @@ module.exports = class WizardSettingsModal extends View closesOnClickOutside: false constructor: (options) -> - @onNameChange = _.debounce(@checkNameExists, 200) + @onNameChange = _.debounce(@checkNameExists, 500) super options events: From 3e4d7d745a58bb1f03f2766a68dce8cf9498bff8 Mon Sep 17 00:00:00 2001 From: Akaza Akari Date: Sun, 23 Mar 2014 23:19:18 -0700 Subject: [PATCH 17/41] Script-based movement for all CocoSprites for #140 --- app/lib/surface/CocoSprite.coffee | 78 ++++++++++++++++++++++++++++-- app/lib/surface/IndieSprite.coffee | 56 +-------------------- 2 files changed, 74 insertions(+), 60 deletions(-) diff --git a/app/lib/surface/CocoSprite.coffee b/app/lib/surface/CocoSprite.coffee index 0b6e450e2..b7ea12ef0 100644 --- a/app/lib/surface/CocoSprite.coffee +++ b/app/lib/surface/CocoSprite.coffee @@ -35,6 +35,7 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass spriteSheetCache: null showInvisible: false + possessed: false flipped: false flippedCount: 0 originalScaleX: null @@ -54,6 +55,7 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass 'level-sprite-clear-dialogue': 'onClearDialogue' 'level-set-letterbox': 'onSetLetterbox' 'surface:ticked': 'onSurfaceTicked' + 'level-sprite-move': 'onMove' constructor: (@thangType, options) -> super() @@ -223,7 +225,7 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass @thang.bobHeight * (1 + Math.sin(@age * Math.PI / @thang.bobTime)) getWorldPosition: -> - p1 = @thang.pos + p1 = if @possessed then @shadow.pos else @thang.pos if bobOffset = @getBobOffset() p1 = p1.copy?() or _.clone(p1) p1.z += bobOffset @@ -309,8 +311,9 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass @updateIsometricRotation(rotation, imageObject) getRotation: -> - return @rotation if not @thang?.rotation - rotation = @thang?.rotation + thang = if @possessed then @shadow else @thang + return @rotation if not thang?.rotation + rotation = thang?.rotation rotation = (360 - (rotation * 180 / Math.PI) % 360) % 360 rotation -= 360 if rotation > 180 rotation @@ -333,13 +336,14 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass determineAction: -> action = null - action = @thang.getActionName() if @thang?.acts + thang = if @possessed then @shadow else @thang + action = thang.action if thang?.acts action ?= @currentRootAction.name if @currentRootAction? action ?= 'idle' action = null unless @actions[action]? return null unless action action = 'break' if @actions.break? and @thang?.erroredOut - action = 'die' if @actions.die? and @thang?.health? and @thang.health <= 0 + action = 'die' if @actions.die? and thang?.health? and thang.health <= 0 @actions[action] updateActionDirection: (@wallGrid=null) -> @@ -619,3 +623,67 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass instance = AudioPlayer.playSound name, volume, delay, @getWorldPosition() # console.log @thang?.id, "played sound", name, "with delay", delay, "volume", volume, "and got sound instance", instance instance + + onMove: (e) -> + return unless e.spriteID is @thang?.id + pos = e.pos + if _.isArray pos + pos = new Vector pos... + else if _.isString pos + return console.warn "Couldn't find target sprite", pos, "from", @options.sprites unless pos of @options.sprites + target = @options.sprites[pos].thang + heading = Vector.subtract(target.pos, @thang.pos).normalize() + distance = @thang.pos.distance target.pos + offset = Math.max(target.width, target.height, 2) / 2 + 3 + pos = Vector.add(@thang.pos, heading.multiply(distance - offset)) + Backbone.Mediator.publish 'level-sprite-clear-dialogue', {} + @onClearDialogue() + args = [pos] + args.push(e.duration) if e.duration? + @move(args...) + + move: (pos, duration=2000, endAnimation='idle') => + @updateShadow() + if not duration + createjs.Tween.removeTweens(@shadow.pos) if @lastTween + @lastTween = null + z = @shadow.pos.z + @shadow.pos = pos + @shadow.pos.z = z + @imageObject.gotoAndPlay(endAnimation) + return + + @shadow.action = 'move' + @shadow.actionActivated = true + @pointToward(pos) + @possessed = true + @update true + + ease = createjs.Ease.getPowInOut(2.2) + if @lastTween + ease = createjs.Ease.getPowOut(1.2) + createjs.Tween.removeTweens(@shadow.pos) + + endFunc = => + @lastTween = null + @imageObject.gotoAndPlay(endAnimation) + @shadow.action = 'idle' + @update true + @possessed = false + + @lastTween = createjs.Tween + .get(@shadow.pos) + .to({x:pos.x, y:pos.y}, duration, ease) + .call(endFunc) + + pointToward: (pos) -> + @shadow.rotation = Math.atan2(pos.y - @shadow.pos.y, pos.x - @shadow.pos.x) + if (@shadow.rotation * 180 / Math.PI) % 90 is 0 + @shadow.rotation += 0.01 + + updateShadow: -> + @shadow = {} if not @shadow + @shadow.pos = @thang.pos + @shadow.rotation = @thang.rotation + @shadow.action = @thang.action + @shadow.actionActivated = @thang.actionActivated diff --git a/app/lib/surface/IndieSprite.coffee b/app/lib/surface/IndieSprite.coffee index 5a5e4f49c..e66b90e16 100644 --- a/app/lib/surface/IndieSprite.coffee +++ b/app/lib/surface/IndieSprite.coffee @@ -7,13 +7,13 @@ Camera = require './Camera' module.exports = IndieSprite = class IndieSprite extends CocoSprite notOfThisWorld: true subscriptions: - 'level-sprite-move': 'onMove' 'note-group-started': 'onNoteGroupStarted' 'note-group-ended': 'onNoteGroupEnded' constructor: (thangType, options) -> options.thang = @makeIndieThang thangType, options.thangID, options.pos super thangType, options + @shadow = @thang makeIndieThang: (thangType, thangID, pos) -> @thang = thang = new Thang null, thangType.get('name'), thangID @@ -35,57 +35,3 @@ module.exports = IndieSprite = class IndieSprite extends CocoSprite onNoteGroupEnded: => @scriptRunning = false onMouseEvent: (e, ourEventName) -> super e, ourEventName unless @scriptRunning defaultPos: -> x: -20, y: 20, z: @thang.depth / 2 - - onMove: (e) -> - return unless e.spriteID is @thang.id - pos = e.pos - if _.isArray pos - pos = new Vector pos... - else if _.isString pos - return console.warn "Couldn't find target sprite", pos, "from", @options.sprites unless pos of @options.sprites - target = @options.sprites[pos].thang - heading = Vector.subtract(target.pos, @thang.pos).normalize() - distance = @thang.pos.distance target.pos - offset = Math.max(target.width, target.height, 2) / 2 + 3 - pos = Vector.add(@thang.pos, heading.multiply(distance - offset)) - Backbone.Mediator.publish 'level-sprite-clear-dialogue', {} - @onClearDialogue() - args = [pos] - args.push(e.duration) if e.duration? - @move(args...) - - move: (pos, duration=2000, endAnimation='idle') => - if not duration - createjs.Tween.removeTweens(@thang.pos) if @lastTween - @lastTween = null - z = @thang.pos.z - @thang.pos = pos - @thang.pos.z = z - @imageObject.gotoAndPlay(endAnimation) - return - - @thang.action = 'move' - @thang.actionActivated = true - @pointToward(pos) - @update true - - ease = createjs.Ease.getPowInOut(2.2) - if @lastTween - ease = createjs.Ease.getPowOut(1.2) - createjs.Tween.removeTweens(@thang.pos) - - endFunc = => - @lastTween = null - @imageObject.gotoAndPlay(endAnimation) - @thang.action = 'idle' - @update true - - @lastTween = createjs.Tween - .get(@thang.pos) - .to({x:pos.x, y:pos.y}, duration, ease) - .call(endFunc) - - pointToward: (pos) -> - @thang.rotation = Math.atan2(pos.y - @thang.pos.y, pos.x - @thang.pos.x) - if (@thang.rotation * 180 / Math.PI) % 90 is 0 - @thang.rotation += 0.01 From 67f5270bfc158a04dbf2785daba1de9ee4621107 Mon Sep 17 00:00:00 2001 From: Shrihari Date: Mon, 24 Mar 2014 12:23:41 +0530 Subject: [PATCH 18/41] Migrate .on, .once - Batch 1 --- app/lib/auth.coffee | 2 +- app/views/account/profile_view.coffee | 8 ++++---- app/views/account/settings_view.coffee | 6 +++--- app/views/admin/level_sessions_view.coffee | 2 +- app/views/admin/users_view.coffee | 2 +- app/views/editor/article/edit.coffee | 8 ++++---- app/views/kinds/SearchView.coffee | 5 ++--- app/views/modal/versions_modal.coffee | 8 ++++---- app/views/play/level/playback_view.coffee | 6 ++---- app/views/play/level_view.coffee | 16 ++++++---------- app/views/play/spectate_view.coffee | 12 ++++-------- 11 files changed, 32 insertions(+), 43 deletions(-) diff --git a/app/lib/auth.coffee b/app/lib/auth.coffee index df2b2b6c3..dfe736107 100644 --- a/app/lib/auth.coffee +++ b/app/lib/auth.coffee @@ -58,7 +58,7 @@ init = -> storage.save(CURRENT_USER_KEY, me.attributes) me.loadGravatarProfile() if me.get('email') - me.on('sync', userSynced) + @listenTo(me, 'sync', userSynced) userSynced = (user) -> Backbone.Mediator.publish('me:synced', {me:user}) diff --git a/app/views/account/profile_view.coffee b/app/views/account/profile_view.coffee index 4184a0787..32faec138 100644 --- a/app/views/account/profile_view.coffee +++ b/app/views/account/profile_view.coffee @@ -11,14 +11,14 @@ module.exports = class ProfileView extends View super options @user = User.getByID(@userID) @loading = false if 'gravatarProfile' of @user - @user.on('change', @userChanged) - @user.on('error', @userError) + @listenTo(@user, 'change', @userChanged) + @listenTo(@user, 'error', @userError) - userChanged: (user) => + userChanged: (user) -> @loading = false if 'gravatarProfile' of user @render() - userError: (user) => + userError: (user) -> @loading = false @render() diff --git a/app/views/account/settings_view.coffee b/app/views/account/settings_view.coffee index 27edf27e1..8357af325 100644 --- a/app/views/account/settings_view.coffee +++ b/app/views/account/settings_view.coffee @@ -19,11 +19,11 @@ module.exports = class SettingsView extends View @save = _.debounce(@save, 200) super options return unless me - me.on('change', @refreshPicturePane) # depends on gravatar load - me.on('invalid', (errors) -> forms.applyErrorsToForm(@$el, me.validationError)) + @listenTo(me, 'change', @refreshPicturePane) # depends on gravatar load + @listenTo(me, 'invalid', (errors) -> forms.applyErrorsToForm(@$el, me.validationError)) window.f = @getSubscriptions - refreshPicturePane: => + refreshPicturePane: -> h = $(@template(@getRenderData())) newPane = $('#picture-pane', h) oldPane = $('#picture-pane') diff --git a/app/views/admin/level_sessions_view.coffee b/app/views/admin/level_sessions_view.coffee index 6685db37a..e66fefc2f 100644 --- a/app/views/admin/level_sessions_view.coffee +++ b/app/views/admin/level_sessions_view.coffee @@ -18,7 +18,7 @@ module.exports = class LevelSessionsView extends View getLevelSessions: -> @sessions = new LevelSessionCollection @sessions.fetch() - @sessions.on('all', @render) + @listenTo(@sessions, 'all', @render) getRenderData: => c = super() diff --git a/app/views/admin/users_view.coffee b/app/views/admin/users_view.coffee index c6c175583..c19c7bd37 100644 --- a/app/views/admin/users_view.coffee +++ b/app/views/admin/users_view.coffee @@ -36,7 +36,7 @@ module.exports = class UsersView extends View }) @users = new UserCollection() @users.fetch() - @users.on('all', @render) + @listenTo(@users, 'all', @render) getRenderData: => c = super() diff --git a/app/views/editor/article/edit.coffee b/app/views/editor/article/edit.coffee index 2a7840e9a..42450f90f 100644 --- a/app/views/editor/article/edit.coffee +++ b/app/views/editor/article/edit.coffee @@ -20,15 +20,15 @@ module.exports = class ArticleEditView extends View @article = new Article(_id: @articleID) @article.saveBackups = true @article.fetch() - @article.once('sync', @onArticleSync) - @article.on('schema-loaded', @buildTreema) + @listenToOnce(@article, 'sync', @onArticleSync) + @listenTo(@article, 'schema-loaded', @buildTreema) @pushChangesToPreview = _.throttle(@pushChangesToPreview, 500) - onArticleSync: => + onArticleSync: -> @article.loaded = true @buildTreema() - buildTreema: => + buildTreema: -> return if @treema? or (not @article.loaded) or (not Article.hasSchema()) unless @article.attributes.body @article.set('body', '') diff --git a/app/views/kinds/SearchView.coffee b/app/views/kinds/SearchView.coffee index 6fae0228d..9ecc669b9 100644 --- a/app/views/kinds/SearchView.coffee +++ b/app/views/kinds/SearchView.coffee @@ -64,7 +64,7 @@ module.exports = class ThangTypeHomeView extends View @collection = new SearchCollection(@modelURL, @model, term) @collection.term = term # needed? - @collection.on('sync', @onSearchChange) + @listenTo(@collection, 'sync', @onSearchChange) @showLoading(@$el.find('.results')) @updateHash(term) @@ -79,7 +79,7 @@ module.exports = class ThangTypeHomeView extends View return false unless @collection return term is @collection.term - onSearchChange: => + onSearchChange: -> @hideLoading() documents = @collection.models table = $(@tableTemplate(documents:documents)) @@ -88,7 +88,6 @@ module.exports = class ThangTypeHomeView extends View removeOldSearch: -> return unless @collection? - @collection.off() @collection = null makeNewModel: (e) -> diff --git a/app/views/modal/versions_modal.coffee b/app/views/modal/versions_modal.coffee index 212572666..97aeafb33 100755 --- a/app/views/modal/versions_modal.coffee +++ b/app/views/modal/versions_modal.coffee @@ -23,14 +23,14 @@ module.exports = class VersionsModalView extends ModalView super options @view = new model(_id: @ID) @view.fetch() - @view.once('sync', @onViewSync) + @listenToOnce(@view, 'sync', @onViewSync) - onViewSync: => + onViewSync: -> @collection = new VersionsViewCollection(@url, @view.attributes.original, @model) @collection.fetch() - @collection.on('sync', @onVersionFetched) + @listenTo(@collection, 'sync', @onVersionFetched) - onVersionFetched: => + onVersionFetched: -> @startsLoading = false @render() diff --git a/app/views/play/level/playback_view.coffee b/app/views/play/level/playback_view.coffee index 6bd9144e7..b226a2d3b 100644 --- a/app/views/play/level/playback_view.coffee +++ b/app/views/play/level/playback_view.coffee @@ -43,13 +43,13 @@ module.exports = class PlaybackView extends View constructor: -> super(arguments...) - me.on('change:music', @updateMusicButton, @) + @listenTo(me, 'change:music', @updateMusicButton) afterRender: -> super() @hookUpScrubber() @updateMusicButton() - $(window).on('resize', @onWindowResize) + @listenTo($(window), 'resize', @onWindowResize) # callbacks @@ -223,7 +223,5 @@ module.exports = class PlaybackView extends View $(document.activeElement).blur() destroy: -> - me.off('change:music', @updateMusicButton, @) - $(window).off('resize', @onWindowResize) @onWindowResize = null super() diff --git a/app/views/play/level_view.coffee b/app/views/play/level_view.coffee index 98b1d3cd8..4d7e76a3e 100644 --- a/app/views/play/level_view.coffee +++ b/app/views/play/level_view.coffee @@ -82,8 +82,8 @@ module.exports = class PlayLevelView extends View @isEditorPreview = @getQueryVariable 'dev' @sessionID = @getQueryVariable 'session' - $(window).on('resize', @onWindowResize) - @supermodel.once 'error', @onLevelLoadError + @listenTo($(window), 'resize', @onWindowResize) + @listenToOnce(@supermodel, 'error', @onLevelLoadError) @saveScreenshot = _.throttle @saveScreenshot, 30000 if @isEditorPreview @@ -95,7 +95,7 @@ module.exports = class PlayLevelView extends View else @load() - onLevelLoadError: (e) => + onLevelLoadError: (e) -> application.router.navigate "/play?not_found=#{@levelID}", {trigger: true} setLevel: (@level, @supermodel) -> @@ -108,8 +108,8 @@ module.exports = class PlayLevelView extends View load: -> @levelLoader = new LevelLoader supermodel: @supermodel, levelID: @levelID, sessionID: @sessionID, opponentSessionID: @getQueryVariable('opponent'), team: @getQueryVariable("team") - @levelLoader.once 'loaded-all', @onLevelLoaderLoaded, @ - @levelLoader.on 'progress', @onLevelLoaderProgressChanged, @ + @listenToOnce(@levelLoader, 'loaded-all', @onLevelLoaderLoaded) + @listenTo(@levelLoader, 'progress', @onLevelLoaderProgressChanged) @god = new God() getRenderData: -> @@ -168,7 +168,7 @@ module.exports = class PlayLevelView extends View @initScriptManager() @insertSubviews ladderGame: (@level.get('type') is "ladder") @initVolume() - @session.on 'change:multiplayer', @onMultiplayerChanged, @ + @listenTo(@session, 'change:multiplayer', @onMultiplayerChanged) @originalSessionState = $.extend(true, {}, @session.get('state')) @register() @controlBar.setBus(@bus) @@ -462,20 +462,16 @@ module.exports = class PlayLevelView extends View AudioPlayer.preloadSoundReference sound destroy: -> - @supermodel?.off 'error', @onLevelLoadError - @levelLoader?.off 'loaded-all', @onLevelLoaderLoaded @levelLoader?.destroy() @surface?.destroy() @god?.destroy() @goalManager?.destroy() @scriptManager?.destroy() - $(window).off('resize', @onWindowResize) delete window.world # not sure where this is set, but this is one way to clean it up clearInterval(@pointerInterval) @bus?.destroy() #@instance.save() unless @instance.loading console.profileEnd?() if PROFILE_ME - @session?.off 'change:multiplayer', @onMultiplayerChanged, @ @onLevelLoadError = null @onLevelLoaderLoaded = null @onSupermodelLoadedOne = null diff --git a/app/views/play/spectate_view.coffee b/app/views/play/spectate_view.coffee index 97653ff78..18821ca4f 100644 --- a/app/views/play/spectate_view.coffee +++ b/app/views/play/spectate_view.coffee @@ -68,8 +68,8 @@ module.exports = class SpectateLevelView extends View constructor: (options, @levelID) -> console.profile?() if PROFILE_ME super options - $(window).on('resize', @onWindowResize) - @supermodel.once 'error', @onLevelLoadError + @listenTo($(window), 'resize', @onWindowResize) + @listenToOnce(@supermodel, 'error', @onLevelLoadError) @sessionOne = @getQueryVariable 'session-one' @sessionTwo = @getQueryVariable 'session-two' @@ -105,8 +105,8 @@ module.exports = class SpectateLevelView extends View opponentSessionID: @sessionTwo spectateMode: true team: @getQueryVariable("team") - @levelLoader.once 'loaded-all', @onLevelLoaderLoaded, @ - @levelLoader.on 'progress', @onLevelLoaderProgressChanged, @ + @listenToOnce(@levelLoader, 'loaded-all', @onLevelLoaderLoaded) + @listenTo(@levelLoader, 'progress', @onLevelLoaderProgressChanged) @god = new God maxWorkerPoolSize: 1, maxAngels: 1 getRenderData: -> @@ -467,18 +467,14 @@ module.exports = class SpectateLevelView extends View cb(null, $.parseJSON(jqxhr.responseText)) destroy: ()-> - @supermodel?.off 'error', @onLevelLoadError - @levelLoader?.off 'loaded-all', @onLevelLoaderLoaded @levelLoader?.destroy() @surface?.destroy() @god?.destroy() @goalManager?.destroy() @scriptManager?.destroy() - $(window).off('resize', @onWindowResize) delete window.world # not sure where this is set, but this is one way to clean it up clearInterval(@pointerInterval) console.profileEnd?() if PROFILE_ME - @session?.off 'change:multiplayer', @onMultiplayerChanged, @ @onLevelLoadError = null @onLevelLoaderLoaded = null @onSupermodelLoadedOne = null From 5845125b4316cb6da9931e6dfbef25665cbcc347 Mon Sep 17 00:00:00 2001 From: Shrihari Date: Mon, 24 Mar 2014 12:32:29 +0530 Subject: [PATCH 19/41] Migrate .on, .once - Fixed a small error --- app/lib/auth.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/auth.coffee b/app/lib/auth.coffee index dfe736107..5a14effb0 100644 --- a/app/lib/auth.coffee +++ b/app/lib/auth.coffee @@ -58,7 +58,7 @@ init = -> storage.save(CURRENT_USER_KEY, me.attributes) me.loadGravatarProfile() if me.get('email') - @listenTo(me, 'sync', userSynced) + Backbone.listenTo(me, 'sync', userSynced) userSynced = (user) -> Backbone.Mediator.publish('me:synced', {me:user}) From e9118142dbf0da4d6243c466f4a05b08f28d84e3 Mon Sep 17 00:00:00 2001 From: Ting-Kuan Date: Mon, 24 Mar 2014 10:54:59 -0400 Subject: [PATCH 20/41] Fix issue #662 --- app/views/play/level/tome/spell_toolbar_view.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/play/level/tome/spell_toolbar_view.coffee b/app/views/play/level/tome/spell_toolbar_view.coffee index 98464bf20..2abd5460d 100644 --- a/app/views/play/level/tome/spell_toolbar_view.coffee +++ b/app/views/play/level/tome/spell_toolbar_view.coffee @@ -103,8 +103,8 @@ module.exports = class SpellToolbarView extends View updateScroll: -> return unless statementStart = @callState?.statements?[@statementIndex]?.range[0] - text = @ace.getValue() - currentLine = text.substr(0, statementStart).split('\n').length - 1 + text = @ace.getValue() # code in editor + currentLine = statementStart.row @ace.scrollToLine currentLine, true, true setCallState: (callState, statementIndex, @callIndex, @metrics) -> From 69ee16f77f9626177525fc2ff6bae1482d3b0075 Mon Sep 17 00:00:00 2001 From: Shrihari Date: Mon, 24 Mar 2014 21:37:09 +0530 Subject: [PATCH 21/41] Fixed wrong migrations --- app/views/kinds/SearchView.coffee | 1 + app/views/play/level/playback_view.coffee | 2 +- app/views/play/level_view.coffee | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/views/kinds/SearchView.coffee b/app/views/kinds/SearchView.coffee index 9ecc669b9..a4aa0a468 100644 --- a/app/views/kinds/SearchView.coffee +++ b/app/views/kinds/SearchView.coffee @@ -88,6 +88,7 @@ module.exports = class ThangTypeHomeView extends View removeOldSearch: -> return unless @collection? + @collection.off() @collection = null makeNewModel: (e) -> diff --git a/app/views/play/level/playback_view.coffee b/app/views/play/level/playback_view.coffee index b226a2d3b..26a9058f5 100644 --- a/app/views/play/level/playback_view.coffee +++ b/app/views/play/level/playback_view.coffee @@ -49,7 +49,7 @@ module.exports = class PlaybackView extends View super() @hookUpScrubber() @updateMusicButton() - @listenTo($(window), 'resize', @onWindowResize) + $(window).on('resize', @onWindowResize) # callbacks diff --git a/app/views/play/level_view.coffee b/app/views/play/level_view.coffee index 4d7e76a3e..ff88a90c5 100644 --- a/app/views/play/level_view.coffee +++ b/app/views/play/level_view.coffee @@ -82,7 +82,7 @@ module.exports = class PlayLevelView extends View @isEditorPreview = @getQueryVariable 'dev' @sessionID = @getQueryVariable 'session' - @listenTo($(window), 'resize', @onWindowResize) + $(window).on('resize', @onWindowResize) @listenToOnce(@supermodel, 'error', @onLevelLoadError) @saveScreenshot = _.throttle @saveScreenshot, 30000 From 0160538b44e7d310cccf04ea7652e5b9068a0d8e Mon Sep 17 00:00:00 2001 From: Shrihari Date: Mon, 24 Mar 2014 22:28:34 +0530 Subject: [PATCH 22/41] More migrations --- app/lib/LevelBus.coffee | 3 +-- app/lib/LevelLoader.coffee | 9 ++++----- app/lib/simulator/Simulator.coffee | 4 ++-- app/lib/surface/CocoSprite.coffee | 2 +- app/lib/surface/Mark.coffee | 5 ++--- app/models/SuperModel.coffee | 6 +++--- app/treema-ext.coffee | 12 ++++++------ app/views/account/settings_view.coffee | 4 ++-- app/views/admin/clas_view.coffee | 2 +- app/views/editor/components/main.coffee | 4 ++-- app/views/editor/level/add_thangs_view.coffee | 4 ++-- app/views/editor/level/component/edit.coffee | 4 ++-- app/views/editor/level/edit.coffee | 8 ++++---- app/views/editor/level/system/add.coffee | 4 ++-- app/views/editor/level/system/edit.coffee | 4 ++-- app/views/editor/level/systems_tab_view.coffee | 4 ++-- app/views/editor/level/thangs_tab_view.coffee | 8 ++++---- app/views/play/ladder/play_modal.coffee | 10 +++++----- app/views/play/ladder_view.coffee | 4 ++-- app/views/play/level/level_chat_view.coffee | 3 +-- app/views/play/level/modal/multiplayer_modal.coffee | 3 +-- app/views/play/level/tome/spell_view.coffee | 3 +-- 22 files changed, 52 insertions(+), 58 deletions(-) diff --git a/app/lib/LevelBus.coffee b/app/lib/LevelBus.coffee index 2ac996640..8b270808b 100644 --- a/app/lib/LevelBus.coffee +++ b/app/lib/LevelBus.coffee @@ -32,7 +32,7 @@ module.exports = class LevelBus extends Bus @fireScriptsRef = @fireRef?.child('scripts') setSession: (@session) -> - @session.on 'change:multiplayer', @onMultiplayerChanged, @ + @listenTo(@session, 'change:multiplayer', @onMultiplayerChanged) onPoint: -> return true unless @session?.get('multiplayer') @@ -226,5 +226,4 @@ module.exports = class LevelBus extends Bus tempSession.save(patch, {patch: true}) destroy: -> - @session.off 'change:multiplayer', @onMultiplayerChanged, @ super() diff --git a/app/lib/LevelLoader.coffee b/app/lib/LevelLoader.coffee index 9d65a3d5d..ce842fbd0 100644 --- a/app/lib/LevelLoader.coffee +++ b/app/lib/LevelLoader.coffee @@ -60,13 +60,13 @@ module.exports = class LevelLoader extends CocoClass # Unless you specify cache:false, sometimes the browser will use a cached session # and players will 'lose' code @session.fetch({cache:false}) - @session.once 'sync', @onSessionLoaded, @ + @listenToOnce(@session, 'sync', @onSessionLoaded) if @opponentSessionID @opponentSession = new LevelSession() @opponentSession.url = "/db/level_session/#{@opponentSessionID}" @opponentSession.fetch() - @opponentSession.once 'sync', @onSessionLoaded, @ + @listenToOnce(@opponentSession, 'sync', @onSessionLoaded) sessionsLoaded: -> return true if @headless @@ -82,8 +82,8 @@ module.exports = class LevelLoader extends CocoClass # Supermodel (Level) Loading loadLevelModels: -> - @supermodel.on 'loaded-one', @onSupermodelLoadedOne, @ - @supermodel.once 'error', @onSupermodelError, @ + @listenTo(@supermodel, 'loaded-one', @onSupermodelLoadedOne) + @listenToOnce(@supermodel, 'error', @onSupermodelError) @level = @supermodel.getModel(Level, @levelID) or new Level _id: @levelID levelID = @levelID headless = @headless @@ -235,7 +235,6 @@ module.exports = class LevelLoader extends CocoClass @trigger 'loaded-all' if @progress() is 1 destroy: -> - @supermodel.off 'loaded-one', @onSupermodelLoadedOne @world = null # don't hold onto garbage @update = null super() diff --git a/app/lib/simulator/Simulator.coffee b/app/lib/simulator/Simulator.coffee index 888ba3f52..e9596eae1 100644 --- a/app/lib/simulator/Simulator.coffee +++ b/app/lib/simulator/Simulator.coffee @@ -48,9 +48,9 @@ module.exports = class Simulator extends CocoClass @god = new God maxWorkerPoolSize: 1, maxAngels: 1 # Start loading worker. @levelLoader = new LevelLoader supermodel: @supermodel, levelID: @task.getLevelName(), sessionID: @task.getFirstSessionID(), headless: true - @levelLoader.once 'loaded-all', @simulateGame + @listenToOnce(@levelLoader, 'loaded-all', @simulateGame) - simulateGame: => + simulateGame: -> return if @destroyed @trigger 'statusUpdate', 'All resources loaded, simulating!', @task.getSessions() @assignWorldAndLevelFromLevelLoaderAndDestroyIt() diff --git a/app/lib/surface/CocoSprite.coffee b/app/lib/surface/CocoSprite.coffee index 0b6e450e2..e7ca4ccfe 100644 --- a/app/lib/surface/CocoSprite.coffee +++ b/app/lib/surface/CocoSprite.coffee @@ -73,7 +73,7 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass else @stillLoading = true @thangType.fetch() - @thangType.once 'sync', @setupSprite, @ + @listenToOnce(@thangType, 'sync', @setupSprite) setupSprite: -> @stillLoading = false diff --git a/app/lib/surface/Mark.coffee b/app/lib/surface/Mark.coffee index 58df6ded3..4e7d16e6d 100644 --- a/app/lib/surface/Mark.coffee +++ b/app/lib/surface/Mark.coffee @@ -22,7 +22,6 @@ module.exports = class Mark extends CocoClass destroy: -> @mark?.parent?.removeChild @mark @markSprite?.destroy() - @thangType?.off 'sync', @onLoadedThangType, @ @sprite = null super() @@ -177,7 +176,7 @@ module.exports = class Mark extends CocoClass return @loadThangType() if not thangType @thangType = thangType - return @thangType.once 'sync', @onLoadedThangType, @ if not @thangType.loaded + return @listenToOnce(@thangType, 'sync', @onLoadedThangType) if not @thangType.loaded CocoSprite = require './CocoSprite' markSprite = new CocoSprite @thangType, @thangType.spriteOptions markSprite.queueAction 'idle' @@ -188,7 +187,7 @@ module.exports = class Mark extends CocoClass name = @thangType @thangType = new ThangType() @thangType.url = -> "/db/thang.type/#{name}" - @thangType.once 'sync', @onLoadedThangType, @ + @listenToOnce(@thangType, 'sync', @onLoadedThangType) @thangType.fetch() markThangTypes[name] = @thangType window.mtt = markThangTypes diff --git a/app/models/SuperModel.coffee b/app/models/SuperModel.coffee index 9ce14c75d..9e2bcd347 100644 --- a/app/models/SuperModel.coffee +++ b/app/models/SuperModel.coffee @@ -9,8 +9,8 @@ class SuperModel @mustPopulate = model model.saveBackups = @shouldSaveBackups(model) model.fetch() unless model.loaded or model.loading - model.once('sync', @modelLoaded, @) unless model.loaded - model.once('error', @modelErrored, @) unless model.loaded + @listenToOnce(model, 'sync', @modelLoaded) unless model.loaded + @listenToOnce(model, 'error', @modelErrored) unless model.loaded url = model.url() @models[url] = model unless @models[url]? @modelLoaded(model) if model.loaded @@ -40,7 +40,7 @@ class SuperModel continue if @models[refURL] @models[refURL] = ref ref.fetch() - ref.once 'sync', @modelLoaded, @ + @listenToOnce(ref, 'sync', @modelLoaded) @trigger 'loaded-one', model: model @trigger 'loaded-all' if @finished() diff --git a/app/treema-ext.coffee b/app/treema-ext.coffee index 1455bc534..d85eb8d21 100644 --- a/app/treema-ext.coffee +++ b/app/treema-ext.coffee @@ -20,7 +20,7 @@ class LiveEditingMarkup extends TreemaNode.nodeMap.ace buildValueForEditing: (valEl) -> super(valEl) - @editor.on 'change', @onEditorChange + @listenTo(@editor, 'change', @onEditorChange) @addImageUpload(valEl) addImageUpload: (valEl) -> @@ -47,7 +47,7 @@ class LiveEditingMarkup extends TreemaNode.nodeMap.ace onFileUploaded: (e) => @editor.insert "![#{e.metadata.name}](/file/#{@uploadingPath})" - onEditorChange: => + onEditorChange: -> @saveChanges() @flushChanges() @getRoot().broadcastChanges() @@ -203,10 +203,10 @@ class CoffeeTreema extends TreemaNode.nodeMap.ace buildValueForEditing: (valEl) -> super(valEl) - @editor.on 'change', @onEditorChange + @listenTo(@editor, 'change', @onEditorChange) valEl - onEditorChange: => + onEditorChange: -> @saveChanges() @flushChanges() @getRoot().broadcastChanges() @@ -297,9 +297,9 @@ class LatestVersionReferenceNode extends TreemaNode @collection.url = "#{@url}?term=#{''}&project=true" @collection.fetch() - @collection.on 'sync', @searchCallback + @listenTo(@collection, 'sync', @searchCallback) - searchCallback: => + searchCallback: -> container = @getSearchResultsEl().detach().empty() first = true for model in @collection.models diff --git a/app/views/account/settings_view.coffee b/app/views/account/settings_view.coffee index 8357af325..df815b3cb 100644 --- a/app/views/account/settings_view.coffee +++ b/app/views/account/settings_view.coffee @@ -46,7 +46,7 @@ module.exports = class SettingsView extends View @chooseTab(location.hash.replace('#','')) WizardSettingsView = new WizardSettingsView() - WizardSettingsView.on 'change', @save, @ + @listenTo(WizardSettingsView, 'change', @save) @insertSubView WizardSettingsView chooseTab: (category) -> @@ -81,7 +81,7 @@ module.exports = class SettingsView extends View $('#email-pane input[type="checkbox"]', @$el).prop('checked', not Boolean(subs.length)) @save() - save: => + save: -> forms.clearFormAlerts(@$el) @grabData() res = me.validate() diff --git a/app/views/admin/clas_view.coffee b/app/views/admin/clas_view.coffee index 873fa6584..e099b4d10 100644 --- a/app/views/admin/clas_view.coffee +++ b/app/views/admin/clas_view.coffee @@ -16,7 +16,7 @@ module.exports = class CLAsView extends View }) @clas = new CLACollection() @clas.fetch() - @clas.on 'sync', @onCLAsLoaded, @ + @listenTo(@clas, 'sync', @onCLAsLoaded) onCLAsLoaded: -> @startsLoading = false diff --git a/app/views/editor/components/main.coffee b/app/views/editor/components/main.coffee index 06337a6c8..971d236bb 100644 --- a/app/views/editor/components/main.coffee +++ b/app/views/editor/components/main.coffee @@ -24,7 +24,7 @@ module.exports = class ThangComponentEditView extends CocoView if not @componentCollection @componentCollection = @supermodel.getCollection new ComponentsCollection() unless @componentCollection.loaded - @componentCollection.once 'sync', @onComponentsSync + @listenToOnce(@componentCollection, 'sync', @onComponentsSync) @componentCollection.fetch() super() # do afterRender at the end @@ -35,7 +35,7 @@ module.exports = class ThangComponentEditView extends CocoView @buildExtantComponentTreema() @buildAddComponentTreema() - onComponentsSync: => + onComponentsSync: -> return if @destroyed @supermodel.addCollection @componentCollection @render() diff --git a/app/views/editor/level/add_thangs_view.coffee b/app/views/editor/level/add_thangs_view.coffee index 4a0d6f776..35e8917c9 100644 --- a/app/views/editor/level/add_thangs_view.coffee +++ b/app/views/editor/level/add_thangs_view.coffee @@ -23,10 +23,10 @@ module.exports = class AddThangsView extends View super options @world = options.world @thangTypes = @supermodel.getCollection new ThangTypeSearchCollection() # should load depended-on Components, too - @thangTypes.once 'sync', @onThangTypesLoaded + @listenToOnce(@thangTypes, 'sync', @onThangTypesLoaded) @thangTypes.fetch() - onThangTypesLoaded: => + onThangTypesLoaded: -> return if @destroyed @render() # do it again but without the loading screen diff --git a/app/views/editor/level/component/edit.coffee b/app/views/editor/level/component/edit.coffee index 46db9a7fb..f2e392f4b 100644 --- a/app/views/editor/level/component/edit.coffee +++ b/app/views/editor/level/component/edit.coffee @@ -79,9 +79,9 @@ module.exports = class LevelComponentEditView extends View session.setTabSize 2 session.setNewLineMode = 'unix' session.setUseSoftTabs true - @editor.on 'change', @onEditorChange + @listenTo(@editor, 'change', @onEditorChange) - onEditorChange: => + onEditorChange: -> @levelComponent.set 'code', @editor.getValue() Backbone.Mediator.publish 'level-component-edited', levelComponent: @levelComponent null diff --git a/app/views/editor/level/edit.coffee b/app/views/editor/level/edit.coffee index 8f4f68a00..6d6b5a774 100644 --- a/app/views/editor/level/edit.coffee +++ b/app/views/editor/level/edit.coffee @@ -28,7 +28,7 @@ module.exports = class EditorLevelView extends View constructor: (options, @levelID) -> super options - @supermodel.once 'loaded-all', @onAllLoaded + @listenToOnce(@supermodel, 'loaded-all', @onAllLoaded) # load only the level itself and the one it points to, but no others # TODO: this is duplicated in views/play/level_view.coffee; need cleaner method @@ -42,18 +42,18 @@ module.exports = class EditorLevelView extends View model.constructor.className in ['Level', 'LevelComponent', 'LevelSystem'] @level = new Level _id: @levelID - @level.once 'sync', @onLevelLoaded + @listenToOnce(@level, 'sync', @onLevelLoaded) @supermodel.populateModel @level showLoading: ($el) -> $el ?= @$el.find('.tab-content') super($el) - onLevelLoaded: => + onLevelLoaded: -> @files = new DocumentFiles(@level) @files.fetch() - onAllLoaded: => + onAllLoaded: -> @level.unset('nextLevel') if _.isString(@level.get('nextLevel')) @initWorld() @startsLoading = false diff --git a/app/views/editor/level/system/add.coffee b/app/views/editor/level/system/add.coffee index 4ea54e3ec..a106e3d39 100644 --- a/app/views/editor/level/system/add.coffee +++ b/app/views/editor/level/system/add.coffee @@ -24,7 +24,7 @@ module.exports = class LevelSystemAddView extends View if not @systems @systems = @supermodel.getCollection new LevelSystemSearchCollection() unless @systems.loaded - @systems.once 'sync', @onSystemsSync + @listenToOnce(@systems, 'sync', @onSystemsSync) @systems.fetch() super() # do afterRender at the end @@ -44,7 +44,7 @@ module.exports = class LevelSystemAddView extends View for system in systems ul.append $(availableSystemTemplate(system: system)) - onSystemsSync: => + onSystemsSync: -> @supermodel.addCollection @systems @render() diff --git a/app/views/editor/level/system/edit.coffee b/app/views/editor/level/system/edit.coffee index 52a48cad9..e4de039d3 100644 --- a/app/views/editor/level/system/edit.coffee +++ b/app/views/editor/level/system/edit.coffee @@ -77,9 +77,9 @@ module.exports = class LevelSystemEditView extends View session.setTabSize 2 session.setNewLineMode = 'unix' session.setUseSoftTabs true - @editor.on 'change', @onEditorChange + @listenTo(@editor, 'change', @onEditorChange) - onEditorChange: => + onEditorChange: -> @levelSystem.set 'code', @editor.getValue() Backbone.Mediator.publish 'level-system-edited', levelSystem: @levelSystem null diff --git a/app/views/editor/level/systems_tab_view.coffee b/app/views/editor/level/systems_tab_view.coffee index 59ed6fb48..52129e7b8 100644 --- a/app/views/editor/level/systems_tab_view.coffee +++ b/app/views/editor/level/systems_tab_view.coffee @@ -34,11 +34,11 @@ module.exports = class SystemsTabView extends View do (url) -> ls.url = -> url continue if @supermodel.getModelByURL ls.url ls.fetch() - ls.on 'sync', @onSystemLoaded + @listenTo(ls, 'sync', @onSystemLoaded) ++@toLoad @onDefaultSystemsLoaded() unless @toLoad - onSystemLoaded: (ls) => + onSystemLoaded: (ls) -> @supermodel.addModel ls --@toLoad @onDefaultSystemsLoaded() unless @toLoad diff --git a/app/views/editor/level/thangs_tab_view.coffee b/app/views/editor/level/thangs_tab_view.coffee index e0af8ddc4..a831c33c0 100644 --- a/app/views/editor/level/thangs_tab_view.coffee +++ b/app/views/editor/level/thangs_tab_view.coffee @@ -59,15 +59,15 @@ module.exports = class ThangsTabView extends View super options @world = options.world @thangTypes = @supermodel.getCollection new ThangTypeSearchCollection() # should load depended-on Components, too - @thangTypes.once 'sync', @onThangTypesLoaded + @listenToOnce(@thangTypes, 'sync', @onThangTypesLoaded) @thangTypes.fetch() # just loading all Components for now: https://github.com/codecombat/codecombat/issues/405 @componentCollection = @supermodel.getCollection new ComponentsCollection() - @componentCollection.once 'sync', @onComponentsLoaded + @listenToOnce(@componentCollection, 'sync', @onComponentsLoaded) @componentCollection.fetch() - onThangTypesLoaded: => + onThangTypesLoaded: -> return if @destroyed @supermodel.addCollection @thangTypes @supermodel.populateModel model for model in @thangTypes.models @@ -75,7 +75,7 @@ module.exports = class ThangsTabView extends View @render() # do it again but without the loading screen @onLevelLoaded level: @level if @level and not @startsLoading - onComponentsLoaded: => + onComponentsLoaded: -> return if @destroyed @supermodel.addCollection @componentCollection @startsLoading = not @thangTypes.loaded diff --git a/app/views/play/ladder/play_modal.coffee b/app/views/play/ladder/play_modal.coffee index ebe51e68d..2272be191 100644 --- a/app/views/play/ladder/play_modal.coffee +++ b/app/views/play/ladder/play_modal.coffee @@ -30,7 +30,7 @@ module.exports = class LadderPlayModal extends View loadChallengers: -> @challengersCollection = new ChallengersData(@level, @team, @otherTeam, @session) - @challengersCollection.on 'sync', @loadNames, @ + @listenTo(@challengersCollection, 'sync', @loadNames) # PART 2: Loading the names of the other users @@ -53,7 +53,7 @@ module.exports = class LadderPlayModal extends View # PART 3: Make sure wizard is loaded checkWizardLoaded: -> - if @wizardType.loaded then @finishRendering() else @wizardType.once 'sync', @finishRendering, @ + if @wizardType.loaded then @finishRendering() else @listenToOnce(@wizardType, 'sync', @finishRendering) # PART 4: Render @@ -158,13 +158,13 @@ class ChallengersData score = @session?.get('totalScore') or 25 @easyPlayer = new LeaderboardCollection(@level, {order:1, scoreOffset: score - 5, limit: 1, team: @otherTeam}) @easyPlayer.fetch() - @easyPlayer.once 'sync', @challengerLoaded, @ + @listenToOnce(@easyPlayer, 'sync', @challengerLoaded) @mediumPlayer = new LeaderboardCollection(@level, {order:1, scoreOffset: score, limit: 1, team: @otherTeam}) @mediumPlayer.fetch() - @mediumPlayer.once 'sync', @challengerLoaded, @ + @listenToOnce(@mediumPlayer, 'sync', @challengerLoaded) @hardPlayer = new LeaderboardCollection(@level, {order:-1, scoreOffset: score + 5, limit: 1, team: @otherTeam}) @hardPlayer.fetch() - @hardPlayer.once 'sync', @challengerLoaded, @ + @listenToOnce(@hardPlayer, 'sync', @challengerLoaded) challengerLoaded: -> if @allLoaded() diff --git a/app/views/play/ladder_view.coffee b/app/views/play/ladder_view.coffee index fc05cb0c2..6d1e90313 100644 --- a/app/views/play/ladder_view.coffee +++ b/app/views/play/ladder_view.coffee @@ -42,7 +42,7 @@ module.exports = class LadderView extends RootView @sessions = new LevelSessionsCollection(levelID) p2 = @sessions.fetch({}) @simulator = new Simulator() - @simulator.on 'statusUpdate', @updateSimulationStatus, @ + @listenTo(@simulator, 'statusUpdate', @updateSimulationStatus) @teams = [] $.when(p1, p2).then @onLoaded @@ -104,7 +104,7 @@ module.exports = class LadderView extends RootView @simulator.fetchAndSimulateTask() - updateSimulationStatus: (simulationStatus, sessions)-> + updateSimulationStatus: (simulationStatus, sessions) -> @simulationStatus = simulationStatus try if sessions? diff --git a/app/views/play/level/level_chat_view.coffee b/app/views/play/level/level_chat_view.coffee index 06467fed7..2963c9b74 100644 --- a/app/views/play/level/level_chat_view.coffee +++ b/app/views/play/level/level_chat_view.coffee @@ -18,7 +18,7 @@ module.exports = class LevelChatView extends View constructor: (options) -> @levelID = options.levelID @session = options.session - @session.on 'change:multiplayer', @updateMultiplayerVisibility, @ + @listenTo(@session, 'change:multiplayer', @updateMultiplayerVisibility) @sessionID = options.sessionID @bus = LevelBus.get(@levelID, @sessionID) super() @@ -122,7 +122,6 @@ module.exports = class LevelChatView extends View destroy: -> key.deleteScope('level') - @session.off 'change:multiplayer', @updateMultiplayerVisibility, @ clearInterval @clearOldMessagesInterval if @clearOldMessagesInterval @clearOldMessages = null super() diff --git a/app/views/play/level/modal/multiplayer_modal.coffee b/app/views/play/level/modal/multiplayer_modal.coffee index 2a30d96f7..973bc8b47 100644 --- a/app/views/play/level/modal/multiplayer_modal.coffee +++ b/app/views/play/level/modal/multiplayer_modal.coffee @@ -15,7 +15,7 @@ module.exports = class MultiplayerModal extends View super(options) @session = options.session @level = options.level - @session.on 'change:multiplayer', @updateLinkSection, @ + @listenTo(@session, 'change:multiplayer', @updateLinkSection) @playableTeams = options.playableTeams @ladderGame = options.ladderGame console.log 'ladder game is', @ladderGame @@ -51,5 +51,4 @@ module.exports = class MultiplayerModal extends View @session.set('multiplayer', multiplayer) destroy: -> - @session.off 'change:multiplayer', @updateLinkSection, @ super() diff --git a/app/views/play/level/tome/spell_view.coffee b/app/views/play/level/tome/spell_view.coffee index 4b08efaac..5e055ac3c 100644 --- a/app/views/play/level/tome/spell_view.coffee +++ b/app/views/play/level/tome/spell_view.coffee @@ -43,7 +43,7 @@ module.exports = class SpellView extends View constructor: (options) -> super options @session = options.session - @session.on 'change:multiplayer', @onMultiplayerChanged, @ + @listenTo(@session, 'change:multiplayer', @onMultiplayerChanged) @spell = options.spell @problems = {} @writable = false unless me.team in @spell.permissions.readwrite # TODO: make this do anything @@ -582,7 +582,6 @@ module.exports = class SpellView extends View @aceSession = null @debugView?.destroy() @spell = null - @session.off 'change:multiplayer', @onMultiplayerChanged, @ for fat in ['notifySpellChanged', 'notifyEditingEnded', 'notifyEditingBegan', 'onFirepadLoaded', 'onLoaded', 'toggleBackground', 'setRecompileNeeded', 'onCursorActivity', 'highlightCurrentLine', 'updateAether', 'onCodeChangeMetaHandler', 'recompileIfNeeded', 'currentAutocastHandler'] @[fat] = null super() From f085b0d319cd05c7041137a1ced5dd47881b7e28 Mon Sep 17 00:00:00 2001 From: Shrihari Date: Mon, 24 Mar 2014 22:41:27 +0530 Subject: [PATCH 23/41] Refactored cast-button events --- app/views/play/level/tome/cast_button_view.coffee | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/views/play/level/tome/cast_button_view.coffee b/app/views/play/level/tome/cast_button_view.coffee index fa94282c6..b3c9eb7e6 100644 --- a/app/views/play/level/tome/cast_button_view.coffee +++ b/app/views/play/level/tome/cast_button_view.coffee @@ -6,6 +6,10 @@ module.exports = class CastButtonView extends View id: 'cast-button-view' template: template + events: + 'click .cast-button': 'onCastButtonClick' + 'click .autocast-delays a': 'onCastOptionsClick' + subscriptions: 'tome:spell-changed': "onSpellChanged" 'tome:cast-spells': 'onCastSpells' @@ -30,8 +34,6 @@ module.exports = class CastButtonView extends View @castButton = $('.cast-button', @$el) @castButtonGroup = $('.cast-button-group', @$el) @castOptions = $('.autocast-delays', @$el) - @castButton.on 'click', @onCastButtonClick - @castOptions.find('a').on 'click', @onCastOptionsClick delay = me.get('autocastDelay') delay ?= 5000 if @levelID in ['brawlwood', 'brawlwood-tutorial', 'dungeon-arena', 'dungeon-arena-tutorial'] From 093cc66fa0b5ce8d7c0ba7ca923adc1c6ca3b379 Mon Sep 17 00:00:00 2001 From: Shrihari Date: Mon, 24 Mar 2014 22:56:32 +0530 Subject: [PATCH 24/41] Reverted few wrong migrations --- app/treema-ext.coffee | 8 ++++---- app/views/editor/level/component/edit.coffee | 4 ++-- app/views/editor/level/system/edit.coffee | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/treema-ext.coffee b/app/treema-ext.coffee index d85eb8d21..6d2b0c3ed 100644 --- a/app/treema-ext.coffee +++ b/app/treema-ext.coffee @@ -20,7 +20,7 @@ class LiveEditingMarkup extends TreemaNode.nodeMap.ace buildValueForEditing: (valEl) -> super(valEl) - @listenTo(@editor, 'change', @onEditorChange) + @editor.on('change', @onEditorChange) @addImageUpload(valEl) addImageUpload: (valEl) -> @@ -47,7 +47,7 @@ class LiveEditingMarkup extends TreemaNode.nodeMap.ace onFileUploaded: (e) => @editor.insert "![#{e.metadata.name}](/file/#{@uploadingPath})" - onEditorChange: -> + onEditorChange: => @saveChanges() @flushChanges() @getRoot().broadcastChanges() @@ -203,10 +203,10 @@ class CoffeeTreema extends TreemaNode.nodeMap.ace buildValueForEditing: (valEl) -> super(valEl) - @listenTo(@editor, 'change', @onEditorChange) + @editor.on('change', @onEditorChange) valEl - onEditorChange: -> + onEditorChange: => @saveChanges() @flushChanges() @getRoot().broadcastChanges() diff --git a/app/views/editor/level/component/edit.coffee b/app/views/editor/level/component/edit.coffee index f2e392f4b..d1ecea023 100644 --- a/app/views/editor/level/component/edit.coffee +++ b/app/views/editor/level/component/edit.coffee @@ -79,9 +79,9 @@ module.exports = class LevelComponentEditView extends View session.setTabSize 2 session.setNewLineMode = 'unix' session.setUseSoftTabs true - @listenTo(@editor, 'change', @onEditorChange) + @editor.on('change', @onEditorChange) - onEditorChange: -> + onEditorChange: => @levelComponent.set 'code', @editor.getValue() Backbone.Mediator.publish 'level-component-edited', levelComponent: @levelComponent null diff --git a/app/views/editor/level/system/edit.coffee b/app/views/editor/level/system/edit.coffee index e4de039d3..c92894cdd 100644 --- a/app/views/editor/level/system/edit.coffee +++ b/app/views/editor/level/system/edit.coffee @@ -77,9 +77,9 @@ module.exports = class LevelSystemEditView extends View session.setTabSize 2 session.setNewLineMode = 'unix' session.setUseSoftTabs true - @listenTo(@editor, 'change', @onEditorChange) + @editor.on('change', @onEditorChange) - onEditorChange: -> + onEditorChange: => @levelSystem.set 'code', @editor.getValue() Backbone.Mediator.publish 'level-system-edited', levelSystem: @levelSystem null From 83bfc28a9ea3a4abe56bf92320f1614acfe236c4 Mon Sep 17 00:00:00 2001 From: Michael Schmatz Date: Mon, 24 Mar 2014 10:58:40 -0700 Subject: [PATCH 25/41] Partially refactored scoring callback pyramid of hell --- app/views/play/ladder/my_matches_tab.coffee | 9 +- server/queues/scoring.coffee | 316 ++++++++++++-------- 2 files changed, 195 insertions(+), 130 deletions(-) diff --git a/app/views/play/ladder/my_matches_tab.coffee b/app/views/play/ladder/my_matches_tab.coffee index d8729051e..1c2960cf4 100644 --- a/app/views/play/ladder/my_matches_tab.coffee +++ b/app/views/play/ladder/my_matches_tab.coffee @@ -123,8 +123,11 @@ module.exports = class MyMatchesTabView extends CocoView return unless @readyToRank(session) @setRankingButtonText(button, 'submitting') - success = => @setRankingButtonText(button, 'submitted') - failure = => @setRankingButtonText(button, 'failed') + success = => + @setRankingButtonText(button, 'submitted') + failure = (jqxhr, textStatus, errorThrown) => + console.log jqxhr.responseText + @setRankingButtonText(button, 'failed') ajaxData = {session: sessionID, levelID: @level.id, originalLevelID: @level.attributes.original, levelMajorVersion: @level.attributes.version.major} console.log "Posting game for ranking from My Matches view." @@ -132,7 +135,7 @@ module.exports = class MyMatchesTabView extends CocoView type: 'POST' data: ajaxData success: success - failure: failure + error: failure } setRankingButtonText: (rankButton, spanClass) -> diff --git a/server/queues/scoring.coffee b/server/queues/scoring.coffee index a48c4d0eb..327abf949 100644 --- a/server/queues/scoring.coffee +++ b/server/queues/scoring.coffee @@ -91,7 +91,7 @@ resimulateSession = (originalLevelID, levelMajorVersion, session, cb) => LevelSession.update {_id: session._id}, sessionUpdateObject, (err, updatedSession) -> if err? then return cb err, null opposingTeam = calculateOpposingTeam(session.team) - fetchInitialSessionsToRankAgainst opposingTeam, originalLevelID, levelMajorVersion, (err, sessionsToRankAgainst) -> + fetchInitialSessionsToRankAgainst levelMajorVersion, originalLevelID, opposingTeam, (err, sessionsToRankAgainst) -> if err? then return cb err, null taskPairs = generateTaskPairs(sessionsToRankAgainst, session) @@ -100,63 +100,210 @@ resimulateSession = (originalLevelID, levelMajorVersion, session, cb) => cb null + + module.exports.createNewTask = (req, res) -> requestSessionID = req.body.session - requestLevelID = req.body.originalLevelID - requestCurrentLevelID = req.body.levelID + originalLevelID = req.body.originalLevelID + currentLevelID = req.body.levelID requestLevelMajorVersion = parseInt(req.body.levelMajorVersion) + + async.waterfall [ + validatePermissions.bind(@,req,requestSessionID) + fetchAndVerifyLevelType.bind(@,currentLevelID) + fetchSessionObjectToSubmit.bind(@, requestSessionID) + updateSessionToSubmit + fetchInitialSessionsToRankAgainst.bind(@, requestLevelMajorVersion, originalLevelID) + generateAndSendTaskPairsToTheQueue + + ], (err, successMessageObject) -> + if err? then return errors.serverError res, "There was an error submitting the game to the queue:#{err}" + sendResponseObject req, res, successMessageObject - validatePermissions req, requestSessionID, (error, permissionsAreValid) -> - if err? then return errors.serverError res, "There was an error validating permissions" - unless permissionsAreValid then return errors.forbidden res, "You do not have the permissions to submit that game to the leaderboard" + +validatePermissions = (req,sessionID, callback) -> + if isUserAnonymous req then return callback "You are unauthorized to submit that game to the simulator" + if isUserAdmin req then return callback null - return errors.badInput res, "The session ID is invalid" unless typeof requestSessionID is "string" - Level.findOne({_id: requestCurrentLevelID}).lean().select('type').exec (err, levelWithType) -> - if err? then return errors.serverError res, "There was an error finding the level type" + findParameters = + _id: sessionID + selectString = 'creator submittedCode code' + query = LevelSession + .findOne(findParameters) + .select(selectString) + .lean() - if not levelWithType.type or levelWithType.type isnt "ladder" - console.log "The level type of level with ID #{requestLevelID} is #{levelWithType.type}" - return errors.badInput res, "That level isn't a ladder level" + query.exec (err, retrievedSession) -> + if err? then return callback err + userHasPermissionToSubmitCode = retrievedSession.creator is req.user?.id and + not _.isEqual(retrievedSession.code, retrievedSession.submittedCode) + unless userHasPermissionToSubmitCode then return callback "You are unauthorized to submit that game to the simulator" + callback null - fetchSessionToSubmit requestSessionID, (err, sessionToSubmit) -> - if err? then return errors.serverError res, "There was an error finding the given session." +fetchAndVerifyLevelType = (levelID, cb) -> + findParameters = + _id: levelID + selectString = 'type' - updateSessionToSubmit sessionToSubmit, (err, data) -> - if err? then return errors.serverError res, "There was an error updating the session" - opposingTeam = calculateOpposingTeam(sessionToSubmit.team) - fetchInitialSessionsToRankAgainst opposingTeam,requestLevelID, requestLevelMajorVersion, (err, sessionsToRankAgainst) -> - if err? then return errors.serverError res, "There was an error fetching the sessions to rank against" + query = Level + .findOne(findParameters) + .select(selectString) + .lean() + query.exec (err, levelWithType) -> + if err? then return cb err + if not levelWithType.type or levelWithType.type isnt "ladder" then return cb "Level isn't of type 'ladder'" + cb null - taskPairs = generateTaskPairs(sessionsToRankAgainst, sessionToSubmit) - sendEachTaskPairToTheQueue taskPairs, (taskPairError) -> - if taskPairError? then return errors.serverError res, "There was an error sending the task pairs to the queue" +fetchSessionObjectToSubmit = (sessionID, callback) -> + findParameters = + _id: sessionID + selectString = 'team code' - sendResponseObject req, res, {"message":"All task pairs were succesfully sent to the queue"} + query = LevelSession + .findOne(findParameters) + .select(selectString) + + query.exec (err, session) -> + callback err, session?.toObject() + +updateSessionToSubmit = (sessionToUpdate, callback) -> + sessionUpdateObject = + submitted: true + submittedCode: sessionToUpdate.code + submitDate: new Date() + meanStrength: 25 + standardDeviation: 25/3 + totalScore: 10 + numberOfWinsAndTies: 0 + numberOfLosses: 0 + isRanking: true + LevelSession.update {_id: sessionToUpdate._id}, sessionUpdateObject, (err, result) -> + callback err, sessionToUpdate + +fetchInitialSessionsToRankAgainst = (levelMajorVersion, levelID, submittedSession, callback) -> + opposingTeam = calculateOpposingTeam(submittedSession.team) + + findParameters = + "level.original": levelID + "level.majorVersion": levelMajorVersion + submitted: true + submittedCode: + $exists: true + team: opposingTeam + + sortParameters = + totalScore: 1 + + limitNumber = 1 + + query = LevelSession.find(findParameters) + .sort(sortParameters) + .limit(limitNumber) + + query.exec (err, sessionToRankAgainst) -> + callback err, sessionToRankAgainst, submittedSession + + +generateAndSendTaskPairsToTheQueue = (sessionToRankAgainst,submittedSession, callback) -> + taskPairs = generateTaskPairs(sessionToRankAgainst, submittedSession) + sendEachTaskPairToTheQueue taskPairs, (taskPairError) -> + if taskPairError? then return callback taskPairError + callback null, {"message": "All task pairs were succesfully sent to the queue"} + module.exports.dispatchTaskToConsumer = (req, res) -> - if isUserAnonymous(req) then return errors.forbidden res, "You need to be logged in to simulate games" + async.waterfall [ + checkSimulationPermissions.bind(@,req) + receiveMessageFromSimulationQueue + changeMessageVisibilityTimeout + parseTaskQueueMessage + constructTaskObject + constructTaskLogObject.bind(@, getUserIDFromRequest(req)) + processTaskObject + ], (err, taskObjectToSend) -> + if err? + if typeof err is "string" and err.indexOf "No more games in the queue" isnt -1 + res.send(204, "No games to score.") + return res.end() + else + return errors.serverError res, "There was an error dispatching the task: #{err}" + sendResponseObject req, res, taskObjectToSend - scoringTaskQueue.receiveMessage (err, message) -> - if err? or messageIsInvalid(message) - res.send 204, "No games to score. #{message}" - return res.end() - console.log "Received Message" - messageBody = parseTaskQueueMessage req, res, message - return unless messageBody? + + +checkSimulationPermissions = (req, cb) -> + if isUserAnonymous req + cb "You need to be logged in to simulate games" + else + cb null + +receiveMessageFromSimulationQueue = (cb) -> + scoringTaskQueue.receiveMessage (err, message) -> + if err? then return cb "No more games in the queue, error:#{err}" + if messageIsInvalid(message) then return cb "Message received from queue is invalid" + cb null, message - constructTaskObject messageBody, (taskConstructionError, taskObject) -> - if taskConstructionError? then return errors.serverError res, "There was an error constructing the scoring task" - console.log "Constructed task body" - message.changeMessageVisibilityTimeout scoringTaskTimeoutInSeconds, (err) -> - if err? then return errors.serverError res, "There was an error changing the message visibility timeout." - console.log "Changed visibility timeout" - constructTaskLogObject getUserIDFromRequest(req), message.getReceiptHandle(), (taskLogError, taskLogObject) -> - if taskLogError? then return errors.serverError res, "There was an error creating the task log object." +changeMessageVisibilityTimeout = (message, cb) -> + message.changeMessageVisibilityTimeout scoringTaskTimeoutInSeconds, (err) -> cb err, message - taskObject.taskID = taskLogObject._id - taskObject.receiptHandle = message.getReceiptHandle() +parseTaskQueueMessage = (message,cb) -> + try + if typeof message.getBody() is "object" + messageBody = message.getBody() + else + messageBody = JSON.parse message.getBody() + cb null, messageBody, message + catch e + cb "There was an error parsing the task.Error: #{e}" + +constructTaskObject = (taskMessageBody, message, callback) -> + async.map taskMessageBody.sessions, getSessionInformation, (err, sessions) -> + if err? then return callback err + + taskObject = + "messageGenerated": Date.now() + "sessions": [] + + for session in sessions + sessionInformation = + "sessionID": session._id + "submitDate": session.submitDate + "team": session.team ? "No team" + "code": session.submittedCode + "teamSpells": session.teamSpells ? {} + "levelID": session.levelID + "creator": session.creator + "creatorName":session.creatorName + + taskObject.sessions.push sessionInformation + callback null, taskObject, message + +constructTaskLogObject = (calculatorUserID, taskObject, message, callback) -> + taskLogObject = new TaskLog + "createdAt": new Date() + "calculator":calculatorUserID + "sentDate": Date.now() + "messageIdentifierString":message.getReceiptHandle() + taskLogObject.save (err) -> callback err, taskObject, taskLogObject, message + +processTaskObject = (taskObject,taskLogObject, message, cb) -> + taskObject.taskID = taskLogObject._id + taskObject.receiptHandle = message.getReceiptHandle() + cb null, taskObject + +getSessionInformation = (sessionIDString, callback) -> + findParameters = + _id: sessionIDString + selectString = 'submitDate team submittedCode teamSpells levelID creator creatorName' + query = LevelSession + .findOne(findParameters) + .select(selectString) + .lean() + + query.exec (err, session) -> + if err? then return callback err, {"error":"There was an error retrieving the session."} + callback null, session - sendResponseObject req, res, taskObject module.exports.processTaskResult = (req, res) -> clientResponseObject = verifyClientResponse req.body, res @@ -321,14 +468,6 @@ incrementUserSimulationCount = (userID, type) -> User.update {_id: userID}, {$inc: inc}, (err, affected) -> log.error "Error incrementing #{type} for #{userID}: #{err}" if err -validatePermissions = (req, sessionID, callback) -> - if isUserAnonymous req then return callback null, false - if isUserAdmin req then return callback null, true - LevelSession.findOne(_id:sessionID).select('creator submittedCode code').lean().exec (err, retrievedSession) -> - if err? then return callback err, retrievedSession - code = retrievedSession.code - submittedCode = retrievedSession.submittedCode - callback null, (retrievedSession.creator is req.user?.id and not _.isEqual(code, submittedCode)) addMatchToSessions = (clientResponseObject, newScoreObject, callback) -> matchObject = {} @@ -368,44 +507,10 @@ messageIsInvalid = (message) -> (not message?) or message.isEmpty() sendEachTaskPairToTheQueue = (taskPairs, callback) -> async.each taskPairs, sendTaskPairToQueue, callback -fetchSessionToSubmit = (submittedSessionID, callback) -> - LevelSession.findOne {_id: submittedSessionID}, (err, session) -> callback err, session?.toObject() -updateSessionToSubmit = (sessionToUpdate, callback) -> - sessionUpdateObject = - submitted: true - submittedCode: sessionToUpdate.code - submitDate: new Date() - meanStrength: 25 - standardDeviation: 25/3 - totalScore: 10 - numberOfWinsAndTies: 0 - numberOfLosses: 0 - isRanking: true - LevelSession.update {_id: sessionToUpdate._id}, sessionUpdateObject, callback - -fetchInitialSessionsToRankAgainst = (opposingTeam, levelID, levelMajorVersion, callback) -> - console.log "Fetching sessions to rank against for opposing team #{opposingTeam}" - findParameters = - "level.original": levelID - "level.majorVersion": levelMajorVersion - submitted: true - submittedCode: - $exists: true - team: opposingTeam - - sortParameters = - totalScore: 1 - - limitNumber = 1 - - query = LevelSession.find(findParameters) - .sort(sortParameters) - .limit(limitNumber) - query.exec callback generateTaskPairs = (submittedSessions, sessionToScore) -> taskPairs = [] @@ -427,52 +532,9 @@ isUserAnonymous = (req) -> if req.user? then return req.user.get('anonymous') el isUserAdmin = (req) -> return Boolean(req.user?.isAdmin()) -parseTaskQueueMessage = (req, res, message) -> - try - if typeof message.getBody() is "object" then return message.getBody() - return messageBody = JSON.parse message.getBody() - catch e - sendResponseObject req, res, {"error":"There was an error parsing the task.Error: #{e}" } - return null - -constructTaskObject = (taskMessageBody, callback) -> - async.map taskMessageBody.sessions, getSessionInformation, (err, sessions) -> - return callback err, data if err? - - taskObject = - "messageGenerated": Date.now() - "sessions": [] - - for session in sessions - sessionInformation = - "sessionID": session._id - "submitDate": session.submitDate - "team": session.team ? "No team" - "code": session.submittedCode - "teamSpells": session.teamSpells ? {} - "levelID": session.levelID - "creator": session.creator - "creatorName":session.creatorName - - taskObject.sessions.push sessionInformation - callback err, taskObject -getSessionInformation = (sessionIDString, callback) -> - LevelSession.findOne {_id:sessionIDString}, (err, session) -> - if err? then return callback err, {"error":"There was an error retrieving the session."} - sessionInformation = session.toObject() - callback err, sessionInformation - - -constructTaskLogObject = (calculatorUserID, messageIdentifierString, callback) -> - taskLogObject = new TaskLog - "createdAt": new Date() - "calculator":calculatorUserID - "sentDate": Date.now() - "messageIdentifierString":messageIdentifierString - taskLogObject.save callback sendResponseObject = (req,res,object) -> res.setHeader('Content-Type', 'application/json') From 3f3eeab02a6b39230b20034970ba9dfc94439746 Mon Sep 17 00:00:00 2001 From: Ruben Vereecken Date: Mon, 24 Mar 2014 19:46:50 +0100 Subject: [PATCH 26/41] Fixed NaN in ladder in case a player has never played before --- app/templates/play/ladder/ladder_tab.jade | 2 +- app/views/play/ladder/ladder_tab.coffee | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/templates/play/ladder/ladder_tab.jade b/app/templates/play/ladder/ladder_tab.jade index 3d41c4ec5..c13ae1883 100644 --- a/app/templates/play/ladder/ladder_tab.jade +++ b/app/templates/play/ladder/ladder_tab.jade @@ -27,7 +27,7 @@ div#columns.row a(href="/play/level/#{level.get('slug') || level.id}/?team=#{team.otherTeam}&opponent=#{session.id}") span(data-i18n="ladder.fight") Fight! - if !inTheTop && ! me.get('anonymous') + if !inTheTop && ! me.get('anonymous') && team.leaderboard.hasSubmitted() tr(class="active") td(colspan=4).ellipsis-row ... for session in team.leaderboard.nearbySessions() diff --git a/app/views/play/ladder/ladder_tab.coffee b/app/views/play/ladder/ladder_tab.coffee index 226ab5f54..118b85b39 100644 --- a/app/views/play/ladder/ladder_tab.coffee +++ b/app/views/play/ladder/ladder_tab.coffee @@ -80,7 +80,10 @@ class LeaderboardData inTopSessions: -> return me.id in (session.attributes.creator for session in @topPlayers.models) - + + hasSubmitted: => + return 'totalScore' in @session + nearbySessions: -> return unless @session l = [] From a3f65ace7a6219523a64e5e8ecdd7630810bd469 Mon Sep 17 00:00:00 2001 From: Ruben Vereecken Date: Mon, 24 Mar 2014 22:21:34 +0100 Subject: [PATCH 27/41] Created differentation between nl-BE and nl-NL --- app/locale/locale.coffee | 2 + app/locale/nl-BE.coffee | 555 +++++++++++++++++++++++++++++++++++++++ app/locale/nl-NL.coffee | 555 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 1112 insertions(+) create mode 100644 app/locale/nl-BE.coffee create mode 100644 app/locale/nl-NL.coffee diff --git a/app/locale/locale.coffee b/app/locale/locale.coffee index e53b3b1d6..7d0865c68 100644 --- a/app/locale/locale.coffee +++ b/app/locale/locale.coffee @@ -26,6 +26,8 @@ module.exports = it: require './it' # italiano, Italian tr: require './tr' # Türkçe, Turkish nl: require './nl' # Nederlands, Dutch + 'nl-BE': require './nl-BE' # Nederlands (België), Dutch (Belgium) + 'nl-NL': require './nl-NL' # Nederlands (Nederland), Dutch (Netherlands) fa: require './fa' # فارسی, Persian cs: require './cs' # čeština, Czech sv: require './sv' # Svenska, Swedish diff --git a/app/locale/nl-BE.coffee b/app/locale/nl-BE.coffee new file mode 100644 index 000000000..dc7b6bff0 --- /dev/null +++ b/app/locale/nl-BE.coffee @@ -0,0 +1,555 @@ +module.exports = nativeDescription: "Nederlands (België)", englishDescription: "Dutch (Belgium)", translation: + common: + loading: "Aan het laden..." + saving: "Opslaan..." + sending: "Verzenden..." + cancel: "Annuleren" + save: "Opslagen" + delay_1_sec: "1 seconde" + delay_3_sec: "3 secondes" + delay_5_sec: "5 secondes" + manual: "Handleiding" + fork: "Fork" + play: "Spelen" + + modal: + close: "Sluiten" + okay: "Oké" + + not_found: + page_not_found: "Pagina niet gevonden" + + nav: + play: "Spelen" + editor: "Editor" + blog: "Blog" + forum: "Forum" + admin: "Administrator" + home: "Home" + contribute: "Bijdragen" + legal: "Legaal" + about: "Over Ons" + contact: "Contact" + twitter_follow: "Volgen" + employers: "Werknemers" + + versions: + save_version_title: "Nieuwe versie opslagen" + new_major_version: "Nieuwe hoofd versie" + cla_prefix: "Om bewerkingen op te slagen, moet je eerst akkoord gaan met onze" + cla_url: "CLA" + cla_suffix: "." + cla_agree: "IK GA AKKOORD" + + login: + sign_up: "Account Maken" + log_in: "Inloggen" + log_out: "Uitloggen" + recover: "account herstellen" + + recover: + recover_account_title: "Herstel Account" + send_password: "Verzend nieuw wachtwoord" + + signup: + create_account_title: "Maak een account aan om je progressie op te slagen" + description: "Het is gratis. We hebben maar een paar dingen nodig en dan kan je aan de slag:" + email_announcements: "Ontvang aankondigingen via email" + coppa: "13+ of niet uit de VS" + coppa_why: "(Waarom?)" + creating: "Account aanmaken..." + sign_up: "Aanmelden" + log_in: "inloggen met wachtwoord" + + home: + slogan: "Leer programmeren in JavaScript door het spelen van een spel" + no_ie: "CodeCombat werkt niet in IE8 of ouder. Sorry!" + no_mobile: "CodeCombat is niet gemaakt voor mobiele apparaten en werkt misschien niet!" + play: "Speel" + old_browser: "Uh oh, jouw browser is te oud om CodeCombat te kunnen spelen, Sorry!" + old_browser_suffix: "Je kan toch proberen, maar het zal waarschijnlijk niet werken!" + campaign: "Campagne" + for_beginners: "Voor Beginners" +# multiplayer: "Multiplayer" + for_developers: "Voor ontwikkelaars" + + play: + choose_your_level: "Kies Je Level" + adventurer_prefix: "Je kunt meteen naar een van de levels hieronder springen, of de levels bespreken op " + adventurer_forum: "het Avonturiersforum" + adventurer_suffix: "." + campaign_beginner: "Beginnercampagne" + campaign_beginner_description: "... waarin je de toverkunst van programmeren leert." + campaign_dev: "Willekeurige moeilijkere levels" + campaign_dev_description: "... waarin je de interface leert kennen terwijl je wat moeilijkers doet." + campaign_multiplayer: "Multiplayer Arena's" + campaign_multiplayer_description: "... waarin je direct tegen andere spelers speelt." + campaign_player_created: "Door-spelers-gemaakt" + campaign_player_created_description: "... waarin je ten strijde trekt tegen de creativiteit van andere Ambachtelijke Tovenaars." + level_difficulty: "Moeilijkheidsgraad: " + play_as: "Speel als " + spectate: "Schouw toe" + + contact: + contact_us: "Contact opnemen met CodeCombat" + welcome: "Goed om van je te horen! Gebruik dit formulier om ons een e-mail te sturen." + contribute_prefix: "Als je interesse hebt om bij te dragen, bekijk onze " + contribute_page: "pagina over bijdragen" + contribute_suffix: "!" + forum_prefix: "Voor iets publiekelijks, probeer dan " + forum_page: "ons forum" + forum_suffix: "." + send: "Feedback Verzonden" + + diplomat_suggestion: + title: "Help CodeCombat vertalen!" + sub_heading: "We hebben je taalvaardigheden nodig." + pitch_body: "We ontwikkelen CodeCombat in het Engels, maar we hebben al spelers van over de hele wereld. Veel van hen willen in het Nederlands spelen, maar kunnen geen Engels. Dus als je beiden spreekt, overweeg a.u.b. om je aan te melden als Diplomaat en help zowel de CodeCombat website als alle levels te vertalen naar het Nederlands." + missing_translations: "Totdat we alles hebben vertaald naar het Nederlands zul je Engels zien waar Nederlands niet beschikbaar is." + learn_more: "Meer informatie over het zijn van een Diplomaat" + subscribe_as_diplomat: "Abonneren als Diplomaat" + + wizard_settings: + title: "Tovenaar instellingen" + customize_avatar: "Bewerk je avatar" + clothes: "Kleren" + trim: "Trim" + cloud: "Wolk" + spell: "Spreuk" + boots: "Laarzen" + hue: "Hue" + saturation: "Saturation" + lightness: "Lightness" + + account_settings: + title: "Account Instellingen" + not_logged_in: "Log in of maak een account om je instellingen aan te passen." + autosave: "Aanpassingen Automatisch Opgeslagen" + me_tab: "Ik" + picture_tab: "Afbeelding" + wizard_tab: "Tovenaar" + password_tab: "Wachtwoord" + emails_tab: "Emails" +# admin: "Admin" + gravatar_select: "Selecteer welke Gravatar foto je wilt gebruiken" + gravatar_add_photos: "Voeg thumbnails en foto's toe aan je Gravatar account, gekoppeld aan jouw email-adres, om een afbeelding te kiezen." + gravatar_add_more_photos: "Voeg meer afbeeldingen toe aan je Gravatar account om ze hier te gebruiken." + wizard_color: "Tovenaar Kleding Kleur" + new_password: "Nieuw Wachtwoord" + new_password_verify: "Verifieer" + email_subscriptions: "E-mail Abonnementen" + email_announcements: "Aankondigingen" + email_notifications: "Notificaties" + email_notifications_description: "Krijg periodieke meldingen voor jouw account." + email_announcements_description: "Verkrijg emails over het laatste nieuws en de ontwikkelingen bij CodeCombat." + contributor_emails: "Medewerker Klasse emails" + contribute_prefix: "We zoeken mensen om bij ons feest aan te voegen! Bekijk de " + contribute_page: "contributiepagina" + contribute_suffix: " om meer te weten te komen." + email_toggle: "Vink alles aan/af" + error_saving: "Fout Tijdens Het Opslaan" + saved: "Aanpassingen Opgeslagen" + password_mismatch: "Het wachtwoord komt niet overeen." + + account_profile: + edit_settings: "Instellingen Aanpassen" + profile_for_prefix: "Profiel voor " +# profile_for_suffix: "" + profile: "Profiel" + user_not_found: "Geen gebruiker gevonden. Controleer de URL?" + gravatar_not_found_mine: "We konden geen account vinden gekoppeld met:" + gravatar_not_found_email_suffix: "." + gravatar_signup_prefix: "Registreer op " + gravatar_signup_suffix: " om alles in orde te maken!" + gravatar_not_found_other: "Helaas, er is geen profiel geassocieerd met dit e-mail adres." + gravatar_contact: "Contact" + gravatar_websites: "Websites" + gravatar_accounts: "Zoals Gezien Op" + gravatar_profile_link: "Volledig Gravatar Profiel" + + play_level: + level_load_error: "Level kon niet geladen worden: " + done: "Klaar" + grid: "Raster" + customize_wizard: "Pas Tovenaar aan" + home: "Home" + guide: "Handleiding" + multiplayer: "Multiplayer" + restart: "Herstarten" + goals: "Doelen" + action_timeline: "Actie tijdlijn" + click_to_select: "Klik op een eenheid om deze te selecteren." + reload_title: "Alle Code Herladen?" + reload_really: "Weet je zeker dat je dit level tot het begin wilt herladen?" + reload_confirm: "Herlaad Alles" +# victory_title_prefix: "" + victory_title_suffix: " Compleet" + victory_sign_up: "Schrijf je in om je progressie op te slaan" + victory_sign_up_poke: "Wil je jouw code opslaan? Maak een gratis account aan!" + victory_rate_the_level: "Beoordeel het level: " + victory_rank_my_game: "Rankschik mijn Wedstrijd" + victory_ranking_game: "Verzenden..." + victory_return_to_ladder: "Keer terug naar de ladder" + victory_play_next_level: "Speel Volgend Level" + victory_go_home: "Ga naar Home" + victory_review: "Vertel ons meer!" + victory_hour_of_code_done: "Ben Je Klaar?" + victory_hour_of_code_done_yes: "Ja, ik ben klaar met mijn Hour of Code!" + multiplayer_title: "Multiplayer Instellingen" + multiplayer_link_description: "Geef deze url aan iemand om hem/haar te laten meedoen met jou." + multiplayer_hint_label: "Hint:" + multiplayer_hint: " Klik de link om alles te selecteren, druk dan op Apple-C of Ctrl-C om de link te kopiëren." + multiplayer_coming_soon: "Binnenkort komen er meer Multiplayermogelijkheden!" + guide_title: "Handleiding" + tome_minion_spells: "Jouw Minions' Spreuken" + tome_read_only_spells: "Read-Only Spreuken" + tome_other_units: "Andere Eenheden" + tome_cast_button_castable: "Uitvoeren" + tome_cast_button_casting: "Aan het uitvoeren" + tome_cast_button_cast: "Spreuk uitvoeren" + tome_autocast_delay: "Spreuk Uitvoeren vertraging" + tome_select_spell: "Selecteer een Spreuk" + tome_select_a_thang: "Selecteer Iemand voor " + tome_available_spells: "Beschikbare spreuken" + hud_continue: "Ga verder (druk shift-space)" + spell_saved: "Spreuk Opgeslagen" + skip_tutorial: "Overslaan (esc)" + editor_config: "Editor Configuratie" + editor_config_title: "Editor Configuratie" + editor_config_keybindings_label: "Toets instellingen" +# editor_config_keybindings_default: "Default (Ace)" + editor_config_keybindings_description: "Voeg extra shortcuts toe van de gebruikelijke editors." + editor_config_invisibles_label: "Toon onzichtbare" + editor_config_invisibles_description: "Toon onzichtbare whitespace karakters." + editor_config_indentguides_label: "Toon inspringing regels" + editor_config_indentguides_description: "Toon verticale hulplijnen om de zichtbaarheid te verbeteren." + editor_config_behaviors_label: "Slim gedrag" + editor_config_behaviors_description: "Auto-aanvulling (gekrulde) haakjes en aanhalingstekens." + + admin: + av_title: "Administrator panels" + av_entities_sub_title: "Entiteiten" + av_entities_users_url: "Gebruikers" + av_entities_active_instances_url: "Actieve instanties" + av_other_sub_title: "Andere" + av_other_debug_base_url: "Base (om base.jade te debuggen)" + u_title: "Gebruikerslijst" + lg_title: "Laatste Spelletjes" + + editor: + main_title: "CodeCombat Editors" + main_description: "Maak je eigen levels, campagnes, eenheden en leermateriaal. Wij bieden alle programma's aan die u nodig heeft!" + article_title: "Artikel Editor" + article_description: "Schrijf artikels die spelers een overzicht geven over programmeer concepten die kunnen gebruikt worden over een variëteit van levels en campagnes." + thang_title: "Thang Editor" + thang_description: "Maak eenheden, beschrijf hun standaard logica, graphics en audio. Momenteel is enkel het importeren van vector graphics geëxporteerd in Flash ondersteund." + level_title: "Level Editor" + level_description: "Bevat het programma om te programmeren, audio te uploaden en aangepaste logica te creëren om alle soorten levels te maken. Het is alles wat wijzelf ook gebruiken!" + security_notice: "Veel belangrijke elementen in deze editors zijn momenteel niet actief. Met dat wij de veiligheid van deze systemen verbeteren, zullen ook deze elementen beschikbaar worden. Indien u deze elementen al eerder wil gebruiken, " + contact_us: "contacteer ons!" + hipchat_prefix: "Je kan ons ook vinden in ons" + hipchat_url: "(Engelstalig) HipChat kanaal." + revert: "Keer wijziging terug" + revert_models: "keer wijziging model terug" + level_some_options: "Enkele opties?" + level_tab_thangs: "Elementen" + level_tab_scripts: "Scripts" + level_tab_settings: "Instellingen" + level_tab_components: "Componenten" + level_tab_systems: "Systemen" + level_tab_thangs_title: "Huidige Elementen" + level_tab_thangs_conditions: "Start Condities" + level_tab_thangs_add: "Voeg element toe" + level_settings_title: "Instellingen" + level_component_tab_title: "Huidige Componenten" + level_component_btn_new: "Maak een nieuw component aan" + level_systems_tab_title: "Huidige Systemen" + level_systems_btn_new: "Maak een nieuw systeem aan" + level_systems_btn_add: "Voeg Systeem toe" + level_components_title: "Terug naar Alle Elementen" + level_components_type: "Type" + level_component_edit_title: "Wijzig Component" + level_component_config_schema: "Schema" + level_component_settings: "Instellingen" + level_system_edit_title: "Wijzig Systeem" + create_system_title: "Maak een nieuw Systeem aan" + new_component_title: "Maak een nieuw Component aan" + new_component_field_system: "Systeem" + new_article_title: "Maak een Nieuw Artikel" + new_thang_title: "Maak een Nieuw Thang Type" + new_level_title: "Maak een Nieuw Level" + article_search_title: "Zoek Artikels Hier" + thang_search_title: "Zoek Thang Types Hier" + level_search_title: "Zoek Levels Hier" + + article: + edit_btn_preview: "Voorbeeld" + edit_article_title: "Wijzig Artikel" + + general: + and: "en" + name: "Naam" + body: "Inhoud" + version: "Versie" + commit_msg: "Commit Bericht" + history: "Geschiedenis" + version_history_for: "Versie geschiedenis voor: " + result: "Resultaat" + results: "Resultaten" + description: "Beschrijving" + or: "of" + email: "Email" + password: "Wachtwoord" + message: "Bericht" + code: "Code" + ladder: "Ladder" + when: "Wanneer" + opponent: "Tegenstander" + rank: "Rang" + score: "Score" + win: "Win" + loss: "Verlies" + tie: "Gelijk" + easy: "Gemakkelijk" + medium: "Medium" + hard: "Moeilijk" + + about: + who_is_codecombat: "Wie is CodeCombat?" + why_codecombat: "Waarom CodeCombat?" + who_description_prefix: "hebben samen CodeCombat opgericht in 2013. We creëerden ook " + who_description_suffix: "en in 2008, groeide het uit tot de #1 web en iOS applicatie om Chinese en Japanse karakters te leren schrijven." + who_description_ending: "Nu is het tijd om mensen te leren programmeren." + why_paragraph_1: "Tijdens het maken van Skritter wist George niet hoe hij moest programmeren en was hij constant gefrustreerd doordat hij zijn ideeën niet kon verwezelijken. Nadien probeerde hij te studeren maar de lessen gingen te traag. Ook zijn huisgenoot wou opnieuw studeren en stopte met lesgeven. Hij probeerde Codecademy maar was al snel \"verveeld\". Iedere week startte een andere vriend met Codecademy, met telkens als resultaat dat hij/zij vrij snel met de lessen stopte. We realiseerden ons dat het hetzelfde probleem was zoals we al eerder hadden opgelost met Skritter: mensen leren iets via langzame en intensieve lessen, terwijl ze het eigenlijk zo snel mogelijk nodig hebben via uitgebreide oefeningen. Wij weten hoe dat op te lossen." + why_paragraph_2: "Wil je leren programmeren? Je hebt geen lessen nodig. Je moet vooral veel code schrijven en je amuseren terwijl je dit doet." + why_paragraph_3_prefix: "Dat is waar programmeren om draait. Het moet tof zijn. Niet tof zoals" + why_paragraph_3_italic: "joepie een medaille" + why_paragraph_3_center: "maar tof zoals" + why_paragraph_3_italic_caps: "NEE MAMA IK MOET DIT LEVEL AF MAKEN!" + why_paragraph_3_suffix: "Dat is waarom CodeCombat een multiplayergame is, en niet zomaar lessen gegoten in spelformaat. We zullen niet stoppen totdat jij niet meer kan stoppen--maar deze keer, is dat iets goeds." + why_paragraph_4: "Als je verslaafd gaat zijn aan een spel, dan is het beter om hieraan verslaafd te raken en een tovenaar van het technisch tijdperk te worden." + why_ending: "En hallo, het is gratis." + why_ending_url: "Start nu met toveren!" + george_description: "CEO, zakenman, web designer, game designer, en kampioen van alle beginnende programmeurs." + scott_description: "Extraordinaire programmeur, software ontwikkelaar, keukenprins en heer en meester van financiën. Scott is het meeste voor reden vatbaar." + nick_description: "Getalenteerde programmeur, excentriek gemotiveerd, een rasechte experimenteerder. Nick kan alles en kiest ervoor om CodeCombat te ontwikkelen." + jeremy_description: "Klantenservice Manager, usability tester en gemeenschapsorganisator; Je hebt waarschijnlijk al gesproken met Jeremy." + michael_description: "Programmeur, sys-admin, en technisch wonderkind, Michael is de persoon die onze servers draaiende houdt." + glen_description: "Programmeur en gepassioneerde game developer, met de motivatie om de wereld te verbeteren, door het ontwikkelen van de dingen die belangrijk zijn. Het woord onmogelijk staat niet in zijn woordenboek. Nieuwe vaardigheden leren is een plezier voor him!" + + legal: + page_title: "Legaal" + opensource_intro: "CodeCombat is gratis en volledig open source." + opensource_description_prefix: "Bekijk " + github_url: "onze GitHub" + opensource_description_center: "en help ons als je wil! CodeCombat is gebouwd met de hulp van duizende open source projecten, en wij zijn er gek van. Bekijk ook " + archmage_wiki_url: "onze Tovenaar wiki" + opensource_description_suffix: "voor een lijst van de software dat dit spel mogelijk maakt." + practices_title: "Goede Respectvolle gewoonten" + practices_description: "Dit zijn onze beloften aan u, de speler, en iets minder juridische jargon." + privacy_title: "Privacy" + privacy_description: "We zullen nooit jouw persoonlijke informatie verkopen. We willen geld verdienen dankzij aanwerving in verloop van tijd, maar je mag op je twee oren slapen dat wij nooit jouw persoonlijke informatie zullen verspreiden aan geïnteresseerde bedrijven zonder dat jij daar expliciet mee akkoord gaat." + security_title: "Beveiliging" + security_description: "We streven ernaar om jouw persoonlijke informatie veilig te bewaren. Onze website is open en beschikbaar voor iedereen, opdat ons beveiliging systeem kan worden nagekeken en geoptimaliseerd door iedereen die dat wil. Dit alles is mogelijk doordat we volledig open source en transparant zijn." + email_title: "E-mail" + email_description_prefix: "We zullen je niet overspoelen met spam. Door" + email_settings_url: "jouw e-mail instellingen" + email_description_suffix: "of via urls in de emails die wij verzenden, kan je jouw instellingen wijzigen en ten allen tijden uitschrijven." + cost_title: "Kosten" + cost_description: "Momenteel is CodeCombat 100% gratis! Één van onze doestellingen is om dit zo te houden, opdat zoveel mogelijk mensen kunnen spelen, onafhankelijk van waar je leeft of wie je bent. Als het financieel moeilijker wordt, kan het mogelijk zijn dat we gaan beginnen met abonnementen of een prijs zetten op bepaalde zaken, maar we streven ernaar om dit te voorkomen. Met een beetje geluk zullen we dit voor altijd kunnen garanderen met:" + recruitment_title: "Aanwervingen" + recruitment_description_prefix: "Hier bij CodeCombat, ga je ontplooien tot een krachtige tovenoor-niet enkel virtueel, maar ook in het echt." + url_hire_programmers: "Niemand kan snel genoeg programmeurs aanwerven" + recruitment_description_suffix: "dus eenmaal je jouw vaardigheden hebt aangescherp en ermee akkoord gaat, zullen we jouw beste codeer prestaties voorstellen aan duizenden bedrijven die niet kunnen wachten om jou aan te werven. Zij betalen ons een beetje, maar betalen jou" + recruitment_description_italic: "enorm veel" + recruitment_description_ending: "de site blijft volledig gratis en iedereen is gelukkig. Dat is het plan." + copyrights_title: "Auteursrechten en licenties" + contributor_title: "Licentieovereenkomst voor vrijwilligers" + contributor_description_prefix: "Alle bijdragen, zowel op de website als op onze GitHub repository, vallen onder onze" + cla_url: "CLA" + contributor_description_suffix: "waarmee je moet akkoord gaan voordat wij jouw bijdragen kunnen gebruiken." + code_title: "Code - MIT" + code_description_prefix: "Alle code in het bezit van CodeCombat of aanwezig op codecombat.com, zowel in de GitHub respository of in de codecombat.com database, is erkend onder de" + mit_license_url: "MIT licentie" + code_description_suffix: "Dit geldt ook voor code in Systemen en Componenten dat publiekelijk is gemaakt met als doelstellingen het maken van levels." + art_title: "Art/Music - Creative Commons " + art_description_prefix: "Alle gemeenschappelijke inhoud valt onder de" + cc_license_url: "Creative Commons Attribution 4.0 Internationale Licentie" + art_description_suffix: "Gemeenschappelijke inhoud is alles dat algemeen verkrijgbaar is bij CodeCombat voor het doel levels te maken. Dit omvat:" + art_music: "Muziek" + art_sound: "Geluid" + art_artwork: "Artwork" + art_sprites: "Sprites" + art_other: "Eender wat en al het creatief werk dat niet als code aanzien wordt en verkrijgbaar is bij het aanmaken van levels." + art_access: "Momenteel is er geen universeel en gebruiksvriendelijk systeem voor het ophalen van deze assets. In het algemeen, worden deze opgehaald via de links zoals gebruikt door de website. Contacteer ons voor assitentie, of help ons met de website uit te breiden en de assets bereikbaarder te maken." + art_paragraph_1: "Voor toekenning, gelieve de naam en link naar codecombat.com te plaatsen waar dit passend is voor de vorm waarin het voorkomt. Bijvoorbeeld:" + use_list_1: "Wanneer gebruikt in een film of een ander spel, voeg codecombat.com toe in de credits." + use_list_2: "Wanneer toegepast op een website, inclusief een link naar het gebruik, bijvoorbeeld onderaan een afbeelding. Of in een algemene webpagina waar je eventueel ook andere Create Commons werken en open source software vernoemd die je gebruikt op de website. Iets dat alreeds duidelijk is gespecificeerd met CodeCombat, zoals een blog artikel, dat CodeCombat vernoemt, heeft geen aparte vermelding nodig." + art_paragraph_2: "Wanneer de gebruikte inhoud is gemaakt door een gebruiker van codecombat.com, vernoem hem/haar in plaats van ons en volg verspreidingsaanwijzingen van die brons als die er zijn." + rights_title: "Rechten Voorbehouden" + rights_desc: "Alle rechten zijn voorbehouden voor de Levels. Dit omvat:" + rights_scripts: "Scripts" + rights_unit: "Eenheid Configuratie" + rights_description: "Beschrijvingen" + rights_writings: "Literaire werken" + rights_media: "Media (geluid, muziek) en eender welke creatieve inhoud, specifiek gemaakt voor dat level en niet verkrijgbaar bij het maken van levels." + rights_clarification: "Om het duidelijk te maken, iets dat beschikbaar is in de Level editor voor het maken van levels, valt onder de CC licentie. Terwijl de inhoud gemaakt met de Level Editor of geüpload in de loop van de creatie van de levels, hier niet onder vallen." + nutshell_title: "In een notendop" + nutshell_description: "Alle middelen die wij aanbieden in de Level Editor zijn gratis te gebruiken om levels aan te maken. Wij behouden ons echter het recht voor om levels die gemaakt zijn op codecombat.com te beperken, en hier in de toekomst geld voor te vragen, moest dat ooit gebeuren." + canonical: "De Engelse versie van dit document is de definitieve en kanonieke versie. Bij verschillen tussen vertalingen heeft de Engelse versie voorrang." + + contribute: + page_title: "Bijdragen" + character_classes_title: "Karakterklassen" + introduction_desc_intro: "We hebben hoge verwachtingen over CodeCombat." + introduction_desc_pref: "We willen zijn waar programmeurs van alle niveaus komen om te leren en samen te spelen, anderen introduceren aan de wondere wereld van code, en de beste delen van de gemeenschap te reflecteren. We kunnen en willen dit niet alleen doen; wat projecten zoals GitHub, Stack Overflow en Linux groots en succesvol maken, zijn de mensen die deze software gebruiken en verbeteren. Daartoe, " + introduction_desc_github_url: "CodeCombat is volledig open source" + introduction_desc_suf: ", en we mikken ernaar om zoveel mogelijk manieren mogelijk maken voor u om deel te nemen en dit project van zowel jou als ons te maken." + introduction_desc_ending: "We hopen dat je met ons meedoet!" + introduction_desc_signature: "- Nick, George, Scott, Michael, en Jeremy" + alert_account_message_intro: "Hallo!" + alert_account_message_pref: "Om je te abonneren voor de klasse e-mails, moet je eerst " + alert_account_message_suf: "." + alert_account_message_create_url: "een account aanmaken" + archmage_summary: "Geïnteresserd in werken aan game graphics, user interface design, database- en serverorganisatie, multiplayer networking, physics, geluid of game engine prestaties? Wil jij helpen een game te bouwen wat anderen leert waar jij goed in bent? We moeten nog veel doen en als jij een ervaren programmeur bent en wil ontwikkelen voor CodeCombat, dan is dit de klasse voor jou. We zouden graag je hulp hebben bij het maken van de beste programmeergame ooit." + archmage_introduction: "Een van de beste aspecten aan het maken van spelletjes is dat zij zoveel verschillende zaken omvatten. Visualisaties, geluid, real-time netwerken, sociale netwerken, en natuurlijk veel van de voorkomende aspecten van programmeren, van low-level database beheer en server administratie tot gebruiksvriendelijke interfaces maken. Er is veel te doen, en als jij een ervaren programmeur bent met de motivatie om je handen veel te maken met CodeCombat, dan ben je de tovenaar die wij zoeken! We zouden graag jouw help hebben met het bouwen aan het allerbeste programmeerspel ooit." + class_attributes: "Klasse kenmerken" + archmage_attribute_1_pref: "Ervaring met " + archmage_attribute_1_suf: ", of de wil om het te leren. De meeste van onze code is in deze taal. Indien je een fan van Ruby of Python bent, zal je je meteen thuis voelen! Het is zoals JavaScript, maar met een mooiere syntax." + archmage_attribute_2: "Ervaring in programmeren en individueel initiatief. We kunnen jou helpen bij het opstarten, maar kunnen niet veel tijd spenderen om je op te leiden." + how_to_join: "Hoe deel te nemen" + join_desc_1: "Iedereen kan helpen! Bekijk onze " + join_desc_2: "om te starten, en vink het vierkantje hieronder aan om jouzelf te abonneren als dappere tovenaar en het laatste magische nieuws te ontvangen. Wil je met ons praten over wat er te doen is of hoe je nog meer met ons kan samenwerken? " + join_desc_3: ", of vind ons in " + join_desc_4: "en we bekijken het verder vandaar!" + join_url_email: "E-mail ons" + join_url_hipchat: "ons publiek (Engelstalig) HipChat kanaal" + more_about_archmage: "Leer meer over hoe je een Machtige Tovenaar kan worden" + archmage_subscribe_desc: "Ontvang e-mails met nieuwe codeer oppurtiniteiten en aankondigingen." + artisan_summary_pref: "Wil je levels ontwerpen en CodeCombat's arsenaal vergroten? Mensen spelen sneller door onze content dan wij bij kunnen houden! Op dit moment is onze level editor nog wat kaal, dus wees daarvan bewust. Levels maken zal een beetje uitdagend en buggy zijn. Als jij een visie van campagnes hebt van for-loops tot" + artisan_summary_suf: "dan is dit de klasse voor jou." + artisan_introduction_pref: "We moeten meer levels bouwen! Mensen schreeuwen om meer inhoud, en er zijn ook maar zoveel levels dat wij kunnen maken. Momenteel is jouw werkplaats level een; onze level editor is amper gebruikt door zelfs ons, wees dus voorzichtig. Indien je visioenen hebt van campagnes, gaande van for-loops tot" + artisan_introduction_suf: "dan is deze klasse waarschijnlijk iets voor jou." + artisan_attribute_1: "Enige ervaring in het maken van gelijkbare inhoud. Bijvoorbeeld ervaring het gebruiken van Blizzard's level editor. Maar dit is niet vereist!" + artisan_attribute_2: "Tot in detail testen en itereren staat voor jou gelijk aan plezier. Om goede levels te maken, moet jet het door anderen laten spelen en bereid zijn om een hele boel aan te passen." + artisan_attribute_3: "Momenteel heb je nog veel geduld nodig, doordat onze editor nog vrij ruw is en op je frustraties kan werken. Samenwerken met een Adventurer kan jou ook veel helpen." + artisan_join_desc: "Gebruik de Level Editor in deze volgorde, min of meer:" + artisan_join_step1: "Lees de documentatie." + artisan_join_step2: "Maak een nieuw level en bestudeer reeds bestaande levels." + artisan_join_step3: "Praat met ons in ons publieke (Engelstalige) HipChat kanaal voor hulp. (optioneel)" + artisan_join_step4: "Maak een bericht over jouw level op ons forum voor feedback." + more_about_artisan: "Leer meer over hoe je een Creatieve Ambachtsman kan worden." + artisan_subscribe_desc: "Ontvang e-mails met nieuws over de Level Editor." + adventurer_summary: "Laten we duidelijk zijn over je rol: jij bent de tank. Jij krijgt de zware klappen te verduren. We hebben mensen nodig om spiksplinternieuwe levels te proberen en te kijken hoe deze beter kunnen. De pijn zal groot zijn, het maken van een goede game is een lang proces en niemand doet het de eerste keer goed. Als jij dit kan verduren en een hoge constitution score hebt, dan is dit de klasse voor jou." + adventurer_introduction: "Laten we duidelijk zijn over je rol: jij bent de tank. Jij krijgt de zware klappen te verduren. We hebben mensen nodig om spiksplinternieuwe levels te proberen en te kijken hoe deze beter kunnen. De pijn zal groot zijn, het maken van een goede game is een lang proces en niemand doet het de eerste keer goed. Als jij dit kan verduren en een hoge constitution score hebt, dan is dit de klasse voor jou." + adventurer_attribute_1: "Een wil om te leren. Jij wilt leren hoe je programmeert en wij willen het jou leren. Je zal overigens zelf het meeste leren doen." + adventurer_attribute_2: "Charismatisch. Wees netjes maar duidelijk over wat er beter kan en geef suggesties over hoe het beter kan." + adventurer_join_pref: "Werk samen met een Ambachtsman of recruteer er een, of tik het veld hieronder aan om e-mails te ontvangen wanneer er nieuwe levels zijn om te testen. We zullen ook posten over levels die beoordeeld moeten worden op onze netwerken zoals" + adventurer_forum_url: "ons forum" + adventurer_join_suf: "dus als je liever op deze manier wordt geïnformeerd, schrijf je daar in!" + more_about_adventurer: "Leer meer over hoe je een dappere avonturier kunt worden." + adventurer_subscribe_desc: "Ontvang e-mails wanneer er nieuwe levels zijn die getest moeten worden." + scribe_summary_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis kennis zijn en een wiki met programmeerconcepten waar levels op in kunnen gaan. Op die manier zal een Ambachtslied een link kunnen geven naar een artikel wat past bij een level. Net zoiets als het " + scribe_summary_suf: " heeft gebouwd. Als jij het leuk vindt programmeerconcepten uit te leggen, dan is deze klasse iets voor jou." + scribe_introduction_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis kennis zijn en een wiki met programmeerconcepten waar levels op in kunnen gaan. Op die manier zal elk Ambachtslied niet in detail hoeven uit te leggen wat een vergelijkingsoperator is, maar een link kunnen geven naar een artikel wat deze informatie bevat voor de speler. Net zoiets als het " + scribe_introduction_url_mozilla: "Mozilla Developer Network" + scribe_introduction_suf: " heeft gebouwd. Als jij het leuk vindt om programmeerconcepten uit te leggen in Markdown-vorm, dan is deze klasse wellicht iets voor jou." + scribe_attribute_1: "Taal-skills zijn praktisch alles wat je nodig hebt. Niet alleen grammatica of spelling, maar ook moeilijke ideeën overbrengen aan anderen." + contact_us_url: "Contacteer ons" + scribe_join_description: "vertel ons wat over jezelf, je ervaring met programmeren en over wat voor soort dingen je graag zou schrijven. Verder zien we wel!" + more_about_scribe: "Leer meer over het worden van een ijverige Klerk." + scribe_subscribe_desc: "Ontvang e-mails met aankondigingen over het schrijven van artikelen." + diplomat_summary: "Er is grote interesse in CodeCombat in landen waar geen Engels wordt gesproken! We zijn op zoek naar vertalers wie tijd willen spenderen aan het vertalen van de site's corpus aan woorden zodat CodeCombat zo snel mogelijk toegankelijk wordt voor heel de wereld. Als jij wilt helpen met CodeCombat internationaal maken, dan is dit de klasse voor jou." + diplomat_introduction_pref: "Dus, als er iets is wat we geleerd hebben van de " + diplomat_launch_url: "release in oktober" + diplomat_introduction_suf: "dan is het wel dat er een significante interesse is in CodeCombat in andere landen, vooral Brazilië! We zijn een corps aan vertalers aan het creëren dat ijverig de ene set woorden in een andere omzet om CodeCombat zo toegankelijk te maken als mogelijk in heel de wereld. Als jij het leuk vindt glimpsen op te vangen van aankomende content en deze levels zo snel mogelijk naar je landgenoten te krijgen, dan is dit de klasse voor jou." + diplomat_attribute_1: "Vloeiend Engels en de taal waar naar je wilt vertalen kunnen spreken. Wanneer je moeilijke ideeën wilt overbrengen, is het belangrijk beide goed te kunnen!" + diplomat_join_pref_github: "Vind van jouw taal het locale bestand " + diplomat_github_url: "op GitHub" + diplomat_join_suf_github: ", edit het online, en submit een pull request. Daarnaast kun je hieronder aanvinken als je up-to-date wilt worden gehouden met nieuwe internationalisatie-ontwikkelingen." + more_about_diplomat: "Leer meer over het worden van een geweldige Diplomaat" + diplomat_subscribe_desc: "Ontvang e-mails over i18n ontwikkelingen en levels om te vertalen." + ambassador_summary: "We proberen een gemeenschap te bouwen en elke gemeenschap heeft een supportteam nodig wanneer er problemen zijn. We hebben chats, e-mails en sociale netwerken zodat onze gebruikers het spel kunnen leren kennen. Als jij mensen wilt helpen betrokken te raken, plezier te hebben en wat te leren programmeren, dan is dit wellicht de klasse voor jou." + ambassador_introduction: "We zijn een community aan het uitbouwen, en jij maakt er deel van uit. We hebben Olark chatkamers, emails, en soeciale netwerken met veel andere mensen waarmee je kan praten en hulp kan vragen over het spel en om bij te leren. Als jij mensen wil helpen en te werken nabij de hartslag van CodeCombat in het bijsturen van onze toekomstvisie, dan is dit de geknipte klasse voor jou!" + ambassador_attribute_1: "Communicatieskills. Problemen die spelers hebben kunnen identificeren en ze helpen deze op te lossen. Verder zul je ook de rest van ons geïnformeerd houden over wat de spelers zeggen, wat ze leuk vinden, wat ze minder vinden en waar er meer van moet zijn!" + ambassador_join_desc: "vertel ons wat over jezelf, wat je hebt gedaan en wat je graag zou doen. We zien verder wel!" + ambassador_join_note_strong: "Opmerking" + ambassador_join_note_desc: "Een van onze topprioriteiten is om een multiplayer te bouwen waar spelers die moeite hebben een level op te lossen een wizard met een hoger level kunnen oproepen om te helpen. Dit zal een goede manier zijn voor ambassadeurs om hun ding te doen. We houden je op de hoogte!" + more_about_ambassador: "Leer meer over het worden van een behulpzame Ambassadeur" + ambassador_subscribe_desc: "Ontvang e-mails met updates over ondersteuning en multiplayer-ontwikkelingen." + counselor_summary: "Geen van de rollen hierboven in jouw interessegebied? Maak je geen zorgen, we zijn op zoek naar iedereen die wil helpen met het ontwikkelen van CodeCombat! Als je geïnteresseerd bent in lesgeven, gameontwikkeling, open source management of iets anders waarvan je denkt dat het relevant voor ons is, dan is dit de klasse voor jou." + counselor_introduction_1: "Heb jij levenservaring? Een afwijkend perspectief op zaken die ons kunnen helpen CodeCombat te vormen? Van alle rollen neemt deze wellicht de minste tijd in, maar individueel maak je misschien het grootste verschil. We zijn op zoek naar wijze tovenaars, vooral in het gebied van lesgeven, gameontwikkeling, open source projectmanagement, technische recrutering, ondernemerschap of design." + counselor_introduction_2: "Of eigenlijk alles wat relevant is voor de ontwikkeling van CodeCombat. Als jij kennis hebt en deze wilt dezen om dit project te laten groeien, dan is dit misschien de klasse voor jou." + counselor_attribute_1: "Ervaring, in enig van de bovenstaande gebieden of iets anders waarvan je denkt dat het behulpzaam zal zijn." + counselor_attribute_2: "Een beetje vrije tijd!" + counselor_join_desc: "vertel ons wat over jezelf, wat je hebt gedaan en wat je graag wilt doen. We zullen je in onze contactlijst zetten en je benaderen wanneer we je advies kunnen gebruiken (niet te vaak)." + more_about_counselor: "Leer meer over het worden van een waardevolle Raadgever" + changes_auto_save: "Veranderingen worden automatisch opgeslagen wanneer je het vierkantje aan- of afvinkt." + diligent_scribes: "Onze ijverige Klerks:" + powerful_archmages: "Onze machtige Tovenaars:" + creative_artisans: "Onze creatieve Ambachtslieden:" + brave_adventurers: "Onze dappere Avonturiers:" + translating_diplomats: "Onze vertalende Diplomaten:" + helpful_ambassadors: "Onze helpvolle Ambassadeurs:" + + classes: + archmage_title: "Tovenaar" + archmage_title_description: "(Programmeur)" + artisan_title: "Ambachtsman" + artisan_title_description: "(Level Bouwer)" + adventurer_title: "Avonturier" + adventurer_title_description: "(Level Tester)" + scribe_title: "Klerk" + scribe_title_description: "(Redacteur)" + diplomat_title: "Diplomaat" + diplomat_title_description: "(Vertaler)" + ambassador_title: "Ambassadeur" + ambassador_title_description: "(Ondersteuning)" + counselor_title: "Raadgever" + counselor_title_description: "(Expert/Leraar)" + + ladder: + please_login: "Log alstublieft eerst in voordat u een ladderspel speelt." + my_matches: "Mijn Wedstrijden" + simulate: "Simuleer" + simulation_explanation: "Door spellen te simuleren kan je zelf sneller beoordeeld worden!" + simulate_games: "Simuleer spellen!" + simulate_all: "RESET EN SIMULEER SPELLEN" + leaderboard: "Leaderboard" + battle_as: "Vecht als " + summary_your: "Jouw " + summary_matches: "Wedstrijden - " + summary_wins: " Overwinningen, " + summary_losses: " Nederlagen" + rank_no_code: "Geen nieuwe code om te Beoordelen!" + rank_my_game: "Beoordeel mijn spel!" + rank_submitting: "Verzenden..." + rank_submitted: "Verzonden voor Beoordeling" + rank_failed: "Beoordeling mislukt" + rank_being_ranked: "Spel wordt Beoordeeld" + code_being_simulated: "Uw nieuwe code wordt gesimuleerd door andere spelers om te beoordelen. Dit wordt vernieuwd zodra nieuwe matches binnenkomen." + no_ranked_matches_pre: "Geen beoordeelde wedstrijden voor het" + no_ranked_matches_post: " team! Speel tegen enkele tegenstanders en kom terug hier om uw spel te laten beoordelen." + choose_opponent: "Kies een tegenstander" + tutorial_play: "Speel de Tutorial" + tutorial_recommended: "Aanbevolen als je nog niet eerder hebt gespeeld" + tutorial_skip: "Sla Tutorial over" + tutorial_not_sure: "Niet zeker wat er aan de gang is?" + tutorial_play_first: "Speel eerst de Tutorial." + simple_ai: "Simpele AI" + warmup: "Opwarming" + vs: "tegen" + + multiplayer_launch: + introducing_dungeon_arena: "Introductie van Dungeon Arena" + new_way: "17 maart, 2014: De nieuwe manier om te concurreren met code." + to_battle: "Naar het slagveld, ontwikkelaars!" + modern_day_sorcerer: "Kan jij programmeren? Hoe stoer is dat. Jij bent een modere voetballer! is het niet tijd dat je jouw magische krachten gebruikt voor het controlleren van jou minions in het slagveld? En nee, we praten heir niet over robots." + arenas_are_here: "CodeCombat head-to-head multiplayer arenas are here." + ladder_explanation: "Kies jouw helden, betover jouw mens of ogre legers, en beklim jouw weg naar de top in de ladder, door het verslagen van vriend en vijand. Daag nu je vrienden uit in multiplayer coding arenas en verkrijg faam en glorie. Indien je creatief bent, kan je zelfs" + fork_our_arenas: "onze arenas forken" + create_worlds: "en jouw eigen werelden creëren." + javascript_rusty: "Jouw JavaScript is een beetje roest? Wees niet bang, er is een" + tutorial: "tutorial" + new_to_programming: ". Ben je net begonnen met programmeren? Speel dan eerst onze beginners campagne." + so_ready: "Ik ben hier zo klaar voor" diff --git a/app/locale/nl-NL.coffee b/app/locale/nl-NL.coffee new file mode 100644 index 000000000..6ccdcd567 --- /dev/null +++ b/app/locale/nl-NL.coffee @@ -0,0 +1,555 @@ +module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription: "Dutch (Netherlands)", translation: + common: + loading: "Aan het laden..." + saving: "Opslaan..." + sending: "Verzenden..." + cancel: "Annuleren" + save: "Opslagen" + delay_1_sec: "1 seconde" + delay_3_sec: "3 secondes" + delay_5_sec: "5 secondes" + manual: "Handleiding" + fork: "Fork" + play: "Spelen" + + modal: + close: "Sluiten" + okay: "Oké" + + not_found: + page_not_found: "Pagina niet gevonden" + + nav: + play: "Spelen" + editor: "Editor" + blog: "Blog" + forum: "Forum" + admin: "Administrator" + home: "Home" + contribute: "Bijdragen" + legal: "Legaal" + about: "Over Ons" + contact: "Contact" + twitter_follow: "Volgen" + employers: "Werknemers" + + versions: + save_version_title: "Nieuwe versie opslagen" + new_major_version: "Nieuwe hoofd versie" + cla_prefix: "Om bewerkingen op te slagen, moet je eerst akkoord gaan met onze" + cla_url: "CLA" + cla_suffix: "." + cla_agree: "IK GA AKKOORD" + + login: + sign_up: "Account Maken" + log_in: "Inloggen" + log_out: "Uitloggen" + recover: "account herstellen" + + recover: + recover_account_title: "Herstel Account" + send_password: "Verzend nieuw wachtwoord" + + signup: + create_account_title: "Maak een account aan om je progressie op te slagen" + description: "Het is gratis. We hebben maar een paar dingen nodig en dan kan je aan de slag:" + email_announcements: "Ontvang aankondigingen via email" + coppa: "13+ of niet uit de VS" + coppa_why: "(Waarom?)" + creating: "Account aanmaken..." + sign_up: "Aanmelden" + log_in: "inloggen met wachtwoord" + + home: + slogan: "Leer programmeren in JavaScript door het spelen van een spel" + no_ie: "CodeCombat werkt niet in IE8 of ouder. Sorry!" + no_mobile: "CodeCombat is niet gemaakt voor mobiele apparaten en werkt misschien niet!" + play: "Speel" + old_browser: "Uh oh, jouw browser is te oud om CodeCombat te kunnen spelen, Sorry!" + old_browser_suffix: "Je kan toch proberen, maar het zal waarschijnlijk niet werken!" + campaign: "Campagne" + for_beginners: "Voor Beginners" +# multiplayer: "Multiplayer" + for_developers: "Voor ontwikkelaars" + + play: + choose_your_level: "Kies Je Level" + adventurer_prefix: "Je kunt meteen naar een van de levels hieronder springen, of de levels bespreken op " + adventurer_forum: "het Avonturiersforum" + adventurer_suffix: "." + campaign_beginner: "Beginnercampagne" + campaign_beginner_description: "... waarin je de toverkunst van programmeren leert." + campaign_dev: "Willekeurige moeilijkere levels" + campaign_dev_description: "... waarin je de interface leert kennen terwijl je wat moeilijkers doet." + campaign_multiplayer: "Multiplayer Arena's" + campaign_multiplayer_description: "... waarin je direct tegen andere spelers speelt." + campaign_player_created: "Door-spelers-gemaakt" + campaign_player_created_description: "... waarin je ten strijde trekt tegen de creativiteit van andere Ambachtelijke Tovenaars." + level_difficulty: "Moeilijkheidsgraad: " + play_as: "Speel als " + spectate: "Schouw toe" + + contact: + contact_us: "Contact opnemen met CodeCombat" + welcome: "Goed om van je te horen! Gebruik dit formulier om ons een e-mail te sturen." + contribute_prefix: "Als je interesse hebt om bij te dragen, bekijk onze " + contribute_page: "pagina over bijdragen" + contribute_suffix: "!" + forum_prefix: "Voor iets publiekelijks, probeer dan " + forum_page: "ons forum" + forum_suffix: "." + send: "Feedback Verzonden" + + diplomat_suggestion: + title: "Help CodeCombat vertalen!" + sub_heading: "We hebben je taalvaardigheden nodig." + pitch_body: "We ontwikkelen CodeCombat in het Engels, maar we hebben al spelers van over de hele wereld. Veel van hen willen in het Nederlands spelen, maar kunnen geen Engels. Dus als je beiden spreekt, overweeg a.u.b. om je aan te melden als Diplomaat en help zowel de CodeCombat website als alle levels te vertalen naar het Nederlands." + missing_translations: "Totdat we alles hebben vertaald naar het Nederlands zul je Engels zien waar Nederlands niet beschikbaar is." + learn_more: "Meer informatie over het zijn van een Diplomaat" + subscribe_as_diplomat: "Abonneren als Diplomaat" + + wizard_settings: + title: "Tovenaar instellingen" + customize_avatar: "Bewerk je avatar" + clothes: "Kleren" + trim: "Trim" + cloud: "Wolk" + spell: "Spreuk" + boots: "Laarzen" + hue: "Hue" + saturation: "Saturation" + lightness: "Lightness" + + account_settings: + title: "Account Instellingen" + not_logged_in: "Log in of maak een account om je instellingen aan te passen." + autosave: "Aanpassingen Automatisch Opgeslagen" + me_tab: "Ik" + picture_tab: "Afbeelding" + wizard_tab: "Tovenaar" + password_tab: "Wachtwoord" + emails_tab: "Emails" +# admin: "Admin" + gravatar_select: "Selecteer welke Gravatar foto je wilt gebruiken" + gravatar_add_photos: "Voeg thumbnails en foto's toe aan je Gravatar account, gekoppeld aan jouw email-adres, om een afbeelding te kiezen." + gravatar_add_more_photos: "Voeg meer afbeeldingen toe aan je Gravatar account om ze hier te gebruiken." + wizard_color: "Tovenaar Kleding Kleur" + new_password: "Nieuw Wachtwoord" + new_password_verify: "Verifieer" + email_subscriptions: "E-mail Abonnementen" + email_announcements: "Aankondigingen" + email_notifications: "Notificaties" + email_notifications_description: "Krijg periodieke meldingen voor jouw account." + email_announcements_description: "Verkrijg emails over het laatste nieuws en de ontwikkelingen bij CodeCombat." + contributor_emails: "Medewerker Klasse emails" + contribute_prefix: "We zoeken mensen om bij ons feest aan te voegen! Bekijk de " + contribute_page: "contributiepagina" + contribute_suffix: " om meer te weten te komen." + email_toggle: "Vink alles aan/af" + error_saving: "Fout Tijdens Het Opslaan" + saved: "Aanpassingen Opgeslagen" + password_mismatch: "Het wachtwoord komt niet overeen." + + account_profile: + edit_settings: "Instellingen Aanpassen" + profile_for_prefix: "Profiel voor " +# profile_for_suffix: "" + profile: "Profiel" + user_not_found: "Geen gebruiker gevonden. Controleer de URL?" + gravatar_not_found_mine: "We konden geen account vinden gekoppeld met:" + gravatar_not_found_email_suffix: "." + gravatar_signup_prefix: "Registreer op " + gravatar_signup_suffix: " om alles in orde te maken!" + gravatar_not_found_other: "Helaas, er is geen profiel geassocieerd met dit e-mail adres." + gravatar_contact: "Contact" + gravatar_websites: "Websites" + gravatar_accounts: "Zoals Gezien Op" + gravatar_profile_link: "Volledig Gravatar Profiel" + + play_level: + level_load_error: "Level kon niet geladen worden: " + done: "Klaar" + grid: "Raster" + customize_wizard: "Pas Tovenaar aan" + home: "Home" + guide: "Handleiding" + multiplayer: "Multiplayer" + restart: "Herstarten" + goals: "Doelen" + action_timeline: "Actie tijdlijn" + click_to_select: "Klik op een eenheid om deze te selecteren." + reload_title: "Alle Code Herladen?" + reload_really: "Weet je zeker dat je dit level tot het begin wilt herladen?" + reload_confirm: "Herlaad Alles" +# victory_title_prefix: "" + victory_title_suffix: " Compleet" + victory_sign_up: "Schrijf je in om je progressie op te slaan" + victory_sign_up_poke: "Wil je jouw code opslaan? Maak een gratis account aan!" + victory_rate_the_level: "Beoordeel het level: " + victory_rank_my_game: "Rankschik mijn Wedstrijd" + victory_ranking_game: "Verzenden..." + victory_return_to_ladder: "Keer terug naar de ladder" + victory_play_next_level: "Speel Volgend Level" + victory_go_home: "Ga naar Home" + victory_review: "Vertel ons meer!" + victory_hour_of_code_done: "Ben Je Klaar?" + victory_hour_of_code_done_yes: "Ja, ik ben klaar met mijn Hour of Code!" + multiplayer_title: "Multiplayer Instellingen" + multiplayer_link_description: "Geef deze url aan iemand om hem/haar te laten meedoen met jou." + multiplayer_hint_label: "Hint:" + multiplayer_hint: " Klik de link om alles te selecteren, druk dan op Apple-C of Ctrl-C om de link te kopiëren." + multiplayer_coming_soon: "Binnenkort komen er meer Multiplayermogelijkheden!" + guide_title: "Handleiding" + tome_minion_spells: "Jouw Minions' Spreuken" + tome_read_only_spells: "Read-Only Spreuken" + tome_other_units: "Andere Eenheden" + tome_cast_button_castable: "Uitvoeren" + tome_cast_button_casting: "Aan het uitvoeren" + tome_cast_button_cast: "Spreuk uitvoeren" + tome_autocast_delay: "Spreuk Uitvoeren vertraging" + tome_select_spell: "Selecteer een Spreuk" + tome_select_a_thang: "Selecteer Iemand voor " + tome_available_spells: "Beschikbare spreuken" + hud_continue: "Ga verder (druk shift-space)" + spell_saved: "Spreuk Opgeslagen" + skip_tutorial: "Overslaan (esc)" + editor_config: "Editor Configuratie" + editor_config_title: "Editor Configuratie" + editor_config_keybindings_label: "Toets instellingen" +# editor_config_keybindings_default: "Default (Ace)" + editor_config_keybindings_description: "Voeg extra shortcuts toe van de gebruikelijke editors." + editor_config_invisibles_label: "Toon onzichtbare" + editor_config_invisibles_description: "Toon onzichtbare whitespace karakters." + editor_config_indentguides_label: "Toon inspringing regels" + editor_config_indentguides_description: "Toon verticale hulplijnen om de zichtbaarheid te verbeteren." + editor_config_behaviors_label: "Slim gedrag" + editor_config_behaviors_description: "Auto-aanvulling (gekrulde) haakjes en aanhalingstekens." + + admin: + av_title: "Administrator panels" + av_entities_sub_title: "Entiteiten" + av_entities_users_url: "Gebruikers" + av_entities_active_instances_url: "Actieve instanties" + av_other_sub_title: "Andere" + av_other_debug_base_url: "Base (om base.jade te debuggen)" + u_title: "Gebruikerslijst" + lg_title: "Laatste Spelletjes" + + editor: + main_title: "CodeCombat Editors" + main_description: "Maak je eigen levels, campagnes, eenheden en leermateriaal. Wij bieden alle programma's aan die u nodig heeft!" + article_title: "Artikel Editor" + article_description: "Schrijf artikels die spelers een overzicht geven over programmeer concepten die kunnen gebruikt worden over een variëteit van levels en campagnes." + thang_title: "Thang Editor" + thang_description: "Maak eenheden, beschrijf hun standaard logica, graphics en audio. Momenteel is enkel het importeren van vector graphics geëxporteerd in Flash ondersteund." + level_title: "Level Editor" + level_description: "Bevat het programma om te programmeren, audio te uploaden en aangepaste logica te creëren om alle soorten levels te maken. Het is alles wat wijzelf ook gebruiken!" + security_notice: "Veel belangrijke elementen in deze editors zijn momenteel niet actief. Met dat wij de veiligheid van deze systemen verbeteren, zullen ook deze elementen beschikbaar worden. Indien u deze elementen al eerder wil gebruiken, " + contact_us: "contacteer ons!" + hipchat_prefix: "Je kan ons ook vinden in ons" + hipchat_url: "(Engelstalig) HipChat kanaal." + revert: "Keer wijziging terug" + revert_models: "keer wijziging model terug" + level_some_options: "Enkele opties?" + level_tab_thangs: "Elementen" + level_tab_scripts: "Scripts" + level_tab_settings: "Instellingen" + level_tab_components: "Componenten" + level_tab_systems: "Systemen" + level_tab_thangs_title: "Huidige Elementen" + level_tab_thangs_conditions: "Start Condities" + level_tab_thangs_add: "Voeg element toe" + level_settings_title: "Instellingen" + level_component_tab_title: "Huidige Componenten" + level_component_btn_new: "Maak een nieuw component aan" + level_systems_tab_title: "Huidige Systemen" + level_systems_btn_new: "Maak een nieuw systeem aan" + level_systems_btn_add: "Voeg Systeem toe" + level_components_title: "Terug naar Alle Elementen" + level_components_type: "Type" + level_component_edit_title: "Wijzig Component" + level_component_config_schema: "Schema" + level_component_settings: "Instellingen" + level_system_edit_title: "Wijzig Systeem" + create_system_title: "Maak een nieuw Systeem aan" + new_component_title: "Maak een nieuw Component aan" + new_component_field_system: "Systeem" + new_article_title: "Maak een Nieuw Artikel" + new_thang_title: "Maak een Nieuw Thang Type" + new_level_title: "Maak een Nieuw Level" + article_search_title: "Zoek Artikels Hier" + thang_search_title: "Zoek Thang Types Hier" + level_search_title: "Zoek Levels Hier" + + article: + edit_btn_preview: "Voorbeeld" + edit_article_title: "Wijzig Artikel" + + general: + and: "en" + name: "Naam" + body: "Inhoud" + version: "Versie" + commit_msg: "Commit Bericht" + history: "Geschiedenis" + version_history_for: "Versie geschiedenis voor: " + result: "Resultaat" + results: "Resultaten" + description: "Beschrijving" + or: "of" + email: "Email" + password: "Wachtwoord" + message: "Bericht" + code: "Code" + ladder: "Ladder" + when: "Wanneer" + opponent: "Tegenstander" + rank: "Rang" + score: "Score" + win: "Win" + loss: "Verlies" + tie: "Gelijk" + easy: "Gemakkelijk" + medium: "Medium" + hard: "Moeilijk" + + about: + who_is_codecombat: "Wie is CodeCombat?" + why_codecombat: "Waarom CodeCombat?" + who_description_prefix: "hebben samen CodeCombat opgericht in 2013. We creëerden ook " + who_description_suffix: "en in 2008, groeide het uit tot de #1 web en iOS applicatie om Chinese en Japanse karakters te leren schrijven." + who_description_ending: "Nu is het tijd om mensen te leren programmeren." + why_paragraph_1: "Tijdens het maken van Skritter wist George niet hoe hij moest programmeren en was hij constant gefrustreerd doordat hij zijn ideeën niet kon verwezelijken. Nadien probeerde hij te studeren maar de lessen gingen te traag. Ook zijn huisgenoot wou opnieuw studeren en stopte met lesgeven. Hij probeerde Codecademy maar was al snel \"verveeld\". Iedere week startte een andere vriend met Codecademy, met telkens als resultaat dat hij/zij vrij snel met de lessen stopte. We realiseerden ons dat het hetzelfde probleem was zoals we al eerder hadden opgelost met Skritter: mensen leren iets via langzame en intensieve lessen, terwijl ze het eigenlijk zo snel mogelijk nodig hebben via uitgebreide oefeningen. Wij weten hoe dat op te lossen." + why_paragraph_2: "Wil je leren programmeren? Je hebt geen lessen nodig. Je moet vooral veel code schrijven en je amuseren terwijl je dit doet." + why_paragraph_3_prefix: "Dat is waar programmeren om draait. Het moet tof zijn. Niet tof zoals" + why_paragraph_3_italic: "joepie een medaille" + why_paragraph_3_center: "maar tof zoals" + why_paragraph_3_italic_caps: "NEE MAMA IK MOET DIT LEVEL AF MAKEN!" + why_paragraph_3_suffix: "Dat is waarom CodeCombat een multiplayergame is, en niet zomaar lessen gegoten in spelformaat. We zullen niet stoppen totdat jij niet meer kan stoppen--maar deze keer, is dat iets goeds." + why_paragraph_4: "Als je verslaafd gaat zijn aan een spel, dan is het beter om hieraan verslaafd te raken en een tovenaar van het technisch tijdperk te worden." + why_ending: "En hallo, het is gratis." + why_ending_url: "Start nu met toveren!" + george_description: "CEO, zakenman, web designer, game designer, en kampioen van alle beginnende programmeurs." + scott_description: "Extraordinaire programmeur, software ontwikkelaar, keukenprins en heer en meester van financiën. Scott is het meeste voor reden vatbaar." + nick_description: "Getalenteerde programmeur, excentriek gemotiveerd, een rasechte experimenteerder. Nick kan alles en kiest ervoor om CodeCombat te ontwikkelen." + jeremy_description: "Klantenservice Manager, usability tester en gemeenschapsorganisator; Je hebt waarschijnlijk al gesproken met Jeremy." + michael_description: "Programmeur, sys-admin, en technisch wonderkind, Michael is de persoon die onze servers draaiende houdt." + glen_description: "Programmeur en gepassioneerde game developer, met de motivatie om de wereld te verbeteren, door het ontwikkelen van de dingen die belangrijk zijn. Het woord onmogelijk staat niet in zijn woordenboek. Nieuwe vaardigheden leren is een plezier voor him!" + + legal: + page_title: "Legaal" + opensource_intro: "CodeCombat is gratis en volledig open source." + opensource_description_prefix: "Bekijk " + github_url: "onze GitHub" + opensource_description_center: "en help ons als je wil! CodeCombat is gebouwd met de hulp van duizende open source projecten, en wij zijn er gek van. Bekijk ook " + archmage_wiki_url: "onze Tovenaar wiki" + opensource_description_suffix: "voor een lijst van de software dat dit spel mogelijk maakt." + practices_title: "Goede Respectvolle gewoonten" + practices_description: "Dit zijn onze beloften aan u, de speler, en iets minder juridische jargon." + privacy_title: "Privacy" + privacy_description: "We zullen nooit jouw persoonlijke informatie verkopen. We willen geld verdienen dankzij aanwerving in verloop van tijd, maar je mag op je twee oren slapen dat wij nooit jouw persoonlijke informatie zullen verspreiden aan geïnteresseerde bedrijven zonder dat jij daar expliciet mee akkoord gaat." + security_title: "Beveiliging" + security_description: "We streven ernaar om jouw persoonlijke informatie veilig te bewaren. Onze website is open en beschikbaar voor iedereen, opdat ons beveiliging systeem kan worden nagekeken en geoptimaliseerd door iedereen die dat wil. Dit alles is mogelijk doordat we volledig open source en transparant zijn." + email_title: "E-mail" + email_description_prefix: "We zullen je niet overspoelen met spam. Door" + email_settings_url: "jouw e-mail instellingen" + email_description_suffix: "of via urls in de emails die wij verzenden, kan je jouw instellingen wijzigen en ten allen tijden uitschrijven." + cost_title: "Kosten" + cost_description: "Momenteel is CodeCombat 100% gratis! Één van onze doestellingen is om dit zo te houden, opdat zoveel mogelijk mensen kunnen spelen, onafhankelijk van waar je leeft of wie je bent. Als het financieel moeilijker wordt, kan het mogelijk zijn dat we gaan beginnen met abonnementen of een prijs zetten op bepaalde zaken, maar we streven ernaar om dit te voorkomen. Met een beetje geluk zullen we dit voor altijd kunnen garanderen met:" + recruitment_title: "Aanwervingen" + recruitment_description_prefix: "Hier bij CodeCombat, ga je ontplooien tot een krachtige tovenoor-niet enkel virtueel, maar ook in het echt." + url_hire_programmers: "Niemand kan snel genoeg programmeurs aanwerven" + recruitment_description_suffix: "dus eenmaal je jouw vaardigheden hebt aangescherp en ermee akkoord gaat, zullen we jouw beste codeer prestaties voorstellen aan duizenden bedrijven die niet kunnen wachten om jou aan te werven. Zij betalen ons een beetje, maar betalen jou" + recruitment_description_italic: "enorm veel" + recruitment_description_ending: "de site blijft volledig gratis en iedereen is gelukkig. Dat is het plan." + copyrights_title: "Auteursrechten en licenties" + contributor_title: "Licentieovereenkomst voor vrijwilligers" + contributor_description_prefix: "Alle bijdragen, zowel op de website als op onze GitHub repository, vallen onder onze" + cla_url: "CLA" + contributor_description_suffix: "waarmee je moet akkoord gaan voordat wij jouw bijdragen kunnen gebruiken." + code_title: "Code - MIT" + code_description_prefix: "Alle code in het bezit van CodeCombat of aanwezig op codecombat.com, zowel in de GitHub respository of in de codecombat.com database, is erkend onder de" + mit_license_url: "MIT licentie" + code_description_suffix: "Dit geldt ook voor code in Systemen en Componenten dat publiekelijk is gemaakt met als doelstellingen het maken van levels." + art_title: "Art/Music - Creative Commons " + art_description_prefix: "Alle gemeenschappelijke inhoud valt onder de" + cc_license_url: "Creative Commons Attribution 4.0 Internationale Licentie" + art_description_suffix: "Gemeenschappelijke inhoud is alles dat algemeen verkrijgbaar is bij CodeCombat voor het doel levels te maken. Dit omvat:" + art_music: "Muziek" + art_sound: "Geluid" + art_artwork: "Artwork" + art_sprites: "Sprites" + art_other: "Eender wat en al het creatief werk dat niet als code aanzien wordt en verkrijgbaar is bij het aanmaken van levels." + art_access: "Momenteel is er geen universeel en gebruiksvriendelijk systeem voor het ophalen van deze assets. In het algemeen, worden deze opgehaald via de links zoals gebruikt door de website. Contacteer ons voor assitentie, of help ons met de website uit te breiden en de assets bereikbaarder te maken." + art_paragraph_1: "Voor toekenning, gelieve de naam en link naar codecombat.com te plaatsen waar dit passend is voor de vorm waarin het voorkomt. Bijvoorbeeld:" + use_list_1: "Wanneer gebruikt in een film of een ander spel, voeg codecombat.com toe in de credits." + use_list_2: "Wanneer toegepast op een website, inclusief een link naar het gebruik, bijvoorbeeld onderaan een afbeelding. Of in een algemene webpagina waar je eventueel ook andere Create Commons werken en open source software vernoemd die je gebruikt op de website. Iets dat alreeds duidelijk is gespecificeerd met CodeCombat, zoals een blog artikel, dat CodeCombat vernoemt, heeft geen aparte vermelding nodig." + art_paragraph_2: "Wanneer de gebruikte inhoud is gemaakt door een gebruiker van codecombat.com, vernoem hem/haar in plaats van ons en volg verspreidingsaanwijzingen van die brons als die er zijn." + rights_title: "Rechten Voorbehouden" + rights_desc: "Alle rechten zijn voorbehouden voor de Levels. Dit omvat:" + rights_scripts: "Scripts" + rights_unit: "Eenheid Configuratie" + rights_description: "Beschrijvingen" + rights_writings: "Literaire werken" + rights_media: "Media (geluid, muziek) en eender welke creatieve inhoud, specifiek gemaakt voor dat level en niet verkrijgbaar bij het maken van levels." + rights_clarification: "Om het duidelijk te maken, iets dat beschikbaar is in de Level editor voor het maken van levels, valt onder de CC licentie. Terwijl de inhoud gemaakt met de Level Editor of geüpload in de loop van de creatie van de levels, hier niet onder vallen." + nutshell_title: "In een notendop" + nutshell_description: "Alle middelen die wij aanbieden in de Level Editor zijn gratis te gebruiken om levels aan te maken. Wij behouden ons echter het recht voor om levels die gemaakt zijn op codecombat.com te beperken, en hier in de toekomst geld voor te vragen, moest dat ooit gebeuren." + canonical: "De Engelse versie van dit document is de definitieve en kanonieke versie. Bij verschillen tussen vertalingen heeft de Engelse versie voorrang." + + contribute: + page_title: "Bijdragen" + character_classes_title: "Karakterklassen" + introduction_desc_intro: "We hebben hoge verwachtingen over CodeCombat." + introduction_desc_pref: "We willen zijn waar programmeurs van alle niveaus komen om te leren en samen te spelen, anderen introduceren aan de wondere wereld van code, en de beste delen van de gemeenschap te reflecteren. We kunnen en willen dit niet alleen doen; wat projecten zoals GitHub, Stack Overflow en Linux groots en succesvol maken, zijn de mensen die deze software gebruiken en verbeteren. Daartoe, " + introduction_desc_github_url: "CodeCombat is volledig open source" + introduction_desc_suf: ", en we mikken ernaar om zoveel mogelijk manieren mogelijk maken voor u om deel te nemen en dit project van zowel jou als ons te maken." + introduction_desc_ending: "We hopen dat je met ons meedoet!" + introduction_desc_signature: "- Nick, George, Scott, Michael, en Jeremy" + alert_account_message_intro: "Hallo!" + alert_account_message_pref: "Om je te abonneren voor de klasse e-mails, moet je eerst " + alert_account_message_suf: "." + alert_account_message_create_url: "een account aanmaken" + archmage_summary: "Geïnteresserd in werken aan game graphics, user interface design, database- en serverorganisatie, multiplayer networking, physics, geluid of game engine prestaties? Wil jij helpen een game te bouwen wat anderen leert waar jij goed in bent? We moeten nog veel doen en als jij een ervaren programmeur bent en wil ontwikkelen voor CodeCombat, dan is dit de klasse voor jou. We zouden graag je hulp hebben bij het maken van de beste programmeergame ooit." + archmage_introduction: "Een van de beste aspecten aan het maken van spelletjes is dat zij zoveel verschillende zaken omvatten. Visualisaties, geluid, real-time netwerken, sociale netwerken, en natuurlijk veel van de voorkomende aspecten van programmeren, van low-level database beheer en server administratie tot gebruiksvriendelijke interfaces maken. Er is veel te doen, en als jij een ervaren programmeur bent met de motivatie om je handen veel te maken met CodeCombat, dan ben je de tovenaar die wij zoeken! We zouden graag jouw help hebben met het bouwen aan het allerbeste programmeerspel ooit." + class_attributes: "Klasse kenmerken" + archmage_attribute_1_pref: "Ervaring met " + archmage_attribute_1_suf: ", of de wil om het te leren. De meeste van onze code is in deze taal. Indien je een fan van Ruby of Python bent, zal je je meteen thuis voelen! Het is zoals JavaScript, maar met een mooiere syntax." + archmage_attribute_2: "Ervaring in programmeren en individueel initiatief. We kunnen jou helpen bij het opstarten, maar kunnen niet veel tijd spenderen om je op te leiden." + how_to_join: "Hoe deel te nemen" + join_desc_1: "Iedereen kan helpen! Bekijk onze " + join_desc_2: "om te starten, en vink het vierkantje hieronder aan om jouzelf te abonneren als dappere tovenaar en het laatste magische nieuws te ontvangen. Wil je met ons praten over wat er te doen is of hoe je nog meer met ons kan samenwerken? " + join_desc_3: ", of vind ons in " + join_desc_4: "en we bekijken het verder vandaar!" + join_url_email: "E-mail ons" + join_url_hipchat: "ons publiek (Engelstalig) HipChat kanaal" + more_about_archmage: "Leer meer over hoe je een Machtige Tovenaar kan worden" + archmage_subscribe_desc: "Ontvang e-mails met nieuwe codeer oppurtiniteiten en aankondigingen." + artisan_summary_pref: "Wil je levels ontwerpen en CodeCombat's arsenaal vergroten? Mensen spelen sneller door onze content dan wij bij kunnen houden! Op dit moment is onze level editor nog wat kaal, dus wees daarvan bewust. Levels maken zal een beetje uitdagend en buggy zijn. Als jij een visie van campagnes hebt van for-loops tot" + artisan_summary_suf: "dan is dit de klasse voor jou." + artisan_introduction_pref: "We moeten meer levels bouwen! Mensen schreeuwen om meer inhoud, en er zijn ook maar zoveel levels dat wij kunnen maken. Momenteel is jouw werkplaats level een; onze level editor is amper gebruikt door zelfs ons, wees dus voorzichtig. Indien je visioenen hebt van campagnes, gaande van for-loops tot" + artisan_introduction_suf: "dan is deze klasse waarschijnlijk iets voor jou." + artisan_attribute_1: "Enige ervaring in het maken van gelijkbare inhoud. Bijvoorbeeld ervaring het gebruiken van Blizzard's level editor. Maar dit is niet vereist!" + artisan_attribute_2: "Tot in detail testen en itereren staat voor jou gelijk aan plezier. Om goede levels te maken, moet jet het door anderen laten spelen en bereid zijn om een hele boel aan te passen." + artisan_attribute_3: "Momenteel heb je nog veel geduld nodig, doordat onze editor nog vrij ruw is en op je frustraties kan werken. Samenwerken met een Adventurer kan jou ook veel helpen." + artisan_join_desc: "Gebruik de Level Editor in deze volgorde, min of meer:" + artisan_join_step1: "Lees de documentatie." + artisan_join_step2: "Maak een nieuw level en bestudeer reeds bestaande levels." + artisan_join_step3: "Praat met ons in ons publieke (Engelstalige) HipChat kanaal voor hulp. (optioneel)" + artisan_join_step4: "Maak een bericht over jouw level op ons forum voor feedback." + more_about_artisan: "Leer meer over hoe je een Creatieve Ambachtsman kan worden." + artisan_subscribe_desc: "Ontvang e-mails met nieuws over de Level Editor." + adventurer_summary: "Laten we duidelijk zijn over je rol: jij bent de tank. Jij krijgt de zware klappen te verduren. We hebben mensen nodig om spiksplinternieuwe levels te proberen en te kijken hoe deze beter kunnen. De pijn zal groot zijn, het maken van een goede game is een lang proces en niemand doet het de eerste keer goed. Als jij dit kan verduren en een hoge constitution score hebt, dan is dit de klasse voor jou." + adventurer_introduction: "Laten we duidelijk zijn over je rol: jij bent de tank. Jij krijgt de zware klappen te verduren. We hebben mensen nodig om spiksplinternieuwe levels te proberen en te kijken hoe deze beter kunnen. De pijn zal groot zijn, het maken van een goede game is een lang proces en niemand doet het de eerste keer goed. Als jij dit kan verduren en een hoge constitution score hebt, dan is dit de klasse voor jou." + adventurer_attribute_1: "Een wil om te leren. Jij wilt leren hoe je programmeert en wij willen het jou leren. Je zal overigens zelf het meeste leren doen." + adventurer_attribute_2: "Charismatisch. Wees netjes maar duidelijk over wat er beter kan en geef suggesties over hoe het beter kan." + adventurer_join_pref: "Werk samen met een Ambachtsman of recruteer er een, of tik het veld hieronder aan om e-mails te ontvangen wanneer er nieuwe levels zijn om te testen. We zullen ook posten over levels die beoordeeld moeten worden op onze netwerken zoals" + adventurer_forum_url: "ons forum" + adventurer_join_suf: "dus als je liever op deze manier wordt geïnformeerd, schrijf je daar in!" + more_about_adventurer: "Leer meer over hoe je een dappere avonturier kunt worden." + adventurer_subscribe_desc: "Ontvang e-mails wanneer er nieuwe levels zijn die getest moeten worden." + scribe_summary_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis kennis zijn en een wiki met programmeerconcepten waar levels op in kunnen gaan. Op die manier zal een Ambachtslied een link kunnen geven naar een artikel wat past bij een level. Net zoiets als het " + scribe_summary_suf: " heeft gebouwd. Als jij het leuk vindt programmeerconcepten uit te leggen, dan is deze klasse iets voor jou." + scribe_introduction_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis kennis zijn en een wiki met programmeerconcepten waar levels op in kunnen gaan. Op die manier zal elk Ambachtslied niet in detail hoeven uit te leggen wat een vergelijkingsoperator is, maar een link kunnen geven naar een artikel wat deze informatie bevat voor de speler. Net zoiets als het " + scribe_introduction_url_mozilla: "Mozilla Developer Network" + scribe_introduction_suf: " heeft gebouwd. Als jij het leuk vindt om programmeerconcepten uit te leggen in Markdown-vorm, dan is deze klasse wellicht iets voor jou." + scribe_attribute_1: "Taal-skills zijn praktisch alles wat je nodig hebt. Niet alleen grammatica of spelling, maar ook moeilijke ideeën overbrengen aan anderen." + contact_us_url: "Contacteer ons" + scribe_join_description: "vertel ons wat over jezelf, je ervaring met programmeren en over wat voor soort dingen je graag zou schrijven. Verder zien we wel!" + more_about_scribe: "Leer meer over het worden van een ijverige Klerk." + scribe_subscribe_desc: "Ontvang e-mails met aankondigingen over het schrijven van artikelen." + diplomat_summary: "Er is grote interesse in CodeCombat in landen waar geen Engels wordt gesproken! We zijn op zoek naar vertalers wie tijd willen spenderen aan het vertalen van de site's corpus aan woorden zodat CodeCombat zo snel mogelijk toegankelijk wordt voor heel de wereld. Als jij wilt helpen met CodeCombat internationaal maken, dan is dit de klasse voor jou." + diplomat_introduction_pref: "Dus, als er iets is wat we geleerd hebben van de " + diplomat_launch_url: "release in oktober" + diplomat_introduction_suf: "dan is het wel dat er een significante interesse is in CodeCombat in andere landen, vooral Brazilië! We zijn een corps aan vertalers aan het creëren dat ijverig de ene set woorden in een andere omzet om CodeCombat zo toegankelijk te maken als mogelijk in heel de wereld. Als jij het leuk vindt glimpsen op te vangen van aankomende content en deze levels zo snel mogelijk naar je landgenoten te krijgen, dan is dit de klasse voor jou." + diplomat_attribute_1: "Vloeiend Engels en de taal waar naar je wilt vertalen kunnen spreken. Wanneer je moeilijke ideeën wilt overbrengen, is het belangrijk beide goed te kunnen!" + diplomat_join_pref_github: "Vind van jouw taal het locale bestand " + diplomat_github_url: "op GitHub" + diplomat_join_suf_github: ", edit het online, en submit een pull request. Daarnaast kun je hieronder aanvinken als je up-to-date wilt worden gehouden met nieuwe internationalisatie-ontwikkelingen." + more_about_diplomat: "Leer meer over het worden van een geweldige Diplomaat" + diplomat_subscribe_desc: "Ontvang e-mails over i18n ontwikkelingen en levels om te vertalen." + ambassador_summary: "We proberen een gemeenschap te bouwen en elke gemeenschap heeft een supportteam nodig wanneer er problemen zijn. We hebben chats, e-mails en sociale netwerken zodat onze gebruikers het spel kunnen leren kennen. Als jij mensen wilt helpen betrokken te raken, plezier te hebben en wat te leren programmeren, dan is dit wellicht de klasse voor jou." + ambassador_introduction: "We zijn een community aan het uitbouwen, en jij maakt er deel van uit. We hebben Olark chatkamers, emails, en soeciale netwerken met veel andere mensen waarmee je kan praten en hulp kan vragen over het spel en om bij te leren. Als jij mensen wil helpen en te werken nabij de hartslag van CodeCombat in het bijsturen van onze toekomstvisie, dan is dit de geknipte klasse voor jou!" + ambassador_attribute_1: "Communicatieskills. Problemen die spelers hebben kunnen identificeren en ze helpen deze op te lossen. Verder zul je ook de rest van ons geïnformeerd houden over wat de spelers zeggen, wat ze leuk vinden, wat ze minder vinden en waar er meer van moet zijn!" + ambassador_join_desc: "vertel ons wat over jezelf, wat je hebt gedaan en wat je graag zou doen. We zien verder wel!" + ambassador_join_note_strong: "Opmerking" + ambassador_join_note_desc: "Een van onze topprioriteiten is om een multiplayer te bouwen waar spelers die moeite hebben een level op te lossen een wizard met een hoger level kunnen oproepen om te helpen. Dit zal een goede manier zijn voor ambassadeurs om hun ding te doen. We houden je op de hoogte!" + more_about_ambassador: "Leer meer over het worden van een behulpzame Ambassadeur" + ambassador_subscribe_desc: "Ontvang e-mails met updates over ondersteuning en multiplayer-ontwikkelingen." + counselor_summary: "Geen van de rollen hierboven in jouw interessegebied? Maak je geen zorgen, we zijn op zoek naar iedereen die wil helpen met het ontwikkelen van CodeCombat! Als je geïnteresseerd bent in lesgeven, gameontwikkeling, open source management of iets anders waarvan je denkt dat het relevant voor ons is, dan is dit de klasse voor jou." + counselor_introduction_1: "Heb jij levenservaring? Een afwijkend perspectief op zaken die ons kunnen helpen CodeCombat te vormen? Van alle rollen neemt deze wellicht de minste tijd in, maar individueel maak je misschien het grootste verschil. We zijn op zoek naar wijze tovenaars, vooral in het gebied van lesgeven, gameontwikkeling, open source projectmanagement, technische recrutering, ondernemerschap of design." + counselor_introduction_2: "Of eigenlijk alles wat relevant is voor de ontwikkeling van CodeCombat. Als jij kennis hebt en deze wilt dezen om dit project te laten groeien, dan is dit misschien de klasse voor jou." + counselor_attribute_1: "Ervaring, in enig van de bovenstaande gebieden of iets anders waarvan je denkt dat het behulpzaam zal zijn." + counselor_attribute_2: "Een beetje vrije tijd!" + counselor_join_desc: "vertel ons wat over jezelf, wat je hebt gedaan en wat je graag wilt doen. We zullen je in onze contactlijst zetten en je benaderen wanneer we je advies kunnen gebruiken (niet te vaak)." + more_about_counselor: "Leer meer over het worden van een waardevolle Raadgever" + changes_auto_save: "Veranderingen worden automatisch opgeslagen wanneer je het vierkantje aan- of afvinkt." + diligent_scribes: "Onze ijverige Klerks:" + powerful_archmages: "Onze machtige Tovenaars:" + creative_artisans: "Onze creatieve Ambachtslieden:" + brave_adventurers: "Onze dappere Avonturiers:" + translating_diplomats: "Onze vertalende Diplomaten:" + helpful_ambassadors: "Onze helpvolle Ambassadeurs:" + + classes: + archmage_title: "Tovenaar" + archmage_title_description: "(Programmeur)" + artisan_title: "Ambachtsman" + artisan_title_description: "(Level Bouwer)" + adventurer_title: "Avonturier" + adventurer_title_description: "(Level Tester)" + scribe_title: "Klerk" + scribe_title_description: "(Redacteur)" + diplomat_title: "Diplomaat" + diplomat_title_description: "(Vertaler)" + ambassador_title: "Ambassadeur" + ambassador_title_description: "(Ondersteuning)" + counselor_title: "Raadgever" + counselor_title_description: "(Expert/Leraar)" + + ladder: + please_login: "Log alstublieft eerst in voordat u een ladderspel speelt." + my_matches: "Mijn Wedstrijden" + simulate: "Simuleer" + simulation_explanation: "Door spellen te simuleren kan je zelf sneller beoordeeld worden!" + simulate_games: "Simuleer spellen!" + simulate_all: "RESET EN SIMULEER SPELLEN" + leaderboard: "Leaderboard" + battle_as: "Vecht als " + summary_your: "Jouw " + summary_matches: "Wedstrijden - " + summary_wins: " Overwinningen, " + summary_losses: " Nederlagen" + rank_no_code: "Geen nieuwe code om te Beoordelen!" + rank_my_game: "Beoordeel mijn spel!" + rank_submitting: "Verzenden..." + rank_submitted: "Verzonden voor Beoordeling" + rank_failed: "Beoordeling mislukt" + rank_being_ranked: "Spel wordt Beoordeeld" + code_being_simulated: "Uw nieuwe code wordt gesimuleerd door andere spelers om te beoordelen. Dit wordt vernieuwd zodra nieuwe matches binnenkomen." + no_ranked_matches_pre: "Geen beoordeelde wedstrijden voor het" + no_ranked_matches_post: " team! Speel tegen enkele tegenstanders en kom terug hier om uw spel te laten beoordelen." + choose_opponent: "Kies een tegenstander" + tutorial_play: "Speel de Tutorial" + tutorial_recommended: "Aanbevolen als je nog niet eerder hebt gespeeld" + tutorial_skip: "Sla Tutorial over" + tutorial_not_sure: "Niet zeker wat er aan de gang is?" + tutorial_play_first: "Speel eerst de Tutorial." + simple_ai: "Simpele AI" + warmup: "Opwarming" + vs: "tegen" + + multiplayer_launch: + introducing_dungeon_arena: "Introductie van Dungeon Arena" + new_way: "17 maart, 2014: De nieuwe manier om te concurreren met code." + to_battle: "Naar het slagveld, ontwikkelaars!" + modern_day_sorcerer: "Kan jij programmeren? Hoe stoer is dat. Jij bent een modere voetballer! is het niet tijd dat je jouw magische krachten gebruikt voor het controlleren van jou minions in het slagveld? En nee, we praten heir niet over robots." + arenas_are_here: "CodeCombat head-to-head multiplayer arenas are here." + ladder_explanation: "Kies jouw helden, betover jouw mens of ogre legers, en beklim jouw weg naar de top in de ladder, door het verslagen van vriend en vijand. Daag nu je vrienden uit in multiplayer coding arenas en verkrijg faam en glorie. Indien je creatief bent, kan je zelfs" + fork_our_arenas: "onze arenas forken" + create_worlds: "en jouw eigen werelden creëren." + javascript_rusty: "Jouw JavaScript is een beetje roest? Wees niet bang, er is een" + tutorial: "tutorial" + new_to_programming: ". Ben je net begonnen met programmeren? Speel dan eerst onze beginners campagne." + so_ready: "Ik ben hier zo klaar voor" From e9b3db2eb9a815c5fdfa28552069adfa8bc0edcc Mon Sep 17 00:00:00 2001 From: Scott Erickson Date: Mon, 24 Mar 2014 14:27:10 -0700 Subject: [PATCH 28/41] Fixed destroy to not break stopListening, which uses off. --- app/lib/CocoClass.coffee | 6 ++++-- app/views/kinds/CocoView.coffee | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/lib/CocoClass.coffee b/app/lib/CocoClass.coffee index 67a8e4cac..5a62dcebd 100644 --- a/app/lib/CocoClass.coffee +++ b/app/lib/CocoClass.coffee @@ -1,7 +1,8 @@ # Template for classes with common functions, like hooking into the Mediator. utils = require './utils' classCount = 0 -makeScopeName = -> "class-scope-#{classCount++}" +makeScopeName = -> "class-scope-#{classCount++}" +doNothing = -> module.exports = class CocoClass subscriptions: {} @@ -25,7 +26,8 @@ module.exports = class CocoClass @stopListeningToShortcuts() @[key] = undefined for key of @ @destroyed = true - @destroy = -> + @off = doNothing + @destroy = doNothing # subscriptions diff --git a/app/views/kinds/CocoView.coffee b/app/views/kinds/CocoView.coffee index b95abd12e..0a688be72 100644 --- a/app/views/kinds/CocoView.coffee +++ b/app/views/kinds/CocoView.coffee @@ -7,6 +7,7 @@ visibleModal = null waitingModal = null classCount = 0 makeScopeName = -> "view-scope-#{classCount++}" +doNothing = -> module.exports = class CocoView extends Backbone.View startsLoading: false @@ -45,7 +46,8 @@ module.exports = class CocoView extends Backbone.View $('#modal-wrapper .modal').off 'hidden.bs.modal', @modalClosed @[key] = undefined for key, value of @ @destroyed = true - @destroy = -> + @off = doNothing + @destroy = doNothing afterInsert: -> From 53118984ffaf03031cbe0265674c085f65db5b31 Mon Sep 17 00:00:00 2001 From: Scott Erickson Date: Mon, 24 Mar 2014 14:29:53 -0700 Subject: [PATCH 29/41] Undid a listenTo on a jQuery elem. --- app/views/play/spectate_view.coffee | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/play/spectate_view.coffee b/app/views/play/spectate_view.coffee index 18821ca4f..b0a8a4379 100644 --- a/app/views/play/spectate_view.coffee +++ b/app/views/play/spectate_view.coffee @@ -68,7 +68,7 @@ module.exports = class SpectateLevelView extends View constructor: (options, @levelID) -> console.profile?() if PROFILE_ME super options - @listenTo($(window), 'resize', @onWindowResize) + $(window).on('resize', @onWindowResize) @listenToOnce(@supermodel, 'error', @onLevelLoadError) @sessionOne = @getQueryVariable 'session-one' @@ -470,6 +470,7 @@ module.exports = class SpectateLevelView extends View @levelLoader?.destroy() @surface?.destroy() @god?.destroy() + $(window).off('resize', @onWindowResize) @goalManager?.destroy() @scriptManager?.destroy() delete window.world # not sure where this is set, but this is one way to clean it up From 2c329a256fa0430793fd4b51e5dcd7bb9ce90b01 Mon Sep 17 00:00:00 2001 From: Scott Erickson Date: Mon, 24 Mar 2014 14:42:56 -0700 Subject: [PATCH 30/41] Removed all the setting properties to null in destroy methods that don't need them since destroy nullifies all properties. --- app/lib/LevelLoader.coffee | 7 +------ app/lib/surface/Camera.coffee | 1 - app/lib/surface/CocoSprite.coffee | 1 - app/lib/surface/Surface.coffee | 5 ----- app/views/kinds/CocoView.coffee | 1 - app/views/play/level/hud_view.coffee | 2 -- app/views/play/level/level_chat_view.coffee | 1 - app/views/play/level/playback_view.coffee | 4 ---- app/views/play/level/tome/cast_button_view.coffee | 6 ------ app/views/play/level/tome/spell_debug_view.coffee | 1 - app/views/play/level/tome/spell_list_entry_view.coffee | 1 - app/views/play/level/tome/spell_list_view.coffee | 1 - app/views/play/level/tome/spell_view.coffee | 6 ------ app/views/play/level/tome/thang_list_view.coffee | 1 - app/views/play/level/tome/tome_view.coffee | 1 - app/views/play/level_view.coffee | 5 ----- app/views/play/spectate_view.coffee | 5 ----- 17 files changed, 1 insertion(+), 48 deletions(-) diff --git a/app/lib/LevelLoader.coffee b/app/lib/LevelLoader.coffee index ce842fbd0..34ff1bafb 100644 --- a/app/lib/LevelLoader.coffee +++ b/app/lib/LevelLoader.coffee @@ -232,9 +232,4 @@ module.exports = class LevelLoader extends CocoClass Backbone.Mediator.publish 'level-loader:progress-changed', progress: @progress() @initWorld() if @allDone() @trigger 'progress' - @trigger 'loaded-all' if @progress() is 1 - - destroy: -> - @world = null # don't hold onto garbage - @update = null - super() + @trigger 'loaded-all' if @progress() is 1 \ No newline at end of file diff --git a/app/lib/surface/Camera.coffee b/app/lib/surface/Camera.coffee index 7240c3c88..766fe1f74 100644 --- a/app/lib/surface/Camera.coffee +++ b/app/lib/surface/Camera.coffee @@ -307,7 +307,6 @@ module.exports = class Camera extends CocoClass destroy: -> createjs.Tween.removeTweens @ - @finishTween = null super() onZoomTo: (pos, time) -> diff --git a/app/lib/surface/CocoSprite.coffee b/app/lib/surface/CocoSprite.coffee index d574734fc..1b7252f9e 100644 --- a/app/lib/surface/CocoSprite.coffee +++ b/app/lib/surface/CocoSprite.coffee @@ -87,7 +87,6 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass mark.destroy() for name, mark of @marks label.destroy() for name, label of @labels @imageObject?.off 'animationend', @playNextAction - @playNextAction = null @displayObject?.off() clearInterval @effectInterval if @effectInterval super() diff --git a/app/lib/surface/Surface.coffee b/app/lib/surface/Surface.coffee index 675e57b0f..94d80d269 100644 --- a/app/lib/surface/Surface.coffee +++ b/app/lib/surface/Surface.coffee @@ -100,12 +100,7 @@ module.exports = Surface = class Surface extends CocoClass @stage.removeAllEventListeners() @stage.enableDOMEvents false @stage.enableMouseOver 0 - @onFramesScrubbed = null - @onMouseMove = null - @onMouseDown = null - @tick = null @canvas.off 'mousewheel', @onMouseWheel - @onMouseWheel = null super() setWorld: (@world) -> diff --git a/app/views/kinds/CocoView.coffee b/app/views/kinds/CocoView.coffee index 0a688be72..0c13c5f8d 100644 --- a/app/views/kinds/CocoView.coffee +++ b/app/views/kinds/CocoView.coffee @@ -42,7 +42,6 @@ module.exports = class CocoView extends Backbone.View @stopListeningToShortcuts() @undelegateEvents() # removes both events and subs view.destroy() for id, view of @subviews - @modalClosed = null $('#modal-wrapper .modal').off 'hidden.bs.modal', @modalClosed @[key] = undefined for key, value of @ @destroyed = true diff --git a/app/views/play/level/hud_view.coffee b/app/views/play/level/hud_view.coffee index ed3403925..810092493 100644 --- a/app/views/play/level/hud_view.coffee +++ b/app/views/play/level/hud_view.coffee @@ -355,8 +355,6 @@ module.exports = class HUDView extends View destroy: -> @stage?.stopTalking() - @addMoreMessage = null - @animateEnterButton = null clearInterval(@messageInterval) if @messageInterval clearTimeout @hintNextSelectionTimeout if @hintNextSelectionTimeout super() diff --git a/app/views/play/level/level_chat_view.coffee b/app/views/play/level/level_chat_view.coffee index 2963c9b74..09936ae65 100644 --- a/app/views/play/level/level_chat_view.coffee +++ b/app/views/play/level/level_chat_view.coffee @@ -123,5 +123,4 @@ module.exports = class LevelChatView extends View destroy: -> key.deleteScope('level') clearInterval @clearOldMessagesInterval if @clearOldMessagesInterval - @clearOldMessages = null super() diff --git a/app/views/play/level/playback_view.coffee b/app/views/play/level/playback_view.coffee index 26a9058f5..0005520ae 100644 --- a/app/views/play/level/playback_view.coffee +++ b/app/views/play/level/playback_view.coffee @@ -221,7 +221,3 @@ module.exports = class PlaybackView extends View me.set('music', not me.get('music')) me.save() $(document.activeElement).blur() - - destroy: -> - @onWindowResize = null - super() diff --git a/app/views/play/level/tome/cast_button_view.coffee b/app/views/play/level/tome/cast_button_view.coffee index b3c9eb7e6..5b2f0e094 100644 --- a/app/views/play/level/tome/cast_button_view.coffee +++ b/app/views/play/level/tome/cast_button_view.coffee @@ -94,9 +94,3 @@ module.exports = class CastButtonView extends View spell.view.setAutocastDelay delay for spellKey, spell of @spells @castOptions.find('a').each -> $(@).toggleClass('selected', parseInt($(@).attr('data-delay')) is delay) - - destroy: -> - @castButton.off 'click', @onCastButtonClick - @castOptions.find('a').off 'click', @onCastOptionsClick - @onCastOptionsClick = null - super() diff --git a/app/views/play/level/tome/spell_debug_view.coffee b/app/views/play/level/tome/spell_debug_view.coffee index c35314932..32f7b0182 100644 --- a/app/views/play/level/tome/spell_debug_view.coffee +++ b/app/views/play/level/tome/spell_debug_view.coffee @@ -162,5 +162,4 @@ module.exports = class DebugView extends View destroy: -> @ace?.removeEventListener "mousemove", @onMouseMove - @onMouseMove = null super() diff --git a/app/views/play/level/tome/spell_list_entry_view.coffee b/app/views/play/level/tome/spell_list_entry_view.coffee index 48820d742..7f72cab5d 100644 --- a/app/views/play/level/tome/spell_list_entry_view.coffee +++ b/app/views/play/level/tome/spell_list_entry_view.coffee @@ -108,5 +108,4 @@ module.exports = class SpellListEntryView extends View destroy: -> @avatar?.destroy() - @hideThangs = null super() diff --git a/app/views/play/level/tome/spell_list_view.coffee b/app/views/play/level/tome/spell_list_view.coffee index 137219c96..d4ab72157 100644 --- a/app/views/play/level/tome/spell_list_view.coffee +++ b/app/views/play/level/tome/spell_list_view.coffee @@ -93,5 +93,4 @@ module.exports = class SpellListView extends View destroy: -> entry.destroy() for entry in @entries - @sortScoreForSpell = null super() \ No newline at end of file diff --git a/app/views/play/level/tome/spell_view.coffee b/app/views/play/level/tome/spell_view.coffee index 5e055ac3c..e55e03210 100644 --- a/app/views/play/level/tome/spell_view.coffee +++ b/app/views/play/level/tome/spell_view.coffee @@ -575,13 +575,7 @@ module.exports = class SpellView extends View @firepad?.dispose() @ace?.commands.removeCommand command for command in @aceCommands @ace?.destroy() - @ace = null @aceDoc?.off 'change', @onCodeChangeMetaHandler - @aceDoc = null @aceSession?.selection.off 'changeCursor', @onCursorActivity - @aceSession = null @debugView?.destroy() - @spell = null - for fat in ['notifySpellChanged', 'notifyEditingEnded', 'notifyEditingBegan', 'onFirepadLoaded', 'onLoaded', 'toggleBackground', 'setRecompileNeeded', 'onCursorActivity', 'highlightCurrentLine', 'updateAether', 'onCodeChangeMetaHandler', 'recompileIfNeeded', 'currentAutocastHandler'] - @[fat] = null super() diff --git a/app/views/play/level/tome/thang_list_view.coffee b/app/views/play/level/tome/thang_list_view.coffee index b1c061f20..a2271f146 100644 --- a/app/views/play/level/tome/thang_list_view.coffee +++ b/app/views/play/level/tome/thang_list_view.coffee @@ -83,6 +83,5 @@ module.exports = class ThangListView extends View destroy: -> entry.destroy() for entry in @entries - @sortScoreForThang = null super() diff --git a/app/views/play/level/tome/tome_view.coffee b/app/views/play/level/tome/tome_view.coffee index 68ca029bf..140336419 100644 --- a/app/views/play/level/tome/tome_view.coffee +++ b/app/views/play/level/tome/tome_view.coffee @@ -219,5 +219,4 @@ module.exports = class TomeView extends View destroy: -> spell.destroy() for spellKey, spell of @spells @worker?._close() - @worker = null super() diff --git a/app/views/play/level_view.coffee b/app/views/play/level_view.coffee index ff88a90c5..083d99cb0 100644 --- a/app/views/play/level_view.coffee +++ b/app/views/play/level_view.coffee @@ -472,9 +472,4 @@ module.exports = class PlayLevelView extends View @bus?.destroy() #@instance.save() unless @instance.loading console.profileEnd?() if PROFILE_ME - @onLevelLoadError = null - @onLevelLoaderLoaded = null - @onSupermodelLoadedOne = null - @preloadNextLevel = null - @saveScreenshot = null super() diff --git a/app/views/play/spectate_view.coffee b/app/views/play/spectate_view.coffee index b0a8a4379..da6f5e611 100644 --- a/app/views/play/spectate_view.coffee +++ b/app/views/play/spectate_view.coffee @@ -476,9 +476,4 @@ module.exports = class SpectateLevelView extends View delete window.world # not sure where this is set, but this is one way to clean it up clearInterval(@pointerInterval) console.profileEnd?() if PROFILE_ME - @onLevelLoadError = null - @onLevelLoaderLoaded = null - @onSupermodelLoadedOne = null - @preloadNextLevel = null - @saveScreenshot = null super() From 4bb1ee5c74406d0057b64be4505985789650c6e8 Mon Sep 17 00:00:00 2001 From: Darredevil Date: Tue, 25 Mar 2014 02:55:07 +0200 Subject: [PATCH 31/41] Update ro.coffee --- app/locale/ro.coffee | 70 ++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/app/locale/ro.coffee b/app/locale/ro.coffee index e5ad7fadd..745f3e619 100644 --- a/app/locale/ro.coffee +++ b/app/locale/ro.coffee @@ -66,12 +66,12 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman no_ie: "CodeCombat nu merge pe Internet Explorer 9 sau mai vechi. Scuze!" no_mobile: "CodeCombat nu a fost proiectat pentru dispozitive mobile si s-ar putea sa nu meargă!" play: "Joacă" -# old_browser: "Uh oh, your browser is too old to run CodeCombat. Sorry!" -# old_browser_suffix: "You can try anyway, but it probably won't work." -# campaign: "Campaign" -# for_beginners: "For Beginners" -# multiplayer: "Multiplayer" -# for_developers: "For Developers" + old_browser: "Mda , browser-ul tău este prea vechi pentru CodeCombat. Scuze!" + old_browser_suffix: "Poți să încerci oricum ,dar probabil nu o să meargă." + campaign: "Campanie" + for_beginners: "Pentru Începători" + multiplayer: "Multiplayer" + for_developers: "Pentru dezvoltatori" play: choose_your_level: "Alege nivelul" @@ -88,7 +88,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman campaign_player_created_description: "... în care ai ocazia să testezi creativitatea colegilor tai Artisan Wizards." level_difficulty: "Dificultate: " play_as: "Alege-ți echipa" -# spectate: "Spectate" + spectate: "Spectator" contact: contact_us: "Contact CodeCombat" @@ -214,31 +214,31 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman hud_continue: "Continuă (apasă shift-space)" spell_saved: "Vrajă salvată" skip_tutorial: "Sari peste (esc)" -# editor_config: "Editor Config" -# editor_config_title: "Editor Configuration" -# editor_config_keybindings_label: "Key Bindings" -# editor_config_keybindings_default: "Default (Ace)" -# editor_config_keybindings_description: "Adds additional shortcuts known from the common editors." -# editor_config_invisibles_label: "Show Invisibles" -# editor_config_invisibles_description: "Displays invisibles such as spaces or tabs." -# editor_config_indentguides_label: "Show Indent Guides" -# editor_config_indentguides_description: "Displays vertical lines to see indentation better." -# editor_config_behaviors_label: "Smart Behaviors" -# editor_config_behaviors_description: "Autocompletes brackets, braces, and quotes." -# loading_ready: "Ready!" -# tip_insert_positions: "Shift+Click a point on the map to insert it into the spell editor." -# tip_toggle_play: "Toggle play/paused with Ctrl+P." -# tip_scrub_shortcut: "Ctrl+[ and Ctrl+] rewind and fast-forward." -# tip_guide_exists: "Click the guide at the top of the page for useful info." -# tip_open_source: "CodeCombat is 100% open source!" -# tip_beta_launch: "CodeCombat launched its beta in October, 2013." -# tip_js_beginning: "JavaScript is just the beginning." -# tip_autocast_setting: "Adjust autocast settings by clicking the gear on the cast button." -# tip_baby_coders: "In the future, even babies will be Archmages." -# tip_morale_improves: "Loading will continue until morale improves." -# tip_all_species: "We believe in equal opportunities to learn programming for all species." -# tip_reticulating: "Reticulating spines." -# tip_harry: "Yer a Wizard, " + editor_config: "Editor Config" + editor_config_title: "Configurare Editor" + editor_config_keybindings_label: "Mapare taste" + editor_config_keybindings_default: "Default (Ace)" + editor_config_keybindings_description: "Adaugă comenzi rapide suplimentare cunoscute din editoarele obisnuite." # not sure, where is this on the site? + editor_config_invisibles_label: "Arată etichetele invizibile" + editor_config_invisibles_description: "Arată spațiile și taburile invizibile." + editor_config_indentguides_label: "Arată ghidul de indentare" + editor_config_indentguides_description: "Arată linii verticale pentru a vedea mai bine indentarea." + editor_config_behaviors_label: "Comportamente inteligente" # context? + editor_config_behaviors_description: "Completează automat parantezele, ghilimele etc." + loading_ready: "Gata!" + tip_insert_positions: "Shift+Click oriunde pe harta pentru a insera punctul în editorul de vrăji." + tip_toggle_play: "Pune sau scoate pauza cu Ctrl+P." + tip_scrub_shortcut: "Înapoi și derulare rapidă cu Ctrl+[ and Ctrl+]." + tip_guide_exists: "Apasă pe ghidul din partea de sus a pagini pentru informații utile." + tip_open_source: "CodeCombat este 100% open source!" + tip_beta_launch: "CodeCombat a fost lansat beta in Octombrie 2013." + tip_js_beginning: "JavaScript este doar începutul." + tip_autocast_setting: "Ajutează setările de autocast apăsând pe rotița de pe buton." + tip_baby_coders: "În vitor până și bebelușii vor fi Archmage." + tip_morale_improves: "Se va încărca până până când va crește moralul." + tip_all_species: "Noi credem în șanse egale de a învăța programare pentru toate speciile." +# tip_reticulating: "Reticulating spines." ??????????context ??? + tip_harry: "Ha un Wizard, " admin: av_title: "Admin vede" @@ -249,7 +249,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman av_other_debug_base_url: "Base (pentru debugging base.jade)" u_title: "Listă utilizatori" lg_title: "Ultimele jocuri" -# clas: "CLAs" + clas: "CLAs" editor: main_title: "Editori CodeCombat" @@ -530,8 +530,8 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman simulation_explanation: "Simulând jocuri poți afla poziția în clasament a jocului tău mai repede!" simulate_games: "Simulează Jocuri!" simulate_all: "RESETEAZĂ ȘI SIMULEAZĂ JOCURI" -# games_simulated_by: "Games simulated by you:" -# games_simulated_for: "Games simulated for you:" + games_simulated_by: "Jocuri simulate de tine:" + games_simulated_for: "Jocuri simulate pentru tine:" leaderboard: "Clasament" battle_as: "Luptă ca " summary_your: "Al tău " From 748081b4a7f82e4026ebf29cff04205e16380e2c Mon Sep 17 00:00:00 2001 From: JasperDhaene Date: Mon, 24 Mar 2014 08:50:24 +0100 Subject: [PATCH 32/41] Added myself to the diplomate list, fixed typos and made corrections to Dutch locale --- app/locale/nl.coffee | 18 +++++++++--------- app/templates/contribute/diplomat.jade | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/locale/nl.coffee b/app/locale/nl.coffee index 11834e423..34b7ff3bf 100644 --- a/app/locale/nl.coffee +++ b/app/locale/nl.coffee @@ -228,16 +228,16 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t loading_ready: "Klaar!" tip_insert_positions: "Shift+Klik een punt op de kaart om het toe te voegen aan je spreuk editor." tip_toggle_play: "Verwissel speel/pauze met Ctrl+P." - tip_scrub_shortcut: "Ctrl+[ and Ctrl+] om terug te spoelen en vooruit te spoelen." + tip_scrub_shortcut: "Ctrl+[ en Ctrl+] om terug te spoelen en vooruit te spoelen." tip_guide_exists: "Klik op de handleiding bovenaan het scherm voor nuttige informatie." tip_open_source: "CodeCombat is 100% open source!" tip_beta_launch: "CodeCombat lanceerde zijn beta versie in Oktober, 2013." tip_js_beginning: "JavaScript is nog maar het begin." tip_autocast_setting: "Verander de autocast instelling door te klikken op het tandwiel naast de cast knop." - tip_baby_coders: "Zelfs babies zullen in de toekomst een Tovenaar zijn." + tip_baby_coders: "Zelfs babies zullen in de toekomst een Tovenaar zijn." tip_morale_improves: "Het spel zal blijven laden tot de moreel verbeterd." - tip_all_species: "Wij geloven in gelijke kansen voor alle wezens om te leren programmeren." -# tip_reticulating: "Reticulating spines." + tip_all_species: "Wij geloven in gelijke kansen voor alle wezens om te leren programmeren." +# tip_reticulating: "Reticulating spines." tip_harry: "Je bent een tovenaar, " admin: @@ -393,7 +393,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t art_description_suffix: "Gemeenschappelijke inhoud is alles dat algemeen verkrijgbaar is bij CodeCombat met als doel levels te maken. Dit omvat:" art_music: "Muziek" art_sound: "Geluid" - art_artwork: "Kunst" + art_artwork: "Illustraties" art_sprites: "Sprites" art_other: "Eender wat en al het creatief werk dat niet als code aanzien wordt en verkrijgbaar is bij het aanmaken van levels." art_access: "Momenteel is er geen universeel en gebruiksvriendelijk systeem voor het ophalen van deze assets. In het algemeen, worden deze opgehaald via de links zoals gebruikt door de website. Contacteer ons voor assistentie, of help ons met de website uit te breiden en de assets bereikbaarder te maken." @@ -459,14 +459,14 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t adventurer_introduction: "Laten we duidelijk zijn over je rol: jij bent de tank. Jij krijgt de zware klappen te verduren. We hebben mensen nodig om spiksplinternieuwe levels uit te proberen en te kijken hoe deze beter kunnen. Je zult veel afzien.Het maken van een goede game is een lang proces en niemand doet het de eerste keer goed. Als jij dit kan verduren en een hoog uihoudingsvermogen hebt, dan is dit de klasse voor jou." adventurer_attribute_1: "Een wil om te leren. Jij wilt leren hoe je programmeert en wij willen het jou leren. Je zal overigens zelf het meeste leren doen." adventurer_attribute_2: "Charismatisch. Wees netjes maar duidelijk over wat er beter kan en geef suggesties over hoe het beter kan." - adventurer_join_pref: "Werk samen met een Ambachtsman of recruteer er een, of tik het veld hieronder aan om e-mails te ontvangen wanneer er nieuwe levels zijn om te testen. We zullen ook berichten over levels die beoordeeld moeten worden op onze netwerken zoals" + adventurer_join_pref: "Werk samen met een Ambachtsman of recruteer er een, of tik het veld hieronder aan om e-mails te ontvangen wanneer er nieuwe levels zijn om te testen. We zullen ook berichten over levels die beoordeeld moeten worden op onze netwerken zoals" adventurer_forum_url: "ons forum" adventurer_join_suf: "dus als je liever op deze manier wordt geïnformeerd, schrijf je daar in!" more_about_adventurer: "Leer meer over hoe je een Dappere Avonturier kunt worden." adventurer_subscribe_desc: "Ontvang e-mails wanneer er nieuwe levels zijn die getest moeten worden." - scribe_summary_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis zijn die spelers kunnen nakijken. Op die manier zal een Ambachtsman een link kunnen geven naar een artikel dat past bij een level. Net zoiets als het " + scribe_summary_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis zijn die spelers kunnen nakijken. Op die manier zal een Ambachtsman een link kunnen geven naar een artikel dat past bij een level. Net zoiets als het " scribe_summary_suf: " heeft gebouwd. Als jij het leuk vindt programmeerconcepten uit te leggen, dan is deze klasse iets voor jou." - scribe_introduction_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis zijn en een wiki met programmeerconcepten waar levels op in kunnen gaan. Op die manier zal niet elke Ambachtsman in detail hoeven uit te leggen wat een vergelijkingsoperator is, maar een link kunnen geven naar een artikel die deze informatie al verduidelijkt voor speler. Net zoiets als het " + scribe_introduction_pref: "CodeCombat is meer dan slechts een aantal levels, het zal ook een bron van kennis zijn en een wiki met programmeerconcepten waar levels op in kunnen gaan. Op die manier zal niet elke Ambachtsman in detail hoeven uit te leggen wat een vergelijkingsoperator is, maar een link kunnen geven naar een artikel die deze informatie al verduidelijkt voor speler. Net zoiets als het " scribe_introduction_url_mozilla: "Mozilla Developer Network" scribe_introduction_suf: " heeft gebouwd. Als jij het leuk vindt om programmeerconcepten uit te leggen in Markdown-vorm, dan is deze klasse wellicht iets voor jou." scribe_attribute_1: "Taalvaardigheid is praktisch alles wat je nodig hebt. Je moet niet enkel bedreven zijn in grammatica en spelling, maar ook moeilijke ideeën kunnen overbrengen aan anderen." @@ -530,7 +530,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t simulation_explanation: "Door spellen te simuleren kan je zelf sneller beoordeeld worden!" simulate_games: "Simuleer spellen!" simulate_all: "RESET EN SIMULEER SPELLEN" - games_simulated_by: "Door jou gesimuleerde spellen:" + games_simulated_by: "Door jou gesimuleerde spellen:" games_simulated_for: "Voor jou gesimuleerde spellen:" leaderboard: "Leaderboard" battle_as: "Vecht als " diff --git a/app/templates/contribute/diplomat.jade b/app/templates/contribute/diplomat.jade index 02fb26d12..0df1a9de8 100644 --- a/app/templates/contribute/diplomat.jade +++ b/app/templates/contribute/diplomat.jade @@ -73,7 +73,7 @@ block content li German - Dirk, faabsen, HiroP0, Anon, bkimminich li Thai - Kamolchanok Jittrepit li Vietnamese - An Nguyen Hoang Thien - li Dutch - Glen De Cauwsemaecker, Guido Zuidhof, Ruben Vereecken + li Dutch - Glen De Cauwsemaecker, Guido Zuidhof, Ruben Vereecken, Jasper D'haene li Greek - Stergios li Latin American Spanish - Jesús Ruppel, Matthew Burt, Mariano Luzza li Spain Spanish - Matthew Burt, DanielRodriguezRivero, Anon From c48863fae6a27eaa40ea0b79454444bf9bfe5a81 Mon Sep 17 00:00:00 2001 From: kgy01 Date: Tue, 25 Mar 2014 08:06:37 -0400 Subject: [PATCH 33/41] Hide arrow's shadow if buried --- app/lib/surface/CocoSprite.coffee | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/lib/surface/CocoSprite.coffee b/app/lib/surface/CocoSprite.coffee index d223ac571..b261718d0 100644 --- a/app/lib/surface/CocoSprite.coffee +++ b/app/lib/surface/CocoSprite.coffee @@ -458,6 +458,8 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass else @marks[range['name']].toggle false for range in @ranges + if @thangType.get('name') is 'Arrow' and @thang.action is 'die' + @marks.shadow.hide() mark.update() for name, mark of @marks #@thang.effectNames = ['berserk', 'confuse', 'control', 'curse', 'fear', 'poison', 'paralyze', 'regen', 'sleep', 'slow', 'haste'] @updateEffectMarks() if @thang?.effectNames?.length or @previousEffectNames?.length From a420064bc16f6f200e6cbec343b9698e057eaa2b Mon Sep 17 00:00:00 2001 From: kgy01 Date: Tue, 25 Mar 2014 08:31:38 -0400 Subject: [PATCH 34/41] hide spear's shadow if buried --- app/lib/surface/CocoSprite.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/surface/CocoSprite.coffee b/app/lib/surface/CocoSprite.coffee index bc8b54831..dd8e57604 100644 --- a/app/lib/surface/CocoSprite.coffee +++ b/app/lib/surface/CocoSprite.coffee @@ -486,7 +486,7 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass else @marks[range['name']].toggle false for range in @ranges - if @thangType.get('name') is 'Arrow' and @thang.action is 'die' + if (@thangType.get('name') is 'Arrow' or @thangType.get('name') is 'Spear') and @thang.action is 'die' @marks.shadow.hide() mark.update() for name, mark of @marks #@thang.effectNames = ['berserk', 'confuse', 'control', 'curse', 'fear', 'poison', 'paralyze', 'regen', 'sleep', 'slow', 'haste'] From 29aad01697be64661e42cafb52f1009059472e82 Mon Sep 17 00:00:00 2001 From: kgy01 Date: Tue, 25 Mar 2014 08:48:26 -0400 Subject: [PATCH 35/41] hide Arrow and Spear if buried use ['Arrow', 'Spear'] for condition --- app/lib/surface/CocoSprite.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/surface/CocoSprite.coffee b/app/lib/surface/CocoSprite.coffee index dd8e57604..8250f4d40 100644 --- a/app/lib/surface/CocoSprite.coffee +++ b/app/lib/surface/CocoSprite.coffee @@ -486,7 +486,7 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass else @marks[range['name']].toggle false for range in @ranges - if (@thangType.get('name') is 'Arrow' or @thangType.get('name') is 'Spear') and @thang.action is 'die' + if @thangType.get('name') in ['Arrow', 'Spear'] and @thang.action is 'die' @marks.shadow.hide() mark.update() for name, mark of @marks #@thang.effectNames = ['berserk', 'confuse', 'control', 'curse', 'fear', 'poison', 'paralyze', 'regen', 'sleep', 'slow', 'haste'] From ed2e17aedc0a94f13cc575575ffb7fc2e00e8f5d Mon Sep 17 00:00:00 2001 From: 1c7 <1003211008@qq.com> Date: Tue, 25 Mar 2014 23:15:17 +0800 Subject: [PATCH 36/41] Translate some word from English -> Chinese. (zh-HANS.coffee) --- app/locale/zh-HANS.coffee | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/locale/zh-HANS.coffee b/app/locale/zh-HANS.coffee index cdbe10a04..87545829f 100644 --- a/app/locale/zh-HANS.coffee +++ b/app/locale/zh-HANS.coffee @@ -66,12 +66,12 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese no_ie: "抱歉!Internet Explorer 9 等旧式预览器无法使用本网站。" no_mobile: "CodeCombat 不是针对手机设备设计的,所以可能无法达到最好的体验!" play: "开始游戏" -# old_browser: "Uh oh, your browser is too old to run CodeCombat. Sorry!" -# old_browser_suffix: "You can try anyway, but it probably won't work." -# campaign: "Campaign" -# for_beginners: "For Beginners" -# multiplayer: "Multiplayer" -# for_developers: "For Developers" + old_browser: "噢, 你的浏览器太老了, 不能运行CodeCombat. 抱歉!" + old_browser_suffix: "尽管你可以多试几次, 但也许不会管用." + campaign: "战役模式" + for_beginners: "适合初学者" + multiplayer: "多人游戏" + for_developers: "适合开发者" play: choose_your_level: "选取难度" From 5825b2676b3f0d2eb468dda67377e5462f6a7b45 Mon Sep 17 00:00:00 2001 From: Glen De Cauwsemaecker Date: Wed, 26 Mar 2014 04:46:49 +0100 Subject: [PATCH 37/41] Added myself to the signature. --- app/locale/ar.coffee | 2 +- app/locale/bg.coffee | 2 +- app/locale/ca.coffee | 2 +- app/locale/cs.coffee | 2 +- app/locale/da.coffee | 2 +- app/locale/de.coffee | 2 +- app/locale/el.coffee | 2 +- app/locale/en-AU.coffee | 2 +- app/locale/en-GB.coffee | 2 +- app/locale/en-US.coffee | 2 +- app/locale/en.coffee | 2 +- app/locale/es-419.coffee | 2 +- app/locale/es-ES.coffee | 2 +- app/locale/es.coffee | 2 +- app/locale/fa.coffee | 2 +- app/locale/fi.coffee | 2 +- app/locale/fr.coffee | 2 +- app/locale/he.coffee | 2 +- app/locale/hi.coffee | 2 +- app/locale/hu.coffee | 2 +- app/locale/id.coffee | 2 +- app/locale/it.coffee | 2 +- app/locale/ja.coffee | 2 +- app/locale/ko.coffee | 2 +- app/locale/lt.coffee | 2 +- app/locale/ms.coffee | 2 +- app/locale/nb.coffee | 2 +- app/locale/nl-BE.coffee | 2 +- app/locale/nl-NL.coffee | 2 +- app/locale/nl.coffee | 2 +- app/locale/nn.coffee | 2 +- app/locale/no.coffee | 2 +- app/locale/pl.coffee | 2 +- app/locale/pt-BR.coffee | 2 +- app/locale/pt-PT.coffee | 2 +- app/locale/pt.coffee | 2 +- app/locale/ro.coffee | 2 +- app/locale/ru.coffee | 2 +- app/locale/sk.coffee | 2 +- app/locale/sl.coffee | 2 +- app/locale/sr.coffee | 2 +- app/locale/sv.coffee | 2 +- app/locale/th.coffee | 2 +- app/locale/tr.coffee | 2 +- app/locale/uk.coffee | 2 +- app/locale/ur.coffee | 2 +- app/locale/vi.coffee | 2 +- app/locale/zh-HANS.coffee | 2 +- app/locale/zh-HANT.coffee | 2 +- app/locale/zh.coffee | 2 +- app/templates/contribute/contribute.jade | 2 +- 51 files changed, 51 insertions(+), 51 deletions(-) diff --git a/app/locale/ar.coffee b/app/locale/ar.coffee index 0e02c672a..57b218210 100644 --- a/app/locale/ar.coffee +++ b/app/locale/ar.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/bg.coffee b/app/locale/bg.coffee index 28dcc9ba5..86e75f7d1 100644 --- a/app/locale/bg.coffee +++ b/app/locale/bg.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "български език", englishDescri # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/ca.coffee b/app/locale/ca.coffee index 3a251f1e4..fa6930efe 100644 --- a/app/locale/ca.coffee +++ b/app/locale/ca.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/cs.coffee b/app/locale/cs.coffee index afece81eb..148407ab4 100644 --- a/app/locale/cs.coffee +++ b/app/locale/cs.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr introduction_desc_github_url: "CodeCombat je kompletně open source" introduction_desc_suf: "a snažíme se jak jen to jde, abychom vám umožnili se do tohoto projektu zapojit." introduction_desc_ending: "Doufáme, že se k nám přidáte!" - introduction_desc_signature: "- Nick, George, Scott, Michael a Jeremy" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy a Glen" alert_account_message_intro: "Vítejte!" alert_account_message_pref: "K přihlášení odebírání emailů si nejprve musíte " alert_account_message_suf: "vytvořit účet" diff --git a/app/locale/da.coffee b/app/locale/da.coffee index 2e1ef5ee6..2451185ac 100644 --- a/app/locale/da.coffee +++ b/app/locale/da.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." introduction_desc_ending: "Vi håber du vil deltage i vores fest!" - introduction_desc_signature: "- Nick, George, Scott, Michael, ogJeremy" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy, ogGlen" alert_account_message_intro: "Hej med dig!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/de.coffee b/app/locale/de.coffee index eed6ea34a..6918515a1 100644 --- a/app/locale/de.coffee +++ b/app/locale/de.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/el.coffee b/app/locale/el.coffee index f904eee40..5b81c3252 100644 --- a/app/locale/el.coffee +++ b/app/locale/el.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/en-AU.coffee b/app/locale/en-AU.coffee index c95dafa63..b4fed64ae 100644 --- a/app/locale/en-AU.coffee +++ b/app/locale/en-AU.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/en-GB.coffee b/app/locale/en-GB.coffee index d7a2b5005..bf3e0b2bd 100644 --- a/app/locale/en-GB.coffee +++ b/app/locale/en-GB.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/en-US.coffee b/app/locale/en-US.coffee index 50500b74a..05c803d8e 100644 --- a/app/locale/en-US.coffee +++ b/app/locale/en-US.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/en.coffee b/app/locale/en.coffee index 2de78fd88..236e3fe7e 100644 --- a/app/locale/en.coffee +++ b/app/locale/en.coffee @@ -422,7 +422,7 @@ module.exports = nativeDescription: "English", englishDescription: "English", tr introduction_desc_github_url: "CodeCombat is totally open source" introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." introduction_desc_ending: "We hope you'll join our party!" - introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" alert_account_message_intro: "Hey there!" alert_account_message_pref: "To subscribe for class emails, you'll need to " alert_account_message_suf: "first." diff --git a/app/locale/es-419.coffee b/app/locale/es-419.coffee index 366324207..91d815341 100644 --- a/app/locale/es-419.coffee +++ b/app/locale/es-419.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/es-ES.coffee b/app/locale/es-ES.coffee index cfb50ee76..8bd1f88b5 100644 --- a/app/locale/es-ES.coffee +++ b/app/locale/es-ES.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis introduction_desc_github_url: "CodeCombat es totalmente de código abierto" introduction_desc_suf: ", y nuestro objetivo es ofrecer tantas maneras como sea posible para que tomes parte y hagas de este proyecto algo tan tuyo como nuestro." introduction_desc_ending: "¡Esperamos que te unas a nuestro equipo!" - introduction_desc_signature: "- Nick, George, Scott, Michael y Jeremy" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy y Glen" alert_account_message_intro: "¡Hola!" alert_account_message_pref: "Para suscribirte a los correos electrónicos de las distintas Clases, necesitarás " alert_account_message_suf: "primero." diff --git a/app/locale/es.coffee b/app/locale/es.coffee index ad8e19a09..d90c0f463 100644 --- a/app/locale/es.coffee +++ b/app/locale/es.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/fa.coffee b/app/locale/fa.coffee index e5ee01d10..d4e3bb62f 100644 --- a/app/locale/fa.coffee +++ b/app/locale/fa.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/fi.coffee b/app/locale/fi.coffee index 15c82cfdf..828fb2621 100644 --- a/app/locale/fi.coffee +++ b/app/locale/fi.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/fr.coffee b/app/locale/fr.coffee index 0b578588e..6415acd2e 100644 --- a/app/locale/fr.coffee +++ b/app/locale/fr.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t introduction_desc_github_url: "CodeCombat est totalement open source" introduction_desc_suf: ", et nous avons pour objectif de fournir autant de manières possibles pour que vous participiez et fassiez de ce projet autant le votre que le notre." introduction_desc_ending: "Nous espérons que vous allez joindre notre aventure!" - introduction_desc_signature: "- Nick, George, Scott, Michael et Jeremy" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy et Glen" alert_account_message_intro: "Et tiens!" alert_account_message_pref: "Pour s'inscrire à la newsletter, vous devez d'abord " alert_account_message_suf: "." diff --git a/app/locale/he.coffee b/app/locale/he.coffee index d16007378..378a641eb 100644 --- a/app/locale/he.coffee +++ b/app/locale/he.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/hi.coffee b/app/locale/hi.coffee index c36dcbacc..09fe082f9 100644 --- a/app/locale/hi.coffee +++ b/app/locale/hi.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/hu.coffee b/app/locale/hu.coffee index 0842ea53b..a15e7a340 100644 --- a/app/locale/hu.coffee +++ b/app/locale/hu.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/id.coffee b/app/locale/id.coffee index 8c04df18f..6f818b095 100644 --- a/app/locale/id.coffee +++ b/app/locale/id.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/it.coffee b/app/locale/it.coffee index 6e608cb19..7ae76da5f 100644 --- a/app/locale/it.coffee +++ b/app/locale/it.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/ja.coffee b/app/locale/ja.coffee index e43327880..e158a4809 100644 --- a/app/locale/ja.coffee +++ b/app/locale/ja.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/ko.coffee b/app/locale/ko.coffee index 09e598365..a8dbb1a63 100644 --- a/app/locale/ko.coffee +++ b/app/locale/ko.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/lt.coffee b/app/locale/lt.coffee index ab7ef9ee8..d41a4a5f3 100644 --- a/app/locale/lt.coffee +++ b/app/locale/lt.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/ms.coffee b/app/locale/ms.coffee index 9b1210c31..abbf9f164 100644 --- a/app/locale/ms.coffee +++ b/app/locale/ms.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/nb.coffee b/app/locale/nb.coffee index f359c043b..959259e82 100644 --- a/app/locale/nb.coffee +++ b/app/locale/nb.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/nl-BE.coffee b/app/locale/nl-BE.coffee index dc7b6bff0..a31590f5c 100644 --- a/app/locale/nl-BE.coffee +++ b/app/locale/nl-BE.coffee @@ -406,7 +406,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: introduction_desc_github_url: "CodeCombat is volledig open source" introduction_desc_suf: ", en we mikken ernaar om zoveel mogelijk manieren mogelijk maken voor u om deel te nemen en dit project van zowel jou als ons te maken." introduction_desc_ending: "We hopen dat je met ons meedoet!" - introduction_desc_signature: "- Nick, George, Scott, Michael, en Jeremy" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy en Glen" alert_account_message_intro: "Hallo!" alert_account_message_pref: "Om je te abonneren voor de klasse e-mails, moet je eerst " alert_account_message_suf: "." diff --git a/app/locale/nl-NL.coffee b/app/locale/nl-NL.coffee index 6ccdcd567..7dccfb48e 100644 --- a/app/locale/nl-NL.coffee +++ b/app/locale/nl-NL.coffee @@ -406,7 +406,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription introduction_desc_github_url: "CodeCombat is volledig open source" introduction_desc_suf: ", en we mikken ernaar om zoveel mogelijk manieren mogelijk maken voor u om deel te nemen en dit project van zowel jou als ons te maken." introduction_desc_ending: "We hopen dat je met ons meedoet!" - introduction_desc_signature: "- Nick, George, Scott, Michael, en Jeremy" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy en Glen" alert_account_message_intro: "Hallo!" alert_account_message_pref: "Om je te abonneren voor de klasse e-mails, moet je eerst " alert_account_message_suf: "." diff --git a/app/locale/nl.coffee b/app/locale/nl.coffee index 34b7ff3bf..d15858c15 100644 --- a/app/locale/nl.coffee +++ b/app/locale/nl.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t introduction_desc_github_url: "CodeCombat is volledig open source" introduction_desc_suf: ", en we streven ernaar om op zoveel mogelijk manieren het mogelijk te maken voor u om deel te nemen en dit project van zowel jou als ons te maken." introduction_desc_ending: "We hopen dat je met ons meedoet!" - introduction_desc_signature: "- Nick, George, Scott, Michael, en Jeremy" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy en Glen" alert_account_message_intro: "Hallo!" alert_account_message_pref: "Om je te abonneren voor de klasse e-mails, moet je eerst " alert_account_message_suf: "." diff --git a/app/locale/nn.coffee b/app/locale/nn.coffee index fff426d8d..79e8ff1d5 100644 --- a/app/locale/nn.coffee +++ b/app/locale/nn.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/no.coffee b/app/locale/no.coffee index 721b4cf57..8b96da638 100644 --- a/app/locale/no.coffee +++ b/app/locale/no.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/pl.coffee b/app/locale/pl.coffee index 5b2498be7..978997d5b 100644 --- a/app/locale/pl.coffee +++ b/app/locale/pl.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish introduction_desc_github_url: "CodeCombat jest całkowicie open source" introduction_desc_suf: " i zamierzamy zapewnić tak wiele sposobów na współpracę w projekcie jak to tylko możliwe, by był on tak samo nasz, jak i wasz." introduction_desc_ending: "Liczymy, że dołączysz się do nas!" - introduction_desc_signature: "- Nick, George, Scott, Michael i Jeremy" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy i Glen" alert_account_message_intro: "Hej tam!" alert_account_message_pref: "Aby zapisać się do naszego e-maila klasowego, musisz najpierw " alert_account_message_suf: "." diff --git a/app/locale/pt-BR.coffee b/app/locale/pt-BR.coffee index 764aa3c48..55bb12c4d 100644 --- a/app/locale/pt-BR.coffee +++ b/app/locale/pt-BR.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: introduction_desc_github_url: "CodeCombat é totalmente código aberto" introduction_desc_suf: ", e nosso objetivo é oferecer quantas maneiras forem possíveis para você participar e fazer deste projeto tanto seu como nosso." introduction_desc_ending: "Nós esperamos que você se junte a nossa festa!" - introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" alert_account_message_intro: "Ei!" alert_account_message_pref: "Para se inscrever para os emails de classe, você vai precisar, " alert_account_message_suf: "primeiro." diff --git a/app/locale/pt-PT.coffee b/app/locale/pt-PT.coffee index 1a02a40b8..60c77e2ab 100644 --- a/app/locale/pt-PT.coffee +++ b/app/locale/pt-PT.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "Português europeu", englishDescription: "P # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/pt.coffee b/app/locale/pt.coffee index b6c8c23d5..671df5365 100644 --- a/app/locale/pt.coffee +++ b/app/locale/pt.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/ro.coffee b/app/locale/ro.coffee index 745f3e619..8d60ffad2 100644 --- a/app/locale/ro.coffee +++ b/app/locale/ro.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman introduction_desc_github_url: "CodeCombat este complet open source" introduction_desc_suf: ", și ne propunem să vă punem la dispoziție pe cât de mult posibil modalități de a lua parte la acest proiect pentru a-l face la fel de mult as vostru cât și al nostru." introduction_desc_ending: "Sperăm să vă placă petrecerea noastră!" - introduction_desc_signature: "- Nick, George, Scott, Michael, și Jeremy" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy și Glen" alert_account_message_intro: "Salutare!" alert_account_message_pref: "Pentru a te abona la email-uri de clasă, va trebui să " alert_account_message_suf: "mai întâi." diff --git a/app/locale/ru.coffee b/app/locale/ru.coffee index e9876b20d..c204c0ba0 100644 --- a/app/locale/ru.coffee +++ b/app/locale/ru.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi introduction_desc_github_url: "исходный код CodeCombat полностью открыт" introduction_desc_suf: ", и мы стремимся предоставить как можно больше способов, чтобы вы могли принять участие и сделать этот проект настолько же вашим, как и нашим." introduction_desc_ending: "Мы надеемся, что вы присоединитесь к нашей команде!" - introduction_desc_signature: "- Ник, Джордж, Скотт, Михаэль и Джереми" + introduction_desc_signature: "- Ник, Джордж, Скотт, Михаэль, Джереми и лощина" alert_account_message_intro: "Привет!" alert_account_message_pref: "Чтобы подписаться на email-ы для классов, вам необходимо сначала " alert_account_message_suf: "." diff --git a/app/locale/sk.coffee b/app/locale/sk.coffee index 13016ed7c..dadd6f2fb 100644 --- a/app/locale/sk.coffee +++ b/app/locale/sk.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/sl.coffee b/app/locale/sl.coffee index 8fd2cc986..7002befa3 100644 --- a/app/locale/sl.coffee +++ b/app/locale/sl.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/sr.coffee b/app/locale/sr.coffee index fcb9e48e1..f96be188f 100644 --- a/app/locale/sr.coffee +++ b/app/locale/sr.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/sv.coffee b/app/locale/sv.coffee index d29389404..14c37958c 100644 --- a/app/locale/sv.coffee +++ b/app/locale/sv.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr introduction_desc_github_url: "CodeCombat is totally open source" introduction_desc_suf: ", och vi siktar på att tillhandahålla så många sätt som möjligt för dig att delta och göra det här projektet till lika mycket ditt som vårt." introduction_desc_ending: "Vi hoppas att du vill vara med!" - introduction_desc_signature: "- Nick, George, Scott, Michael, och Jeremy" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy och Glen" alert_account_message_intro: "Hej där!" alert_account_message_pref: "För att prenumerera på klassmail måste du" alert_account_message_suf: "först." diff --git a/app/locale/th.coffee b/app/locale/th.coffee index da3708016..42f00b812 100644 --- a/app/locale/th.coffee +++ b/app/locale/th.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/tr.coffee b/app/locale/tr.coffee index bfe88acd2..1918eb050 100644 --- a/app/locale/tr.coffee +++ b/app/locale/tr.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/uk.coffee b/app/locale/uk.coffee index 4844ec7ef..079b99a80 100644 --- a/app/locale/uk.coffee +++ b/app/locale/uk.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "українська мова", englishDesc # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/ur.coffee b/app/locale/ur.coffee index 37a144ddc..b41348323 100644 --- a/app/locale/ur.coffee +++ b/app/locale/ur.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/vi.coffee b/app/locale/vi.coffee index c953f3c8b..c36cded02 100644 --- a/app/locale/vi.coffee +++ b/app/locale/vi.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, ,Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/zh-HANS.coffee b/app/locale/zh-HANS.coffee index d4333b52f..3b54c39f4 100644 --- a/app/locale/zh-HANS.coffee +++ b/app/locale/zh-HANS.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese introduction_desc_github_url: "我们把 CodeCombat 完全开源" introduction_desc_suf: ",而且我们希望提供尽可能多的方法让你来参加这个项目,与我们一起创造。" introduction_desc_ending: "我们希望你也会加入进来!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" alert_account_message_intro: "你好!" alert_account_message_pref: "要订阅贡献者邮件,你得先" alert_account_message_suf: "。" diff --git a/app/locale/zh-HANT.coffee b/app/locale/zh-HANT.coffee index 9e1476995..6a58e891e 100644 --- a/app/locale/zh-HANT.coffee +++ b/app/locale/zh-HANT.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/locale/zh.coffee b/app/locale/zh.coffee index e4f9aa3a1..891ed4e08 100644 --- a/app/locale/zh.coffee +++ b/app/locale/zh.coffee @@ -421,7 +421,7 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, and Jeremy" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" # alert_account_message_intro: "Hey there!" # alert_account_message_pref: "To subscribe for class emails, you'll need to " # alert_account_message_suf: "first." diff --git a/app/templates/contribute/contribute.jade b/app/templates/contribute/contribute.jade index 02db104d3..4d19f5c86 100644 --- a/app/templates/contribute/contribute.jade +++ b/app/templates/contribute/contribute.jade @@ -34,7 +34,7 @@ block content p(data-i18n="contribute.introduction_desc_ending") | We hope you'll join our party! p(data-i18n="contribute.introduction_desc_signature").signature - | - Nick, George, Scott, Michael, and Jeremy + | - Nick, George, Scott, Michael, Jeremy and Glen hr if me.attributes.anonymous From 71294f14b291bc84e3621d6922cd7e3ead145dc1 Mon Sep 17 00:00:00 2001 From: Jayant Jain Date: Wed, 26 Mar 2014 22:03:20 +0530 Subject: [PATCH 38/41] Updates fb and g+ functions to be called on api load, fixes #695 --- app/assets/index.html | 1 + app/views/play/ladder/ladder_tab.coffee | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/assets/index.html b/app/assets/index.html index 27aca27ff..2ebd22dcf 100644 --- a/app/assets/index.html +++ b/app/assets/index.html @@ -74,6 +74,7 @@