Private rl 2056 autorefresh translation list

This commit is contained in:
Ryan Lue 2018-08-22 12:45:11 +02:00
parent 64c6d706c6
commit b0c53fe925
2 changed files with 70 additions and 0 deletions

View file

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

View file

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