Private rl 2056 autorefresh translation list
This commit is contained in:
parent
64c6d706c6
commit
b0c53fe925
2 changed files with 70 additions and 0 deletions
|
@ -79,6 +79,14 @@ class Index extends App.ControllerSubContent
|
||||||
@toggleAction()
|
@toggleAction()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
show: =>
|
||||||
|
# see https://github.com/zammad/zammad/issues/2056
|
||||||
|
@untranslatedAtLastRender ||= $.extend({}, App.i18n.getNotTranslated(@locale))
|
||||||
|
return if _.isEqual(@untranslatedAtLastRender, App.i18n.getNotTranslated(@locale))
|
||||||
|
|
||||||
|
@untranslatedAtLastRender = $.extend({}, App.i18n.getNotTranslated(@locale))
|
||||||
|
App.Event.trigger('ui:rerender')
|
||||||
|
|
||||||
hide: =>
|
hide: =>
|
||||||
@rerender()
|
@rerender()
|
||||||
|
|
||||||
|
|
|
@ -308,4 +308,66 @@ class TranslationTest < TestCase
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# see https://github.com/zammad/zammad/issues/2056
|
||||||
|
#
|
||||||
|
# The purpose of this test is to verify that
|
||||||
|
# the Translation admin panel automatically re-renders
|
||||||
|
# under certain edge cases:
|
||||||
|
#
|
||||||
|
# Clicking into the Translation panel from another admin panel ALWAYS causes a rerender,
|
||||||
|
# but clicking into it from, e.g., a Ticket or the Dashboard does not.
|
||||||
|
#
|
||||||
|
# We want to ensure that in the latter case,
|
||||||
|
# the Translation panel rerenders automatically if there are new phrases to translate.
|
||||||
|
def test_rerender_when_new_phrases_detected
|
||||||
|
@browser = browser_instance
|
||||||
|
login(
|
||||||
|
username: 'master@example.com',
|
||||||
|
password: 'test',
|
||||||
|
url: browser_url,
|
||||||
|
)
|
||||||
|
tasks_close_all()
|
||||||
|
|
||||||
|
click(css: 'a[href="#current_user"]')
|
||||||
|
click(css: 'a[href="#profile"]')
|
||||||
|
click(css: 'a[href="#profile/language"]')
|
||||||
|
select(
|
||||||
|
css: '.language_item [name="locale"]',
|
||||||
|
value: 'Deutsch',
|
||||||
|
)
|
||||||
|
click(css: '.content.active button[type="submit"]')
|
||||||
|
watch_for(
|
||||||
|
css: 'body',
|
||||||
|
value: 'Sprache',
|
||||||
|
)
|
||||||
|
|
||||||
|
# The only way to test the edge case describe above
|
||||||
|
# (i.e., visiting the Translation panel directly from a Ticket or the Dashboard)
|
||||||
|
# is to first click into the admin settings and visit the Translation panel,
|
||||||
|
# then leave, then come back.
|
||||||
|
#
|
||||||
|
# (/#manage remembers the most-recent admin panel.)
|
||||||
|
click(css: 'a[href="#manage"]')
|
||||||
|
click(css: 'a[href="#system/translation"]')
|
||||||
|
|
||||||
|
watch_for(
|
||||||
|
css: '.content.active',
|
||||||
|
value: 'Inline Übersetzung',
|
||||||
|
)
|
||||||
|
|
||||||
|
click(css: 'a[href="#dashboard"]')
|
||||||
|
|
||||||
|
new_ui_phrase = 'Charlie bit me!'
|
||||||
|
@browser.execute_script("App.i18n.translateContent('#{new_ui_phrase}')")
|
||||||
|
|
||||||
|
click(css: 'a[href="#manage"]')
|
||||||
|
|
||||||
|
watch_for(
|
||||||
|
css: %(td[title="#{new_ui_phrase}"]),
|
||||||
|
value: new_ui_phrase,
|
||||||
|
timeout: 3
|
||||||
|
)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue