mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-26 22:13:32 -04:00
Tweaked how the I18N editor works to guard against garbage English submissions and make the chosen language more consistent.
This commit is contained in:
parent
b018746565
commit
790217f227
7 changed files with 34 additions and 13 deletions
app
styles/common
templates/i18n
views/i18n
server
|
@ -147,6 +147,7 @@
|
|||
width: 1024px
|
||||
border: 5px solid rgb(110,88,41)
|
||||
padding: 20px 12px
|
||||
min-height: 300px
|
||||
|
||||
|
||||
//- Footer
|
||||
|
|
|
@ -1,23 +1,26 @@
|
|||
extends /templates/base
|
||||
|
||||
block content
|
||||
.progress
|
||||
.progress-bar.progress-bar-info(role="progressbar" aria-valuenow=progress aria-valuemin="0" aria-valuemax="100" style="width: "+progress+"%")= progress+"%"
|
||||
if selectedLanguage
|
||||
.progress
|
||||
.progress-bar.progress-bar-info(role="progressbar" aria-valuenow=progress aria-valuemin="0" aria-valuemax="100" style="width: "+progress+"%")= progress+"%"
|
||||
|
||||
table.table.table-condensed
|
||||
tr
|
||||
th
|
||||
select#language-select.form-control.input-sm
|
||||
option(value='') Select one...
|
||||
|
||||
th Type
|
||||
th Specifically Covered
|
||||
th Generally Covered
|
||||
|
||||
for model in collection.models
|
||||
tr
|
||||
td
|
||||
a(href=model.i18nURLBase+model.get('slug'))= model.get('name')
|
||||
td= model.constructor.className
|
||||
td(class=model.specificallyCovered ? 'success' : 'danger')= model.specificallyCovered ? 'Yes' : 'No'
|
||||
td(class=model.generallyCovered ? 'success' : 'danger')= model.generallyCovered ? 'Yes' : 'No'
|
||||
|
||||
if selectedLanguage
|
||||
for model in collection.models
|
||||
tr
|
||||
td
|
||||
a(href=model.i18nURLBase+model.get('slug'))= model.get('name')
|
||||
td= model.constructor.className
|
||||
td(class=model.specificallyCovered ? 'success' : 'danger')= model.specificallyCovered ? 'Yes' : 'No'
|
||||
td(class=model.generallyCovered ? 'success' : 'danger')= model.generallyCovered ? 'Yes' : 'No'
|
||||
|
||||
|
|
|
@ -47,6 +47,7 @@ module.exports = class I18NEditModelView extends RootView
|
|||
@hush = true
|
||||
$select = @$el.find('#language-select').empty()
|
||||
@addLanguagesToSelect($select, @selectedLanguage)
|
||||
@$el.find('option[value="en-US"]').remove()
|
||||
@hush = false
|
||||
editors = []
|
||||
|
||||
|
@ -123,6 +124,9 @@ module.exports = class I18NEditModelView extends RootView
|
|||
onLanguageSelectChanged: (e) ->
|
||||
return if @hush
|
||||
@selectedLanguage = $(e.target).val()
|
||||
if @selectedLanguage
|
||||
me.set('preferredLanguage', @selectedLanguage)
|
||||
me.patch()
|
||||
@render()
|
||||
|
||||
onSubmitPatch: (e) ->
|
||||
|
|
|
@ -19,7 +19,7 @@ module.exports = class I18NHomeView extends RootView
|
|||
|
||||
constructor: (options) ->
|
||||
super(options)
|
||||
@selectedLanguage = me.get('preferredLanguage', true)
|
||||
@selectedLanguage = me.get('preferredLanguage') or ''
|
||||
|
||||
#-
|
||||
@aggregateModels = new Backbone.Collection()
|
||||
|
@ -92,7 +92,12 @@ module.exports = class I18NHomeView extends RootView
|
|||
afterRender: ->
|
||||
super()
|
||||
@addLanguagesToSelect(@$el.find('#language-select'), @selectedLanguage)
|
||||
@$el.find('option[value="en-US"]').remove()
|
||||
|
||||
onLanguageSelectChanged: (e) ->
|
||||
@selectedLanguage = $(e.target).val()
|
||||
if @selectedLanguage
|
||||
# simplest solution, see if this actually ends up being not what people want
|
||||
me.set('preferredLanguage', @selectedLanguage)
|
||||
me.patch()
|
||||
@render()
|
||||
|
|
|
@ -48,7 +48,13 @@ module.exports = class Handler
|
|||
flattened = deltasLib.flattenDelta(delta)
|
||||
_.all flattened, (delta) ->
|
||||
# sometimes coverage gets moved around... allow other changes to happen to i18nCoverage
|
||||
return _.isArray(delta.o) and (('i18n' in delta.dataPath and delta.o.length is 1) or 'i18nCoverage' in delta.dataPath)
|
||||
return false unless _.isArray(delta.o)
|
||||
return true if 'i18nCoverage' in delta.dataPath
|
||||
return false unless delta.o.length is 1
|
||||
index = delta.deltaPath.indexOf('i18n')
|
||||
return false if index is -1
|
||||
return false if delta.deltaPath[index+1] is 'en-US'
|
||||
return true
|
||||
|
||||
formatEntity: (req, document) -> document?.toObject()
|
||||
getEditableProperties: (req, document) ->
|
||||
|
|
|
@ -310,6 +310,7 @@ LevelHandler = class LevelHandler extends Handler
|
|||
@sendSuccess res, data
|
||||
|
||||
hasAccessToDocument: (req, document, method=null) ->
|
||||
method ?= req.method
|
||||
return true if method is null or method is 'get'
|
||||
super(req, document, method)
|
||||
|
||||
|
|
|
@ -192,7 +192,8 @@ module.exports.loginUser = loginUser = (req, res, user, send=true, next=null) ->
|
|||
module.exports.makeNewUser = makeNewUser = (req) ->
|
||||
user = new User({anonymous: true})
|
||||
user.set 'testGroupNumber', Math.floor(Math.random() * 256) # also in app/lib/auth
|
||||
user.set 'preferredLanguage', languages.languageCodeFromAcceptedLanguages req.acceptedLanguages
|
||||
lang = languages.languageCodeFromAcceptedLanguages req.acceptedLanguages
|
||||
user.set 'preferredLanguage', lang if lang[...2] isnt 'en'
|
||||
user.set 'lastIP', req.connection.remoteAddress
|
||||
|
||||
createMailOptions = (receiver, password) ->
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue