Tweaked how the I18N editor works to guard against garbage English submissions and make the chosen language more consistent.

This commit is contained in:
Scott Erickson 2014-11-25 16:20:41 -08:00
parent b018746565
commit 790217f227
7 changed files with 34 additions and 13 deletions

View file

@ -147,6 +147,7 @@
width: 1024px
border: 5px solid rgb(110,88,41)
padding: 20px 12px
min-height: 300px
//- Footer

View file

@ -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'

View file

@ -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) ->

View file

@ -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()

View file

@ -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) ->

View file

@ -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)

View file

@ -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) ->