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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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