diff --git a/include/class.i18n.php b/include/class.i18n.php index a5d9e7c7b1ab36672dcb944da414b89224310a21..ac7c759c93d0c0b7ca11e95a460fe1678c5c9342 100644 --- a/include/class.i18n.php +++ b/include/class.i18n.php @@ -50,6 +50,7 @@ class Internationalization { 'department.yaml' => 'Dept::create', 'sla.yaml' => 'SLA::create', 'form.yaml' => 'DynamicForm::create', + 'list.yaml' => 'DynamicList::create', // Note that department, sla, and forms are required for // help_topic 'help_topic.yaml' => 'Topic::create', diff --git a/include/class.list.php b/include/class.list.php index 462c1407914300f515266ce80f2794e5d120122c..479b4b8b7b0f0d76a9aaff884593397e9ff43f5d 100644 --- a/include/class.list.php +++ b/include/class.list.php @@ -240,6 +240,7 @@ class DynamicList extends VerySimpleModel implements CustomList { function addItem($vars, &$errors) { $item = DynamicListItem::create(array( + 'status' => 1, 'list_id' => $this->getId(), 'sort' => $vars['sort'], 'value' => $vars['value'], @@ -696,17 +697,17 @@ class TicketStatusList extends CustomListHandler { require_once(INCLUDE_DIR.'class.i18n.php'); $i18n = new Internationalization(); - $tpl = $i18n->getTemplate('form.yaml'); + $tpl = $i18n->getTemplate('list.yaml'); foreach ($tpl->getData() as $f) { - if ($f['type'] == 'S') { - $form = DynamicForm::create($f); - $form->save(); + if ($f['type'] == 'ticket-status') { + $list = DynamicList::create($f); + $list->save(); break; } } - $o = DynamicForm::objects()->filter(array('type'=>'S')); - if (!$form || !$o) + if (!$list || !($o=DynamicForm::objects()->filter( + array('type'=>'L'.$list->getId())))) return false; // Create default statuses diff --git a/include/i18n/en_US/form.yaml b/include/i18n/en_US/form.yaml index cefe3a072e12747748bb601540b6a7aefac0a71b..fe4be2f66098d0c8de9daee25c785ed3d04260f9 100644 --- a/include/i18n/en_US/form.yaml +++ b/include/i18n/en_US/form.yaml @@ -198,46 +198,3 @@ configuration: rows: 4 cols: 40 - -- type: S # notrans - title: Ticket Status Properties - instructions: Properties that can be set on a ticket status. - deletable: false - fields: - - type: choices # notrans - name: state # notrans - label: State - required: true - sort: 1 - edit_mask: 63 - configuration: - choices:| - open: Open - closed: Closed - archived: Archived - deleted: Deleted - prompt: State of a ticket - - type: choices # notrans - name: flags # notrans - label: Flags - required: false - sort: 2 - edit_mask: 63 - configuration: - choices:| - onhold: Onhold (Disable SLA) - overdue: Mark as Overdue - answered: Mark as Answered - prompt: Status flags - multiselect: true - - type: memo # notrans - name: description - label: Description - required: false - sort: 3 - edit_mask: 15 - configuration: - rows: 2 - cols: 40 - html: false - length: 100 diff --git a/include/i18n/en_US/list.yaml b/include/i18n/en_US/list.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ffe4a09cb759c98c308ad12579caf1515f601fad --- /dev/null +++ b/include/i18n/en_US/list.yaml @@ -0,0 +1,131 @@ +# +# Custom (dynamic) lists. This data is used as the initial, +# minimal data for dynamic list that ships with the system. +# +# Fields: +# id: Primary id (not recommended) +# name: Name of the list +# name_plural: Name in plural (optional) +# sort_mode: Sorting order (Alpha, -Alpha, SortCol) +# masks: Edit masks to indicate various statuses of the list +# (e.g if editable or deletable..etc) +# notes: Notes for the list +# items: List of items for the list +# id: Primary id +# value: Value (name) of the list item +# extra: Abbreviated version of the value +# status: If enabled (1 - enabled, 0 - disabled) +# sort: Sort order (optional) +# properties: Item-specific config based on Ticket Flags form fields +# (key): (value) +# properties: List properties form (see form.yaml for details) +# +--- +# Ticket statuses +- type: ticket-status #notrans + name: Ticket Status + name_plural: Ticket Statuses + sort_mode: SortCol # notrans + masks: 13 + notes: | + Ticket statuses + properties: + title: Ticket Status Properties + instructions: Properties that can be set on a ticket status. + deletable: false + fields: + - type: state # notrans + name: state # notrans + label: State + required: true + sort: 1 + edit_mask: 63 + configuration: + prompt: State of a ticket + - type: flags # notrans + name: flags # notrans + label: Flags + required: false + sort: 2 + edit_mask: 63 + configuration: + prompt: Ticket Flags + multiselect: true + - type: memo # notrans + name: description # notrans + label: Description + required: false + sort: 3 + edit_mask: 15 + configuration: + rows: 2 + cols: 40 + html: false + length: 100 + configuration: + handler: TicketStatusList + +# Ticket flags +- type: ticket-flag # notrans + name: Ticket Flag + name_plural: Ticket Flags + sort_mode: Alpha # notrans + masks: 15 + notes: | + Flags that can be set on tickets + properties: + title: Flag Properties + instructions: Properties that can be set on a flag. + deletable: false + fields: + - type: state # notrans + name: states # notrans + label: Allowed States + required: true + sort: 1 + edit_mask: 63 + configuration: + prompt: Allowed Ticket States + multiselect: true + - type: memo # notrans + name: description # notrans + label: Description + required: false + sort: 2 + edit_mask: 15 + configuration: + rows: 2 + cols: 40 + html: false + length: 100 + items: # Note that id doubles as a bit mask for the flag (must be preset) + - id: 1 # notrans + value: Answered + extra: answered + status: 3 + sort: 1 + configuration: + states: + open: Open + description:| + Marked as Answered + - id: 2 # notrans + value: Onhold + extra: onhold + status: 3 + sort: 2 + configuration: + states: + open: Open + description:| + Put on hold + - id: 4 # notrans + value: Overdue + extra: overdue + status: 3 + sort: 3 + configuration: + states: + open: Open + description:| + Marked overdue diff --git a/include/upgrader/streams/core.sig b/include/upgrader/streams/core.sig index f3561a24cf47f64ff653740c9d2de13c3cadcd56..38957a6f8ddce35874167253151dc6df18d48120 100644 --- a/include/upgrader/streams/core.sig +++ b/include/upgrader/streams/core.sig @@ -1 +1 @@ -9b9e2dc4551d448f081f180ca3829fa8 +cbf8c933d6d2eaaa971042eb2efce247 diff --git a/include/upgrader/streams/core/8f99b8bf-9b9e2dc4.patch.sql b/include/upgrader/streams/core/8f99b8bf-9b9e2dc4.patch.sql deleted file mode 100644 index b08c0a972266e4aa677d38abf5b2d30fae8d7ba4..0000000000000000000000000000000000000000 --- a/include/upgrader/streams/core/8f99b8bf-9b9e2dc4.patch.sql +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @version v1.9.3 - * @signature 9b9e2dc4551d448f081f180ca3829fa8 - * @title Add custom ticket status support - * - */ - -CREATE TABLE IF NOT EXISTS `%TABLE_PREFIX%ticket_status` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(60) NOT NULL DEFAULT '', - `state` varchar(16) NOT NULL DEFAULT 'open', - `mode` int(11) unsigned NOT NULL DEFAULT '0', - `flags` int(10) unsigned NOT NULL DEFAULT '0', - `sort` int(11) unsigned NOT NULL DEFAULT '0', - `notes` text NOT NULL, - `created` datetime NOT NULL, - `updated` datetime NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `name` (`name`) -) DEFAULT CHARSET=utf8; - -UPDATE `%TABLE_PREFIX%config` - SET `value` = '9b9e2dc4551d448f081f180ca3829fa8' - WHERE `key` = 'schema_signature' AND `namespace` = 'core'; diff --git a/setup/inc/streams/core/install-mysql.sql b/setup/inc/streams/core/install-mysql.sql index a7c27d76aae8ca172d5d96e160be933aff64d2da..8cde196b944f9526bd9062a312faee5f7dcc0d14 100644 --- a/setup/inc/streams/core/install-mysql.sql +++ b/setup/inc/streams/core/install-mysql.sql @@ -153,10 +153,13 @@ CREATE TABLE `%TABLE_PREFIX%list` ( `name` varchar(255) NOT NULL, `name_plural` varchar(255), `sort_mode` enum('Alpha', '-Alpha', 'SortCol') NOT NULL DEFAULT 'Alpha', + `masks` int(11) unsigned NOT NULL DEFAULT 0, + `type` VARCHAR( 16 ) NULL DEFAULT NULL, `notes` text, `created` datetime NOT NULL, `updated` datetime NOT NULL, - PRIMARY KEY (`id`) + PRIMARY KEY (`id`), + KEY `type` (`type`) ) DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS `%TABLE_PREFIX%list_items`;