Small refactoring.
This commit is contained in:
parent
77a1fedd58
commit
b31cae00fe
1 changed files with 75 additions and 119 deletions
|
@ -14,7 +14,7 @@ class Index extends App.ControllerContent
|
||||||
@locale = App.i18n.get()
|
@locale = App.i18n.get()
|
||||||
@render()
|
@render()
|
||||||
@bind(
|
@bind(
|
||||||
'i18n:translation_update',
|
'i18n:translation_update_todo i18n:translation_update_list i18n:translation_update',
|
||||||
=>
|
=>
|
||||||
@load()
|
@load()
|
||||||
)
|
)
|
||||||
|
@ -57,8 +57,10 @@ class Index extends App.ControllerContent
|
||||||
|
|
||||||
if !@translationToDo
|
if !@translationToDo
|
||||||
@translationToDo = new TranslationToDo(
|
@translationToDo = new TranslationToDo(
|
||||||
el: @$('.js-ToDo')
|
el: @$('.js-ToDo')
|
||||||
locale: @locale
|
locale: @locale
|
||||||
|
updateOnServer: @updateOnServer
|
||||||
|
getAttributes: @getAttributes
|
||||||
)
|
)
|
||||||
@translationToDo.update(
|
@translationToDo.update(
|
||||||
stringsNotTranslated: @stringsNotTranslated
|
stringsNotTranslated: @stringsNotTranslated
|
||||||
|
@ -67,8 +69,10 @@ class Index extends App.ControllerContent
|
||||||
)
|
)
|
||||||
if !@translationList
|
if !@translationList
|
||||||
@translationList = new TranslationList(
|
@translationList = new TranslationList(
|
||||||
el: @$('.js-List')
|
el: @$('.js-List')
|
||||||
locale: @locale
|
locale: @locale
|
||||||
|
updateOnServer: @updateOnServer
|
||||||
|
getAttributes: @getAttributes
|
||||||
)
|
)
|
||||||
@translationList.update(
|
@translationList.update(
|
||||||
stringsNotTranslated: @stringsNotTranslated
|
stringsNotTranslated: @stringsNotTranslated
|
||||||
|
@ -86,7 +90,6 @@ class Index extends App.ControllerContent
|
||||||
console.log('rr')
|
console.log('rr')
|
||||||
if @translationList.changes()
|
if @translationList.changes()
|
||||||
App.Delay.set(rerender, 400)
|
App.Delay.set(rerender, 400)
|
||||||
console.log('111', @translationList.changes())
|
|
||||||
|
|
||||||
hideAction: =>
|
hideAction: =>
|
||||||
@el.closest('.content').find('.js-changes').addClass('hidden')
|
@el.closest('.content').find('.js-changes').addClass('hidden')
|
||||||
|
@ -97,7 +100,6 @@ class Index extends App.ControllerContent
|
||||||
message: 'Pushing translations to i18n.zammad.com'
|
message: 'Pushing translations to i18n.zammad.com'
|
||||||
container: @el.closest('.content')
|
container: @el.closest('.content')
|
||||||
)
|
)
|
||||||
|
|
||||||
@ajax(
|
@ajax(
|
||||||
id: 'translations'
|
id: 'translations'
|
||||||
type: 'PUT'
|
type: 'PUT'
|
||||||
|
@ -118,7 +120,6 @@ class Index extends App.ControllerContent
|
||||||
message: 'Reseting changes...'
|
message: 'Reseting changes...'
|
||||||
container: @el.closest('.content')
|
container: @el.closest('.content')
|
||||||
)
|
)
|
||||||
|
|
||||||
@ajax(
|
@ajax(
|
||||||
id: 'translations'
|
id: 'translations'
|
||||||
type: 'POST'
|
type: 'POST'
|
||||||
|
@ -139,7 +140,6 @@ class Index extends App.ControllerContent
|
||||||
message: 'Getting latest translations from i18n.zammad.com'
|
message: 'Getting latest translations from i18n.zammad.com'
|
||||||
container: @el.closest('.content')
|
container: @el.closest('.content')
|
||||||
)
|
)
|
||||||
|
|
||||||
hide = =>
|
hide = =>
|
||||||
App.Event.trigger('i18n:translation_update')
|
App.Event.trigger('i18n:translation_update')
|
||||||
@hideAction()
|
@hideAction()
|
||||||
|
@ -164,6 +164,44 @@ class Index extends App.ControllerContent
|
||||||
@_syncChanges(locale, locales, loader, hide)
|
@_syncChanges(locale, locales, loader, hide)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
updateOnServer: (params, event) =>
|
||||||
|
|
||||||
|
# update runtime if same language is used
|
||||||
|
if App.i18n.get() is params.locale
|
||||||
|
App.i18n.setMap(params.source, params.target, params.format)
|
||||||
|
|
||||||
|
# remove not needed attributes
|
||||||
|
delete params.field
|
||||||
|
|
||||||
|
if params.id
|
||||||
|
method = 'PUT'
|
||||||
|
url = "#{@apiPath}/translations/#{params.id}"
|
||||||
|
else
|
||||||
|
method = 'POST'
|
||||||
|
url = "#{@apiPath}/translations"
|
||||||
|
|
||||||
|
@ajax(
|
||||||
|
id: 'translations'
|
||||||
|
type: method
|
||||||
|
url: url
|
||||||
|
data: JSON.stringify(params)
|
||||||
|
processData: false
|
||||||
|
success: (data, status, xhr) ->
|
||||||
|
if event
|
||||||
|
App.Event.trigger(event)
|
||||||
|
)
|
||||||
|
|
||||||
|
getAttributes: (e) =>
|
||||||
|
field = $(e.target).closest('tr').find('.js-Item')
|
||||||
|
params =
|
||||||
|
id: field.data('id')
|
||||||
|
source: field.data('source')
|
||||||
|
format: field.data('format') || 'string'
|
||||||
|
initial: field.data('initial') || ''
|
||||||
|
target: field.val()
|
||||||
|
locale: @locale
|
||||||
|
field: field
|
||||||
|
|
||||||
class TranslationToDo extends App.Controller
|
class TranslationToDo extends App.Controller
|
||||||
events:
|
events:
|
||||||
'click .js-create': 'create'
|
'click .js-create': 'create'
|
||||||
|
@ -187,10 +225,16 @@ class TranslationToDo extends App.Controller
|
||||||
@html ''
|
@html ''
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# add not translated items from runtime
|
||||||
if App.i18n.getNotTranslated(@locale)
|
if App.i18n.getNotTranslated(@locale)
|
||||||
for key, value of App.i18n.getNotTranslated(@locale)
|
for key, value of App.i18n.getNotTranslated(@locale)
|
||||||
item = [ '', key, '', '']
|
found = false
|
||||||
@stringsNotTranslated.push item
|
for notTranslatedItem in @stringsNotTranslated
|
||||||
|
if key is notTranslatedItem[1]
|
||||||
|
found = true
|
||||||
|
if !found
|
||||||
|
item = [ '', key, '', '']
|
||||||
|
@stringsNotTranslated.push item
|
||||||
|
|
||||||
@html App.view('translation/todo')(
|
@html App.view('translation/todo')(
|
||||||
list: @stringsNotTranslated
|
list: @stringsNotTranslated
|
||||||
|
@ -198,86 +242,40 @@ class TranslationToDo extends App.Controller
|
||||||
|
|
||||||
create: (e) =>
|
create: (e) =>
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
field = $(e.target).closest('tr').find('.js-Item')
|
params = @getAttributes(e)
|
||||||
id = field.data('id')
|
return if !params.target
|
||||||
source = field.data('source')
|
|
||||||
format = 'string'
|
|
||||||
target = field.val()
|
|
||||||
return if !target
|
|
||||||
|
|
||||||
# remove from not translated list
|
# remove from not translated list
|
||||||
$(e.target).closest('tr').remove()
|
$(e.target).closest('tr').remove()
|
||||||
|
|
||||||
# local update
|
# local update
|
||||||
App.i18n.removeNotTranslated(@locale, source)
|
App.i18n.removeNotTranslated(params.locale, params.source)
|
||||||
|
|
||||||
# update runtime if same language is used
|
|
||||||
if App.i18n.get() is @locale
|
|
||||||
App.i18n.setMap(source, target, 'string')
|
|
||||||
|
|
||||||
# remote update
|
# remote update
|
||||||
params =
|
params.target_initial = ''
|
||||||
locale: @locale
|
@updateOnServer(params, 'i18n:translation_update_list')
|
||||||
source: source
|
|
||||||
target: target
|
|
||||||
target_initial: ''
|
|
||||||
|
|
||||||
if id
|
|
||||||
method = 'PUT'
|
|
||||||
params.id = id
|
|
||||||
url = "#{@apiPath}/translations/#{id}"
|
|
||||||
else
|
|
||||||
method = 'POST'
|
|
||||||
url = "#{@apiPath}/translations"
|
|
||||||
|
|
||||||
@ajax(
|
|
||||||
id: 'translations'
|
|
||||||
type: method
|
|
||||||
url: url
|
|
||||||
data: JSON.stringify(params)
|
|
||||||
processData: false
|
|
||||||
success: (data, status, xhr) ->
|
|
||||||
App.Event.trigger('i18n:translation_update')
|
|
||||||
)
|
|
||||||
|
|
||||||
same: (e) =>
|
same: (e) =>
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
@hasChanges = true
|
@hasChanges = true
|
||||||
field = $(e.target).closest('tr').find('.js-Item')
|
params = @getAttributes(e)
|
||||||
source = field.data('source')
|
|
||||||
|
|
||||||
# remove from not translated list
|
# remove from not translated list
|
||||||
$(e.target).closest('tr').remove()
|
$(e.target).closest('tr').remove()
|
||||||
|
|
||||||
# local update
|
# local update
|
||||||
App.i18n.removeNotTranslated(@locale, source)
|
App.i18n.removeNotTranslated(params.locale, params.source)
|
||||||
|
|
||||||
# update runtime if same language is used
|
|
||||||
if App.i18n.get() is @locale
|
|
||||||
App.i18n.setMap(source, source, 'string')
|
|
||||||
|
|
||||||
# remote update
|
# remote update
|
||||||
params =
|
params.target_initial = ''
|
||||||
locale: @locale
|
params.target = params.source
|
||||||
source: source
|
@updateOnServer(params, 'i18n:translation_update_list')
|
||||||
target: source
|
|
||||||
target_initial: ''
|
|
||||||
|
|
||||||
@ajax(
|
|
||||||
id: 'translations'
|
|
||||||
type: 'POST'
|
|
||||||
url: @apiPath + '/translations'
|
|
||||||
data: JSON.stringify(params)
|
|
||||||
processData: false
|
|
||||||
success: (data, status, xhr) ->
|
|
||||||
App.Event.trigger('i18n:translation_update')
|
|
||||||
)
|
|
||||||
|
|
||||||
class TranslationList extends App.Controller
|
class TranslationList extends App.Controller
|
||||||
hasChanges: false
|
hasChanges: false
|
||||||
events:
|
events:
|
||||||
'blur .js-translated input': 'updateItem'
|
'blur .js-translated input': 'updateItem'
|
||||||
'click .js-translated .js-Reset': 'resetItem'
|
'click .js-translated .js-Reset': 'resetItem'
|
||||||
|
|
||||||
constructor: ->
|
constructor: ->
|
||||||
super
|
super
|
||||||
|
@ -288,6 +286,7 @@ class TranslationList extends App.Controller
|
||||||
@render()
|
@render()
|
||||||
|
|
||||||
render: =>
|
render: =>
|
||||||
|
return if _.isEmpty(@stringsTranslated)
|
||||||
@html App.view('translation/list')(
|
@html App.view('translation/list')(
|
||||||
times: @times
|
times: @times
|
||||||
strings: @stringsTranslated
|
strings: @stringsTranslated
|
||||||
|
@ -299,66 +298,23 @@ class TranslationList extends App.Controller
|
||||||
resetItem: (e) ->
|
resetItem: (e) ->
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
@hasChanges = true
|
@hasChanges = true
|
||||||
field = $(e.target).closest('tr').find('.js-Item')
|
params = @getAttributes(e)
|
||||||
id = field.data('id')
|
|
||||||
source = field.data('source')
|
|
||||||
initial = field.data('initial')
|
|
||||||
format = field.data('format')
|
|
||||||
|
|
||||||
# update runtime if same language is used
|
|
||||||
if App.i18n.get() is @locale
|
|
||||||
App.i18n.setMap(source, initial, format)
|
|
||||||
|
|
||||||
# locale reset
|
|
||||||
field.val(initial)
|
|
||||||
@updateRow(id)
|
|
||||||
|
|
||||||
# remote reset
|
# remote reset
|
||||||
params =
|
params.target = params.initial
|
||||||
id: id
|
@updateOnServer(params, 'i18n:translation_update')
|
||||||
target: initial
|
|
||||||
|
|
||||||
@ajax(
|
|
||||||
id: 'translations'
|
|
||||||
type: 'PUT'
|
|
||||||
url: "#{@apiPath}/translations/#{id}"
|
|
||||||
data: JSON.stringify(params)
|
|
||||||
processData: false
|
|
||||||
success: (data, status, xhr) ->
|
|
||||||
App.Event.trigger('i18n:translation_update')
|
|
||||||
)
|
|
||||||
|
|
||||||
updateItem: (e) ->
|
updateItem: (e) ->
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
@hasChanges = true
|
@hasChanges = true
|
||||||
field = $(e.target).closest('tr').find('.js-Item')
|
params = @getAttributes(e)
|
||||||
id = field.data('id')
|
return if !params.target
|
||||||
source = field.data('source')
|
|
||||||
format = field.data('format')
|
|
||||||
target = field.val()
|
|
||||||
return if !target
|
|
||||||
|
|
||||||
# local update
|
# local update
|
||||||
@updateRow(id)
|
@updateRow(params.id)
|
||||||
|
|
||||||
# update runtime if same language is used
|
|
||||||
if App.i18n.get() is @locale
|
|
||||||
App.i18n.setMap(source, target, format)
|
|
||||||
|
|
||||||
# remote update
|
# remote update
|
||||||
params =
|
@updateOnServer(params)
|
||||||
id: id
|
|
||||||
target: target
|
|
||||||
|
|
||||||
@ajax(
|
|
||||||
id: 'translations'
|
|
||||||
type: 'PUT'
|
|
||||||
url: "#{@apiPath}/translations/#{id}"
|
|
||||||
data: JSON.stringify(params)
|
|
||||||
processData: false
|
|
||||||
success: (data, status, xhr) ->
|
|
||||||
App.Event.trigger('i18n:translation_update')
|
|
||||||
)
|
|
||||||
|
|
||||||
updateRow: (id) =>
|
updateRow: (id) =>
|
||||||
field = @$("[data-id=#{id}]")
|
field = @$("[data-id=#{id}]")
|
||||||
|
|
Loading…
Reference in a new issue