description:'Defines the random application secret.',
options:{},
state:SecureRandom.hex(128),
preferences:{
permission:['admin'],
},
frontend:false
)
Setting.create_if_not_exists(
title:'System Init Done',
name:'system_init_done',
area:'Core',
description:'Defines if application is in init mode.',
options:{},
state:false,
preferences:{online_service_disable:true},
frontend:true
)
Setting.create_if_not_exists(
title:'App Version',
name:'app_version',
area:'Core::WebApp',
description:'Only used internally to propagate current web app version to clients.',
options:{},
state:'',
preferences:{online_service_disable:true},
frontend:false
)
Setting.create_if_not_exists(
title:'Maintenance Mode',
name:'maintenance_mode',
area:'Core::WebApp',
description:'Enable or disable the maintenance mode of Zammad. If enabled, all non-administrators get logged out and only administrators can start a new session.',
options:{},
state:false,
preferences:{
permission:['admin.maintenance'],
},
frontend:true
)
Setting.create_if_not_exists(
title:'Maintenance Login',
name:'maintenance_login',
area:'Core::WebApp',
description:'Put a message on the login page. To change it, click on the text area below and change it inline.',
options:{},
state:false,
preferences:{
permission:['admin.maintenance'],
},
frontend:true
)
Setting.create_if_not_exists(
title:'Maintenance Login',
name:'maintenance_login_message',
area:'Core::WebApp',
description:'Message for login page.',
options:{},
state:'Something about to share. Click here to change.',
preferences:{
permission:['admin.maintenance'],
},
frontend:true
)
Setting.create_if_not_exists(
title:'Developer System',
name:'developer_mode',
area:'Core::Develop',
description:'Defines if application is in developer mode (useful for developer, all users have the same password, password reset will work without email delivery).',
options:{},
state:false,
preferences:{online_service_disable:true},
frontend:true
)
Setting.create_if_not_exists(
title:'Online Service',
name:'system_online_service',
area:'Core',
description:'Defines if application is used as online service.',
options:{},
state:false,
preferences:{online_service_disable:true},
frontend:true
)
Setting.create_if_not_exists(
title:'Product Name',
name:'product_name',
area:'System::Branding',
description:'Defines the name of the application, shown in the web interface, tabs and title bar of the web browser.',
options:{
form:[
{
display:'',
null:false,
name:'product_name',
tag:'input',
},
],
},
preferences:{
render:true,
prio:1,
placeholder:true,
permission:['admin.branding'],
},
state:'Zammad Helpdesk',
frontend:true
)
Setting.create_if_not_exists(
title:'Logo',
name:'product_logo',
area:'System::Branding',
description:'Defines the logo of the application, shown in the web interface.',
options:{
form:[
{
display:'',
null:false,
name:'product_logo',
tag:'input',
},
],
},
preferences:{
prio:3,
controller:'SettingsAreaLogo',
permission:['admin.branding'],
},
state:'logo.svg',
frontend:true
)
Setting.create_if_not_exists(
title:'Organization',
name:'organization',
area:'System::Branding',
description:'Will be shown in the app and is included in email footers.',
options:{
form:[
{
display:'',
null:false,
name:'organization',
tag:'input',
},
],
},
state:'',
preferences:{
prio:2,
placeholder:true,
permission:['admin.branding'],
},
frontend:true
)
Setting.create_or_update(
title:'Pretty Date',
name:'pretty_date_format',
area:'System::Branding',
description:'Defines pretty date format.',
options:{
form:[
{
display:'',
null:false,
name:'pretty_date_format',
tag:'select',
options:{
'relative':'relative - e. g. "2 hours ago" or "2 days and 15 minutes ago"',
'absolute':'absolute - e. g. "Monday 09:30" or "Tuesday 23. Feb 14:20"',
},
},
],
},
preferences:{
render:true,
prio:10,
permission:['admin.branding'],
},
state:'relative',
frontend:true
)
options={}
(10..99).each{|item|
options[item]=item
}
system_id=rand(10..99)
Setting.create_if_not_exists(
title:'SystemID',
name:'system_id',
area:'System::Base',
description:'Defines the system identifier. Every ticket number contains this ID. This ensures that only tickets which belong to your system will be processed as follow-ups (useful when communicating between two instances of Zammad).',
options:{
form:[
{
display:'',
null:true,
name:'system_id',
tag:'select',
options:options,
},
],
},
state:system_id,
preferences:{
online_service_disable:true,
placeholder:true,
authentication:true,
permission:['admin.system'],
},
frontend:true
)
Setting.create_if_not_exists(
title:'Fully Qualified Domain Name',
name:'fqdn',
area:'System::Base',
description:'Defines the fully qualified domain name of the system. This setting is used as a variable, #{setting.fqdn} which is found in all forms of messaging used by the application, to build links to the tickets within your system.',
options:{
form:[
{
display:'',
null:false,
name:'fqdn',
tag:'input',
},
],
},
state:'zammad.example.com',
preferences:{
online_service_disable:true,
placeholder:true,
permission:['admin.system'],
},
frontend:true
)
Setting.create_if_not_exists(
title:'Websocket port',
name:'websocket_port',
area:'System::WebSocket',
description:'Defines the port of the websocket server.',
options:{
form:[
{
display:'',
null:false,
name:'websocket_port',
tag:'input',
},
],
},
state:'6042',
preferences:{online_service_disable:true},
frontend:true
)
Setting.create_if_not_exists(
title:'HTTP type',
name:'http_type',
area:'System::Base',
description:'Define the http protocol of your instance.',
options:{
form:[
{
display:'',
null:true,
name:'http_type',
tag:'select',
options:{
'https'=>'https',
'http'=>'http',
},
},
],
},
state:'http',
preferences:{
online_service_disable:true,
placeholder:true,
permission:['admin.system'],
},
frontend:true
)
Setting.create_if_not_exists(
title:'Storage Mechanism',
name:'storage_provider',
area:'System::Storage',
description:'"Database" stores all attachments in the database (not recommended for storing large amounts of data). "Filesystem" stores the data in the filesystem. You can switch between the modules even on a system that is already in production without any loss of data.',
options:{
form:[
{
display:'',
null:true,
name:'storage_provider',
tag:'select',
tranlate:true,
options:{
'DB'=>'Database',
'File'=>'Filesystem',
},
},
],
},
state:'DB',
preferences:{
controller:'SettingsAreaStorageProvider',
online_service_disable:true,
permission:['admin.system'],
},
frontend:false
)
Setting.create_if_not_exists(
title:'Image Service',
name:'image_backend',
area:'System::Services',
description:'Defines the backend for user and organization image lookups.',
options:{
form:[
{
display:'',
null:true,
name:'image_backend',
tag:'select',
options:{
''=>'-',
'Service::Image::Zammad'=>'Zammad Image Service',
},
},
],
},
state:'Service::Image::Zammad',
preferences:{
prio:1,
permission:['admin.system'],
},
frontend:false
)
Setting.create_if_not_exists(
title:'Geo IP Service',
name:'geo_ip_backend',
area:'System::Services',
description:'Defines the backend for geo IP lookups. Shows also location of an IP address if an IP address is shown.',
options:{
form:[
{
display:'',
null:true,
name:'geo_ip_backend',
tag:'select',
options:{
''=>'-',
'Service::GeoIp::Zammad'=>'Zammad GeoIP Service',
},
},
],
},
state:'Service::GeoIp::Zammad',
preferences:{
prio:2,
permission:['admin.system'],
},
frontend:false
)
Setting.create_if_not_exists(
title:'Geo Location Service',
name:'geo_location_backend',
area:'System::Services',
description:'Defines the backend for geo location lookups to store geo locations for addresses.',
options:{
form:[
{
display:'',
null:true,
name:'geo_location_backend',
tag:'select',
options:{
''=>'-',
'Service::GeoLocation::Gmaps'=>'Google Maps',
},
},
],
},
state:'Service::GeoLocation::Gmaps',
preferences:{
prio:3,
permission:['admin.system'],
},
frontend:false
)
Setting.create_if_not_exists(
title:'Geo Calendar Service',
name:'geo_calendar_backend',
area:'System::Services',
description:'Defines the backend for geo calendar lookups. Used for initial calendar succession.',
description:'Defines if a customer can create tickets via the web interface.',
options:{
form:[
{
display:'',
null:true,
name:'customer_ticket_create',
tag:'boolean',
options:{
true=>'yes',
false=>'no',
},
},
],
},
state:true,
preferences:{
authentication:true,
permission:['admin.channel_web'],
},
frontend:true
)
Setting.create_if_not_exists(
title:'Group selection for Ticket creation',
name:'customer_ticket_create_group_ids',
area:'CustomerWeb::Base',
description:'Defines groups for which a customer can create tickets via web interface. "-" means all groups are available.',
options:{
form:[
{
display:'',
null:true,
name:'group_ids',
tag:'select',
multiple:true,
nulloption:true,
relation:'Group',
},
],
},
state:'',
preferences:{
authentication:true,
permission:['admin.channel_web'],
},
frontend:true
)
Setting.create_if_not_exists(
title:'Enable Ticket creation',
name:'form_ticket_create',
area:'Form::Base',
description:'Defines if tickets can be created via web form.',
options:{
form:[
{
display:'',
null:true,
name:'form_ticket_create',
tag:'boolean',
options:{
true=>'yes',
false=>'no',
},
},
],
},
state:false,
preferences:{
permission:['admin.channel_formular'],
},
frontend:false,
)
Setting.create_if_not_exists(
title:'Ticket Subject Size',
name:'ticket_subject_size',
area:'Email::Base',
description:'Max. length of the subject in an email reply.',
options:{
form:[
{
display:'',
null:false,
name:'ticket_subject_size',
tag:'input',
},
],
},
state:'110',
preferences:{
permission:['admin.channel_email'],
},
frontend:false
)
Setting.create_if_not_exists(
title:'Ticket Subject Reply',
name:'ticket_subject_re',
area:'Email::Base',
description:'The text at the beginning of the subject in an email reply, e. g. RE, AW, or AS.',
options:{
form:[
{
display:'',
null:true,
name:'ticket_subject_re',
tag:'input',
},
],
},
state:'RE',
preferences:{
permission:['admin.channel_email'],
},
frontend:false
)
Setting.create_if_not_exists(
title:'Sender Format',
name:'ticket_define_email_from',
area:'Email::Base',
description:'Defines how the From field of emails (sent from answers and email tickets) should look like.',
options:{
form:[
{
display:'',
null:true,
name:'ticket_define_email_from',
tag:'select',
options:{
SystemAddressName:'System Address Display Name',
AgentNameSystemAddressName:'Agent Name + FromSeparator + System Address Display Name',
},
},
],
},
state:'AgentNameSystemAddressName',
preferences:{
permission:['admin.channel_email'],
},
frontend:false
)
Setting.create_if_not_exists(
title:'Sender Format Separator',
name:'ticket_define_email_from_separator',
area:'Email::Base',
description:'Defines the separator between the agent\'s real name and the given group email address.',
options:{
form:[
{
display:'',
null:false,
name:'ticket_define_email_from_separator',
tag:'input',
},
],
},
state:'via',
preferences:{
permission:['admin.channel_email'],
},
frontend:false
)
Setting.create_if_not_exists(
title:'Maximum Email Size',
name:'postmaster_max_size',
area:'Email::Base',
description:'Maximum size in MB of emails.',
options:{
form:[
{
display:'',
null:true,
name:'postmaster_max_size',
tag:'select',
options:{
1=>' 1',
2=>' 2',
3=>' 3',
4=>' 4',
5=>' 5',
6=>' 6',
7=>' 7',
8=>' 8',
9=>' 9',
10=>' 10',
15=>' 15',
20=>' 20',
25=>' 25',
30=>' 30',
35=>' 35',
40=>' 40',
45=>' 45',
50=>' 50',
60=>' 60',
70=>' 70',
80=>' 80',
90=>' 90',
100=>'100',
125=>'125',
150=>'150',
},
},
],
},
state:10,
preferences:{
online_service_disable:true,
permission:['admin.channel_email'],
},
frontend:false
)
Setting.create_if_not_exists(
title:'Additional follow-up detection',
name:'postmaster_follow_up_search_in',
area:'Email::Base',
description:'By default the follow-up check is done via the subject of an email. With this setting you can add more fields for which the follow-up check will be executed.',
options:{
form:[
{
display:'',
null:true,
name:'postmaster_follow_up_search_in',
tag:'checkbox',
options:{
'references'=>'References - Search for follow up also in In-Reply-To or References headers.',
'body'=>'Body - Search for follow up also in mail body.',
'attachment'=>'Attachment - Search for follow up also in attachments.',
description:'Set/overwrite sender/from of email based on reply-to header. Useful to set correct customer if email is received from a third party system on behalf of a customer.',
options:{
form:[
{
display:'',
null:true,
name:'postmaster_sender_based_on_reply_to',
tag:'select',
options:{
''=>'-',
'as_sender_of_email'=>'Take reply-to header as sender/from of email.',
'as_sender_of_email_use_from_realname'=>'Take reply-to header as sender/from of email and use realname of origin from.',
description:'Enable REST API using tokens (not username/email address and password). Each user needs to create its own access tokens in user profile.',
options:{
form:[
{
display:'',
null:true,
name:'api_token_access',
tag:'boolean',
options:{
true=>'yes',
false=>'no',
},
},
],
},
state:true,
preferences:{
permission:['admin.api'],
},
frontend:false
)
Setting.create_if_not_exists(
title:'API Password Access',
name:'api_password_access',
area:'API::Base',
description:'Enable REST API access using the username/email address and password for the authentication user.',
options:{
form:[
{
display:'',
null:true,
name:'api_password_access',
tag:'boolean',
options:{
true=>'yes',
false=>'no',
},
},
],
},
state:true,
preferences:{
permission:['admin.api'],
},
frontend:false
)
Setting.create_if_not_exists(
title:'Monitoring Token',
name:'monitoring_token',
area:'HealthCheck::Base',
description:'Token for monitoring.',
options:{
form:[
{
display:'',
null:false,
name:'monitoring_token',
tag:'input',
},
],
},
state:SecureRandom.urlsafe_base64(40),
preferences:{
permission:['admin.monitoring'],
},
frontend:false
)
Setting.create_if_not_exists(
title:'Enable Chat',
name:'chat',
area:'Chat::Base',
description:'Enable/disable online chat.',
options:{
form:[
{
display:'',
null:true,
name:'chat',
tag:'boolean',
options:{
true=>'yes',
false=>'no',
},
},
],
},
preferences:{
trigger:['menu:render','chat:rerender'],
permission:['admin.channel_chat'],
},
state:false,
frontend:true
)
Setting.create_if_not_exists(
title:'Agent idle timeout',
name:'chat_agent_idle_timeout',
area:'Chat::Extended',
description:'Idle timeout in seconds until agent is set offline automatically.',
options:{
form:[
{
display:'',
null:false,
name:'chat_agent_idle_timeout',
tag:'input',
},
],
},
state:'120',
preferences:{
permission:['admin.channel_chat'],
},
frontend:true
)
Setting.create_if_not_exists(
title:'Defines searchable models.',
name:'models_searchable',
area:'Models::Base',
description:'Defines the searchable models.',
options:{},
state:[],
preferences:{
authentication:true,
},
frontend:true,
)
Setting.create_if_not_exists(
title:'Default Screen',
name:'default_controller',
area:'Core',
description:'Defines the default screen.',
options:{},
state:'#dashboard',
frontend:true
)
Setting.create_if_not_exists(
title:'Elasticsearch Endpoint URL',
name:'es_url',
area:'SearchIndex::Elasticsearch',
description:'Defines endpoint of Elasticsearch.',
state:'',
preferences:{online_service_disable:true},
frontend:false
)
Setting.create_if_not_exists(
title:'Elasticsearch Endpoint User',
name:'es_user',
area:'SearchIndex::Elasticsearch',
description:'Defines HTTP basic auth user of Elasticsearch.',
state:'',
preferences:{online_service_disable:true},
frontend:false
)
Setting.create_if_not_exists(
title:'Elasticsearch Endpoint Password',
name:'es_password',
area:'SearchIndex::Elasticsearch',
description:'Defines HTTP basic auth password of Elasticsearch.',
state:'',
preferences:{online_service_disable:true},
frontend:false
)
Setting.create_if_not_exists(
title:'Elasticsearch Endpoint Index',
name:'es_index',
area:'SearchIndex::Elasticsearch',
description:'Defines Elasticsearch index name.',
state:'zammad',
preferences:{online_service_disable:true},
frontend:false
)
Setting.create_if_not_exists(
title:'Elasticsearch Attachment Extensions',
name:'es_attachment_ignore',
area:'SearchIndex::Elasticsearch',
description:'Defines attachment extensions which will be ignored by Elasticsearch.',