From 940373f171dddd651f40acb43558c26ce3113285 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Thu, 16 Jul 2015 15:36:59 +0200 Subject: [PATCH] Added preferences attribute to disable update of setting via rest if system is a online system. --- .../_application_controller_generic.js.coffee | 18 +- .../app/controllers/_settings/area.js.coffee | 28 +- .../app/controllers/settings.js.coffee | 33 ++- .../app/views/generic/tabs.jst.eco | 2 +- app/controllers/settings_controller.rb | 14 + ...150716000003_add_setting_online_service.rb | 262 ++++++++++++++++++ db/seeds.rb | 16 ++ 7 files changed, 342 insertions(+), 31 deletions(-) create mode 100644 db/migrate/20150716000003_add_setting_online_service.rb diff --git a/app/assets/javascripts/app/controllers/_application_controller_generic.js.coffee b/app/assets/javascripts/app/controllers/_application_controller_generic.js.coffee index 02de5fa90..02e2d8560 100644 --- a/app/assets/javascripts/app/controllers/_application_controller_generic.js.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller_generic.js.coffee @@ -280,22 +280,30 @@ class App.ControllerTabs extends App.Controller render: -> - @html App.view('generic/tabs')( + @el = @html App.view('generic/tabs')( header: @header subHeader: @subHeader tabs: @tabs ) + # insert content for tab in @tabs - @el.find('.tab-content').append('
') + @el.find('.tab-content').append("
") if tab.controller params = tab.params || {} - params.el = @el.find( '#' + tab.target ) + params.name = tab.name + params.target = tab.target + params.el = @el.find( "##{tab.target}" ) new tab.controller( params ) + # check if tabs need to be hidden + if @tabs.length <= 1 + @el.find('.nav-tabs').addClass('hide') + + # set last or first tab to active @lastActiveTab = @Config.get('lastTab') - if @lastActiveTab && @el.find('.nav-tabs li a[href="' + @lastActiveTab + '"]')[0] - @el.find('.nav-tabs li a[href="' + @lastActiveTab + '"]').tab('show') + if @lastActiveTab && @el.find(".nav-tabs li a[href=#{@lastActiveTab}]")[0] + @el.find(".nav-tabs li a[href=#{@lastActiveTab}]").tab('show') else @el.find('.nav-tabs li:first a').tab('show') diff --git a/app/assets/javascripts/app/controllers/_settings/area.js.coffee b/app/assets/javascripts/app/controllers/_settings/area.js.coffee index 4138c118b..3f2cbaa25 100644 --- a/app/assets/javascripts/app/controllers/_settings/area.js.coffee +++ b/app/assets/javascripts/app/controllers/_settings/area.js.coffee @@ -26,21 +26,30 @@ class App.SettingsArea extends App.Controller area: @area ) + # filter online service settings + if App.Config.get('system_online_service') + settings = _.filter(settings, (setting) -> + return if setting.online_service + return if setting.preferences && setting.preferences.online_service_disable + setting + ) + return if _.isEmpty(settings) + # sort by prio settings = _.sortBy( settings, (setting) -> return if !setting.preferences setting.preferences.prio ) - html = $('
') + elements = [] for setting in settings if setting.name is 'product_logo' item = new App.SettingsAreaLogo( setting: setting ) else item = new App.SettingsAreaItem( setting: setting ) - html.append( item.el ) + elements.push item.el - @html html + @html elements class App.SettingsAreaItem extends App.Controller events: @@ -67,13 +76,13 @@ class App.SettingsAreaItem extends App.Controller # item @html App.view('settings/item')( - setting: @setting, + setting: @setting ) new App.ControllerForm( el: @el.find('.form-item'), - model: { configure_attributes: @configure_attributes, className: '' }, - autofocus: false, + model: { configure_attributes: @configure_attributes, className: '' } + autofocus: false ) update: (e) => @@ -103,7 +112,6 @@ class App.SettingsAreaItem extends App.Controller @setting.save( done: => ui.formEnable(e) - App.Event.trigger 'notify', { type: 'success' msg: App.i18n.translateContent('Update successful!') @@ -112,7 +120,6 @@ class App.SettingsAreaItem extends App.Controller # rerender ui || get new collections and session data if @setting.preferences - if @setting.preferences.render ui.render() App.Event.trigger( 'ui:rerender' ) @@ -121,6 +128,11 @@ class App.SettingsAreaItem extends App.Controller App.Auth.loginCheck() fail: => ui.formEnable(e) + App.Event.trigger 'notify', { + type: 'error' + msg: App.i18n.translateContent('Can\'t update item!') + timeout: 2000 + } ) class App.SettingsAreaLogo extends App.Controller diff --git a/app/assets/javascripts/app/controllers/settings.js.coffee b/app/assets/javascripts/app/controllers/settings.js.coffee index b4ea9d9f1..19178754d 100644 --- a/app/assets/javascripts/app/controllers/settings.js.coffee +++ b/app/assets/javascripts/app/controllers/settings.js.coffee @@ -5,7 +5,7 @@ class Branding extends App.ControllerTabs return if !@authenticate() @title 'Branding', true @tabs = [ - { name: 'Base', 'target': 'base', controller: App.SettingsArea, params: { area: 'System::Branding' } }, + { name: 'Base', 'target': 'base', controller: App.SettingsArea, params: { area: 'System::Branding' } } ] @render() @@ -15,12 +15,13 @@ class System extends App.ControllerTabs super return if !@authenticate() @title 'System', true - @tabs = [ - { name: 'Base', 'target': 'base', controller: App.SettingsArea, params: { area: 'System::Base' } }, - { name: 'Services', 'target': 'services', controller: App.SettingsArea, params: { area: 'System::Services' } }, - { name: 'Storage', 'target': 'storage', controller: App.SettingsArea, params: { area: 'System::Storage' } }, - { name: 'Frontend', 'target': 'ui', controller: App.SettingsArea, params: { area: 'System::UI' } }, - ] + @tabs = [] + if !App.Config.get('system_online_service') + @tabs.push { name: 'Base', 'target': 'base', controller: App.SettingsArea, params: { area: 'System::Base' } } + @tabs.push { name: 'Services', 'target': 'services', controller: App.SettingsArea, params: { area: 'System::Services' } } + if !App.Config.get('system_online_service') + @tabs.push { name: 'Storage', 'target': 'storage', controller: App.SettingsArea, params: { area: 'System::Storage' } } + @tabs.push { name: 'Frontend', 'target': 'ui', controller: App.SettingsArea, params: { area: 'System::UI' } } @render() class Security extends App.ControllerTabs @@ -30,11 +31,10 @@ class Security extends App.ControllerTabs return if !@authenticate() @title 'Security', true @tabs = [ - { name: 'Base', 'target': 'base', controller: App.SettingsArea, params: { area: 'Security::Base' } }, -# { name: 'Authentication', 'target': 'auth', controller: App.SettingsArea, params: { area: 'Security::Authentication' } }, - { name: 'Password', 'target': 'password', controller: App.SettingsArea, params: { area: 'Security::Password' } }, - { name: 'Third-Party Applications', 'target': 'third_party_auth', controller: App.SettingsArea, params: { area: 'Security::ThirdPartyAuthentication' } }, -# { name: 'Session', 'target': 'session', controller: '' }, + { name: 'Base', 'target': 'base', controller: App.SettingsArea, params: { area: 'Security::Base' } } +# { name: 'Authentication', 'target': 'auth', controller: App.SettingsArea, params: { area: 'Security::Authentication' } } + { name: 'Password', 'target': 'password', controller: App.SettingsArea, params: { area: 'Security::Password' } } + { name: 'Third-Party Applications', 'target': 'third_party_auth', controller: App.SettingsArea, params: { area: 'Security::ThirdPartyAuthentication' } } ] @render() @@ -45,8 +45,8 @@ class Import extends App.ControllerTabs return if !@authenticate() @title 'Import', true @tabs = [ - { name: 'Base', 'target': 'base', controller: App.SettingsArea, params: { area: 'Import::Base' } }, - { name: 'OTRS', 'target': 'otrs', controller: App.SettingsArea, params: { area: 'Import::OTRS' } }, + { name: 'Base', 'target': 'base', controller: App.SettingsArea, params: { area: 'Import::Base' } } + { name: 'OTRS', 'target': 'otrs', controller: App.SettingsArea, params: { area: 'Import::OTRS' } } ] @render() @@ -57,9 +57,8 @@ class Ticket extends App.ControllerTabs return if !@authenticate() @title 'Ticket', true @tabs = [ - { name: 'Base', 'target': 'base', controller: App.SettingsArea, params: { area: 'Ticket::Base' } }, - { name: 'Number', 'target': 'number', controller: App.SettingsArea, params: { area: 'Ticket::Number' } }, -# { name: 'Sender Format', 'target': 'sender-format', controller: App.SettingsArea, params: { area: 'Ticket::SenderFormat' } }, + { name: 'Base', 'target': 'base', controller: App.SettingsArea, params: { area: 'Ticket::Base' } } + { name: 'Number', 'target': 'number', controller: App.SettingsArea, params: { area: 'Ticket::Number' } } ] @render() diff --git a/app/assets/javascripts/app/views/generic/tabs.jst.eco b/app/assets/javascripts/app/views/generic/tabs.jst.eco index 721b36aec..da97ce037 100644 --- a/app/assets/javascripts/app/views/generic/tabs.jst.eco +++ b/app/assets/javascripts/app/views/generic/tabs.jst.eco @@ -3,7 +3,7 @@

<%- @T( @header ) %> <%- @T( @subHeader ) %>

-