mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-30 02:55:43 -05:00
commit
18bb8d1e1f
36 changed files with 811 additions and 421 deletions
|
@ -160,12 +160,7 @@
|
||||||
*
|
*
|
||||||
* Replace the browser window's `onload`, ensure it's called, and then run all of the loaded specs. This includes initializing the `HtmlReporter` instance and then executing the loaded Jasmine environment. All of this will happen after all of the specs are loaded.
|
* Replace the browser window's `onload`, ensure it's called, and then run all of the loaded specs. This includes initializing the `HtmlReporter` instance and then executing the loaded Jasmine environment. All of this will happen after all of the specs are loaded.
|
||||||
*/
|
*/
|
||||||
var currentWindowOnload = window.onload;
|
window.runJasmine = function() {
|
||||||
|
|
||||||
window.onload = function() {
|
|
||||||
if (currentWindowOnload) {
|
|
||||||
currentWindowOnload();
|
|
||||||
}
|
|
||||||
htmlReporter.initialize();
|
htmlReporter.initialize();
|
||||||
env.execute();
|
env.execute();
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
// Helper for running tests through Karma.
|
// Helper for running tests through Karma.
|
||||||
// Hooks into the test view logic for running tests.
|
// Hooks into the test view logic for running tests.
|
||||||
|
|
||||||
TestView = require('views/test');
|
require('initialize');
|
||||||
|
TestView = require('views/TestView');
|
||||||
TestView.runTests();
|
TestView.runTests();
|
|
@ -43,135 +43,14 @@
|
||||||
|
|
||||||
<script>require('initialize');</script>
|
<script>require('initialize');</script>
|
||||||
|
|
||||||
<!-- begin LinkedIn code -->
|
|
||||||
<script>
|
|
||||||
window.linkedInAsyncInit = function() {
|
|
||||||
Backbone.Mediator.publish('linkedin-loaded');
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
<script type="text/javascript" src="http://platform.linkedin.com/in.js">
|
|
||||||
api_key: 75v8mv4ictvmx6
|
|
||||||
onLoad: linkedInAsyncInit
|
|
||||||
authorize: true
|
|
||||||
</script>
|
|
||||||
<!-- end LinkedIn code -->
|
|
||||||
<!-- begin segment.io code -->
|
|
||||||
<script type="text/javascript">
|
|
||||||
var analytics=analytics||[];(function(){var e=["identify","track","trackLink","trackForm","trackClick","trackSubmit","page","pageview","ab","alias","ready","group"],t=function(e){return function(){analytics.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var n=0;n<e.length;n++)analytics[e[n]]=t(e[n])})(),analytics.load=function(e){var t=document.createElement("script");t.type="text/javascript",t.async=!0,t.src=("https:"===document.location.protocol?"https://":"http://")+"d2dq2ahtl5zl1z.cloudfront.net/analytics.js/v1/"+e+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n)};
|
|
||||||
analytics.load("jsjzx9n4d2");
|
|
||||||
</script>
|
|
||||||
<!-- end segment.io code -->
|
|
||||||
|
|
||||||
<!-- begin olark code -->
|
|
||||||
<script data-cfasync="false" type='text/javascript'>/*<![CDATA[*/window.olark||(function(c){var f=window,d=document,l=f.location.protocol=="https:"?"https:":"http:",z=c.name,r="load";var nt=function(){
|
|
||||||
f[z]=function(){
|
|
||||||
(a.s=a.s||[]).push(arguments)};var a=f[z]._={
|
|
||||||
},q=c.methods.length;while(q--){(function(n){f[z][n]=function(){
|
|
||||||
f[z]("call",n,arguments)}})(c.methods[q])}a.l=c.loader;a.i=nt;a.p={
|
|
||||||
0:+new Date};a.P=function(u){
|
|
||||||
a.p[u]=new Date-a.p[0]};function s(){
|
|
||||||
a.P(r);f[z](r)}f.addEventListener?f.addEventListener(r,s,false):f.attachEvent("on"+r,s);var ld=function(){function p(hd){
|
|
||||||
hd="head";return["<",hd,"></",hd,"><",i,' onl' + 'oad="var d=',g,";d.getElementsByTagName('head')[0].",j,"(d.",h,"('script')).",k,"='",l,"//",a.l,"'",'"',"></",i,">"].join("")}var i="body",m=d[i];if(!m){
|
|
||||||
return setTimeout(ld,100)}a.P(1);var j="appendChild",h="createElement",k="src",n=d[h]("div"),v=n[j](d[h](z)),b=d[h]("iframe"),g="document",e="domain",o;n.style.display="none";m.insertBefore(n,m.firstChild).id=z;b.frameBorder="0";b.id=z+"-loader";if(/MSIE[ ]+6/.test(navigator.userAgent)){
|
|
||||||
b.src="javascript:false"}b.allowTransparency="true";v[j](b);try{
|
|
||||||
b.contentWindow[g].open()}catch(w){
|
|
||||||
c[e]=d[e];o="javascript:var d="+g+".open();d.domain='"+d.domain+"';";b[k]=o+"void(0);"}try{
|
|
||||||
var t=b.contentWindow[g];t.write(p());t.close()}catch(x){
|
|
||||||
b[k]=o+'d.write("'+p().replace(/"/g,String.fromCharCode(92)+'"')+'");d.close();'}a.P(2)};ld()};nt()})({
|
|
||||||
loader: "static.olark.com/jsclient/loader0.js",name:"olark",methods:["configure","extend","declare","identify"]});
|
|
||||||
/* custom configuration goes here (www.olark.com/documentation) */
|
|
||||||
olark.identify('1451-787-10-5544');/*]]>*/</script>
|
|
||||||
<!-- end olark code -->
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body class="nano clearfix">
|
<body class="nano clearfix">
|
||||||
<div id="fb-root"></div>
|
<div id="fb-root"></div>
|
||||||
|
|
||||||
<!-- begin facebook code -->
|
|
||||||
<script>
|
|
||||||
// Additional JS functions here
|
|
||||||
window.fbAsyncInit = function() {
|
|
||||||
Backbone.Mediator.publish('fbapi-loaded');
|
|
||||||
FB.init({
|
|
||||||
appId : document.location.origin === 'http://localhost:3000' ? '607435142676437' : '148832601965463', // App ID
|
|
||||||
channelUrl : document.location.origin +'/channel.html', // Channel File
|
|
||||||
status : true, // check login status
|
|
||||||
cookie : true, // enable cookies to allow the server to access the session
|
|
||||||
xfbml : true // parse XFBML
|
|
||||||
});
|
|
||||||
|
|
||||||
// This is fired for any auth related change, such as login, logout or session refresh.
|
|
||||||
FB.Event.subscribe('auth.authResponseChange', function(response) {
|
|
||||||
// Here we specify what we do with the response anytime this event occurs.
|
|
||||||
if (response.status === 'connected') {
|
|
||||||
// They have logged in to the app.
|
|
||||||
Backbone.Mediator.publish('facebook-logged-in', {response:response});
|
|
||||||
} else if (response.status === 'not_authorized') {
|
|
||||||
// The person is logged into Facebook, but not into the app.
|
|
||||||
} else {
|
|
||||||
// The person is not logged into Facebook
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
// Load the SDK asynchronously
|
|
||||||
(function(d){
|
|
||||||
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
|
|
||||||
if (d.getElementById(id)) {return;}
|
|
||||||
js = d.createElement('script'); js.id = id; js.async = true;
|
|
||||||
js.src = "//connect.facebook.net/en_US/all.js";
|
|
||||||
//js.src = "//connect.facebook.net/en_US/all/debug.js";
|
|
||||||
ref.parentNode.insertBefore(js, ref);
|
|
||||||
}(document));
|
|
||||||
</script>
|
|
||||||
<!-- end facebook code -->
|
|
||||||
|
|
||||||
|
|
||||||
<header class="header-container" id="header-container"></header>
|
<header class="header-container" id="header-container"></header>
|
||||||
|
|
||||||
<div id="page-container" class="nano-content"></div>
|
<div id="page-container" class="nano-content"></div>
|
||||||
|
|
||||||
<div id="modal-wrapper" class="modal-content"></div>
|
<div id="modal-wrapper" class="modal-content"></div>
|
||||||
|
|
||||||
<!-- begin google api/plus code -->
|
|
||||||
<script type="text/javascript">
|
|
||||||
(function() {
|
|
||||||
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
|
|
||||||
po.src = 'https://apis.google.com/js/client:plusone.js?onload=onGPlusLoaded';
|
|
||||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
|
|
||||||
})();
|
|
||||||
|
|
||||||
function onGPlusLoaded() {
|
|
||||||
Backbone.Mediator.publish('gapi-loaded');
|
|
||||||
}
|
|
||||||
|
|
||||||
function signinCallback(authResult) {
|
|
||||||
if (authResult['access_token']) {
|
|
||||||
Backbone.Mediator.publish('gplus-logged-in', authResult)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<!-- end google api/plus code -->
|
|
||||||
|
|
||||||
<!-- begin twitter code -->
|
|
||||||
<script>
|
|
||||||
(function (d,s,id) {
|
|
||||||
var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https';
|
|
||||||
if(!d.getElementById(id)) {
|
|
||||||
js = d.createElement(s);
|
|
||||||
js.id = id;
|
|
||||||
js.src = p + '://platform.twitter.com/widgets.js';
|
|
||||||
fjs.parentNode.insertBefore(js, fjs);
|
|
||||||
}
|
|
||||||
})(document, 'script', 'twitter-wjs');
|
|
||||||
</script>
|
|
||||||
<!-- end twitter code -->
|
|
||||||
|
|
||||||
<!-- begin filepicker.io code -->
|
|
||||||
<script type="text/javascript">
|
|
||||||
(function(a){if(window.filepicker){return}var b=a.createElement("script");b.type="text/javascript";b.async=!0;b.src=("https:"===a.location.protocol?"https:":"http:")+"//api.filepicker.io/v1/filepicker.js";var c=a.getElementsByTagName("script")[0];c.parentNode.insertBefore(b,c);var d={};d._queue=[];var e="pick,pickMultiple,pickAndStore,read,write,writeUrl,export,convert,store,storeUrl,remove,stat,setKey,constructWidget,makeDropPane".split(",");var f=function(a,b){return function(){b.push([a,arguments])}};for(var g=0;g<e.length;g++){d[e[g]]=f(e[g],d._queue)}window.filepicker=d})(document);
|
|
||||||
</script>
|
|
||||||
<!-- end filepicker.io code -->
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -18,6 +18,11 @@ definitionSchemas =
|
||||||
'misc': require './schemas/definitions/misc'
|
'misc': require './schemas/definitions/misc'
|
||||||
|
|
||||||
init = ->
|
init = ->
|
||||||
|
path = document.location.pathname
|
||||||
|
testing = path.startsWith '/test'
|
||||||
|
demoing = path.startsWith '/demo'
|
||||||
|
initializeServices() unless testing or demoing
|
||||||
|
|
||||||
# Set up Backbone.Mediator schemas
|
# Set up Backbone.Mediator schemas
|
||||||
setUpDefinitions()
|
setUpDefinitions()
|
||||||
setUpChannels()
|
setUpChannels()
|
||||||
|
@ -28,7 +33,6 @@ init = ->
|
||||||
|
|
||||||
treemaExt = require 'treema-ext'
|
treemaExt = require 'treema-ext'
|
||||||
treemaExt.setup()
|
treemaExt.setup()
|
||||||
filepicker.setKey('AvlkNoldcTOU4PvKi2Xm7z')
|
|
||||||
|
|
||||||
$ -> init()
|
$ -> init()
|
||||||
|
|
||||||
|
@ -60,3 +64,18 @@ setUpChannels = ->
|
||||||
setUpDefinitions = ->
|
setUpDefinitions = ->
|
||||||
for definition of definitionSchemas
|
for definition of definitionSchemas
|
||||||
Backbone.Mediator.addDefSchemas definitionSchemas[definition]
|
Backbone.Mediator.addDefSchemas definitionSchemas[definition]
|
||||||
|
|
||||||
|
initializeServices = ->
|
||||||
|
services = [
|
||||||
|
'./lib/services/filepicker'
|
||||||
|
'./lib/services/segmentio'
|
||||||
|
'./lib/services/olark'
|
||||||
|
'./lib/services/facebook'
|
||||||
|
'./lib/services/google'
|
||||||
|
'./lib/services/twitter'
|
||||||
|
'./lib/services/linkedin'
|
||||||
|
]
|
||||||
|
|
||||||
|
for service in services
|
||||||
|
service = require service
|
||||||
|
service()
|
||||||
|
|
|
@ -16,8 +16,9 @@ module.exports = class CocoRouter extends Backbone.Router
|
||||||
# editor views tend to have the same general structure
|
# editor views tend to have the same general structure
|
||||||
'editor/:model(/:slug_or_id)(/:subview)': 'editorModelView'
|
'editor/:model(/:slug_or_id)(/:subview)': 'editorModelView'
|
||||||
|
|
||||||
# Experimenting with direct links
|
# Direct links
|
||||||
'test/*subpath': go('test')
|
'test/*subpath': go('TestView')
|
||||||
|
'demo/*subpath': go('DemoView')
|
||||||
'play/ladder/:levelID': go('play/ladder/ladder_view')
|
'play/ladder/:levelID': go('play/ladder/ladder_view')
|
||||||
'play/ladder': go('play/ladder_home')
|
'play/ladder': go('play/ladder_home')
|
||||||
|
|
||||||
|
|
48
app/lib/requireUtils.coffee
Normal file
48
app/lib/requireUtils.coffee
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
module.exports.getParentFolders = (subPath, urlPrefix='/test/') ->
|
||||||
|
return [] unless subPath
|
||||||
|
paths = []
|
||||||
|
parts = subPath.split('/')
|
||||||
|
while parts.length
|
||||||
|
parts.pop()
|
||||||
|
paths.unshift {
|
||||||
|
name: parts[parts.length-1] or 'All'
|
||||||
|
url: urlPrefix + parts.join('/')
|
||||||
|
}
|
||||||
|
paths
|
||||||
|
|
||||||
|
module.exports.parseImmediateChildren = (allChildren, subPath, baseRequirePath='test/app/', urlPrefix='/test/') ->
|
||||||
|
return [] unless allChildren
|
||||||
|
folders = {}
|
||||||
|
files = {}
|
||||||
|
|
||||||
|
requirePrefix = baseRequirePath + subPath
|
||||||
|
if requirePrefix[requirePrefix.length-1] isnt '/'
|
||||||
|
requirePrefix += '/'
|
||||||
|
|
||||||
|
for f in allChildren
|
||||||
|
f = f[requirePrefix.length..]
|
||||||
|
continue unless f
|
||||||
|
parts = f.split('/')
|
||||||
|
name = parts[0]
|
||||||
|
group = if parts.length is 1 then files else folders
|
||||||
|
group[name] ?= 0
|
||||||
|
group[name] += 1
|
||||||
|
|
||||||
|
children = []
|
||||||
|
urlPrefix += subPath
|
||||||
|
urlPrefix += '/' if urlPrefix[urlPrefix.length-1] isnt '/'
|
||||||
|
|
||||||
|
for name in _.keys(folders)
|
||||||
|
children.push {
|
||||||
|
type:'folder',
|
||||||
|
url: urlPrefix+name
|
||||||
|
name: name+'/'
|
||||||
|
size: folders[name]
|
||||||
|
}
|
||||||
|
for name in _.keys(files)
|
||||||
|
children.push {
|
||||||
|
type:'file',
|
||||||
|
url: urlPrefix+name
|
||||||
|
name: name
|
||||||
|
}
|
||||||
|
children
|
42
app/lib/services/facebook.coffee
Normal file
42
app/lib/services/facebook.coffee
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
module.exports = initializeFacebook = ->
|
||||||
|
# Additional JS functions here
|
||||||
|
window.fbAsyncInit = ->
|
||||||
|
Backbone.Mediator.publish "fbapi-loaded"
|
||||||
|
FB.init
|
||||||
|
appId: (if document.location.origin is "http://localhost:3000" then "607435142676437" else "148832601965463") # App ID
|
||||||
|
channelUrl: document.location.origin + "/channel.html" # Channel File
|
||||||
|
status: true # check login status
|
||||||
|
cookie: true # enable cookies to allow the server to access the session
|
||||||
|
xfbml: true # parse XFBML
|
||||||
|
|
||||||
|
|
||||||
|
# This is fired for any auth related change, such as login, logout or session refresh.
|
||||||
|
FB.Event.subscribe "auth.authResponseChange", (response) ->
|
||||||
|
|
||||||
|
# Here we specify what we do with the response anytime this event occurs.
|
||||||
|
if response.status is "connected"
|
||||||
|
|
||||||
|
# They have logged in to the app.
|
||||||
|
Backbone.Mediator.publish "facebook-logged-in",
|
||||||
|
response: response
|
||||||
|
|
||||||
|
else if response.status is "not_authorized"
|
||||||
|
#
|
||||||
|
else
|
||||||
|
#
|
||||||
|
|
||||||
|
# Load the SDK asynchronously
|
||||||
|
((d) ->
|
||||||
|
js = undefined
|
||||||
|
id = "facebook-jssdk"
|
||||||
|
ref = d.getElementsByTagName("script")[0]
|
||||||
|
return if d.getElementById(id)
|
||||||
|
js = d.createElement("script")
|
||||||
|
js.id = id
|
||||||
|
js.async = true
|
||||||
|
js.src = "//connect.facebook.net/en_US/all.js"
|
||||||
|
|
||||||
|
#js.src = "//connect.facebook.net/en_US/all/debug.js";
|
||||||
|
ref.parentNode.insertBefore js, ref
|
||||||
|
return
|
||||||
|
) document
|
29
app/lib/services/filepicker.coffee
Normal file
29
app/lib/services/filepicker.coffee
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
module.exports = initializeFilepicker = ->
|
||||||
|
((a) ->
|
||||||
|
return if window.filepicker
|
||||||
|
b = a.createElement("script")
|
||||||
|
b.type = "text/javascript"
|
||||||
|
b.async = not 0
|
||||||
|
b.src = ((if "https:" is a.location.protocol then "https:" else "http:")) + "//api.filepicker.io/v1/filepicker.js"
|
||||||
|
c = a.getElementsByTagName("script")[0]
|
||||||
|
c.parentNode.insertBefore b, c
|
||||||
|
d = {}
|
||||||
|
d._queue = []
|
||||||
|
e = "pick,pickMultiple,pickAndStore,read,write,writeUrl,export,convert,store,storeUrl,remove,stat,setKey,constructWidget,makeDropPane".split(",")
|
||||||
|
f = (a, b) ->
|
||||||
|
->
|
||||||
|
b.push [
|
||||||
|
a
|
||||||
|
arguments
|
||||||
|
]
|
||||||
|
return
|
||||||
|
|
||||||
|
g = 0
|
||||||
|
|
||||||
|
while g < e.length
|
||||||
|
d[e[g]] = f(e[g], d._queue)
|
||||||
|
g++
|
||||||
|
d.setKey('AvlkNoldcTOU4PvKi2Xm7z')
|
||||||
|
window.filepicker = d
|
||||||
|
return
|
||||||
|
) document
|
16
app/lib/services/google.coffee
Normal file
16
app/lib/services/google.coffee
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
module.exports = initializeGoogle = ->
|
||||||
|
onGPlusLoaded = ->
|
||||||
|
Backbone.Mediator.publish "gapi-loaded"
|
||||||
|
return
|
||||||
|
signinCallback = (authResult) ->
|
||||||
|
Backbone.Mediator.publish "gplus-logged-in", authResult if authResult["access_token"]
|
||||||
|
return
|
||||||
|
(->
|
||||||
|
po = document.createElement("script")
|
||||||
|
po.type = "text/javascript"
|
||||||
|
po.async = true
|
||||||
|
po.src = "https://apis.google.com/js/client:plusone.js?onload=onGPlusLoaded"
|
||||||
|
s = document.getElementsByTagName("script")[0]
|
||||||
|
s.parentNode.insertBefore po, s
|
||||||
|
return
|
||||||
|
)()
|
12
app/lib/services/linkedin.coffee
Normal file
12
app/lib/services/linkedin.coffee
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
module.exports = initializeLinkedIn = ->
|
||||||
|
window.linkedInAsyncInit = ->
|
||||||
|
Backbone.Mediator.publish 'linkedin-loaded'
|
||||||
|
|
||||||
|
linkedInSnippet =
|
||||||
|
'<script type="text/javascript" async src="http://platform.linkedin.com/in.js">
|
||||||
|
api_key: 75v8mv4ictvmx6
|
||||||
|
onLoad: linkedInAsyncInit
|
||||||
|
authorize: true
|
||||||
|
</script>'
|
||||||
|
|
||||||
|
$('head').append(linkedInSnippet)
|
116
app/lib/services/olark.coffee
Normal file
116
app/lib/services/olark.coffee
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
module.exports = initializeOlark = ->
|
||||||
|
window.olark or ((c) -> #<![CDATA[
|
||||||
|
f = window
|
||||||
|
d = document
|
||||||
|
l = (if f.location.protocol is "https:" then "https:" else "http:")
|
||||||
|
z = c.name
|
||||||
|
r = "load"
|
||||||
|
nt = ->
|
||||||
|
s = ->
|
||||||
|
a.P r
|
||||||
|
f[z] r
|
||||||
|
return
|
||||||
|
f[z] = ->
|
||||||
|
(a.s = a.s or []).push arguments
|
||||||
|
return
|
||||||
|
|
||||||
|
a = f[z]._ = {}
|
||||||
|
q = c.methods.length
|
||||||
|
while q--
|
||||||
|
((n) ->
|
||||||
|
f[z][n] = ->
|
||||||
|
f[z] "call", n, arguments
|
||||||
|
return
|
||||||
|
|
||||||
|
return
|
||||||
|
) c.methods[q]
|
||||||
|
a.l = c.loader
|
||||||
|
a.i = nt
|
||||||
|
a.p = 0: +new Date
|
||||||
|
a.P = (u) ->
|
||||||
|
a.p[u] = new Date - a.p[0]
|
||||||
|
return
|
||||||
|
|
||||||
|
(if f.addEventListener then f.addEventListener(r, s, false) else f.attachEvent("on" + r, s))
|
||||||
|
ld = ->
|
||||||
|
p = (hd) ->
|
||||||
|
hd = "head"
|
||||||
|
[
|
||||||
|
"<"
|
||||||
|
hd
|
||||||
|
"></"
|
||||||
|
hd
|
||||||
|
"><"
|
||||||
|
i
|
||||||
|
" onl" + "oad=\"var d="
|
||||||
|
g
|
||||||
|
";d.getElementsByTagName('head')[0]."
|
||||||
|
j
|
||||||
|
"(d."
|
||||||
|
h
|
||||||
|
"('script'))."
|
||||||
|
k
|
||||||
|
"='"
|
||||||
|
l
|
||||||
|
"//"
|
||||||
|
a.l
|
||||||
|
"'"
|
||||||
|
"\""
|
||||||
|
"></"
|
||||||
|
i
|
||||||
|
">"
|
||||||
|
].join ""
|
||||||
|
i = "body"
|
||||||
|
m = d[i]
|
||||||
|
return setTimeout(ld, 100) unless m
|
||||||
|
a.P 1
|
||||||
|
j = "appendChild"
|
||||||
|
h = "createElement"
|
||||||
|
k = "src"
|
||||||
|
n = d[h]("div")
|
||||||
|
v = n[j](d[h](z))
|
||||||
|
b = d[h]("iframe")
|
||||||
|
g = "document"
|
||||||
|
e = "domain"
|
||||||
|
o = undefined
|
||||||
|
n.style.display = "none"
|
||||||
|
m.insertBefore(n, m.firstChild).id = z
|
||||||
|
b.frameBorder = "0"
|
||||||
|
b.id = z + "-loader"
|
||||||
|
b.src = "javascript:false" if /MSIE[ ]+6/.test(navigator.userAgent)
|
||||||
|
b.allowTransparency = "true"
|
||||||
|
v[j] b
|
||||||
|
try
|
||||||
|
b.contentWindow[g].open()
|
||||||
|
catch w
|
||||||
|
c[e] = d[e]
|
||||||
|
o = "javascript:var d=" + g + ".open();d.domain='" + d.domain + "';"
|
||||||
|
b[k] = o + "void(0);"
|
||||||
|
try
|
||||||
|
t = b.contentWindow[g]
|
||||||
|
t.write p()
|
||||||
|
t.close()
|
||||||
|
catch x
|
||||||
|
b[k] = o + "d.write(\"" + p().replace(/"/g, String.fromCharCode(92) + "\"") + "\");d.close();"
|
||||||
|
a.P 2
|
||||||
|
return
|
||||||
|
|
||||||
|
ld()
|
||||||
|
return
|
||||||
|
|
||||||
|
nt()
|
||||||
|
return
|
||||||
|
)(
|
||||||
|
loader: "static.olark.com/jsclient/loader0.js"
|
||||||
|
name: "olark"
|
||||||
|
methods: [
|
||||||
|
"configure"
|
||||||
|
"extend"
|
||||||
|
"declare"
|
||||||
|
"identify"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# custom configuration goes here (www.olark.com/documentation)
|
||||||
|
olark.identify "1451-787-10-5544" #]]>
|
||||||
|
|
41
app/lib/services/segmentio.coffee
Normal file
41
app/lib/services/segmentio.coffee
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
module.exports = initializeSegmentio = ->
|
||||||
|
analytics = analytics or []
|
||||||
|
(->
|
||||||
|
e = [
|
||||||
|
"identify"
|
||||||
|
"track"
|
||||||
|
"trackLink"
|
||||||
|
"trackForm"
|
||||||
|
"trackClick"
|
||||||
|
"trackSubmit"
|
||||||
|
"page"
|
||||||
|
"pageview"
|
||||||
|
"ab"
|
||||||
|
"alias"
|
||||||
|
"ready"
|
||||||
|
"group"
|
||||||
|
]
|
||||||
|
t = (e) ->
|
||||||
|
->
|
||||||
|
analytics.push [e].concat(Array::slice.call(arguments, 0))
|
||||||
|
return
|
||||||
|
|
||||||
|
n = 0
|
||||||
|
|
||||||
|
while n < e.length
|
||||||
|
analytics[e[n]] = t(e[n])
|
||||||
|
n++
|
||||||
|
return
|
||||||
|
)()
|
||||||
|
analytics.load = (e) ->
|
||||||
|
t = document.createElement("script")
|
||||||
|
t.type = "text/javascript"
|
||||||
|
t.async = not 0
|
||||||
|
t.src = ((if "https:" is document.location.protocol then "https://" else "http://")) + "d2dq2ahtl5zl1z.cloudfront.net/analytics.js/v1/" + e + "/analytics.min.js"
|
||||||
|
|
||||||
|
n = document.getElementsByTagName("script")[0]
|
||||||
|
n.parentNode.insertBefore t, n
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
analytics.load "jsjzx9n4d2"
|
12
app/lib/services/twitter.coffee
Normal file
12
app/lib/services/twitter.coffee
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
module.exports = initializeTwitter = ->
|
||||||
|
((d, s, id) ->
|
||||||
|
js = undefined
|
||||||
|
fjs = d.getElementsByTagName(s)[0]
|
||||||
|
p = (if /^http:/.test(d.location) then "http" else "https")
|
||||||
|
unless d.getElementById(id)
|
||||||
|
js = d.createElement(s)
|
||||||
|
js.id = id
|
||||||
|
js.src = p + "://platform.twitter.com/widgets.js"
|
||||||
|
fjs.parentNode.insertBefore js, fjs
|
||||||
|
return
|
||||||
|
) document, "script", "twitter-wjs"
|
|
@ -6,15 +6,15 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
# send: "Send"
|
# send: "Send"
|
||||||
cancel: "Abbrechen"
|
cancel: "Abbrechen"
|
||||||
save: "Speichern"
|
save: "Speichern"
|
||||||
# publish: "Publish"
|
publish: "Publiziere"
|
||||||
# create: "Create"
|
create: "Erstelle"
|
||||||
delay_1_sec: "1 Sekunde"
|
delay_1_sec: "1 Sekunde"
|
||||||
delay_3_sec: "3 Sekunden"
|
delay_3_sec: "3 Sekunden"
|
||||||
delay_5_sec: "5 Sekunden"
|
delay_5_sec: "5 Sekunden"
|
||||||
manual: "Manuell"
|
manual: "Manuell"
|
||||||
# fork: "Fork"
|
fork: "Fork"
|
||||||
play: "Abspielen"
|
play: "Abspielen"
|
||||||
# retry: "Retry"
|
retry: "Erneut versuchen"
|
||||||
# watch: "Watch"
|
# watch: "Watch"
|
||||||
# unwatch: "Unwatch"
|
# unwatch: "Unwatch"
|
||||||
# submit_patch: "Submit Patch"
|
# submit_patch: "Submit Patch"
|
||||||
|
@ -26,14 +26,14 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
minutes: "Minuten"
|
minutes: "Minuten"
|
||||||
hour: "Stunde"
|
hour: "Stunde"
|
||||||
hours: "Stunden"
|
hours: "Stunden"
|
||||||
# day: "day"
|
day: "Tag"
|
||||||
# days: "days"
|
days: "Tage"
|
||||||
# week: "week"
|
week: "Woche"
|
||||||
# weeks: "weeks"
|
weeks: "Wochen"
|
||||||
# month: "month"
|
month: "Monat"
|
||||||
# months: "months"
|
months: "Monate"
|
||||||
# year: "year"
|
year: "Jahr"
|
||||||
# years: "years"
|
years: "Jahre"
|
||||||
|
|
||||||
modal:
|
modal:
|
||||||
close: "Schließen"
|
close: "Schließen"
|
||||||
|
@ -69,7 +69,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
login:
|
login:
|
||||||
sign_up: "Registrieren"
|
sign_up: "Registrieren"
|
||||||
log_in: "Einloggen"
|
log_in: "Einloggen"
|
||||||
# logging_in: "Logging In"
|
logging_in: "Logge ein"
|
||||||
log_out: "Ausloggen"
|
log_out: "Ausloggen"
|
||||||
recover: "Account wiederherstellen"
|
recover: "Account wiederherstellen"
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
creating: "Erzeuge Account..."
|
creating: "Erzeuge Account..."
|
||||||
sign_up: "Neuen Account anlegen"
|
sign_up: "Neuen Account anlegen"
|
||||||
log_in: "mit Passwort einloggen"
|
log_in: "mit Passwort einloggen"
|
||||||
# social_signup: "Or, you can sign up through Facebook or G+:"
|
social_signup: "oder, du registriest dich über Facebook oder G+:"
|
||||||
# required: "You need to log in before you can go that way."
|
# required: "You need to log in before you can go that way."
|
||||||
|
|
||||||
home:
|
home:
|
||||||
|
@ -128,7 +128,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
forum_page: "unser Forum"
|
forum_page: "unser Forum"
|
||||||
forum_suffix: "."
|
forum_suffix: "."
|
||||||
send: "Sende Feedback"
|
send: "Sende Feedback"
|
||||||
# contact_candidate: "Contact Candidate"
|
contact_candidate: "Kontaktiere Kandidaten"
|
||||||
# recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns."
|
# recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns."
|
||||||
|
|
||||||
diplomat_suggestion:
|
diplomat_suggestion:
|
||||||
|
@ -142,13 +142,13 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
wizard_settings:
|
wizard_settings:
|
||||||
title: "Zauberer Einstellungen"
|
title: "Zauberer Einstellungen"
|
||||||
customize_avatar: "Individualisiere deinen Avatar"
|
customize_avatar: "Individualisiere deinen Avatar"
|
||||||
# active: "Active"
|
active: "Aktiv"
|
||||||
# color: "Color"
|
color: "Farbe"
|
||||||
# group: "Group"
|
group: "Gruppe"
|
||||||
clothes: "Kleidung"
|
clothes: "Kleidung"
|
||||||
trim: "Applikationen"
|
trim: "Applikationen"
|
||||||
cloud: "Wolke"
|
cloud: "Wolke"
|
||||||
# team: "Team"
|
team: "Team"
|
||||||
spell: "Zauber"
|
spell: "Zauber"
|
||||||
boots: "Stiefel"
|
boots: "Stiefel"
|
||||||
hue: "Farbton"
|
hue: "Farbton"
|
||||||
|
@ -161,7 +161,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
autosave: "Sichere Änderungen automatisch"
|
autosave: "Sichere Änderungen automatisch"
|
||||||
me_tab: "Ich"
|
me_tab: "Ich"
|
||||||
picture_tab: "Bild"
|
picture_tab: "Bild"
|
||||||
# upload_picture: "Upload a picture"
|
upload_picture: "Ein Bild hochladen"
|
||||||
wizard_tab: "Zauberer"
|
wizard_tab: "Zauberer"
|
||||||
password_tab: "Passwort"
|
password_tab: "Passwort"
|
||||||
emails_tab: "Emails"
|
emails_tab: "Emails"
|
||||||
|
@ -186,119 +186,119 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
error_saving: "Fehler beim Speichern"
|
error_saving: "Fehler beim Speichern"
|
||||||
saved: "Änderungen gespeichert"
|
saved: "Änderungen gespeichert"
|
||||||
password_mismatch: "Passwörter stimmen nicht überein."
|
password_mismatch: "Passwörter stimmen nicht überein."
|
||||||
# job_profile: "Job Profile"
|
job_profile: "Jobprofil"
|
||||||
# job_profile_approved: "Your job profile has been approved by CodeCombat. Employers will be able to see it until you either mark it inactive or it has not been changed for four weeks."
|
# job_profile_approved: "Your job profile has been approved by CodeCombat. Employers will be able to see it until you either mark it inactive or it has not been changed for four weeks."
|
||||||
# job_profile_explanation: "Hi! Fill this out, and we will get in touch about finding you a software developer job."
|
# job_profile_explanation: "Hi! Fill this out, and we will get in touch about finding you a software developer job."
|
||||||
# sample_profile: "See a sample profile"
|
sample_profile: "Ein Beispielprofil ansehen"
|
||||||
# view_profile: "View Your Profile"
|
view_profile: "Dein Profil ansehen"
|
||||||
|
|
||||||
account_profile:
|
account_profile:
|
||||||
# settings: "Settings"
|
settings: "Einstellungen"
|
||||||
# edit_profile: "Edit Profile"
|
edit_profile: "Profil editieren"
|
||||||
# done_editing: "Done Editing"
|
# done_editing: "Done Editing"
|
||||||
profile_for_prefix: "Profil von "
|
profile_for_prefix: "Profil von "
|
||||||
profile_for_suffix: ""
|
profile_for_suffix: ""
|
||||||
# featured: "Featured"
|
# featured: "Featured"
|
||||||
# not_featured: "Not Featured"
|
# not_featured: "Not Featured"
|
||||||
# looking_for: "Looking for:"
|
# looking_for: "Looking for:"
|
||||||
# last_updated: "Last updated:"
|
last_updated: "zuletzt geändert:"
|
||||||
# contact: "Contact"
|
contact: "Kontakt"
|
||||||
# active: "Looking for interview offers now"
|
# active: "Looking for interview offers now"
|
||||||
# inactive: "Not looking for offers right now"
|
# inactive: "Not looking for offers right now"
|
||||||
# complete: "complete"
|
# complete: "complete"
|
||||||
# next: "Next"
|
# next: "Next"
|
||||||
# next_city: "city?"
|
next_city: "Stadt?"
|
||||||
# next_country: "pick your country."
|
next_country: "Wähle dein Land."
|
||||||
# next_name: "name?"
|
next_name: "Name?"
|
||||||
# next_short_description: "write a short description."
|
# next_short_description: "write a short description."
|
||||||
# next_long_description: "describe your desired position."
|
# next_long_description: "describe your desired position."
|
||||||
# next_skills: "list at least five skills."
|
next_skills: "Liste mindestens fünf Fähigkeiten."
|
||||||
# next_work: "chronicle your work history."
|
# next_work: "chronicle your work history."
|
||||||
# next_education: "recount your educational ordeals."
|
# next_education: "recount your educational ordeals."
|
||||||
# next_projects: "show off up to three projects you've worked on."
|
next_projects: "Zeige bis zu 3 Projekte an denen du gearbeitet hast."
|
||||||
# next_links: "add any personal or social links."
|
# next_links: "add any personal or social links."
|
||||||
# next_photo: "add an optional professional photo."
|
next_photo: "Füge ein optionales professionelles Foto hinzu."
|
||||||
# next_active: "mark yourself open to offers to show up in searches."
|
# next_active: "mark yourself open to offers to show up in searches."
|
||||||
# example_blog: "Blog"
|
example_blog: "Blog"
|
||||||
# example_personal_site: "Personal Site"
|
example_personal_site: "Persönliche Seite"
|
||||||
# links_header: "Personal Links"
|
links_header: "Persönliche Links"
|
||||||
# links_blurb: "Link any other sites or profiles you want to highlight, like your GitHub, your LinkedIn, or your blog."
|
links_blurb: "Verlinke zu anderen Seiten oder Profilen die du hervorheben möchtest, wie z.B. dein GitHub, dein LinkedIn oder deinen Blog."
|
||||||
# links_name: "Link Name"
|
links_name: "Link-Name"
|
||||||
# links_name_help: "What are you linking to?"
|
# links_name_help: "What are you linking to?"
|
||||||
# links_link_blurb: "Link URL"
|
links_link_blurb: "Link URL"
|
||||||
# basics_header: "Update basic info"
|
# basics_header: "Update basic info"
|
||||||
# basics_active: "Open to Offers"
|
# basics_active: "Open to Offers"
|
||||||
# basics_active_help: "Want interview offers right now?"
|
# basics_active_help: "Want interview offers right now?"
|
||||||
# basics_job_title: "Desired Job Title"
|
# basics_job_title: "Desired Job Title"
|
||||||
# basics_job_title_help: "What role are you looking for?"
|
# basics_job_title_help: "What role are you looking for?"
|
||||||
# basics_city: "City"
|
basics_city: "Stadt"
|
||||||
# basics_city_help: "City you want to work in (or live in now)."
|
basics_city_help: "Stadt in der du arbeiten möchtest (oder jetzt lebst)."
|
||||||
# basics_country: "Country"
|
basics_country: "Land"
|
||||||
# basics_country_help: "Country you want to work in (or live in now)."
|
basics_country_help: "Land in dem du arbeiten möchtest (oder jetzt lebst)."
|
||||||
# basics_visa: "US Work Status"
|
# basics_visa: "US Work Status"
|
||||||
# basics_visa_help: "Are you authorized to work in the US, or do you need visa sponsorship?"
|
# basics_visa_help: "Are you authorized to work in the US, or do you need visa sponsorship?"
|
||||||
# basics_looking_for: "Looking For"
|
# basics_looking_for: "Looking For"
|
||||||
# basics_looking_for_full_time: "Full-time"
|
basics_looking_for_full_time: "Vollzeit"
|
||||||
# basics_looking_for_part_time: "Part-time"
|
basics_looking_for_part_time: "Teilzeit"
|
||||||
# basics_looking_for_remote: "Remote"
|
basics_looking_for_remote: "Remote"
|
||||||
# basics_looking_for_contracting: "Contracting"
|
# basics_looking_for_contracting: "Contracting"
|
||||||
# basics_looking_for_internship: "Internship"
|
basics_looking_for_internship: "Praktikum"
|
||||||
# basics_looking_for_help: "What kind of developer position do you want?"
|
# basics_looking_for_help: "What kind of developer position do you want?"
|
||||||
# name_header: "Fill in your name"
|
name_header: "Trage deinen Namen ein"
|
||||||
# name_anonymous: "Anonymous Developer"
|
name_anonymous: "Anonymer Entwickler"
|
||||||
# name_help: "Name you want employers to see, like 'Nick Winter'."
|
# name_help: "Name you want employers to see, like 'Nick Winter'."
|
||||||
# short_description_header: "Write a short description of yourself"
|
# short_description_header: "Write a short description of yourself"
|
||||||
# short_description_blurb: "Add a tagline to help an employer quickly learn more about you."
|
# short_description_blurb: "Add a tagline to help an employer quickly learn more about you."
|
||||||
# short_description: "Tagline"
|
# short_description: "Tagline"
|
||||||
# short_description_help: "Who are you, and what are you looking for? 140 characters max."
|
# short_description_help: "Who are you, and what are you looking for? 140 characters max."
|
||||||
# skills_header: "Skills"
|
skills_header: "Fähigkeiten"
|
||||||
# skills_help: "Tag relevant developer skills in order of proficiency."
|
# skills_help: "Tag relevant developer skills in order of proficiency."
|
||||||
# long_description_header: "Describe your desired position"
|
long_description_header: "Beschreibe deine gewünschte Position"
|
||||||
# long_description_blurb: "Tell employers how awesome you are and what role you want."
|
# long_description_blurb: "Tell employers how awesome you are and what role you want."
|
||||||
# long_description: "Self Description"
|
# long_description: "Self Description"
|
||||||
# long_description_help: "Describe yourself to potential employers. Keep it short and to the point. We recommend outlining the position that would most interest you. Tasteful markdown okay; 600 characters max."
|
# long_description_help: "Describe yourself to potential employers. Keep it short and to the point. We recommend outlining the position that would most interest you. Tasteful markdown okay; 600 characters max."
|
||||||
# work_experience: "Work Experience"
|
work_experience: "Berufserfahrung"
|
||||||
# work_header: "Chronicle your work history"
|
# work_header: "Chronicle your work history"
|
||||||
# work_years: "Years of Experience"
|
# work_years: "Years of Experience"
|
||||||
# work_years_help: "How many years of professional experience (getting paid) developing software do you have?"
|
# work_years_help: "How many years of professional experience (getting paid) developing software do you have?"
|
||||||
# work_blurb: "List your relevant work experience, most recent first."
|
# work_blurb: "List your relevant work experience, most recent first."
|
||||||
# work_employer: "Employer"
|
work_employer: "Arbeitgeber"
|
||||||
# work_employer_help: "Name of your employer."
|
work_employer_help: "Name deines Arbeitgebers."
|
||||||
# work_role: "Job Title"
|
# work_role: "Job Title"
|
||||||
# work_role_help: "What was your job title or role?"
|
# work_role_help: "What was your job title or role?"
|
||||||
# work_duration: "Duration"
|
# work_duration: "Duration"
|
||||||
# work_duration_help: "When did you hold this gig?"
|
# work_duration_help: "When did you hold this gig?"
|
||||||
# work_description: "Description"
|
work_description: "Beschreibung"
|
||||||
# work_description_help: "What did you do there? (140 chars; optional)"
|
work_description_help: "Was hast du dort gemacht (140 Zeichen; optional)"
|
||||||
# education: "Education"
|
# education: "Education"
|
||||||
# education_header: "Recount your academic ordeals"
|
# education_header: "Recount your academic ordeals"
|
||||||
# education_blurb: "List your academic ordeals."
|
# education_blurb: "List your academic ordeals."
|
||||||
# education_school: "School"
|
education_school: "Schule"
|
||||||
# education_school_help: "Name of your school."
|
education_school_help: "Name deiner Schule."
|
||||||
# education_degree: "Degree"
|
education_degree: "Abschluss"
|
||||||
# education_degree_help: "What was your degree and field of study?"
|
# education_degree_help: "What was your degree and field of study?"
|
||||||
# education_duration: "Dates"
|
# education_duration: "Dates"
|
||||||
# education_duration_help: "When?"
|
education_duration_help: "Wann?"
|
||||||
# education_description: "Description"
|
education_description: "Beschreibung"
|
||||||
# education_description_help: "Highlight anything about this educational experience. (140 chars; optional)"
|
# education_description_help: "Highlight anything about this educational experience. (140 chars; optional)"
|
||||||
# our_notes: "Our Notes"
|
# our_notes: "Our Notes"
|
||||||
# projects: "Projects"
|
projects: "Projekte"
|
||||||
# projects_header: "Add 3 projects"
|
projects_header: "Füge 3 Projekte hinzu"
|
||||||
# projects_header_2: "Projects (Top 3)"
|
projects_header_2: "Projekte (Top 3)"
|
||||||
# projects_blurb: "Highlight your projects to amaze employers."
|
# projects_blurb: "Highlight your projects to amaze employers."
|
||||||
# project_name: "Project Name"
|
project_name: "Projekt Name"
|
||||||
# project_name_help: "What was the project called?"
|
project_name_help: "Wie wurde das Projekt genannt?"
|
||||||
# project_description: "Description"
|
project_description: "Beschreibung"
|
||||||
# project_description_help: "Briefly describe the project."
|
project_description_help: "Beschreibe kurz das Projekt."
|
||||||
# project_picture: "Picture"
|
project_picture: "Bild"
|
||||||
# project_picture_help: "Upload a 230x115px or larger image showing off the project."
|
project_picture_help: "Lade ein 230x115px oder größeres Bild hoch, welches das Projekt darstellt."
|
||||||
# project_link: "Link"
|
project_link: "Link"
|
||||||
# project_link_help: "Link to the project."
|
project_link_help: "Verlinke zu dem Projekt."
|
||||||
# player_code: "Player Code"
|
player_code: "Spieler Code"
|
||||||
|
|
||||||
# employers:
|
employers:
|
||||||
# want_to_hire_our_players: "Hire CodeCombat Players"
|
want_to_hire_our_players: "Stelle CodeCombat Spieler ein"
|
||||||
# what: "What is CodeCombat?"
|
what: "Was ist CodeCombat?"
|
||||||
# what_blurb: "CodeCombat is a multiplayer browser programming game. Players write code to control their forces in battle against other developers. We support JavaScript, Python, Lua, Clojure, CoffeeScript, and Io."
|
# what_blurb: "CodeCombat is a multiplayer browser programming game. Players write code to control their forces in battle against other developers. We support JavaScript, Python, Lua, Clojure, CoffeeScript, and Io."
|
||||||
# who: "Who Are the Players?"
|
# who: "Who Are the Players?"
|
||||||
# who_blurb: "CodeCombateers are software developers who enjoy using their programming skills to play games. They range from college seniors at top 20 engineering programs to 20-year industry veterans."
|
# who_blurb: "CodeCombateers are software developers who enjoy using their programming skills to play games. They range from college seniors at top 20 engineering programs to 20-year industry veterans."
|
||||||
|
@ -313,10 +313,10 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
# why_blurb_6: "personally screened by us"
|
# why_blurb_6: "personally screened by us"
|
||||||
# why_blurb_7: ". Stop screening and start hiring."
|
# why_blurb_7: ". Stop screening and start hiring."
|
||||||
# see_candidates: "Click here to see our candidates"
|
# see_candidates: "Click here to see our candidates"
|
||||||
# candidate_name: "Name"
|
candidate_name: "Name"
|
||||||
# candidate_location: "Location"
|
# candidate_location: "Location"
|
||||||
# candidate_looking_for: "Looking For"
|
# candidate_looking_for: "Looking For"
|
||||||
# candidate_role: "Role"
|
candidate_role: "Rolle"
|
||||||
# candidate_top_skills: "Top Skills"
|
# candidate_top_skills: "Top Skills"
|
||||||
# candidate_years_experience: "Yrs Exp"
|
# candidate_years_experience: "Yrs Exp"
|
||||||
# candidate_last_updated: "Last Updated"
|
# candidate_last_updated: "Last Updated"
|
||||||
|
@ -375,10 +375,10 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
skip_tutorial: "Überspringen (Esc)"
|
skip_tutorial: "Überspringen (Esc)"
|
||||||
editor_config: "Editor Einstellungen"
|
editor_config: "Editor Einstellungen"
|
||||||
editor_config_title: "Editor Einstellungen"
|
editor_config_title: "Editor Einstellungen"
|
||||||
# editor_config_level_language_label: "Language for This Level"
|
editor_config_level_language_label: "Sprache für dieses Level"
|
||||||
# editor_config_level_language_description: "Define the programming language for this particular level."
|
editor_config_level_language_description: "Lege die Programmiersprache für dieses bestimmte Level fest."
|
||||||
# editor_config_default_language_label: "Default Programming Language"
|
editor_config_default_language_label: "Voreinstellung Programmiersprache"
|
||||||
# editor_config_default_language_description: "Define the programming language you want to code in when starting new levels."
|
editor_config_default_language_description: "Definiere die Programmiersprache in der du programmieren möchtest wenn du ein neues Level beginnst."
|
||||||
editor_config_keybindings_label: "Tastenbelegung"
|
editor_config_keybindings_label: "Tastenbelegung"
|
||||||
editor_config_keybindings_default: "Standard (Ace)"
|
editor_config_keybindings_default: "Standard (Ace)"
|
||||||
editor_config_keybindings_description: "Fügt zusätzliche Tastenkombinationen, bekannt aus anderen Editoren, hinzu"
|
editor_config_keybindings_description: "Fügt zusätzliche Tastenkombinationen, bekannt aus anderen Editoren, hinzu"
|
||||||
|
@ -388,7 +388,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
editor_config_indentguides_description: "Zeigt vertikale Linien an um Einrückungen besser zu sehen."
|
editor_config_indentguides_description: "Zeigt vertikale Linien an um Einrückungen besser zu sehen."
|
||||||
editor_config_behaviors_label: "Intelligentes Verhalten"
|
editor_config_behaviors_label: "Intelligentes Verhalten"
|
||||||
editor_config_behaviors_description: "Vervollständigt automatisch Klammern und Anführungszeichen."
|
editor_config_behaviors_description: "Vervollständigt automatisch Klammern und Anführungszeichen."
|
||||||
# keyboard_shortcuts: "Key Shortcuts"
|
keyboard_shortcuts: "Tastenkürzel"
|
||||||
loading_ready: "Bereit!"
|
loading_ready: "Bereit!"
|
||||||
tip_insert_positions: "Halte 'Umschalt' gedrückt und klicke auf die Karte um die Koordinaten einzufügen."
|
tip_insert_positions: "Halte 'Umschalt' gedrückt und klicke auf die Karte um die Koordinaten einzufügen."
|
||||||
tip_toggle_play: "Wechsel zwischen Play und Pause mit Strg+P."
|
tip_toggle_play: "Wechsel zwischen Play und Pause mit Strg+P."
|
||||||
|
@ -421,14 +421,14 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
time_current: "Aktuell"
|
time_current: "Aktuell"
|
||||||
time_total: "Total"
|
time_total: "Total"
|
||||||
time_goto: "Gehe zu"
|
time_goto: "Gehe zu"
|
||||||
# infinite_loop_try_again: "Try Again"
|
infinite_loop_try_again: "Erneut versuchen"
|
||||||
# infinite_loop_reset_level: "Reset Level"
|
# infinite_loop_reset_level: "Reset Level"
|
||||||
# infinite_loop_comment_out: "Comment Out My Code"
|
infinite_loop_comment_out: "Meinen Code auskommentieren"
|
||||||
|
|
||||||
# keyboard_shortcuts:
|
keyboard_shortcuts:
|
||||||
# keyboard_shortcuts: "Keyboard Shortcuts"
|
keyboard_shortcuts: "Tastaturkürzel"
|
||||||
# space: "Space"
|
space: "Leertaste"
|
||||||
# enter: "Enter"
|
enter: "Eingabetaste"
|
||||||
# escape: "Escape"
|
# escape: "Escape"
|
||||||
# cast_spell: "Cast current spell."
|
# cast_spell: "Cast current spell."
|
||||||
# continue_script: "Continue past current script."
|
# continue_script: "Continue past current script."
|
||||||
|
@ -448,42 +448,42 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
av_entities_sub_title: "Entitäten"
|
av_entities_sub_title: "Entitäten"
|
||||||
av_entities_users_url: "Benutzer"
|
av_entities_users_url: "Benutzer"
|
||||||
av_entities_active_instances_url: "Aktive Instanzen"
|
av_entities_active_instances_url: "Aktive Instanzen"
|
||||||
# av_entities_employer_list_url: "Employer List"
|
av_entities_employer_list_url: "Arbeitgeberliste"
|
||||||
av_other_sub_title: "Sonstige"
|
av_other_sub_title: "Sonstige"
|
||||||
# av_other_debug_base_url: "Base (for debugging base.jade)"
|
# av_other_debug_base_url: "Base (for debugging base.jade)"
|
||||||
u_title: "Benutzerliste"
|
u_title: "Benutzerliste"
|
||||||
lg_title: "Letzte Spiele"
|
lg_title: "Letzte Spiele"
|
||||||
# clas: "CLAs"
|
# clas: "CLAs"
|
||||||
|
|
||||||
# community:
|
community:
|
||||||
# level_editor: "Level Editor"
|
level_editor: "Level Editor"
|
||||||
# main_title: "CodeCombat Community"
|
main_title: "CodeCombat Community"
|
||||||
# facebook: "Facebook"
|
facebook: "Facebook"
|
||||||
# twitter: "Twitter"
|
twitter: "Twitter"
|
||||||
# gplus: "Google+"
|
gplus: "Google+"
|
||||||
|
|
||||||
editor:
|
editor:
|
||||||
main_title: "CodeCombat Editoren"
|
main_title: "CodeCombat Editoren"
|
||||||
main_description: "Entwerfe deine eigenen Level, Kampagnen, Einheiten und Lernmaterial. Wir stellen alle Werkzeuge zur Verfügung, die Du dafür benötigst!"
|
main_description: "Entwerfe deine eigenen Level, Kampagnen, Einheiten und Lernmaterial. Wir stellen alle Werkzeuge zur Verfügung, die Du dafür benötigst!"
|
||||||
article_title: "Artikel Editor"
|
article_title: "Artikel Editor"
|
||||||
article_description: "Schreiben Sie Artikel, die anderen Spieler einen Überblick über Programmierkonzepte geben und in einer Vielzahl von Ebenen und Kampagnen genutzt werden können."
|
article_description: "Schreiben Sie Artikel, die anderen Spieler einen Überblick über Programmierkonzepte geben und in einer Vielzahl von Ebenen und Kampagnen genutzt werden können."
|
||||||
# thang_title: "Thang Editor"
|
thang_title: "Thang Editor"
|
||||||
thang_description: "Entwerfe Einheiten, definiere ihre Standardlogik, Grafiken und Töne. Zurzeit werden nur Flash Vektorgrafiken unterstützt."
|
thang_description: "Entwerfe Einheiten, definiere ihre Standardlogik, Grafiken und Töne. Zurzeit werden nur Flash Vektorgrafiken unterstützt."
|
||||||
level_title: "Level Editor"
|
level_title: "Level Editor"
|
||||||
level_description: "Beinhaltet die Werkzeuge zum Scripten, Hochladen von Tönen und zur Konstruktion eigener Logik, damit jedes erdenkliches Level erstellt werden kann. Genau die Sachen, die wir selber benutzen!"
|
level_description: "Beinhaltet die Werkzeuge zum Scripten, Hochladen von Tönen und zur Konstruktion eigener Logik, damit jedes erdenkliches Level erstellt werden kann. Genau die Sachen, die wir selber benutzen!"
|
||||||
# achievement_title: "Achievement Editor"
|
# achievement_title: "Achievement Editor"
|
||||||
# got_questions: "Questions about using the CodeCombat editors?"
|
got_questions: "Fragen zur Benutzung des CodeCombat Editors?"
|
||||||
contact_us: "setze dich mit uns in Verbindung!"
|
contact_us: "setze dich mit uns in Verbindung!"
|
||||||
hipchat_prefix: "Besuche uns auch in unserem"
|
hipchat_prefix: "Besuche uns auch in unserem"
|
||||||
hipchat_url: "HipChat room."
|
hipchat_url: "HipChat room."
|
||||||
# back: "Back"
|
back: "Zurück"
|
||||||
revert: "Zurücksetzen"
|
revert: "Zurücksetzen"
|
||||||
revert_models: "Models zurücksetzen."
|
revert_models: "Models zurücksetzen."
|
||||||
# fork_title: "Fork New Version"
|
fork_title: "Forke neue Version"
|
||||||
# fork_creating: "Creating Fork..."
|
fork_creating: "Erzeuge Fork..."
|
||||||
# more: "More"
|
more: "Mehr"
|
||||||
# wiki: "Wiki"
|
wiki: "Wiki"
|
||||||
# live_chat: "Live Chat"
|
live_chat: "Live Chat"
|
||||||
level_some_options: "Einige Einstellungsmöglichkeiten?"
|
level_some_options: "Einige Einstellungsmöglichkeiten?"
|
||||||
level_tab_thangs: "Thangs"
|
level_tab_thangs: "Thangs"
|
||||||
level_tab_scripts: "Skripte"
|
level_tab_scripts: "Skripte"
|
||||||
|
@ -491,11 +491,11 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
level_tab_components: "Komponenten"
|
level_tab_components: "Komponenten"
|
||||||
level_tab_systems: "Systeme"
|
level_tab_systems: "Systeme"
|
||||||
level_tab_thangs_title: "Aktuelle Thangs"
|
level_tab_thangs_title: "Aktuelle Thangs"
|
||||||
# level_tab_thangs_all: "All"
|
level_tab_thangs_all: "Alle"
|
||||||
level_tab_thangs_conditions: "Startbedingungen"
|
level_tab_thangs_conditions: "Startbedingungen"
|
||||||
level_tab_thangs_add: "Thangs hinzufügen"
|
level_tab_thangs_add: "Thangs hinzufügen"
|
||||||
# delete: "Delete"
|
delete: "Löschen"
|
||||||
# duplicate: "Duplicate"
|
duplicate: "Duplizieren"
|
||||||
level_settings_title: "Einstellungen"
|
level_settings_title: "Einstellungen"
|
||||||
level_component_tab_title: "Aktuelle Komponenten"
|
level_component_tab_title: "Aktuelle Komponenten"
|
||||||
level_component_btn_new: "neue Komponente erstellen"
|
level_component_btn_new: "neue Komponente erstellen"
|
||||||
|
@ -512,16 +512,16 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
new_component_title: "Neue Komponente erstellen"
|
new_component_title: "Neue Komponente erstellen"
|
||||||
new_component_field_system: "System"
|
new_component_field_system: "System"
|
||||||
new_article_title: "Erstelle einen neuen Artikel"
|
new_article_title: "Erstelle einen neuen Artikel"
|
||||||
# new_thang_title: "Create a New Thang Type"
|
new_thang_title: "Erstelle einen neuen Thang-Typen"
|
||||||
new_level_title: "Erstelle ein neues Level"
|
new_level_title: "Erstelle ein neues Level"
|
||||||
# new_article_title_login: "Log In to Create a New Article"
|
new_article_title_login: "Melde dich an um einen neuen Artikel zu erstellen"
|
||||||
# new_thang_title_login: "Log In to Create a New Thang Type"
|
new_thang_title_login: "Melde dich an um einen neuen Thang-Typen zu erstellen"
|
||||||
# new_level_title_login: "Log In to Create a New Level"
|
new_level_title_login: "Melde dich an um ein neues Level zu erstellen"
|
||||||
# new_achievement_title: "Create a New Achievement"
|
# new_achievement_title: "Create a New Achievement"
|
||||||
# new_achievement_title_login: "Log In to Create a New Achievement"
|
# new_achievement_title_login: "Log In to Create a New Achievement"
|
||||||
# article_search_title: "Search Articles Here"
|
article_search_title: "Durchsuche Artikel hier"
|
||||||
# thang_search_title: "Search Thang Types Here"
|
thang_search_title: "Durchsuche Thang-Typen hier"
|
||||||
# level_search_title: "Search Levels Here"
|
level_search_title: "Durchsuche Levels hier"
|
||||||
# achievement_search_title: "Search Achievements"
|
# achievement_search_title: "Search Achievements"
|
||||||
# read_only_warning2: "Note: you can't save any edits here, because you're not logged in."
|
# read_only_warning2: "Note: you can't save any edits here, because you're not logged in."
|
||||||
|
|
||||||
|
@ -535,13 +535,13 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
body: "Inhalt"
|
body: "Inhalt"
|
||||||
version: "Version"
|
version: "Version"
|
||||||
commit_msg: "Commit Nachricht"
|
commit_msg: "Commit Nachricht"
|
||||||
# version_history: "Version History"
|
version_history: "Versionshistorie"
|
||||||
version_history_for: "Versionsgeschichte für: "
|
version_history_for: "Versionsgeschichte für: "
|
||||||
result: "Ergebnis"
|
result: "Ergebnis"
|
||||||
results: "Ergebnisse"
|
results: "Ergebnisse"
|
||||||
description: "Beschreibung"
|
description: "Beschreibung"
|
||||||
or: "oder"
|
or: "oder"
|
||||||
# subject: "Subject"
|
subject: "Betreff"
|
||||||
email: "Email"
|
email: "Email"
|
||||||
password: "Passwort"
|
password: "Passwort"
|
||||||
message: "Nachricht"
|
message: "Nachricht"
|
||||||
|
@ -557,7 +557,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
easy: "Einfach"
|
easy: "Einfach"
|
||||||
medium: "Mittel"
|
medium: "Mittel"
|
||||||
hard: "Schwer"
|
hard: "Schwer"
|
||||||
# player: "Player"
|
player: "Spieler"
|
||||||
|
|
||||||
about:
|
about:
|
||||||
who_is_codecombat: "Wer ist CodeCombat?"
|
who_is_codecombat: "Wer ist CodeCombat?"
|
||||||
|
@ -639,13 +639,13 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
# rights_writings: "Writings"
|
# rights_writings: "Writings"
|
||||||
# rights_media: "Media (sounds, music) and any other creative content made specifically for that Level and not made generally available when creating Levels."
|
# rights_media: "Media (sounds, music) and any other creative content made specifically for that Level and not made generally available when creating Levels."
|
||||||
# rights_clarification: "To clarify, anything that is made available in the Level Editor for the purpose of making levels is under CC, whereas the content created with the Level Editor or uploaded in the course of creation of Levels is not."
|
# rights_clarification: "To clarify, anything that is made available in the Level Editor for the purpose of making levels is under CC, whereas the content created with the Level Editor or uploaded in the course of creation of Levels is not."
|
||||||
# nutshell_title: "In a Nutshell"
|
nutshell_title: "Zusammenfassung"
|
||||||
# nutshell_description: "Any resources we provide in the Level Editor are free to use as you like for creating Levels. But we reserve the right to restrict distribution of the Levels themselves (that are created on codecombat.com) so that they may be charged for in the future, if that's what ends up happening."
|
# nutshell_description: "Any resources we provide in the Level Editor are free to use as you like for creating Levels. But we reserve the right to restrict distribution of the Levels themselves (that are created on codecombat.com) so that they may be charged for in the future, if that's what ends up happening."
|
||||||
# canonical: "The English version of this document is the definitive, canonical version. If there are any discrepencies between translations, the English document takes precedence."
|
canonical: "Die englische Version dieses Dokuments ist die definitive, kanonische Version. Sollte es Unterschiede zwischen den Übersetzungen geben, dann hat das englische Dokument Vorrang."
|
||||||
|
|
||||||
# contribute:
|
# contribute:
|
||||||
# page_title: "Contributing"
|
# page_title: "Contributing"
|
||||||
# character_classes_title: "Character Classes"
|
character_classes_title: "Charakter Klassen"
|
||||||
# introduction_desc_intro: "We have high hopes for CodeCombat."
|
# introduction_desc_intro: "We have high hopes for CodeCombat."
|
||||||
# introduction_desc_pref: "We want to be where programmers of all stripes come to learn and play together, introduce others to the wonderful world of coding, and reflect the best parts of the community. We can't and don't want to do that alone; what makes projects like GitHub, Stack Overflow and Linux great are the people who use them and build on them. To that end, "
|
# introduction_desc_pref: "We want to be where programmers of all stripes come to learn and play together, introduce others to the wonderful world of coding, and reflect the best parts of the community. We can't and don't want to do that alone; what makes projects like GitHub, Stack Overflow and Linux great are the people who use them and build on them. To that end, "
|
||||||
# introduction_desc_github_url: "CodeCombat is totally open source"
|
# introduction_desc_github_url: "CodeCombat is totally open source"
|
||||||
|
@ -728,12 +728,12 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
# counselor_join_desc: "tell us a little about yourself, what you've done and what you'd be interested in doing. We'll put you in our contact list and be in touch when we could use advice (not too often)."
|
# counselor_join_desc: "tell us a little about yourself, what you've done and what you'd be interested in doing. We'll put you in our contact list and be in touch when we could use advice (not too often)."
|
||||||
# more_about_counselor: "Learn More About Becoming a Counselor"
|
# more_about_counselor: "Learn More About Becoming a Counselor"
|
||||||
# changes_auto_save: "Changes are saved automatically when you toggle checkboxes."
|
# changes_auto_save: "Changes are saved automatically when you toggle checkboxes."
|
||||||
# diligent_scribes: "Our Diligent Scribes:"
|
diligent_scribes: "Unsere fleißgen Schreiben:"
|
||||||
# powerful_archmages: "Our Powerful Archmages:"
|
powerful_archmages: "Unsere mächtigen Erzmagier:"
|
||||||
# creative_artisans: "Our Creative Artisans:"
|
creative_artisans: "Unsere kreativen Handwerker:"
|
||||||
# brave_adventurers: "Our Brave Adventurers:"
|
brave_adventurers: "Unsere mutigen Abenteurer:"
|
||||||
# translating_diplomats: "Our Translating Diplomats:"
|
translating_diplomats: "Unsere übersetzenden Diplomaten:"
|
||||||
# helpful_ambassadors: "Our Helpful Ambassadors:"
|
helpful_ambassadors: "Unsere hilfreichen Botschafter:"
|
||||||
|
|
||||||
classes:
|
classes:
|
||||||
archmage_title: "Erzmagier"
|
archmage_title: "Erzmagier"
|
||||||
|
@ -756,18 +756,18 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
my_matches: "Meine Matches"
|
my_matches: "Meine Matches"
|
||||||
simulate: "Simuliere"
|
simulate: "Simuliere"
|
||||||
# simulation_explanation: "By simulating games you can get your game ranked faster!"
|
# simulation_explanation: "By simulating games you can get your game ranked faster!"
|
||||||
# simulate_games: "Simulate Games!"
|
simulate_games: "Simuliere Spiele!"
|
||||||
# simulate_all: "RESET AND SIMULATE GAMES"
|
# simulate_all: "RESET AND SIMULATE GAMES"
|
||||||
# games_simulated_by: "Games simulated by you:"
|
games_simulated_by: "Spiele die durch dich simuliert worden:"
|
||||||
# games_simulated_for: "Games simulated for you:"
|
games_simulated_for: "Spiele die für dich simuliert worden:"
|
||||||
# games_simulated: "Games simulated"
|
games_simulated: "simulierte Spiele"
|
||||||
# games_played: "Games played"
|
games_played: "gespielte Spiele"
|
||||||
# ratio: "Ratio"
|
ratio: "Ratio"
|
||||||
# leaderboard: "Leaderboard"
|
# leaderboard: "Leaderboard"
|
||||||
# battle_as: "Battle as "
|
# battle_as: "Battle as "
|
||||||
# summary_your: "Your "
|
summary_your: "Deine "
|
||||||
# summary_matches: "Matches - "
|
summary_matches: "Matches - "
|
||||||
# summary_wins: " Wins, "
|
summary_wins: " Siege, "
|
||||||
# summary_losses: " Losses"
|
# summary_losses: " Losses"
|
||||||
# rank_no_code: "No New Code to Rank"
|
# rank_no_code: "No New Code to Rank"
|
||||||
# rank_my_game: "Rank My Game!"
|
# rank_my_game: "Rank My Game!"
|
||||||
|
@ -790,8 +790,8 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
warmup: "Aufwärmen"
|
warmup: "Aufwärmen"
|
||||||
vs: "VS"
|
vs: "VS"
|
||||||
# friends_playing: "Friends Playing"
|
# friends_playing: "Friends Playing"
|
||||||
# log_in_for_friends: "Log in to play with your friends!"
|
log_in_for_friends: "Melde dich an um mit deinen Freunden zu spielen!"
|
||||||
# social_connect_blurb: "Connect and play against your friends!"
|
social_connect_blurb: "Verbinde und spiele gegen deine Freunde!"
|
||||||
# invite_friends_to_battle: "Invite your friends to join you in battle!"
|
# invite_friends_to_battle: "Invite your friends to join you in battle!"
|
||||||
# fight: "Fight!"
|
# fight: "Fight!"
|
||||||
# watch_victory: "Watch your victory"
|
# watch_victory: "Watch your victory"
|
||||||
|
@ -801,8 +801,8 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
# tournament_rules: "Tournament Rules"
|
# tournament_rules: "Tournament Rules"
|
||||||
# tournament_blurb: "Write code, collect gold, build armies, crush foes, win prizes, and upgrade your career in our $40,000 Greed tournament! Check out the details"
|
# tournament_blurb: "Write code, collect gold, build armies, crush foes, win prizes, and upgrade your career in our $40,000 Greed tournament! Check out the details"
|
||||||
# tournament_blurb_blog: "on our blog"
|
# tournament_blurb_blog: "on our blog"
|
||||||
# rules: "Rules"
|
rules: "Regeln"
|
||||||
# winners: "Winners"
|
winners: "Gewinner"
|
||||||
|
|
||||||
# ladder_prizes:
|
# ladder_prizes:
|
||||||
# title: "Tournament Prizes"
|
# title: "Tournament Prizes"
|
||||||
|
@ -811,8 +811,8 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
# blurb_3: "to the top human and ogre players."
|
# blurb_3: "to the top human and ogre players."
|
||||||
# blurb_4: "Two teams means double the prizes!"
|
# blurb_4: "Two teams means double the prizes!"
|
||||||
# blurb_5: "(There will be two first place winners, two second-place winners, etc.)"
|
# blurb_5: "(There will be two first place winners, two second-place winners, etc.)"
|
||||||
# rank: "Rank"
|
rank: "Rang"
|
||||||
# prizes: "Prizes"
|
prizes: "Gewinne"
|
||||||
# total_value: "Total Value"
|
# total_value: "Total Value"
|
||||||
# in_cash: "in cash"
|
# in_cash: "in cash"
|
||||||
# custom_wizard: "Custom CodeCombat Wizard"
|
# custom_wizard: "Custom CodeCombat Wizard"
|
||||||
|
@ -838,55 +838,55 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
# new_to_programming: ". New to programming? Hit our beginner campaign to skill up."
|
# new_to_programming: ". New to programming? Hit our beginner campaign to skill up."
|
||||||
# so_ready: "I Am So Ready for This"
|
# so_ready: "I Am So Ready for This"
|
||||||
|
|
||||||
# loading_error:
|
loading_error:
|
||||||
# could_not_load: "Error loading from server"
|
could_not_load: "Fehler beim Laden vom Server"
|
||||||
# connection_failure: "Connection failed."
|
connection_failure: "Verbindung fehlgeschlagen."
|
||||||
# unauthorized: "You need to be signed in. Do you have cookies disabled?"
|
unauthorized: "Du musst angemeldet sein. Hast du Cookies ausgeschaltet?"
|
||||||
# forbidden: "You do not have the permissions."
|
forbidden: "Sie haben nicht die nötigen Berechtigungen."
|
||||||
# not_found: "Not found."
|
not_found: "Nicht gefunden."
|
||||||
# not_allowed: "Method not allowed."
|
not_allowed: "Methode nicht erlaubt."
|
||||||
# timeout: "Server timeout."
|
timeout: "Server timeout."
|
||||||
# conflict: "Resource conflict."
|
conflict: "Resourcen Konflikt."
|
||||||
# bad_input: "Bad input."
|
bad_input: "Falsche Eingabe."
|
||||||
# server_error: "Server error."
|
server_error: "Server Fehler."
|
||||||
# unknown: "Unknown error."
|
unknown: "Unbekannter Fehler."
|
||||||
|
|
||||||
# resources:
|
resources:
|
||||||
# your_sessions: "Your Sessions"
|
your_sessions: "Meine Sessions"
|
||||||
# level: "Level"
|
level: "Level"
|
||||||
# social_network_apis: "Social Network APIs"
|
social_network_apis: "Social Network APIs"
|
||||||
# facebook_status: "Facebook Status"
|
facebook_status: "Facebook Status"
|
||||||
# facebook_friends: "Facebook Friends"
|
facebook_friends: "Facebook Freunde"
|
||||||
# facebook_friend_sessions: "Facebook Friend Sessions"
|
facebook_friend_sessions: "Facebook Freunde Sessions"
|
||||||
# gplus_friends: "G+ Friends"
|
gplus_friends: "G+ Freunde"
|
||||||
# gplus_friend_sessions: "G+ Friend Sessions"
|
gplus_friend_sessions: "G+ Freunde Sessions"
|
||||||
# leaderboard: "Leaderboard"
|
# leaderboard: "Leaderboard"
|
||||||
# user_schema: "User Schema"
|
user_schema: "Benutzerschema"
|
||||||
# user_profile: "User Profile"
|
user_profile: "Benutzerprofil"
|
||||||
# patches: "Patches"
|
# patches: "Patches"
|
||||||
# patched_model: "Source Document"
|
# patched_model: "Source Document"
|
||||||
# model: "Model"
|
model: "Model"
|
||||||
# system: "System"
|
system: "System"
|
||||||
# component: "Component"
|
component: "Komponente"
|
||||||
# components: "Components"
|
components: "Komponenten"
|
||||||
# thang: "Thang"
|
thang: "Thang"
|
||||||
# thangs: "Thangs"
|
thangs: "Thangs"
|
||||||
# level_session: "Your Session"
|
level_session: "Deine Session"
|
||||||
# opponent_session: "Opponent Session"
|
opponent_session: "Gegner-Session"
|
||||||
# article: "Article"
|
article: "Artikel"
|
||||||
# user_names: "User Names"
|
user_names: "Benutzernamen"
|
||||||
# thang_names: "Thang Names"
|
thang_names: "Thang Namen"
|
||||||
# files: "Files"
|
files: "Dateien"
|
||||||
# top_simulators: "Top Simulators"
|
top_simulators: "Top Simulatoren"
|
||||||
# source_document: "Source Document"
|
# source_document: "Source Document"
|
||||||
# document: "Document"
|
document: "Dokument"
|
||||||
# sprite_sheet: "Sprite Sheet"
|
sprite_sheet: "Sprite Sheet"
|
||||||
# candidate_sessions: "Candidate Sessions"
|
candidate_sessions: "Kandidat-Sessions"
|
||||||
|
|
||||||
# delta:
|
delta:
|
||||||
# added: "Added"
|
added: "hinzugefügt"
|
||||||
# modified: "Modified"
|
modified: "modifiziert"
|
||||||
# deleted: "Deleted"
|
deleted: "gelöscht"
|
||||||
# moved_index: "Moved Index"
|
# moved_index: "Moved Index"
|
||||||
# text_diff: "Text Diff"
|
# text_diff: "Text Diff"
|
||||||
# merge_conflict_with: "MERGE CONFLICT WITH"
|
# merge_conflict_with: "MERGE CONFLICT WITH"
|
||||||
|
|
|
@ -193,13 +193,13 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
view_profile: "Voir votre profil"
|
view_profile: "Voir votre profil"
|
||||||
|
|
||||||
account_profile:
|
account_profile:
|
||||||
# settings: "Settings"
|
settings: "Paramètres"
|
||||||
# edit_profile: "Edit Profile"
|
edit_profile: "Editer Profil"
|
||||||
# done_editing: "Done Editing"
|
done_editing: "Modifications effectué"
|
||||||
profile_for_prefix: "Profil pour "
|
profile_for_prefix: "Profil pour "
|
||||||
profile_for_suffix: ""
|
profile_for_suffix: ""
|
||||||
# featured: "Featured"
|
featured: "Complet"
|
||||||
# not_featured: "Not Featured"
|
not_featured: "Incomplet"
|
||||||
looking_for: "à la recherche de:"
|
looking_for: "à la recherche de:"
|
||||||
last_updated: "Dernière Mise à jour:"
|
last_updated: "Dernière Mise à jour:"
|
||||||
contact: "Contact"
|
contact: "Contact"
|
||||||
|
@ -220,7 +220,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
next_photo: "ajouter une photo professionelle (optionnel)."
|
next_photo: "ajouter une photo professionelle (optionnel)."
|
||||||
next_active: "déclarez vous ouvert aux offres pour apparaitre dans les recherches."
|
next_active: "déclarez vous ouvert aux offres pour apparaitre dans les recherches."
|
||||||
example_blog: "Votre blog"
|
example_blog: "Votre blog"
|
||||||
# example_personal_site: "Personal Site"
|
example_personal_site: "Site Web"
|
||||||
links_header: "Liens personnels"
|
links_header: "Liens personnels"
|
||||||
links_blurb: "Lien vers d'autres sites ou profils que vous souhaitez mettre en avant, comme votre GitHub, LinkedIn ou votre blog."
|
links_blurb: "Lien vers d'autres sites ou profils que vous souhaitez mettre en avant, comme votre GitHub, LinkedIn ou votre blog."
|
||||||
links_name: "Nom du lien"
|
links_name: "Nom du lien"
|
||||||
|
@ -448,7 +448,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
av_entities_sub_title: "Entités"
|
av_entities_sub_title: "Entités"
|
||||||
av_entities_users_url: "Utilisateurs"
|
av_entities_users_url: "Utilisateurs"
|
||||||
av_entities_active_instances_url: "Instances actives"
|
av_entities_active_instances_url: "Instances actives"
|
||||||
# av_entities_employer_list_url: "Employer List"
|
av_entities_employer_list_url: "Liste des employés"
|
||||||
av_other_sub_title: "Autre"
|
av_other_sub_title: "Autre"
|
||||||
av_other_debug_base_url: "Base (pour debugger base.jade)"
|
av_other_debug_base_url: "Base (pour debugger base.jade)"
|
||||||
u_title: "Liste des utilisateurs"
|
u_title: "Liste des utilisateurs"
|
||||||
|
@ -653,7 +653,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
introduction_desc_ending: "Nous espérons que vous allez joindre notre aventure!"
|
introduction_desc_ending: "Nous espérons que vous allez joindre notre aventure!"
|
||||||
introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy et Glen"
|
introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy et Glen"
|
||||||
alert_account_message_intro: "Et tiens!"
|
alert_account_message_intro: "Et tiens!"
|
||||||
# alert_account_message: "To subscribe for class emails, you'll need to be logged in first."
|
alert_account_message: "Pour souscrire aux e-mails, vous devez être connecté"
|
||||||
# archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever."
|
# archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever."
|
||||||
archmage_introduction: "L'une des meilleures parties de la création d'un jeu est qu'il regroupe tant de choses différentes. Graphismes, sons, réseau en temps réel, réseaux sociaux, et bien sur bien d'autres aspects de la programmation, de la gestion bas niveau de base de données, et de l'administration de serveur à l'élaboration d'interfaces utilisateur. Il y a tant à faire, et si vous êtes un programmeur expérimenté avec une aspiration à vraiment plonger dans le fond de CodeCombat, cette classe est faite pour vous. Nous aimerions avoir votre aide pour le meilleur jeu de développement de tous les temps."
|
archmage_introduction: "L'une des meilleures parties de la création d'un jeu est qu'il regroupe tant de choses différentes. Graphismes, sons, réseau en temps réel, réseaux sociaux, et bien sur bien d'autres aspects de la programmation, de la gestion bas niveau de base de données, et de l'administration de serveur à l'élaboration d'interfaces utilisateur. Il y a tant à faire, et si vous êtes un programmeur expérimenté avec une aspiration à vraiment plonger dans le fond de CodeCombat, cette classe est faite pour vous. Nous aimerions avoir votre aide pour le meilleur jeu de développement de tous les temps."
|
||||||
class_attributes: "Attributs de classe"
|
class_attributes: "Attributs de classe"
|
||||||
|
@ -860,7 +860,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
# facebook_friend_sessions: "Facebook Friend Sessions"
|
# facebook_friend_sessions: "Facebook Friend Sessions"
|
||||||
# gplus_friends: "G+ Friends"
|
# gplus_friends: "G+ Friends"
|
||||||
# gplus_friend_sessions: "G+ Friend Sessions"
|
# gplus_friend_sessions: "G+ Friend Sessions"
|
||||||
# leaderboard: "Leaderboard"
|
leaderboard: "Classement"
|
||||||
# user_schema: "User Schema"
|
# user_schema: "User Schema"
|
||||||
# user_profile: "User Profile"
|
# user_profile: "User Profile"
|
||||||
patches: "Patchs"
|
patches: "Patchs"
|
||||||
|
|
|
@ -26,14 +26,14 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
||||||
minutes: "percek"
|
minutes: "percek"
|
||||||
hour: "óra"
|
hour: "óra"
|
||||||
hours: "órák"
|
hours: "órák"
|
||||||
# day: "day"
|
day: "nap"
|
||||||
# days: "days"
|
days: "napok"
|
||||||
# week: "week"
|
week: "hét"
|
||||||
# weeks: "weeks"
|
weeks: "hetek"
|
||||||
# month: "month"
|
month: "hónap"
|
||||||
# months: "months"
|
months: "hónapok"
|
||||||
# year: "year"
|
year: "év"
|
||||||
# years: "years"
|
years: "évek"
|
||||||
|
|
||||||
modal:
|
modal:
|
||||||
close: "Mégse"
|
close: "Mégse"
|
||||||
|
|
|
@ -161,7 +161,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
||||||
autosave: "Настройки сохраняются автоматически"
|
autosave: "Настройки сохраняются автоматически"
|
||||||
me_tab: "Я"
|
me_tab: "Я"
|
||||||
picture_tab: "Аватар"
|
picture_tab: "Аватар"
|
||||||
# upload_picture: "Upload a picture"
|
upload_picture: "Загрузить изображение"
|
||||||
wizard_tab: "Волшебник"
|
wizard_tab: "Волшебник"
|
||||||
password_tab: "Пароль"
|
password_tab: "Пароль"
|
||||||
emails_tab: "Email-адреса"
|
emails_tab: "Email-адреса"
|
||||||
|
@ -175,9 +175,9 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
||||||
email_notifications: "Уведомления"
|
email_notifications: "Уведомления"
|
||||||
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
|
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
|
||||||
# email_any_notes: "Any Notifications"
|
# email_any_notes: "Any Notifications"
|
||||||
# email_any_notes_description: "Disable to stop all activity notification emails."
|
email_any_notes_description: "Отключите, чтобы больше не получать извещения."
|
||||||
# email_recruit_notes: "Job Opportunities"
|
email_recruit_notes: "Возможности для работы"
|
||||||
# email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job."
|
email_recruit_notes_description: "Если вы действительно хорошо играете, то мы можем связаться с вами для предложения (лучшей) работы."
|
||||||
contributor_emails: "Рассылки по классам участников"
|
contributor_emails: "Рассылки по классам участников"
|
||||||
contribute_prefix: "Нам нужны люди, которые присоединятся к нашей команде! Зайдите на "
|
contribute_prefix: "Нам нужны люди, которые присоединятся к нашей команде! Зайдите на "
|
||||||
contribute_page: "страницу участников,"
|
contribute_page: "страницу участников,"
|
||||||
|
@ -206,9 +206,9 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
||||||
# active: "Looking for interview offers now"
|
# active: "Looking for interview offers now"
|
||||||
# inactive: "Not looking for offers right now"
|
# inactive: "Not looking for offers right now"
|
||||||
# complete: "complete"
|
# complete: "complete"
|
||||||
# next: "Next"
|
next: "Далее"
|
||||||
# next_city: "city?"
|
next_city: "Город?"
|
||||||
# next_country: "pick your country."
|
next_country: "Выберите вашу страну."
|
||||||
# next_name: "name?"
|
# next_name: "name?"
|
||||||
# next_short_description: "write a short description."
|
# next_short_description: "write a short description."
|
||||||
# next_long_description: "describe your desired position."
|
# next_long_description: "describe your desired position."
|
||||||
|
@ -333,7 +333,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
||||||
multiplayer: "Мультиплеер"
|
multiplayer: "Мультиплеер"
|
||||||
restart: "Перезапустить"
|
restart: "Перезапустить"
|
||||||
goals: "Цели"
|
goals: "Цели"
|
||||||
# success: "Success!"
|
success: "Успешно!"
|
||||||
# incomplete: "Incomplete"
|
# incomplete: "Incomplete"
|
||||||
# timed_out: "Ran out of time"
|
# timed_out: "Ran out of time"
|
||||||
# failing: "Failing"
|
# failing: "Failing"
|
||||||
|
@ -358,7 +358,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
||||||
multiplayer_hint_label: "Подсказка: "
|
multiplayer_hint_label: "Подсказка: "
|
||||||
multiplayer_hint: "кликните на ссылку, чтобы выделить её, затем нажмите ⌘-С или Ctrl-C, чтобы скопировать."
|
multiplayer_hint: "кликните на ссылку, чтобы выделить её, затем нажмите ⌘-С или Ctrl-C, чтобы скопировать."
|
||||||
multiplayer_coming_soon: "Больше возможностей мультиплеера на подходе!"
|
multiplayer_coming_soon: "Больше возможностей мультиплеера на подходе!"
|
||||||
# multiplayer_sign_in_leaderboard: "Sign in or create an account and get your solution on the leaderboard."
|
multiplayer_sign_in_leaderboard: "Войдите или создайте аккаунт, чтобы ваше решение оказалось в таблице лидеров."
|
||||||
guide_title: "Руководство"
|
guide_title: "Руководство"
|
||||||
tome_minion_spells: "Заклинания ваших миньонов"
|
tome_minion_spells: "Заклинания ваших миньонов"
|
||||||
tome_read_only_spells: "Заклинания только для чтения"
|
tome_read_only_spells: "Заклинания только для чтения"
|
||||||
|
@ -375,9 +375,9 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
||||||
skip_tutorial: "Пропуск (Esc)"
|
skip_tutorial: "Пропуск (Esc)"
|
||||||
editor_config: "Настройки редактора"
|
editor_config: "Настройки редактора"
|
||||||
editor_config_title: "Настройки редактора"
|
editor_config_title: "Настройки редактора"
|
||||||
# editor_config_level_language_label: "Language for This Level"
|
editor_config_level_language_label: "Язык для этого уровня"
|
||||||
# editor_config_level_language_description: "Define the programming language for this particular level."
|
# editor_config_level_language_description: "Define the programming language for this particular level."
|
||||||
# editor_config_default_language_label: "Default Programming Language"
|
editor_config_default_language_label: "Язык по умолчанию"
|
||||||
# editor_config_default_language_description: "Define the programming language you want to code in when starting new levels."
|
# editor_config_default_language_description: "Define the programming language you want to code in when starting new levels."
|
||||||
editor_config_keybindings_label: "Сочетания клавиш"
|
editor_config_keybindings_label: "Сочетания клавиш"
|
||||||
editor_config_keybindings_default: "По умолчанию (Ace)"
|
editor_config_keybindings_default: "По умолчанию (Ace)"
|
||||||
|
@ -388,7 +388,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
||||||
editor_config_indentguides_description: "Отображение вертикальных линий для лучшего обзора отступов."
|
editor_config_indentguides_description: "Отображение вертикальных линий для лучшего обзора отступов."
|
||||||
editor_config_behaviors_label: "Умное поведение"
|
editor_config_behaviors_label: "Умное поведение"
|
||||||
editor_config_behaviors_description: "Автозавершать квадратные, фигурные скобки и кавычки."
|
editor_config_behaviors_description: "Автозавершать квадратные, фигурные скобки и кавычки."
|
||||||
# keyboard_shortcuts: "Key Shortcuts"
|
keyboard_shortcuts: "Горячие клавиши"
|
||||||
loading_ready: "Готово!"
|
loading_ready: "Готово!"
|
||||||
tip_insert_positions: "Shift+Клик по карте вставит координаты в редактор заклинаний."
|
tip_insert_positions: "Shift+Клик по карте вставит координаты в редактор заклинаний."
|
||||||
tip_toggle_play: "Переключайте воспроизведение/паузу комбинацией Ctrl+P."
|
tip_toggle_play: "Переключайте воспроизведение/паузу комбинацией Ctrl+P."
|
||||||
|
@ -425,12 +425,12 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
||||||
infinite_loop_reset_level: "Сбросить уровень"
|
infinite_loop_reset_level: "Сбросить уровень"
|
||||||
infinite_loop_comment_out: "Закомментировать мой код"
|
infinite_loop_comment_out: "Закомментировать мой код"
|
||||||
|
|
||||||
# keyboard_shortcuts:
|
keyboard_shortcuts:
|
||||||
# keyboard_shortcuts: "Keyboard Shortcuts"
|
keyboard_shortcuts: "Горячие клавиши"
|
||||||
# space: "Space"
|
space: "Пробел"
|
||||||
# enter: "Enter"
|
enter: "Enter"
|
||||||
# escape: "Escape"
|
escape: "Escape"
|
||||||
# cast_spell: "Cast current spell."
|
cast_spell: "Произнести текущее заклинание."
|
||||||
# continue_script: "Continue past current script."
|
# continue_script: "Continue past current script."
|
||||||
# skip_scripts: "Skip past all skippable scripts."
|
# skip_scripts: "Skip past all skippable scripts."
|
||||||
# toggle_playback: "Toggle play/pause."
|
# toggle_playback: "Toggle play/pause."
|
||||||
|
@ -471,7 +471,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
||||||
thang_description: "Создавайте юнитов, определяйте их логику по умолчанию, графику и звук. В настоящий момент поддерживается импорт только векторной графики Flash."
|
thang_description: "Создавайте юнитов, определяйте их логику по умолчанию, графику и звук. В настоящий момент поддерживается импорт только векторной графики Flash."
|
||||||
level_title: "Редактор уровней"
|
level_title: "Редактор уровней"
|
||||||
level_description: "Включает в себя инструменты для написания сценариев, загрузки аудио и построения собственной логики для создания всевозможных уровней. Всё, что мы используем сами!"
|
level_description: "Включает в себя инструменты для написания сценариев, загрузки аудио и построения собственной логики для создания всевозможных уровней. Всё, что мы используем сами!"
|
||||||
# achievement_title: "Achievement Editor"
|
achievement_title: "Редактор достижений"
|
||||||
got_questions: "Вопросы по использованию редакторов CodeCombat?"
|
got_questions: "Вопросы по использованию редакторов CodeCombat?"
|
||||||
contact_us: "свяжитесь с нами!"
|
contact_us: "свяжитесь с нами!"
|
||||||
hipchat_prefix: "Также вы можете найти нас в нашей"
|
hipchat_prefix: "Также вы можете найти нас в нашей"
|
||||||
|
@ -522,7 +522,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
||||||
article_search_title: "Искать статьи"
|
article_search_title: "Искать статьи"
|
||||||
thang_search_title: "Искать типы объектов"
|
thang_search_title: "Искать типы объектов"
|
||||||
level_search_title: "Искать уровни"
|
level_search_title: "Искать уровни"
|
||||||
# achievement_search_title: "Search Achievements"
|
achievement_search_title: "Искать достижения"
|
||||||
read_only_warning2: "Примечание: вы не можете сохранять любые правки здесь, потому что вы не авторизованы."
|
read_only_warning2: "Примечание: вы не можете сохранять любые правки здесь, потому что вы не авторизованы."
|
||||||
|
|
||||||
article:
|
article:
|
||||||
|
@ -653,7 +653,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
||||||
introduction_desc_ending: "Мы надеемся, что вы присоединитесь к нашей команде!"
|
introduction_desc_ending: "Мы надеемся, что вы присоединитесь к нашей команде!"
|
||||||
introduction_desc_signature: "- Ник, Джордж, Скотт, Михаэль, Джереми и Глен"
|
introduction_desc_signature: "- Ник, Джордж, Скотт, Михаэль, Джереми и Глен"
|
||||||
alert_account_message_intro: "Привет!"
|
alert_account_message_intro: "Привет!"
|
||||||
# alert_account_message: "To subscribe for class emails, you'll need to be logged in first."
|
alert_account_message: "Чтобы подписаться на классовые сообщения, необходимо войти в аккаунт"
|
||||||
archmage_summary: "Интересует работа над игровой графикой, дизайном пользовательского интерфейса, базой данных и организацией сервера, сетевым мультиплеером, физикой, звуком или производительностью игрового движка? Хотите помочь создать игру для помощи другим людям в изучении того, в чём вы хорошо разбираетесь? У нас много работы, и если вы опытный программист и хотите разрабатывать для CodeCombat, этот класс для вас. Мы будем рады вашей помощи в создании самой лучшей игры для программистов."
|
archmage_summary: "Интересует работа над игровой графикой, дизайном пользовательского интерфейса, базой данных и организацией сервера, сетевым мультиплеером, физикой, звуком или производительностью игрового движка? Хотите помочь создать игру для помощи другим людям в изучении того, в чём вы хорошо разбираетесь? У нас много работы, и если вы опытный программист и хотите разрабатывать для CodeCombat, этот класс для вас. Мы будем рады вашей помощи в создании самой лучшей игры для программистов."
|
||||||
archmage_introduction: "Одна из лучших черт в создании игр - то, что они синтезируют так много различных вещей. Графика, звук, сетевое взаимодействие в режиме реального времени, социальное сетевое взаимодействие, и, конечно, большинство из более распространённых аспектов программирования, от низкоуровневого управления базами данных и администрирования сервера до построения дизайна и интерфейсов, видимых пользователю. У нас много работы, и если вы опытный программист со страстным желанием погрузиться в действительно мельчайшие детали CodeCombat, этот класс для вас. Мы будем рады вашей помощи в создании самой лучшей игры для программистов."
|
archmage_introduction: "Одна из лучших черт в создании игр - то, что они синтезируют так много различных вещей. Графика, звук, сетевое взаимодействие в режиме реального времени, социальное сетевое взаимодействие, и, конечно, большинство из более распространённых аспектов программирования, от низкоуровневого управления базами данных и администрирования сервера до построения дизайна и интерфейсов, видимых пользователю. У нас много работы, и если вы опытный программист со страстным желанием погрузиться в действительно мельчайшие детали CodeCombat, этот класс для вас. Мы будем рады вашей помощи в создании самой лучшей игры для программистов."
|
||||||
class_attributes: "Атрибуты класса"
|
class_attributes: "Атрибуты класса"
|
||||||
|
|
|
@ -7,8 +7,8 @@ module.exports =
|
||||||
type: "object"
|
type: "object"
|
||||||
properties: # TODO
|
properties: # TODO
|
||||||
joined:
|
joined:
|
||||||
type: "boolean"
|
type: ["boolean", "null"]
|
||||||
players:
|
players:
|
||||||
type: "object"
|
type: "object"
|
||||||
required: ["joined", "players"]
|
required: ["joined", "players"]
|
||||||
additionalProperties: false
|
additionalProperties: true
|
||||||
|
|
|
@ -33,7 +33,7 @@ module.exports =
|
||||||
type: "object"
|
type: "object"
|
||||||
properties:
|
properties:
|
||||||
message:
|
message:
|
||||||
type: "string"
|
type: "object"
|
||||||
bus:
|
bus:
|
||||||
$ref: "bus"
|
$ref: "bus"
|
||||||
|
|
||||||
|
|
14
app/styles/demo.sass
Normal file
14
app/styles/demo.sass
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#demo-view
|
||||||
|
margin: 0 20px
|
||||||
|
|
||||||
|
h2
|
||||||
|
background: #add8e6
|
||||||
|
font-family: Arial, Geneva, sans-serif
|
||||||
|
padding: 20px
|
||||||
|
font-weight: bold
|
||||||
|
|
||||||
|
#demo-wrapper
|
||||||
|
width: 78%
|
||||||
|
|
||||||
|
#demo-nav
|
||||||
|
width: 20%
|
|
@ -63,6 +63,7 @@
|
||||||
td:nth-child(7) select
|
td:nth-child(7) select
|
||||||
min-width: 100px
|
min-width: 100px
|
||||||
|
|
||||||
|
#employers-view, #profile-view.viewed-by-employer
|
||||||
#outer-content-wrapper, #intermediate-content-wrapper, #inner-content-wrapper
|
#outer-content-wrapper, #intermediate-content-wrapper, #inner-content-wrapper
|
||||||
background: #949494
|
background: #949494
|
||||||
|
|
||||||
|
|
22
app/templates/demo.jade
Normal file
22
app/templates/demo.jade
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
h2 Demo Page
|
||||||
|
|
||||||
|
ol.breadcrumb
|
||||||
|
for path in parentFolders
|
||||||
|
li
|
||||||
|
a(href=path.url)= path.name
|
||||||
|
li.active= currentFolder
|
||||||
|
|
||||||
|
.well.pull-left#demo-wrapper
|
||||||
|
#demo-area
|
||||||
|
|
||||||
|
.nav.nav-pills.nav-stacked.pull-right.well#demo-nav
|
||||||
|
for child in children
|
||||||
|
li(class=child.type)
|
||||||
|
a(href=child.url).small
|
||||||
|
if child.type == 'folder'
|
||||||
|
span.glyphicon.glyphicon-folder-close
|
||||||
|
else
|
||||||
|
span.glyphicon.glyphicon-file
|
||||||
|
span.spl= child.name
|
||||||
|
if child.type == 'folder'
|
||||||
|
strong (#{child.size})
|
88
app/views/DemoView.coffee
Normal file
88
app/views/DemoView.coffee
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
CocoView = require 'views/kinds/CocoView'
|
||||||
|
template = require 'templates/demo'
|
||||||
|
requireUtils = require 'lib/requireUtils'
|
||||||
|
|
||||||
|
DEMO_REQUIRE_PREFIX = 'test/demo/'
|
||||||
|
DEMO_URL_PREFIX = '/demo/'
|
||||||
|
|
||||||
|
###
|
||||||
|
What are demo files?
|
||||||
|
|
||||||
|
They could be a function which returns an element to insert into the demo page.
|
||||||
|
But what about demoing achievements? They'll get put into the main html. Or modals.
|
||||||
|
Well, I was thinking that a single folder would show all demos at the same time, line them up.
|
||||||
|
But it'd be confusing to have a whole bunch of achievement demos show up all at the same time?
|
||||||
|
Maybe there could be a button to show all the demos. Hmm, that'd be cool.
|
||||||
|
It could work like Jasmine, where it modifies the path and so when you select to run them, they all run with page reloads.
|
||||||
|
I think for now, I'll just say: have it be a function which we can run anytime.
|
||||||
|
It may or may not return an element to be inserted into the main area.
|
||||||
|
|
||||||
|
Another idea. Do we want root views to just take over the full view?
|
||||||
|
Or should they just go into the central part?
|
||||||
|
Probably should take over the full view, and if you want to get out of the demo, you navigate back.
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
module.exports = DemoView = class DemoView extends CocoView
|
||||||
|
id: "demo-view"
|
||||||
|
template: template
|
||||||
|
|
||||||
|
# INITIALIZE
|
||||||
|
|
||||||
|
constructor: (options, @subPath='') ->
|
||||||
|
super(options)
|
||||||
|
@subPath = @subPath[1..] if @subPath[0] is '/'
|
||||||
|
@loadDemoingLibs() unless DemoView.loaded
|
||||||
|
|
||||||
|
loadDemoingLibs: ->
|
||||||
|
@queue = new createjs.LoadQueue()
|
||||||
|
@queue.on('complete', @scriptsLoaded, @)
|
||||||
|
window.jasmine = {} # so that mock-ajax properly loads. It expects jasmine to be loaded
|
||||||
|
for f in ['mock-ajax', 'demo-app']
|
||||||
|
@queue.loadFile({
|
||||||
|
src: "/javascripts/#{f}.js"
|
||||||
|
type: createjs.LoadQueue.JAVASCRIPT
|
||||||
|
})
|
||||||
|
|
||||||
|
scriptsLoaded: ->
|
||||||
|
@initDemoFiles()
|
||||||
|
@children = requireUtils.parseImmediateChildren(@demoFiles, @subPath, DEMO_REQUIRE_PREFIX, DEMO_URL_PREFIX)
|
||||||
|
@render()
|
||||||
|
@runDemo()
|
||||||
|
|
||||||
|
# RENDER DATA
|
||||||
|
|
||||||
|
getRenderData: ->
|
||||||
|
c = super(arguments...)
|
||||||
|
c.parentFolders = requireUtils.getParentFolders(@subPath, DEMO_URL_PREFIX)
|
||||||
|
c.children = @children or []
|
||||||
|
parts = @subPath.split('/')
|
||||||
|
c.currentFolder = parts[parts.length-1] or parts[parts.length-2] or 'All'
|
||||||
|
c
|
||||||
|
|
||||||
|
# RUNNING DEMOS
|
||||||
|
|
||||||
|
initDemoFiles: ->
|
||||||
|
@demoFiles = @getAllDemoFiles()
|
||||||
|
if @subPath
|
||||||
|
prefix = DEMO_REQUIRE_PREFIX + @subPath
|
||||||
|
@demoFiles = (f for f in @demoFiles when f.startsWith prefix)
|
||||||
|
|
||||||
|
runDemo: ->
|
||||||
|
# TODO: Maybe have an option to run all demos in this folder at the same time?
|
||||||
|
return unless @subPath and _.last(@subPath.split('/')).indexOf('.demo') > -1
|
||||||
|
requirePath = DEMO_REQUIRE_PREFIX + @subPath
|
||||||
|
demoFunc = require requirePath
|
||||||
|
if not _.isFunction(demoFunc)
|
||||||
|
console.error "Demo files must export a function. #{requirePath} does not."
|
||||||
|
return
|
||||||
|
|
||||||
|
jasmine.Ajax.install()
|
||||||
|
view = demoFunc()
|
||||||
|
return unless view
|
||||||
|
@$el.find('#demo-area').empty().append(view.$el)
|
||||||
|
# TODO, maybe handle root views differently than modal views differently than everything else?
|
||||||
|
|
||||||
|
getAllDemoFiles: ->
|
||||||
|
allFiles = window.require.list()
|
||||||
|
(f for f in allFiles when f.indexOf('.demo') > -1)
|
|
@ -1,7 +1,9 @@
|
||||||
CocoView = require 'views/kinds/CocoView'
|
CocoView = require 'views/kinds/CocoView'
|
||||||
template = require 'templates/test'
|
template = require 'templates/test'
|
||||||
|
requireUtils = require 'lib/requireUtils'
|
||||||
|
|
||||||
TEST_BASE_PATH = 'test/app/'
|
TEST_REQUIRE_PREFIX = 'test/app/'
|
||||||
|
TEST_URL_PREFIX = '/test/'
|
||||||
|
|
||||||
module.exports = TestView = class TestView extends CocoView
|
module.exports = TestView = class TestView extends CocoView
|
||||||
id: "test-view"
|
id: "test-view"
|
||||||
|
@ -13,7 +15,7 @@ module.exports = TestView = class TestView extends CocoView
|
||||||
constructor: (options, @subPath='') ->
|
constructor: (options, @subPath='') ->
|
||||||
super(options)
|
super(options)
|
||||||
@subPath = @subPath[1..] if @subPath[0] is '/'
|
@subPath = @subPath[1..] if @subPath[0] is '/'
|
||||||
@loadTestingLibs() unless TestView.loaded
|
@loadTestingLibs()
|
||||||
|
|
||||||
loadTestingLibs: ->
|
loadTestingLibs: ->
|
||||||
@queue = new createjs.LoadQueue()
|
@queue = new createjs.LoadQueue()
|
||||||
|
@ -28,72 +30,24 @@ module.exports = TestView = class TestView extends CocoView
|
||||||
@initSpecFiles()
|
@initSpecFiles()
|
||||||
@render()
|
@render()
|
||||||
TestView.runTests(@specFiles)
|
TestView.runTests(@specFiles)
|
||||||
|
window.runJasmine()
|
||||||
|
|
||||||
# RENDER DATA
|
# RENDER DATA
|
||||||
|
|
||||||
getRenderData: ->
|
getRenderData: ->
|
||||||
c = super(arguments...)
|
c = super(arguments...)
|
||||||
c.parentFolders = @getParentFolders()
|
c.parentFolders = requireUtils.getParentFolders(@subPath, TEST_URL_PREFIX)
|
||||||
c.children = @getChildren()
|
c.children = requireUtils.parseImmediateChildren(@specFiles, @subPath, TEST_REQUIRE_PREFIX, TEST_URL_PREFIX)
|
||||||
parts = @subPath.split('/')
|
parts = @subPath.split('/')
|
||||||
c.currentFolder = parts[parts.length-1] or parts[parts.length-2] or 'All'
|
c.currentFolder = parts[parts.length-1] or parts[parts.length-2] or 'All'
|
||||||
c
|
c
|
||||||
|
|
||||||
getParentFolders: ->
|
|
||||||
return [] unless @subPath
|
|
||||||
paths = []
|
|
||||||
parts = @subPath.split('/')
|
|
||||||
while parts.length
|
|
||||||
parts.pop()
|
|
||||||
paths.unshift {
|
|
||||||
name: parts[parts.length-1] or 'All'
|
|
||||||
url: '/test/' + parts.join('/')
|
|
||||||
}
|
|
||||||
paths
|
|
||||||
|
|
||||||
getChildren: ->
|
|
||||||
return [] unless @specFiles
|
|
||||||
folders = {}
|
|
||||||
files = {}
|
|
||||||
|
|
||||||
requirePrefix = TEST_BASE_PATH + @subPath
|
|
||||||
if requirePrefix[requirePrefix.length-1] isnt '/'
|
|
||||||
requirePrefix += '/'
|
|
||||||
|
|
||||||
for f in @specFiles
|
|
||||||
f = f[requirePrefix.length..]
|
|
||||||
continue unless f
|
|
||||||
parts = f.split('/')
|
|
||||||
name = parts[0]
|
|
||||||
group = if parts.length is 1 then files else folders
|
|
||||||
group[name] ?= 0
|
|
||||||
group[name] += 1
|
|
||||||
|
|
||||||
children = []
|
|
||||||
urlPrefix = '/test/'+@subPath
|
|
||||||
urlPrefix += '/' if urlPrefix[urlPrefix.length-1] isnt '/'
|
|
||||||
|
|
||||||
for name in _.keys(folders)
|
|
||||||
children.push {
|
|
||||||
type:'folder',
|
|
||||||
url: urlPrefix+name
|
|
||||||
name: name+'/'
|
|
||||||
size: folders[name]
|
|
||||||
}
|
|
||||||
for name in _.keys(files)
|
|
||||||
children.push {
|
|
||||||
type:'file',
|
|
||||||
url: urlPrefix+name
|
|
||||||
name: name
|
|
||||||
}
|
|
||||||
children
|
|
||||||
|
|
||||||
# RUNNING TESTS
|
# RUNNING TESTS
|
||||||
|
|
||||||
initSpecFiles: ->
|
initSpecFiles: ->
|
||||||
@specFiles = TestView.getAllSpecFiles()
|
@specFiles = TestView.getAllSpecFiles()
|
||||||
if @subPath
|
if @subPath
|
||||||
prefix = TEST_BASE_PATH + @subPath
|
prefix = TEST_REQUIRE_PREFIX + @subPath
|
||||||
@specFiles = (f for f in @specFiles when f.startsWith prefix)
|
@specFiles = (f for f in @specFiles when f.startsWith prefix)
|
||||||
|
|
||||||
@runTests: (specFiles) ->
|
@runTests: (specFiles) ->
|
|
@ -233,6 +233,8 @@ module.exports = class ProfileView extends View
|
||||||
|
|
||||||
afterRender: ->
|
afterRender: ->
|
||||||
super()
|
super()
|
||||||
|
if me.get('employerAt')
|
||||||
|
@$el.addClass 'viewed-by-employer'
|
||||||
return unless @user
|
return unless @user
|
||||||
unless @user.get('jobProfile')?.projects?.length or @editing
|
unless @user.get('jobProfile')?.projects?.length or @editing
|
||||||
@$el.find('.right-column').hide()
|
@$el.find('.right-column').hide()
|
||||||
|
@ -269,6 +271,9 @@ module.exports = class ProfileView extends View
|
||||||
active = not @user.get('jobProfile').active
|
active = not @user.get('jobProfile').active
|
||||||
@user.get('jobProfile').active = active
|
@user.get('jobProfile').active = active
|
||||||
@saveEdits()
|
@saveEdits()
|
||||||
|
if active and not (me.isAdmin() or @stackLed)
|
||||||
|
$.post "/stacklead"
|
||||||
|
@stackLed = true
|
||||||
|
|
||||||
enterEspionageMode: ->
|
enterEspionageMode: ->
|
||||||
postData = emailLower: @user.get('email').toLowerCase(), usernameLower: @user.get('name').toLowerCase()
|
postData = emailLower: @user.get('email').toLowerCase(), usernameLower: @user.get('name').toLowerCase()
|
||||||
|
|
|
@ -121,6 +121,7 @@ module.exports = class EmployerSignupView extends View
|
||||||
message: "THIS IS AN AUTOMATED MESSAGE FROM THE EMPLOYER SIGNUP FORM \n Please send me more info about hiring CodeCombat players."
|
message: "THIS IS AN AUTOMATED MESSAGE FROM THE EMPLOYER SIGNUP FORM \n Please send me more info about hiring CodeCombat players."
|
||||||
success: successFunc
|
success: successFunc
|
||||||
error: errorFunc
|
error: errorFunc
|
||||||
|
$.post "/stacklead", email: emailAddress
|
||||||
|
|
||||||
setHashToOpenModalAutomatically: (e) ->
|
setHashToOpenModalAutomatically: (e) ->
|
||||||
window.location.hash = "employerSignupLoggingIn"
|
window.location.hash = "employerSignupLoggingIn"
|
||||||
|
|
|
@ -25,7 +25,11 @@ module.exports = class Spell
|
||||||
teamSpells = @session.get('teamSpells')
|
teamSpells = @session.get('teamSpells')
|
||||||
team = @session.get('team') ? 'humans'
|
team = @session.get('team') ? 'humans'
|
||||||
@useTranspiledCode = @permissions.readwrite.length and ((teamSpells and not _.contains(teamSpells[team], @spellKey)) or (@session.get('creator') isnt me.id and not (me.isAdmin() or 'employer' in me.get('permissions'))) or @spectateView)
|
@useTranspiledCode = @permissions.readwrite.length and ((teamSpells and not _.contains(teamSpells[team], @spellKey)) or (@session.get('creator') isnt me.id and not (me.isAdmin() or 'employer' in me.get('permissions'))) or @spectateView)
|
||||||
#console.log @spellKey, "using transpiled code?", @useTranspiledCode
|
if @useTranspiledCode
|
||||||
|
console.log "#{@spellKey} is using transpiled code because permissions.readwrite is #{@permissions.readwrite}
|
||||||
|
#{if @spectateView then ', we are spectating' else ''}
|
||||||
|
#{if teamSpells and not _.contains(teamSpells[team], @spellKey) then ', teamSpells[' + team + '] does not have ' + @spellKey + ' (just ' + teamSpells[team] + ')' else ''}
|
||||||
|
#{if @session.get('creator') isnt me.id then ', and the session was created by ' + @session.get('creator') + ' but I am ' + me.id else ''}"
|
||||||
@source = @originalSource = p.source
|
@source = @originalSource = p.source
|
||||||
@parameters = p.parameters
|
@parameters = p.parameters
|
||||||
if @permissions.readwrite.length and sessionSource = @session.getSourceFor(@spellKey)
|
if @permissions.readwrite.length and sessionSource = @session.getSourceFor(@spellKey)
|
||||||
|
|
|
@ -35,7 +35,8 @@ exports.config =
|
||||||
(bower_components[\/\\]aether[\/\\]build[\/\\]aether.js)
|
(bower_components[\/\\]aether[\/\\]build[\/\\]aether.js)
|
||||||
)///
|
)///
|
||||||
'javascripts/test-app.js': /^test[\/\\]app/
|
'javascripts/test-app.js': /^test[\/\\]app/
|
||||||
# 'test/javascripts/test-vendor.js': /^test[\/\\](?=vendor)/
|
'javascripts/demo-app.js': /^test[\/\\]demo/
|
||||||
|
|
||||||
order:
|
order:
|
||||||
before: [
|
before: [
|
||||||
'bower_components/jquery/dist/jquery.js'
|
'bower_components/jquery/dist/jquery.js'
|
||||||
|
|
14
multicore.coffee
Normal file
14
multicore.coffee
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
cluster = require 'cluster'
|
||||||
|
numCPUs = require('os').cpus().length
|
||||||
|
|
||||||
|
if cluster.isMaster
|
||||||
|
for i in [0...numCPUs]
|
||||||
|
cluster.fork()
|
||||||
|
cluster.on 'exit', (worker, code, signal) ->
|
||||||
|
console.log 'worker' + worker.process.id + 'died'
|
||||||
|
cluster.fork()
|
||||||
|
else
|
||||||
|
require('coffee-script')
|
||||||
|
require('coffee-script/register')
|
||||||
|
server = require('./server')
|
||||||
|
server.startServer()
|
|
@ -33,7 +33,6 @@ class SystemConfiguration(object):
|
||||||
return 64
|
return 64
|
||||||
else:
|
else:
|
||||||
if self.operating_system == u"mac":
|
if self.operating_system == u"mac":
|
||||||
raise NotSupportedError(u"Your processor is determined to have a maxSize of" + sys.maxsize +
|
raise NotSupportedError(u"Your processor is determined to have a maxSize of" + str(sys.maxsize) +
|
||||||
u",\n which doesn't correspond with a 64-bit architecture.")
|
u",\n which doesn't correspond with a 64-bit architecture.")
|
||||||
return 32
|
return 32
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,6 @@ module.exports.gatewayTimeoutError = (res, message="Gateway timeout") ->
|
||||||
res.send 504, message
|
res.send 504, message
|
||||||
res.end()
|
res.end()
|
||||||
|
|
||||||
module.exports.clientTimeout = (res, message="The server did not recieve the client response in a timely manner") ->
|
module.exports.clientTimeout = (res, message="The server did not receive the client response in a timely manner") ->
|
||||||
res.send 408, message
|
res.send 408, message
|
||||||
res.end()
|
res.end()
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
module.exports.handlers =
|
module.exports.handlers =
|
||||||
'article': 'articles/article_handler'
|
'article': 'articles/article_handler'
|
||||||
'level': 'levels/level_handler'
|
'level': 'levels/level_handler'
|
||||||
|
@ -24,4 +23,5 @@ module.exports.routes =
|
||||||
'routes/mail'
|
'routes/mail'
|
||||||
'routes/sprites'
|
'routes/sprites'
|
||||||
'routes/queue'
|
'routes/queue'
|
||||||
|
'routes/stacklead'
|
||||||
]
|
]
|
||||||
|
|
32
server/routes/stacklead.coffee
Normal file
32
server/routes/stacklead.coffee
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
config = require '../../server_config'
|
||||||
|
request = require 'request'
|
||||||
|
log = require 'winston'
|
||||||
|
|
||||||
|
module.exports.setup = (app) ->
|
||||||
|
app.post '/stacklead', (req, res) ->
|
||||||
|
return res.end() unless req.user
|
||||||
|
email = req.body.email or req.user.get 'email'
|
||||||
|
sendStackLead email, req.user
|
||||||
|
return res.end()
|
||||||
|
|
||||||
|
module.exports.sendStackLead = sendStackLead = (email, user) ->
|
||||||
|
return unless key = config.mail.stackleadAPIKey
|
||||||
|
form = email: email, api_key: key
|
||||||
|
if user
|
||||||
|
form.first_name = firstName if firstName = user.get('firstName')
|
||||||
|
form.last_name = lastName if lastName = user.get('lastName')
|
||||||
|
if profile = user.get 'jobProfile'
|
||||||
|
form.name = name if name = profile.name
|
||||||
|
form.location = location if location = profile.city
|
||||||
|
form.location = location if location = profile.city
|
||||||
|
for link in (profile.links ? [])
|
||||||
|
form.linkedin = link.link if /linkedin/.test link.link
|
||||||
|
form.twitter = link.link if /twitter/.test link.link
|
||||||
|
form.company = company if company = profile.work?[0]?.employer
|
||||||
|
if linkedIn = user.get('signedEmployerAgreement')?.data
|
||||||
|
form.first_name = data.firstName if data.firstName
|
||||||
|
form.last_name = data.lastName if data.lastName
|
||||||
|
form.linkedin = data.publicProfileUrl if data.publicProfileUrl
|
||||||
|
data.company = company if company = data.positions?.values?[0]?.company?.name
|
||||||
|
request.post {uri: "https://stacklead.com/api/leads", form: form}, (err, res, body) ->
|
||||||
|
return log.error "Error sending StackLead request:", err or body if err or /error/.test body
|
|
@ -26,6 +26,7 @@ config.mail =
|
||||||
mailchimpAPIKey: process.env.COCO_MAILCHIMP_API_KEY or ""
|
mailchimpAPIKey: process.env.COCO_MAILCHIMP_API_KEY or ""
|
||||||
mailchimpWebhook: process.env.COCO_MAILCHIMP_WEBHOOK or "/mail/webhook"
|
mailchimpWebhook: process.env.COCO_MAILCHIMP_WEBHOOK or "/mail/webhook"
|
||||||
sendwithusAPIKey: process.env.COCO_SENDWITHUS_API_KEY or ""
|
sendwithusAPIKey: process.env.COCO_SENDWITHUS_API_KEY or ""
|
||||||
|
stackleadAPIKey: process.env.COCO_STACKLEAD_API_KEY or ""
|
||||||
cronHandlerPublicIP: process.env.COCO_CRON_PUBLIC_IP or ""
|
cronHandlerPublicIP: process.env.COCO_CRON_PUBLIC_IP or ""
|
||||||
cronHandlerPrivateIP: process.env.COCO_CRON_PRIVATE_IP or ""
|
cronHandlerPrivateIP: process.env.COCO_CRON_PRIVATE_IP or ""
|
||||||
|
|
||||||
|
|
43
test/demo/views/editor/PatchesView.demo.coffee
Normal file
43
test/demo/views/editor/PatchesView.demo.coffee
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
PatchesView = require 'views/editor/patches_view'
|
||||||
|
CocoModel = require 'models/CocoModel'
|
||||||
|
|
||||||
|
class BlandModel extends CocoModel
|
||||||
|
@className: 'Bland'
|
||||||
|
@schema: {
|
||||||
|
type: 'object'
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
number: {type: 'number'}
|
||||||
|
object: {type: 'object'}
|
||||||
|
string: {type: 'string'}
|
||||||
|
_id: {type: 'string'}
|
||||||
|
}
|
||||||
|
urlRoot: '/db/bland'
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = ->
|
||||||
|
model = new BlandModel({_id:'12345', name:'name', original:'original'})
|
||||||
|
v = new PatchesView(model)
|
||||||
|
v.load()
|
||||||
|
|
||||||
|
# Respond to request for pending patches.
|
||||||
|
r = jasmine.Ajax.requests.mostRecent()
|
||||||
|
patches = [
|
||||||
|
{
|
||||||
|
delta: null
|
||||||
|
commitMessage: 'Demo message'
|
||||||
|
creator: '12345'
|
||||||
|
created: "2014-01-01T12:00:00.000Z"
|
||||||
|
status: 'pending'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
r.response({ status:200, responseText: JSON.stringify patches })
|
||||||
|
|
||||||
|
# Respond to request for user ids -> names
|
||||||
|
r = jasmine.Ajax.requests.mostRecent()
|
||||||
|
names = { '12345': { name: 'Patchman' } }
|
||||||
|
r.response({ status:200, responseText: JSON.stringify names })
|
||||||
|
|
||||||
|
v.render()
|
||||||
|
v
|
||||||
|
|
2
vendor/scripts/string_score.js
vendored
2
vendor/scripts/string_score.js
vendored
|
@ -124,7 +124,7 @@
|
||||||
//final_score = (word_score + abbreviation_score) / 2;
|
//final_score = (word_score + abbreviation_score) / 2;
|
||||||
final_score = ((abbreviation_score * (abbreviation_length / string_length)) + abbreviation_score) / 2;
|
final_score = ((abbreviation_score * (abbreviation_length / string_length)) + abbreviation_score) / 2;
|
||||||
|
|
||||||
final_score = final_score / fuzzies;
|
final_score /= fuzzies;
|
||||||
|
|
||||||
if (start_of_string_bonus && (final_score + 0.15 < 1)) {
|
if (start_of_string_bonus && (final_score + 0.15 < 1)) {
|
||||||
final_score += 0.15;
|
final_score += 0.15;
|
||||||
|
|
Loading…
Reference in a new issue