Fixed issue #859 - Changing "Product Name" breaks "Admin" menu.

This commit is contained in:
Martin Edenhofer 2017-03-31 13:59:58 +02:00
parent 72c4de570e
commit 90fcff7bd9
4 changed files with 53 additions and 44 deletions

View file

@ -47,37 +47,10 @@ class App.SettingsAreaItem extends App.Controller
for item in @setting.options['form'] for item in @setting.options['form']
directValue += 1 directValue += 1
directData = params[item.name] directData = params[item.name]
value = undefined
if directValue > 1 if directValue > 1
state_current = { value = params
value: params
}
#App.Config.set((@setting.name, params)
else else
state_current = { value = directData
value: directData
}
#App.Config.set(@setting.name, directData)
@setting['state_current'] = state_current App.Setting.set(@setting['name'], value)
ui = @
@setting.save(
done: =>
ui.formEnable(e)
App.Event.trigger 'notify', {
type: 'success'
msg: App.i18n.translateContent('Update successful!')
timeout: 2000
}
# rerender ui || get new collections and session data
App.Setting.preferencesPost(@setting)
fail: (settings, details) ->
ui.formEnable(e)
App.Event.trigger 'notify', {
type: 'error'
msg: App.i18n.translateContent(details.error_human || details.error || 'Unable to update object!')
timeout: 2000
}
)

View file

@ -5,10 +5,12 @@ class App.Setting extends App.Model
@get: (name) -> @get: (name) ->
setting = App.Setting.findByAttribute('name', name) setting = App.Setting.findByAttribute('name', name)
throw "No such setting '#{name}' found!" if !setting
setting.state_current.value setting.state_current.value
@set: (name, value, options = {}) -> @set: (name, value, options = {}) ->
setting = App.Setting.findByAttribute('name', name) setting = App.Setting.findByAttribute('name', name)
throw "No such setting '#{name}' found!" if !setting
setting.state_current.value = value setting.state_current.value = value
if !options.done if !options.done
options.done = -> options.done = ->
@ -27,22 +29,25 @@ class App.Setting extends App.Model
msg: App.i18n.translateContent(details.error_human || details.error || 'Unable to update object!') msg: App.i18n.translateContent(details.error_human || details.error || 'Unable to update object!')
timeout: 2000 timeout: 2000
} }
App.Config.set(name, value) if setting.frontend
App.Config.set(name, value)
setting.save(options) setting.save(options)
@preferencesPost: (setting) -> @preferencesPost: (setting) ->
return if !setting.preferences return if !setting.preferences
if setting.preferences.render if setting.preferences.render
App.Event.trigger('ui:rerender') setting.preferences.trigger ||= []
setting.preferences.trigger.push 'ui:rerender'
if setting.preferences.trigger return if _.isEmpty(setting.preferences.trigger)
events = setting.preferences.trigger events = setting.preferences.trigger
if !_.isArray(setting.preferences.trigger) if !_.isArray(setting.preferences.trigger)
events = [setting.preferences.trigger] events = [setting.preferences.trigger]
delay = ->
for event in events count = 0
for event in events
count += 1
do (event, count) ->
delay = ->
App.Event.trigger(event) App.Event.trigger(event)
App.Delay.set(delay, 20) App.Delay.set(delay, 300 * count)
if setting.preferences.session_check
App.Auth.loginCheck()

View file

@ -115,7 +115,6 @@ Setting.create_if_not_exists(
}, },
preferences: { preferences: {
render: true, render: true,
session_check: true,
prio: 1, prio: 1,
placeholder: true, placeholder: true,
permission: ['admin.branding'], permission: ['admin.branding'],

View file

@ -140,4 +140,36 @@ class SettingTest < TestCase
value: 'facebook', value: 'facebook',
) )
end end
def test_product_name
@browser = browser_instance
login(
username: 'master@example.com',
password: 'test',
url: browser_url,
)
tasks_close_all()
verify_title(value: 'Zammad Test System')
click(css: 'a[href="#manage"]')
click(css: '.content.active a[href="#settings/branding"]')
set(
css: '.content.active [name="product_name"]',
value: 'ABC App',
)
click(css: '.content.active #product_name button[type=submit]')
sleep 2
verify_title(value: 'ABC App')
set(
css: '.content.active [name="product_name"]',
value: 'Zammad Test System',
)
click(css: '.content.active #product_name button[type=submit]')
sleep 2
verify_title(value: 'Zammad Test System')
end
end end