This commit is contained in:
Nick Winter 2014-07-16 07:54:23 -07:00
commit 1fd28c0181
4 changed files with 62 additions and 57 deletions

View file

@ -186,6 +186,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
# error_saving: "Error Saving"
# saved: "Changes Saved"
# password_mismatch: "Password does not match."
# password_repeat: "Please repeat your password."
# job_profile: "Job Profile"
# 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."

View file

@ -475,33 +475,33 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
lg_title: "Últimos Jogos"
# clas: "CLAs"
# community:
# level_editor: "Level Editor"
# main_title: "CodeCombat Community"
# facebook: "Facebook"
# twitter: "Twitter"
# gplus: "Google+"
community:
level_editor: "Editor de Níveis"
main_title: "Comunidade do CodeCombat"
facebook: "Facebook"
twitter: "Twitter"
gplus: "Google+"
editor:
main_title: "Editores para CodeCombat"
main_description: "Constrói os teus níveis, campanhas, unidades e conteúdo educacional. Nós fornecemos todas as ferramentas que precisas!"
main_title: "Editores do CodeCombat"
main_description: "Construa os seus próprios níveis, campanhas, unidades e conteúdo educacional. Nós fornecemos todas as ferramentas de que precisa!"
article_title: "Editor de Artigos"
article_description: "Escreve artigos que dêem aos jogadores uma visão geral dos conceitos de programação que podem ser usados nos mais diversos níveis e campanhas."
thang_title: "Editor de Thang"
thang_description: "Constrói unidades, definindo a sua logica, visual e audio por defeito. De momento só é suportado 'importing Flash exported vector graphics'."
level_title: "Editor de níveis"
level_description: "Inclui ferramentas para a criação de scripts, upload de áudio, e construção de lógica personalizada para criar todos os tipos de níveis. Tudo o que nós usamos!"
# achievement_title: "Achievement Editor"
# got_questions: "Questions about using the CodeCombat editors?"
contact_us: "contacta-nos!"
hipchat_prefix: "Podes encontrar-nos no nosso"
hipchat_url: "canal HipChat."
article_description: "Escreva artigos que deem aos jogadores visões gerais de conceitos da programação, que podem ser usados numa variedade de níveis e campanhas."
thang_title: "Editor de Thangs"
thang_description: "Construa unidades, definindo a lógica, o visual e o áudio delas. De momento só é suportada a importação de visuais vetoriais exportados do Flash."
level_title: "Editor de Níveis"
level_description: "Inclui as ferramentas para criar scripts, importar áudio e construir lógica personalizada para criar todos os tipos de níveis. Tudo o que nós usamos!"
achievement_title: "Editor de Conquistas"
got_questions: "Questões sobre o uso dos editores do CodeCombat?"
contact_us: "Contacte-nos!"
hipchat_prefix: "Pode também encontrar-nos na nossa"
hipchat_url: "sala HipChat."
# back: "Back"
revert: "Reverter"
revert_models: "Reverter Modelos"
# pick_a_terrain: "Pick A Terrain"
# small: "Small"
# grassy: "Grassy"
pick_a_terrain: "Escolha Um Terreno"
small: "Pequeno"
grassy: "Com Relva"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
@ -514,10 +514,10 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
level_tab_settings: "Configurações"
level_tab_components: "Componentes"
level_tab_systems: "Sistemas"
level_tab_thangs_title: "Thangs atuais"
# level_tab_thangs_all: "All"
level_tab_thangs_conditions: "Condições iniciais"
level_tab_thangs_add: "Adiciona Thangs"
level_tab_thangs_title: "Thangs Atuais"
level_tab_thangs_all: "Todos"
level_tab_thangs_conditions: "Condições Iniciais"
level_tab_thangs_add: "Adicionar Thangs"
# delete: "Delete"
# duplicate: "Duplicate"
level_settings_title: "Configurações"
@ -544,13 +544,13 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
# new_achievement_title: "Create a New Achievement"
# new_achievement_title_login: "Log In to Create a New Achievement"
article_search_title: "Procurar Artigos Aqui"
thang_search_title: "Procurar Tipos de Thang Aqui"
thang_search_title: "Procurar Thangs Aqui"
level_search_title: "Procurar Níveis Aqui"
# achievement_search_title: "Search Achievements"
# read_only_warning2: "Note: you can't save any edits here, because you're not logged in."
article:
edit_btn_preview: "Visualizar"
edit_btn_preview: "Pré-visualizar"
edit_article_title: "Editar Artigo"
general:
@ -581,7 +581,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
easy: "Fácil"
medium: "Médio"
hard: "Difícil"
# player: "Player"
player: "Jogador"
# about:
# who_is_codecombat: "Who is CodeCombat?"
@ -667,8 +667,8 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
# 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."
# contribute:
# page_title: "Contributing"
contribute:
page_title: "Contribuir"
# character_classes_title: "Character Classes"
# 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, "
@ -691,7 +691,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
# join_desc_4: "and we'll go from there!"
# join_url_email: "Email us"
# join_url_hipchat: "public HipChat room"
# more_about_archmage: "Learn More About Becoming an Archmage"
more_about_archmage: "Aprenda Mais Sobre Tornar-se um Arcomago"
# archmage_subscribe_desc: "Get emails on new coding opportunities and announcements."
# artisan_summary_pref: "Want to design levels and expand CodeCombat's arsenal? People are playing through our content at a pace faster than we can build! Right now, our level editor is barebone, so be wary. Making levels will be a little challenging and buggy. If you have visions of campaigns spanning for-loops to"
# artisan_summary_suf: ", then this class is for you."
@ -705,7 +705,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
# artisan_join_step2: "Create a new level and explore existing levels."
# artisan_join_step3: "Find us in our public HipChat room for help."
# artisan_join_step4: "Post your levels on the forum for feedback."
# more_about_artisan: "Learn More About Becoming an Artisan"
more_about_artisan: "Aprenda Mais Sobre Tornar-se um Artesão"
# artisan_subscribe_desc: "Get emails on level editor updates and announcements."
# adventurer_summary: "Let us be clear about your role: you are the tank. You are going to take heavy damage. We need people to try out brand-new levels and help identify how to make things better. The pain will be enormous; making good games is a long process and no one gets it right the first time. If you can endure and have a high constitution score, then this class is for you."
# adventurer_introduction: "Let's be clear about your role: you are the tank. You're going to take heavy damage. We need people to try out brand-new levels and help identify how to make things better. The pain will be enormous; making good games is a long process and no one gets it right the first time. If you can endure and have a high constitution score, then this class might be for you."
@ -714,7 +714,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
# adventurer_join_pref: "Either get together with (or recruit!) an Artisan and work with them, or check the box below to receive emails when there are new levels to test. We'll also be posting about levels to review on our networks like"
# adventurer_forum_url: "our forum"
# adventurer_join_suf: "so if you prefer to be notified those ways, sign up there!"
# more_about_adventurer: "Learn More About Becoming an Adventurer"
more_about_adventurer: "Aprenda Mais Sobre Tornar-se um Aventureiro"
# adventurer_subscribe_desc: "Get emails when there are new levels to test."
# scribe_summary_pref: "CodeCombat is not just going to be a bunch of levels. It will also be a resource of programming knowledge that players can hook into. That way, each Artisan can link to a detailed article that for the player's edification: documentation akin to what the "
# scribe_summary_suf: " has built. If you enjoy explaining programming concepts, then this class is for you."
@ -724,7 +724,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
# scribe_attribute_1: "Skill in words is pretty much all you need. Not only grammar and spelling, but able to convey complicated ideas to others."
# contact_us_url: "Contact us"
# scribe_join_description: "tell us a little about yourself, your experience with programming and what sort of things you'd like to write about. We'll go from there!"
# more_about_scribe: "Learn More About Becoming a Scribe"
more_about_scribe: "Aprenda Mais Sobre Tornar-se um Escrivão"
# scribe_subscribe_desc: "Get emails about article writing announcements."
# diplomat_summary: "There is a large interest in CodeCombat in other countries that do not speak English! We are looking for translators who are willing to spend their time translating the site's corpus of words so that CodeCombat is accessible across the world as soon as possible. If you'd like to help getting CodeCombat international, then this class is for you."
# diplomat_introduction_pref: "So, if there's one thing we learned from the "
@ -734,7 +734,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
# diplomat_join_pref_github: "Find your language locale file "
# diplomat_github_url: "on GitHub"
# diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!"
# more_about_diplomat: "Learn More About Becoming a Diplomat"
more_about_diplomat: "Aprenda Mais Sobre Tornar-se um Diplomata"
# diplomat_subscribe_desc: "Get emails about i18n developments and levels to translate."
# ambassador_summary: "We are trying to build a community, and every community needs a support team when there are troubles. We have got chats, emails, and social networks so that our users can get acquainted with the game. If you want to help people get involved, have fun, and learn some programming, then this class is for you."
# ambassador_introduction: "This is a community we're building, and you are the connections. We've got Olark chats, emails, and social networks with lots of people to talk with and help get acquainted with the game and learn from. If you want to help people get involved and have fun, and get a good feel of the pulse of CodeCombat and where we're going, then this class might be for you."
@ -742,7 +742,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
# ambassador_join_desc: "tell us a little about yourself, what you've done and what you'd be interested in doing. We'll go from there!"
# ambassador_join_note_strong: "Note"
# ambassador_join_note_desc: "One of our top priorities is to build multiplayer where players having difficulty solving levels can summon higher level wizards to help them. This will be a great way for ambassadors to do their thing. We'll keep you posted!"
# more_about_ambassador: "Learn More About Becoming an Ambassador"
more_about_ambassador: "Aprenda Mais Sobre Tornar-se um Embaixador"
# ambassador_subscribe_desc: "Get emails on support updates and multiplayer developments."
# counselor_summary: "None of the above roles fit what you are interested in? Do not worry, we are on the lookout for anybody who wants a hand in the development of CodeCombat! If you are interested in teaching, game development, open source management, or anything else that you think will be relevant to us, then this class is for you."
# counselor_introduction_1: "Do you have life experience? A different perspective on things that can help us decide how to shape CodeCombat? Of all these roles, this will probably take the least time, but individually you may make the most difference. We're on the lookout for wisened sages, particularly in areas like: teaching, game development, open source project management, technical recruiting, entrepreneurship, or design."
@ -752,16 +752,16 @@ module.exports = nativeDescription: "Português (Portugal)", 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)."
# more_about_counselor: "Learn More About Becoming a Counselor"
# changes_auto_save: "Changes are saved automatically when you toggle checkboxes."
# diligent_scribes: "Our Diligent Scribes:"
# powerful_archmages: "Our Powerful Archmages:"
# creative_artisans: "Our Creative Artisans:"
# brave_adventurers: "Our Brave Adventurers:"
# translating_diplomats: "Our Translating Diplomats:"
# helpful_ambassadors: "Our Helpful Ambassadors:"
diligent_scribes: "Os Nossos Dedicados Escrivões:"
powerful_archmages: "Os Nossos Poderosos Arcomagos:"
creative_artisans: "Os Nossos Creativos Artesãos:"
brave_adventurers: "Os Nossos Bravos Aventureiros:"
translating_diplomats: "Os Nossos Tradutores Diplomatas:"
helpful_ambassadors: "Os Nossos Prestáveis Embaixadores:"
classes:
# archmage_title: "Archmage"
# archmage_title_description: "(Coder)"
archmage_title: "Arcomago"
archmage_title_description: "(Programador)"
artisan_title: "Artesão"
artisan_title_description: "(Construtor de Níveis)"
adventurer_title: "Aventureiro"
@ -772,8 +772,8 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
diplomat_title_description: "(Tradutor)"
ambassador_title: "Embaixador"
ambassador_title_description: "(Suporte)"
counselor_title: "Conselheiro"
counselor_title_description: "(Especialista/Professor)"
# counselor_title: "Counselor"
# counselor_title_description: "(Expert/Teacher)"
ladder:
please_login: "Por favor, faz log in antes de jogar um jogo para o campeonato."

