1923 lines
36 KiB
Ruby
1923 lines
36 KiB
Ruby
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Ticket',
|
|
name: 'number',
|
|
display: '#',
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
readonly: 1,
|
|
null: true,
|
|
maxlength: 60,
|
|
width: '68px',
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_top: {},
|
|
edit: {},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 5,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Ticket',
|
|
name: 'title',
|
|
display: __('Title'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 200,
|
|
null: false,
|
|
translate: false,
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_top: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
edit: {},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 8,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Ticket',
|
|
name: 'customer_id',
|
|
display: __('Customer'),
|
|
data_type: 'user_autocompletion',
|
|
data_option: {
|
|
relation: 'User',
|
|
autocapitalize: false,
|
|
multiple: false,
|
|
guess: true,
|
|
null: false,
|
|
limit: 200,
|
|
placeholder: __('Enter Person or Organization/Company'),
|
|
minLengt: 2,
|
|
translate: false,
|
|
permission: ['ticket.agent'],
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_top: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
edit: {},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 10,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Ticket',
|
|
name: 'organization_id',
|
|
display: 'Organization',
|
|
data_type: 'autocompletion_ajax',
|
|
data_option: {
|
|
relation: 'Organization',
|
|
autocapitalize: false,
|
|
multiple: false,
|
|
null: true,
|
|
translate: false,
|
|
permission: ['ticket.agent'],
|
|
readonly: 1,
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_top: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
edit: {},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 12,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Ticket',
|
|
name: 'type',
|
|
display: __('Type'),
|
|
data_type: 'select',
|
|
data_option: {
|
|
default: '',
|
|
options: {
|
|
'Incident' => __('Incident'),
|
|
'Problem' => __('Problem'),
|
|
'Request for Change' => __('Request for Change'),
|
|
},
|
|
nulloption: true,
|
|
multiple: false,
|
|
null: true,
|
|
translate: true,
|
|
},
|
|
editable: true,
|
|
active: false,
|
|
screens: {
|
|
create_middle: {
|
|
'-all-' => {
|
|
null: false,
|
|
item_class: 'column',
|
|
},
|
|
},
|
|
edit: {
|
|
'ticket.agent' => {
|
|
null: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 20,
|
|
)
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Ticket',
|
|
name: 'group_id',
|
|
display: __('Group'),
|
|
data_type: 'select',
|
|
data_option: {
|
|
default: '',
|
|
relation: 'Group',
|
|
relation_condition: { access: 'full' },
|
|
nulloption: true,
|
|
multiple: false,
|
|
null: false,
|
|
translate: false,
|
|
only_shown_if_selectable: true,
|
|
permission: ['ticket.agent', 'ticket.customer'],
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_middle: {
|
|
'-all-' => {
|
|
null: false,
|
|
item_class: 'column',
|
|
},
|
|
},
|
|
edit: {
|
|
'ticket.agent' => {
|
|
null: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 25,
|
|
)
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Ticket',
|
|
name: 'owner_id',
|
|
display: __('Owner'),
|
|
data_type: 'select',
|
|
data_option: {
|
|
default: '',
|
|
relation: 'User',
|
|
relation_condition: { roles: 'Agent' },
|
|
nulloption: true,
|
|
multiple: false,
|
|
null: true,
|
|
translate: false,
|
|
permission: ['ticket.agent'],
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_middle: {
|
|
'-all-' => {
|
|
null: true,
|
|
item_class: 'column',
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 30,
|
|
)
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Ticket',
|
|
name: 'state_id',
|
|
display: __('State'),
|
|
data_type: 'select',
|
|
data_option: {
|
|
relation: 'TicketState',
|
|
nulloption: true,
|
|
multiple: false,
|
|
null: false,
|
|
default: Ticket::State.find_by(default_follow_up: true).id,
|
|
translate: true,
|
|
filter: Ticket::State.by_category(:viewable).pluck(:id),
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_middle: {
|
|
'ticket.agent' => {
|
|
null: false,
|
|
item_class: 'column',
|
|
filter: Ticket::State.by_category(:viewable_agent_new).pluck(:id),
|
|
},
|
|
'ticket.customer' => {
|
|
item_class: 'column',
|
|
nulloption: false,
|
|
null: true,
|
|
filter: Ticket::State.by_category(:viewable_customer_new).pluck(:id),
|
|
default: Ticket::State.find_by(default_create: true).id,
|
|
},
|
|
},
|
|
edit: {
|
|
'ticket.agent' => {
|
|
nulloption: false,
|
|
null: false,
|
|
filter: Ticket::State.by_category(:viewable_agent_edit).pluck(:id),
|
|
},
|
|
'ticket.customer' => {
|
|
nulloption: false,
|
|
null: true,
|
|
filter: Ticket::State.by_category(:viewable_customer_edit).pluck(:id),
|
|
default: Ticket::State.find_by(default_follow_up: true).id,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 40,
|
|
)
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Ticket',
|
|
name: 'pending_time',
|
|
display: __('Pending till'),
|
|
data_type: 'datetime',
|
|
data_option: {
|
|
future: true,
|
|
past: false,
|
|
diff: 24,
|
|
null: true,
|
|
translate: true,
|
|
permission: %w[ticket.agent],
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_middle: {
|
|
'-all-' => {
|
|
null: false,
|
|
item_class: 'column',
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 41,
|
|
)
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Ticket',
|
|
name: 'priority_id',
|
|
display: __('Priority'),
|
|
data_type: 'select',
|
|
data_option: {
|
|
relation: 'TicketPriority',
|
|
nulloption: false,
|
|
multiple: false,
|
|
null: false,
|
|
default: Ticket::Priority.find_by(default_create: true).id,
|
|
translate: true,
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_middle: {
|
|
'ticket.agent' => {
|
|
null: false,
|
|
item_class: 'column',
|
|
},
|
|
},
|
|
edit: {
|
|
'ticket.agent' => {
|
|
null: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 80,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Ticket',
|
|
name: 'tags',
|
|
display: __('Tags'),
|
|
data_type: 'tag',
|
|
data_option: {
|
|
type: 'text',
|
|
null: true,
|
|
translate: false,
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_bottom: {
|
|
'ticket.agent' => {
|
|
null: true,
|
|
},
|
|
},
|
|
edit: {},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 900,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'TicketArticle',
|
|
name: 'type_id',
|
|
display: __('Type'),
|
|
data_type: 'select',
|
|
data_option: {
|
|
relation: 'TicketArticleType',
|
|
nulloption: false,
|
|
multiple: false,
|
|
null: false,
|
|
default: Ticket::Article::Type.lookup(name: 'note').id,
|
|
translate: true,
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_middle: {},
|
|
edit: {
|
|
'ticket.agent' => {
|
|
null: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 100,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'TicketArticle',
|
|
name: 'internal',
|
|
display: __('Visibility'),
|
|
data_type: 'select',
|
|
data_option: {
|
|
options: {
|
|
true: 'internal',
|
|
false: 'public'
|
|
},
|
|
nulloption: false,
|
|
multiple: false,
|
|
null: true,
|
|
default: false,
|
|
translate: true,
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_middle: {},
|
|
edit: {
|
|
'ticket.agent' => {
|
|
null: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 200,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'TicketArticle',
|
|
name: 'to',
|
|
display: __('To'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 1000,
|
|
null: true,
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_middle: {},
|
|
edit: {
|
|
'ticket.agent' => {
|
|
null: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 300,
|
|
)
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'TicketArticle',
|
|
name: 'cc',
|
|
display: __('CC'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 1000,
|
|
null: true,
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_top: {},
|
|
create_middle: {},
|
|
edit: {
|
|
'ticket.agent' => {
|
|
null: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 400,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'TicketArticle',
|
|
name: 'body',
|
|
display: __('Text'),
|
|
data_type: 'richtext',
|
|
data_option: {
|
|
type: 'richtext',
|
|
maxlength: 150_000,
|
|
upload: true,
|
|
rows: 8,
|
|
null: true,
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create_top: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 600,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'login',
|
|
display: __('Login'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 100,
|
|
null: true,
|
|
autocapitalize: false,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {},
|
|
invite_customer: {},
|
|
edit: {},
|
|
view: {
|
|
'-all-' => {
|
|
shown: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 100,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'firstname',
|
|
display: __('First name'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 150,
|
|
null: true,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
signup: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
invite_agent: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
invite_customer: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 200,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'lastname',
|
|
display: __('Last name'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 150,
|
|
null: true,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
signup: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
invite_agent: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
invite_customer: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 300,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'email',
|
|
display: __('Email'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'email',
|
|
maxlength: 150,
|
|
null: true,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
signup: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
invite_agent: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
invite_customer: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 400,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'web',
|
|
display: __('Web'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'url',
|
|
maxlength: 250,
|
|
null: true,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {},
|
|
invite_customer: {},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 500,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'phone',
|
|
display: __('Phone'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'tel',
|
|
maxlength: 100,
|
|
null: true,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {},
|
|
invite_customer: {},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 600,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'mobile',
|
|
display: __('Mobile'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'tel',
|
|
maxlength: 100,
|
|
null: true,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {},
|
|
invite_customer: {},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 700,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'fax',
|
|
display: __('Fax'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'tel',
|
|
maxlength: 100,
|
|
null: true,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {},
|
|
invite_customer: {},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 800,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'organization_id',
|
|
display: __('Organization'),
|
|
data_type: 'autocompletion_ajax',
|
|
data_option: {
|
|
multiple: false,
|
|
nulloption: true,
|
|
null: true,
|
|
relation: 'Organization',
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {},
|
|
invite_customer: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 900,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'department',
|
|
display: __('Department'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 200,
|
|
null: true,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: true,
|
|
active: true,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {},
|
|
invite_customer: {},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1000,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'street',
|
|
display: __('Street'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 100,
|
|
null: true,
|
|
},
|
|
editable: true,
|
|
active: false,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {},
|
|
invite_customer: {},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1100,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'zip',
|
|
display: __('Zip'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 100,
|
|
null: true,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: true,
|
|
active: false,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {},
|
|
invite_customer: {},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1200,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'city',
|
|
display: __('City'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 100,
|
|
null: true,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: true,
|
|
active: false,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {},
|
|
invite_customer: {},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1300,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'country',
|
|
display: __('Country'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 100,
|
|
null: true,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: true,
|
|
active: false,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {},
|
|
invite_customer: {},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1325,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'address',
|
|
display: __('Address'),
|
|
data_type: 'textarea',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 500,
|
|
null: true,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: true,
|
|
active: true,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {},
|
|
invite_customer: {},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1350,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'password',
|
|
display: __('Password'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'password',
|
|
# password length is capped at 1000 in PasswordPolicy::MaxLength::MAX_LENGTH
|
|
# if user copy-pastes a very long string
|
|
# this ensures that max length check is triggered preventing saving of truncated password
|
|
maxlength: 1001,
|
|
null: true,
|
|
autocomplete: 'new-password',
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
signup: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
invite_agent: {},
|
|
invite_customer: {},
|
|
edit: {
|
|
'admin.user' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {}
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1400,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'vip',
|
|
display: __('VIP'),
|
|
data_type: 'boolean',
|
|
data_option: {
|
|
null: true,
|
|
default: false,
|
|
item_class: 'formGroup--halfSize',
|
|
options: {
|
|
false: 'no',
|
|
true: 'yes',
|
|
},
|
|
translate: true,
|
|
permission: ['admin.user', 'ticket.agent'],
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1490,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'note',
|
|
display: __('Note'),
|
|
data_type: 'richtext',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 5000,
|
|
null: true,
|
|
note: __('Notes are visible to agents only, never to customers.'),
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {},
|
|
invite_customer: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1500,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'role_ids',
|
|
display: __('Permissions'),
|
|
data_type: 'user_permission',
|
|
data_option: {
|
|
null: false,
|
|
item_class: 'checkbox',
|
|
permission: ['admin.user'],
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {
|
|
'-all-' => {
|
|
null: false,
|
|
default: [Role.lookup(name: 'Agent').id],
|
|
},
|
|
},
|
|
invite_customer: {},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1600,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'User',
|
|
name: 'active',
|
|
display: __('Active'),
|
|
data_type: 'active',
|
|
data_option: {
|
|
null: true,
|
|
default: true,
|
|
permission: ['admin.user', 'ticket.agent'],
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
signup: {},
|
|
invite_agent: {},
|
|
invite_customer: {},
|
|
edit: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1800,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Organization',
|
|
name: 'name',
|
|
display: __('Name'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 150,
|
|
null: false,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
edit: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 200,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Organization',
|
|
name: 'shared',
|
|
display: __('Shared organization'),
|
|
data_type: 'boolean',
|
|
data_option: {
|
|
null: true,
|
|
default: true,
|
|
note: __("Customers in the organization can view each other's items."),
|
|
item_class: 'formGroup--halfSize',
|
|
options: {
|
|
true: 'yes',
|
|
false: 'no',
|
|
},
|
|
translate: true,
|
|
permission: ['admin.organization'],
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
edit: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1400,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Organization',
|
|
name: 'domain_assignment',
|
|
display: __('Domain based assignment'),
|
|
data_type: 'boolean',
|
|
data_option: {
|
|
null: true,
|
|
default: false,
|
|
note: __('Assign users based on user domain.'),
|
|
item_class: 'formGroup--halfSize',
|
|
options: {
|
|
true: 'yes',
|
|
false: 'no',
|
|
},
|
|
translate: true,
|
|
permission: ['admin.organization'],
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
edit: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1410,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Organization',
|
|
name: 'domain',
|
|
display: __('Domain'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 150,
|
|
null: true,
|
|
item_class: 'formGroup--halfSize',
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1420,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Organization',
|
|
name: 'note',
|
|
display: __('Note'),
|
|
data_type: 'richtext',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 5000,
|
|
null: true,
|
|
note: __('Notes are visible to agents only, never to customers.'),
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1500,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Organization',
|
|
name: 'active',
|
|
display: __('Active'),
|
|
data_type: 'active',
|
|
data_option: {
|
|
null: true,
|
|
default: true,
|
|
permission: ['admin.organization'],
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
edit: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
create: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1800,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Group',
|
|
name: 'name',
|
|
display: __('Name'),
|
|
data_type: 'input',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 150,
|
|
null: false,
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 200,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Group',
|
|
name: 'assignment_timeout',
|
|
display: __('Assignment Timeout'),
|
|
data_type: 'integer',
|
|
data_option: {
|
|
maxlength: 150,
|
|
null: true,
|
|
note: __('Assignment timeout in minutes if assigned agent is not working on it. Ticket will be shown as unassigend.'),
|
|
min: 0,
|
|
max: 999_999,
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 300,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Group',
|
|
name: 'follow_up_possible',
|
|
display: __('Follow-up possible'),
|
|
data_type: 'select',
|
|
data_option: {
|
|
default: 'yes',
|
|
options: {
|
|
yes: 'yes',
|
|
new_ticket: 'do not reopen Ticket but create new Ticket'
|
|
},
|
|
null: false,
|
|
note: __('Follow-up for closed ticket possible or not.'),
|
|
translate: true
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 400,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Group',
|
|
name: 'follow_up_assignment',
|
|
display: __('Assign Follow-Ups'),
|
|
data_type: 'select',
|
|
data_option: {
|
|
default: 'true',
|
|
options: {
|
|
true: 'yes',
|
|
false: 'no',
|
|
},
|
|
null: false,
|
|
note: __('Assign follow-up to latest agent again.'),
|
|
translate: true
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 500,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Group',
|
|
name: 'email_address_id',
|
|
display: __('Email'),
|
|
data_type: 'select',
|
|
data_option: {
|
|
default: '',
|
|
multiple: false,
|
|
null: true,
|
|
relation: 'EmailAddress',
|
|
nulloption: true,
|
|
do_not_log: true,
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 600,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Group',
|
|
name: 'signature_id',
|
|
display: __('Signature'),
|
|
data_type: 'select',
|
|
data_option: {
|
|
default: '',
|
|
multiple: false,
|
|
null: true,
|
|
relation: 'Signature',
|
|
nulloption: true,
|
|
do_not_log: true,
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 600,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Group',
|
|
name: 'shared_drafts',
|
|
display: __('Shared Drafts'),
|
|
data_type: 'active',
|
|
data_option: {
|
|
null: false,
|
|
default: true,
|
|
permission: ['admin.group'],
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-': {
|
|
null: false,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1400,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Group',
|
|
name: 'note',
|
|
display: __('Note'),
|
|
data_type: 'richtext',
|
|
data_option: {
|
|
type: 'text',
|
|
maxlength: 250,
|
|
null: true,
|
|
note: __('Notes are visible to agents only, never to customers.'),
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: true,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1500,
|
|
)
|
|
|
|
ObjectManager::Attribute.add(
|
|
force: true,
|
|
object: 'Group',
|
|
name: 'active',
|
|
display: __('Active'),
|
|
data_type: 'active',
|
|
data_option: {
|
|
null: true,
|
|
default: true,
|
|
permission: ['admin.group'],
|
|
},
|
|
editable: false,
|
|
active: true,
|
|
screens: {
|
|
create: {
|
|
'-all-' => {
|
|
null: true,
|
|
},
|
|
},
|
|
edit: {
|
|
'-all-': {
|
|
null: false,
|
|
},
|
|
},
|
|
view: {
|
|
'-all-' => {
|
|
shown: false,
|
|
},
|
|
},
|
|
},
|
|
to_create: false,
|
|
to_migrate: false,
|
|
to_delete: false,
|
|
position: 1800,
|
|
)
|