From 01b414f9fca8b8f3a2079c452e6b081a09f56a45 Mon Sep 17 00:00:00 2001 From: Rolf Schmidt Date: Fri, 28 May 2021 11:28:06 +0000 Subject: [PATCH] Fixes #3575 - Display minutes for session timeouts instead of seconds. --- db/migrate/20120101000001_create_base.rb | 2 +- ...8000000_update_session_timeout_dropdown.rb | 55 +++++++++++++++++++ db/seeds/settings.rb | 42 ++++++++------ 3 files changed, 82 insertions(+), 17 deletions(-) create mode 100644 db/migrate/20210528000000_update_session_timeout_dropdown.rb diff --git a/db/migrate/20120101000001_create_base.rb b/db/migrate/20120101000001_create_base.rb index fa26dd7c6..288fdbaac 100644 --- a/db/migrate/20120101000001_create_base.rb +++ b/db/migrate/20120101000001_create_base.rb @@ -424,7 +424,7 @@ class CreateBase < ActiveRecord::Migration[4.2] t.string :name, limit: 200, null: false t.string :area, limit: 100, null: false t.string :description, limit: 2000, null: false - t.string :options, limit: 2000, null: true + t.text :options, null: true t.text :state_current, limit: 200.kilobytes + 1, null: true t.string :state_initial, limit: 2000, null: true t.boolean :frontend, null: false diff --git a/db/migrate/20210528000000_update_session_timeout_dropdown.rb b/db/migrate/20210528000000_update_session_timeout_dropdown.rb new file mode 100644 index 000000000..8c89c20bd --- /dev/null +++ b/db/migrate/20210528000000_update_session_timeout_dropdown.rb @@ -0,0 +1,55 @@ +class UpdateSessionTimeoutDropdown < ActiveRecord::Migration[5.2] + def change + return if !Setting.exists?(name: 'system_init_done') + + change_column :settings, :options, :text, null: true + Setting.reset_column_information + + update_setting + end + + def options + [ { value: '0', name: 'disabled' }, { value: 1.hour.seconds, name: '1 hour' }, { value: 2.hours.seconds, name: '2 hours' }, { value: 1.day.seconds, name: '1 day' }, { value: 7.days.seconds, name: '1 week' }, { value: 14.days.seconds, name: '2 weeks' }, { value: 21.days.seconds, name: '3 weeks' }, { value: 28.days.seconds, name: '4 weeks' } ] + end + + def update_setting + setting = Setting.find_by(name: 'session_timeout') + setting.options = { + form: [ + { + display: 'Default', + null: false, + name: 'default', + tag: 'select', + options: options, + translate: true, + }, + { + display: 'admin', + null: false, + name: 'admin', + tag: 'select', + options: options, + translate: true, + }, + { + display: 'ticket.agent', + null: false, + name: 'ticket.agent', + tag: 'select', + options: options, + translate: true, + }, + { + display: 'ticket.customer', + null: false, + name: 'ticket.customer', + tag: 'select', + options: options, + translate: true, + }, + ] + } + setting.save! + end +end diff --git a/db/seeds/settings.rb b/db/seeds/settings.rb index d8e4f3b14..be58f2dc1 100644 --- a/db/seeds/settings.rb +++ b/db/seeds/settings.rb @@ -1041,6 +1041,8 @@ Setting.create_if_not_exists( }, frontend: true ) + +options = [ { value: '0', name: 'disabled' }, { value: 1.hour.seconds, name: '1 hour' }, { value: 2.hours.seconds, name: '2 hours' }, { value: 1.day.seconds, name: '1 day' }, { value: 7.days.seconds, name: '1 week' }, { value: 14.days.seconds, name: '2 weeks' }, { value: 21.days.seconds, name: '3 weeks' }, { value: 28.days.seconds, name: '4 weeks' } ] Setting.create_if_not_exists( title: 'Session Timeout', name: 'session_timeout', @@ -1049,28 +1051,36 @@ Setting.create_if_not_exists( options: { form: [ { - display: 'Default', - null: false, - name: 'default', - tag: 'input', + display: 'Default', + null: false, + name: 'default', + tag: 'select', + options: options, + translate: true, }, { - display: 'admin', - null: false, - name: 'admin', - tag: 'input', + display: 'admin', + null: false, + name: 'admin', + tag: 'select', + options: options, + translate: true, }, { - display: 'ticket.agent', - null: false, - name: 'ticket.agent', - tag: 'input', + display: 'ticket.agent', + null: false, + name: 'ticket.agent', + tag: 'select', + options: options, + translate: true, }, { - display: 'ticket.customer', - null: false, - name: 'ticket.customer', - tag: 'input', + display: 'ticket.customer', + null: false, + name: 'ticket.customer', + tag: 'select', + options: options, + translate: true, }, ], },