View file

@ -87,23 +87,25 @@ module.exports = class SettingsView extends View
# make sure errors show up in the general pane, but keep the password pane clean
$('#password-pane input').val('')
@save() unless $(e.target).attr('href') is '#password-pane'
#@save() unless $(e.target).attr('href') is '#password-pane'
forms.clearFormAlerts($('#password-pane', @$el))
)
@chooseTab(location.hash.replace('#', ''))
wizardSettingsView = new WizardSettingsView()
@listenTo wizardSettingsView, 'change', @save
@listenTo wizardSettingsView, 'change', @enableSaveButton
@insertSubView wizardSettingsView
@jobProfileView = new JobProfileView()
@listenTo @jobProfileView, 'change', @save
@listenTo @jobProfileView, 'change', @enableSaveButton
@insertSubView @jobProfileView
_.defer => @buildPictureTreema() # Not sure why, but the Treemas don't fully build without this if you reload the page.
afterInsert: ->
super()
$('#email-pane input[type="checkbox"]').on 'change', ->
$(@).addClass 'changed'
if me.get('anonymous')
@openModalView new AuthModalView()
@updateSavedValues()
@ -159,7 +161,7 @@ module.exports = class SettingsView extends View
@$el.find('.gravatar-fallback').toggle not me.get 'photoURL'
save: (e) ->
$(e.target).addClass('changed') if e
$('#settings-tabs input').removeClass 'changed'
forms.clearFormAlerts(@$el)
@grabData()
res = me.validate()
@ -182,7 +184,7 @@ module.exports = class SettingsView extends View
res.success (model, response, options) =>
@changedFields = []
@updateSavedValues()
save.text($.i18n.t('account_settings.saved', defaultValue: 'Changes Saved')).removeClass('btn-success', 500)
save.text($.i18n.t('account_settings.saved', defaultValue: 'Changes Saved')).removeClass('btn-success', 500).attr('disabled', 'true')
grabData: ->
@grabPasswordData()
@ -199,6 +201,10 @@ module.exports = class SettingsView extends View
return
if bothThere
me.set('password', password1)
else if password1
message = $.i18n.t('account_settings.password_repeat', defaultValue: 'Please repeat your password.')
err = [message: message, property: 'password2', formatted: true]
forms.applyErrorsToForm(@$el, err)
grabOtherData: ->
$('#name', @$el).val @suggestedName if @suggestedName
@ -217,7 +223,7 @@ module.exports = class SettingsView extends View
jobProfile = me.get('jobProfile') ? {}
updated = false
for key, val of @jobProfileView.getData()
updated = updated or jobProfile[key] isnt val
updated = updated or not _.isEqual jobProfile[key], val
jobProfile[key] = val
if updated
jobProfile.updated = (new Date()).toISOString()

View file

@ -157,12 +157,10 @@ module.exports.setup = (app) ->
res.send msg + '<p><a href="/account/settings">Account settings</a></p>'
res.end()
app.get '/auth/name/?*', (req, res) ->
app.get '/auth/name*', (req, res) ->
parts = req.path.split '/'
console.log parts
originalName = parts[3]
return errors.badInput res, 'No name provided.' unless originalName and originalName isnt ''
originalName = decodeURI parts[3]
return errors.badInput res, 'No name provided.' unless parts.length > 3 and originalName? and originalName isnt ''
return errors.notFound res if parts.length isnt 4
User.unconflictName originalName, (err, name) ->