mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-05-04 18:03:45 -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
|
width: 1024px
|
||||||
border: 5px solid rgb(110,88,41)
|
border: 5px solid rgb(110,88,41)
|
||||||
padding: 20px 12px
|
padding: 20px 12px
|
||||||
|
min-height: 300px
|
||||||
|
|
||||||
|
|
||||||
//- Footer
|
//- Footer
|
||||||
|
|
|
@ -1,23 +1,26 @@
|
||||||
extends /templates/base
|
extends /templates/base
|
||||||
|
|
||||||
block content
|
block content
|
||||||
.progress
|
if selectedLanguage
|
||||||
.progress-bar.progress-bar-info(role="progressbar" aria-valuenow=progress aria-valuemin="0" aria-valuemax="100" style="width: "+progress+"%")= progress+"%"
|
.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
|
table.table.table-condensed
|
||||||
tr
|
tr
|
||||||
th
|
th
|
||||||
select#language-select.form-control.input-sm
|
select#language-select.form-control.input-sm
|
||||||
|
option(value='') Select one...
|
||||||
|
|
||||||
th Type
|
th Type
|
||||||
th Specifically Covered
|
th Specifically Covered
|
||||||
th Generally Covered
|
th Generally Covered
|
||||||
|
|
||||||
for model in collection.models
|
if selectedLanguage
|
||||||
tr
|
for model in collection.models
|
||||||
td
|
tr
|
||||||
a(href=model.i18nURLBase+model.get('slug'))= model.get('name')
|
td
|
||||||
td= model.constructor.className
|
a(href=model.i18nURLBase+model.get('slug'))= model.get('name')
|
||||||
td(class=model.specificallyCovered ? 'success' : 'danger')= model.specificallyCovered ? 'Yes' : 'No'
|
td= model.constructor.className
|
||||||
td(class=model.generallyCovered ? 'success' : 'danger')= model.generallyCovered ? 'Yes' : 'No'
|
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
|
@hush = true
|
||||||
$select = @$el.find('#language-select').empty()
|
$select = @$el.find('#language-select').empty()
|
||||||
@addLanguagesToSelect($select, @selectedLanguage)
|
@addLanguagesToSelect($select, @selectedLanguage)
|
||||||
|
@$el.find('option[value="en-US"]').remove()
|
||||||
@hush = false
|
@hush = false
|
||||||
editors = []
|
editors = []
|
||||||
|
|
||||||
|
@ -123,6 +124,9 @@ module.exports = class I18NEditModelView extends RootView
|
||||||
onLanguageSelectChanged: (e) ->
|
onLanguageSelectChanged: (e) ->
|
||||||
return if @hush
|
return if @hush
|
||||||
@selectedLanguage = $(e.target).val()
|
@selectedLanguage = $(e.target).val()
|
||||||
|
if @selectedLanguage
|
||||||
|
me.set('preferredLanguage', @selectedLanguage)
|
||||||
|
me.patch()
|
||||||
@render()
|
@render()
|
||||||
|
|
||||||
onSubmitPatch: (e) ->
|
onSubmitPatch: (e) ->
|
||||||
|
|
|
@ -19,7 +19,7 @@ module.exports = class I18NHomeView extends RootView
|
||||||
|
|
||||||
constructor: (options) ->
|
constructor: (options) ->
|
||||||
super(options)
|
super(options)
|
||||||
@selectedLanguage = me.get('preferredLanguage', true)
|
@selectedLanguage = me.get('preferredLanguage') or ''
|
||||||
|
|
||||||
#-
|
#-
|
||||||
@aggregateModels = new Backbone.Collection()
|
@aggregateModels = new Backbone.Collection()
|
||||||
|
@ -92,7 +92,12 @@ module.exports = class I18NHomeView extends RootView
|
||||||
afterRender: ->
|
afterRender: ->
|
||||||
super()
|
super()
|
||||||
@addLanguagesToSelect(@$el.find('#language-select'), @selectedLanguage)
|
@addLanguagesToSelect(@$el.find('#language-select'), @selectedLanguage)
|
||||||
|
@$el.find('option[value="en-US"]').remove()
|
||||||
|
|
||||||
onLanguageSelectChanged: (e) ->
|
onLanguageSelectChanged: (e) ->
|
||||||
@selectedLanguage = $(e.target).val()
|
@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()
|
@render()
|
||||||
|
|
|
@ -48,7 +48,13 @@ module.exports = class Handler
|
||||||
flattened = deltasLib.flattenDelta(delta)
|
flattened = deltasLib.flattenDelta(delta)
|
||||||
_.all flattened, (delta) ->
|
_.all flattened, (delta) ->
|
||||||
# sometimes coverage gets moved around... allow other changes to happen to i18nCoverage
|
# 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()
|
formatEntity: (req, document) -> document?.toObject()
|
||||||
getEditableProperties: (req, document) ->
|
getEditableProperties: (req, document) ->
|
||||||
|
|
|
@ -310,6 +310,7 @@ LevelHandler = class LevelHandler extends Handler
|
||||||
@sendSuccess res, data
|
@sendSuccess res, data
|
||||||
|
|
||||||
hasAccessToDocument: (req, document, method=null) ->
|
hasAccessToDocument: (req, document, method=null) ->
|
||||||
|
method ?= req.method
|
||||||
return true if method is null or method is 'get'
|
return true if method is null or method is 'get'
|
||||||
super(req, document, method)
|
super(req, document, method)
|
||||||
|
|
||||||
|
|
|
@ -192,7 +192,8 @@ module.exports.loginUser = loginUser = (req, res, user, send=true, next=null) ->
|
||||||
module.exports.makeNewUser = makeNewUser = (req) ->
|
module.exports.makeNewUser = makeNewUser = (req) ->
|
||||||
user = new User({anonymous: true})
|
user = new User({anonymous: true})
|
||||||
user.set 'testGroupNumber', Math.floor(Math.random() * 256) # also in app/lib/auth
|
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
|
user.set 'lastIP', req.connection.remoteAddress
|
||||||
|
|
||||||
createMailOptions = (receiver, password) ->
|
createMailOptions = (receiver, password) ->
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue