diff --git a/include/class.config.php b/include/class.config.php index 0616bb96b1a6ac569efceed44db7f82880da78d7..07210051b1e173a38f49fc96b68231dd789a9d0a 100644 --- a/include/class.config.php +++ b/include/class.config.php @@ -385,6 +385,10 @@ class OsticketConfig extends Config { return ($email=$this->getDefaultEmail()) ? $email->getAddress() : null; } + function getDefaultTicketStatusId() { + return $this->get('default_ticket_status_id', 1); + } + function getDefaultSLAId() { return $this->get('default_sla_id'); } @@ -930,6 +934,7 @@ class OsticketConfig extends Config { function updateTicketsSettings($vars, &$errors) { $f=array(); $f['default_sla_id']=array('type'=>'int', 'required'=>1, 'error'=>'Selection required'); + $f['default_ticket_status_id'] = array('type'=>'int', 'required'=>1, 'error'=>'Selection required'); $f['default_priority_id']=array('type'=>'int', 'required'=>1, 'error'=>'Selection required'); $f['max_open_tickets']=array('type'=>'int', 'required'=>1, 'error'=>'Enter valid numeric value'); $f['autolock_minutes']=array('type'=>'int', 'required'=>1, 'error'=>'Enter lock time in minutes'); @@ -979,6 +984,7 @@ class OsticketConfig extends Config { 'random_ticket_ids'=>$vars['random_ticket_ids'], 'default_priority_id'=>$vars['default_priority_id'], 'default_help_topic'=>$vars['default_help_topic'], + 'default_ticket_status_id'=>$vars['default_ticket_status_id'], 'default_sla_id'=>$vars['default_sla_id'], 'max_open_tickets'=>$vars['max_open_tickets'], 'autolock_minutes'=>$vars['autolock_minutes'], diff --git a/include/class.filter.php b/include/class.filter.php index 2370ab6640ba791257c8e96aecc34b46874f5f61..51f176c4fb741a75e23ed940925c51498b06c1d8 100644 --- a/include/class.filter.php +++ b/include/class.filter.php @@ -107,6 +107,10 @@ class Filter { return $this->ht['dept_id']; } + function getStatusId() { + return $this->ht['status_id']; + } + function getPriorityId() { return $this->ht['priority_id']; } @@ -302,6 +306,8 @@ class Filter { if ($this->getPriorityId()) $ticket['priorityId']=$this->getPriorityId(); # Set SLA plan (?) if ($this->getSLAId()) $ticket['slaId']=$this->getSLAId(); + # Set status + if ($this->getStatusId()) $ticket['statusId']=$this->getStatusId(); # Auto-assign to (?) # XXX: Unset the other (of staffId or teamId) (?) if ($this->getStaffId()) $ticket['staffId']=$this->getStaffId(); @@ -509,6 +515,7 @@ class Filter { .',execorder='.db_input($vars['execorder']) .',email_id='.db_input($emailId) .',dept_id='.db_input($vars['dept_id']) + .',status_id='.db_input($vars['status_id']) .',priority_id='.db_input($vars['priority_id']) .',sla_id='.db_input($vars['sla_id']) .',topic_id='.db_input($vars['topic_id']) diff --git a/include/class.topic.php b/include/class.topic.php index ee0f2a47ede9eab61d87bf0955c5aec9fcd8bd30..d068e214db18cbcb43ad64df7524e53c316146b7 100644 --- a/include/class.topic.php +++ b/include/class.topic.php @@ -106,6 +106,10 @@ class Topic { return $this->ht['priority_id']; } + function getStatusId() { + return $this->ht['status_id']; + } + function getStaffId() { return $this->ht['staff_id']; } @@ -327,6 +331,7 @@ class Topic { .',topic_pid='.db_input($vars['topic_pid']) .',dept_id='.db_input($vars['dept_id']) .',priority_id='.db_input($vars['priority_id']) + .',status_id='.db_input($vars['status_id']) .',sla_id='.db_input($vars['sla_id']) .',form_id='.db_input($vars['form_id']) .',page_id='.db_input($vars['page_id']) diff --git a/include/staff/filter.inc.php b/include/staff/filter.inc.php index f2339c537e5ca048f894589a67d869899050f806..92b97eec0c4ab4531b4b74429030ae86a41b9d5a 100644 --- a/include/staff/filter.inc.php +++ b/include/staff/filter.inc.php @@ -239,6 +239,36 @@ $info=Format::htmlchars(($errors && $_POST)?$_POST:$info); <span class="error">* <?php echo $errors['dept_id']; ?></span> <i class="help-tip icon-question-sign" href="#department"></i> </td> </tr> + <tr> + <td width="180"> + Status: + </td> + <td> + <span> + <select name="status_id"> + <option value="">— Default —</option> + <?php + foreach (TicketStatusList::getAll() as $status) { + $name = $status->getName(); + if (!($isenabled = $status->isEnabled())) + $name.=' (Disabled)'; + + echo sprintf('<option value="%d" %s %s>%s</option>', + $status->getId(), + ($info['status_id'] == $status->getId()) + ? 'selected="selected"' : '', + $isenabled ? '' : 'disabled="disabled"', + $name + ); + } + ?> + </select> + + <span class="error"><?php echo $errors['status_id']; ?></span> + <i class="help-tip icon-question-sign" href="#status"></i> + </span> + </td> + </tr> <tr> <td width="180"> Priority: diff --git a/include/staff/helptopic.inc.php b/include/staff/helptopic.inc.php index 00f06d38d0ca604b2adf81daa606132110fd7359..4d86a6a1b1819669561db362fcdd73b354660ff2 100644 --- a/include/staff/helptopic.inc.php +++ b/include/staff/helptopic.inc.php @@ -128,6 +128,36 @@ if ($info['form_id'] == Topic::FORM_USE_PARENT) echo 'selected="selected"'; <i class="help-tip icon-question-sign" href="#department"></i> </td> </tr> + <tr> + <td width="180"> + Status: + </td> + <td> + <span> + <select name="status_id"> + <option value="">— System Default —</option> + <?php + foreach (TicketStatusList::getAll() as $status) { + $name = $status->getName(); + if (!($isenabled = $status->isEnabled())) + $name.=' (Disabled)'; + + echo sprintf('<option value="%d" %s %s>%s</option>', + $status->getId(), + ($info['status_id'] == $status->getId()) + ? 'selected="selected"' : '', + $isenabled ? '' : 'disabled="disabled"', + $name + ); + } + ?> + </select> + + <span class="error"><?php echo $errors['status_id']; ?></span> + <i class="help-tip icon-question-sign" href="#status"></i> + </span> + </td> + </tr> <tr> <td width="180"> Priority: diff --git a/include/staff/settings-tickets.inc.php b/include/staff/settings-tickets.inc.php index a7960a02b16552d72bd5377a138ccc049b535d46..d6b3701406195347665bba0551921fb97751ab13 100644 --- a/include/staff/settings-tickets.inc.php +++ b/include/staff/settings-tickets.inc.php @@ -25,7 +25,50 @@ if(!($maxfileuploads=ini_get('max_file_uploads'))) Random </td> </tr> + <tr> + <td width="180" class="required"> + Default Status: + </td> + <td> + <span> + <select name="default_ticket_status_id"> + <?php + foreach (TicketStatusList::getAll(array('open')) as $status) { + $name = $status->getName(); + if (!($isenabled = $status->isEnabled())) + $name.=' (Disabled)'; + echo sprintf('<option value="%d" %s %s>%s</option>', + $status->getId(), + ($config['default_ticket_status_id'] == + $status->getId() && $isenabled) + ? 'selected="selected"' : '', + $isenabled ? '' : 'disabled="disabled"', + $name + ); + } + ?> + </select> + + <span class="error">* <?php echo $errors['default_ticket_status_id']; ?></span> + <i class="help-tip icon-question-sign" href="#default_ticket_status"></i> + </span> + </td> + </tr> + <tr> + <td width="180" class="required">Default Priority:</td> + <td> + <select name="default_priority_id"> + <?php + $priorities= db_query('SELECT priority_id,priority_desc FROM '.TICKET_PRIORITY_TABLE); + while (list($id,$tag) = db_fetch_row($priorities)){ ?> + <option value="<?php echo $id; ?>"<?php echo ($config['default_priority_id']==$id)?'selected':''; ?>><?php echo $tag; ?></option> + <?php + } ?> + </select> + <span class="error">* <?php echo $errors['default_priority_id']; ?></span> <i class="help-tip icon-question-sign" href="#default_priority"></i> + </td> + </tr> <tr> <td width="180" class="required"> Default SLA: @@ -49,20 +92,6 @@ if(!($maxfileuploads=ini_get('max_file_uploads'))) </span> </td> </tr> - <tr> - <td width="180" class="required">Default Priority:</td> - <td> - <select name="default_priority_id"> - <?php - $priorities= db_query('SELECT priority_id,priority_desc FROM '.TICKET_PRIORITY_TABLE); - while (list($id,$tag) = db_fetch_row($priorities)){ ?> - <option value="<?php echo $id; ?>"<?php echo ($config['default_priority_id']==$id)?'selected':''; ?>><?php echo $tag; ?></option> - <?php - } ?> - </select> - <span class="error">* <?php echo $errors['default_priority_id']; ?></span> <i class="help-tip icon-question-sign" href="#default_priority"></i> - </td> - </tr> <tr> <td width="180">Default Help Topic:</td> <td> diff --git a/include/upgrader/streams/core/8f99b8bf-00000000.patch.sql b/include/upgrader/streams/core/8f99b8bf-00000000.patch.sql index 6d1b62c33c19e7845cdeba77e7d2db4c181014da..337a974067b8f3c4cfa5911c0f820ca341698f97 100644 --- a/include/upgrader/streams/core/8f99b8bf-00000000.patch.sql +++ b/include/upgrader/streams/core/8f99b8bf-00000000.patch.sql @@ -24,6 +24,12 @@ CREATE TABLE IF NOT EXISTS `%TABLE_PREFIX%ticket_status` ( UNIQUE KEY `name` (`name`) ) DEFAULT CHARSET=utf8; +ALTER TABLE `%TABLE_PREFIX%help_topic` + ADD `status_id` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `noautoresp`; + +ALTER TABLE `%TABLE_PREFIX%filter` + ADD `status_id` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `email_id`; + UPDATE `%TABLE_PREFIX%config` SET `value` = 'cbf8c933d6d2eaaa971042eb2efce247' 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 8cde196b944f9526bd9062a312faee5f7dcc0d14..f3b41bf656b2931fec8a3f9a4e1fa651b2238880 100644 --- a/setup/inc/streams/core/install-mysql.sql +++ b/setup/inc/streams/core/install-mysql.sql @@ -282,6 +282,7 @@ CREATE TABLE `%TABLE_PREFIX%filter` ( `disable_autoresponder` tinyint(1) unsigned NOT NULL default '0', `canned_response_id` int(11) unsigned NOT NULL default '0', `email_id` int(10) unsigned NOT NULL default '0', + `status_id` int(10) unsigned NOT NULL default '0', `priority_id` int(10) unsigned NOT NULL default '0', `dept_id` int(10) unsigned NOT NULL default '0', `staff_id` int(10) unsigned NOT NULL default '0', @@ -407,8 +408,9 @@ CREATE TABLE `%TABLE_PREFIX%help_topic` ( `isactive` tinyint(1) unsigned NOT NULL default '1', `ispublic` tinyint(1) unsigned NOT NULL default '1', `noautoresp` tinyint(3) unsigned NOT NULL default '0', - `priority_id` tinyint(3) unsigned NOT NULL default '0', - `dept_id` tinyint(3) unsigned NOT NULL default '0', + `status_id` int(10) unsigned NOT NULL default '0', + `priority_id` int(10) unsigned NOT NULL default '0', + `dept_id` int(10) unsigned NOT NULL default '0', `staff_id` int(10) unsigned NOT NULL default '0', `team_id` int(10) unsigned NOT NULL default '0', `sla_id` int(10) unsigned NOT NULL default '0',