diff --git a/module/mail/model.php b/module/mail/model.php index 5ac2d7b26d..241cdd9ff5 100644 --- a/module/mail/model.php +++ b/module/mail/model.php @@ -650,6 +650,8 @@ class mailModel extends model if($objectType == 'story' or $objectType == 'bug') $suffix = empty($object->product) ? '' : ' - ' . $this->loadModel('product')->getById($object->product)->name; if($objectType == 'task') $suffix = empty($object->execution) ? '' : ' - ' . $this->loadModel('execution')->getById($object->execution)->name; + if($objectType == 'story') $objectType = $object->type; // 业务需求和用户需求的邮件标题不同。 + return strtoupper($objectType) . ' #' . $object->id . ' ' . $title . $suffix; } diff --git a/module/message/config.php b/module/message/config.php index c637cac386..5916742b79 100644 --- a/module/message/config.php +++ b/module/message/config.php @@ -1,6 +1,8 @@ message->objectTypes = array(); $config->message->objectTypes['product'] = array('opened', 'edited', 'closed', 'undeleted'); +if($config->enableER) $config->message->objectTypes['epic'] = array('opened', 'edited', 'commented', 'changed', 'reviewed', 'closed', 'activated', 'assigned'); +if($config->URAndSR) $config->message->objectTypes['requirement'] = array('opened', 'edited', 'commented', 'changed', 'reviewed', 'closed', 'activated', 'assigned'); $config->message->objectTypes['story'] = array('opened', 'edited', 'commented', 'frombug', 'changed', 'reviewed', 'closed', 'activated', 'assigned'); $config->message->objectTypes['productplan'] = array('opened', 'edited'); $config->message->objectTypes['project'] = array('opened', 'edited', 'started', 'delayed', 'suspended', 'closed', 'activated', 'undeleted'); @@ -13,22 +15,26 @@ $config->message->objectTypes['doc'] = array('created', 'edited'); $config->message->objectTypes['kanbancard'] = array('created', 'edited', 'finished', 'activated', 'archived', 'restore', 'deleted', 'moved'); $config->message->available = array(); -$config->message->available['mail']['story'] = $config->message->objectTypes['story']; -$config->message->available['mail']['task'] = $config->message->objectTypes['task']; -$config->message->available['mail']['bug'] = $config->message->objectTypes['bug']; -$config->message->available['mail']['testtask'] = array('opened', 'edited', 'closed'); -$config->message->available['mail']['doc'] = $config->message->objectTypes['doc']; -$config->message->available['mail']['kanbancard'] = $config->message->objectTypes['kanbancard']; +if($config->enableER) $config->message->available['mail']['epic'] = $config->message->objectTypes['epic']; +if($config->URAndSR) $config->message->available['mail']['requirement'] = $config->message->objectTypes['requirement']; +$config->message->available['mail']['story'] = $config->message->objectTypes['story']; +$config->message->available['mail']['task'] = $config->message->objectTypes['task']; +$config->message->available['mail']['bug'] = $config->message->objectTypes['bug']; +$config->message->available['mail']['testtask'] = array('opened', 'edited', 'closed'); +$config->message->available['mail']['doc'] = $config->message->objectTypes['doc']; +$config->message->available['mail']['kanbancard'] = $config->message->objectTypes['kanbancard']; $config->message->available['webhook'] = $config->message->objectTypes; -$config->message->available['message']['bug'] = $config->message->objectTypes['bug']; -$config->message->available['message']['story'] = $config->message->objectTypes['story']; -$config->message->available['message']['task'] = $config->message->objectTypes['task']; -$config->message->available['message']['testtask'] = $config->message->objectTypes['testtask']; -$config->message->available['message']['todo'] = $config->message->objectTypes['todo']; -$config->message->available['message']['doc'] = $config->message->objectTypes['doc']; -$config->message->available['message']['kanbancard'] = $config->message->objectTypes['kanbancard']; +$config->message->available['message']['bug'] = $config->message->objectTypes['bug']; +if($config->enableER) $config->message->available['message']['epic'] = $config->message->objectTypes['epic']; +if($config->URAndSR) $config->message->available['message']['requirement'] = $config->message->objectTypes['requirement']; +$config->message->available['message']['story'] = $config->message->objectTypes['story']; +$config->message->available['message']['task'] = $config->message->objectTypes['task']; +$config->message->available['message']['testtask'] = $config->message->objectTypes['testtask']; +$config->message->available['message']['todo'] = $config->message->objectTypes['todo']; +$config->message->available['message']['doc'] = $config->message->objectTypes['doc']; +$config->message->available['message']['kanbancard'] = $config->message->objectTypes['kanbancard']; $config->message->typeLink = array(); $config->message->typeLink['mail'] = 'mail|index'; diff --git a/module/message/model.php b/module/message/model.php index d94596fd9e..5fe06807eb 100755 --- a/module/message/model.php +++ b/module/message/model.php @@ -82,6 +82,13 @@ class messageModel extends model $messageSetting = $this->config->message->setting; if(is_string($messageSetting)) $messageSetting = json_decode($messageSetting, true); + /* 如果是业需和用需,则使用它们的发信配置。*/ + if($objectType == 'story') + { + $story = $this->loadModel('story')->fetchByID($objectID); + $objectType = $story->type; + } + if(isset($messageSetting['mail'])) { $actions = $messageSetting['mail']['setting']; @@ -212,10 +219,10 @@ class messageModel extends model if($toList == 'closed') $toList = ''; if($objectType == 'feedback' && $object->status == 'replied') $toList = ',' . $object->openedBy . ','; - if($objectType == 'story' && $actionID) + if(in_array($objectType, array('story', 'epic', 'requirement')) && $actionID) { $action = $this->loadModel('action')->getById($actionID); - list($toList, $ccList) = $this->loadModel($objectType)->getToAndCcList($object, $action->action); + list($toList, $ccList) = $this->loadModel('story')->getToAndCcList($object, $action->action); $toList = $toList . $ccList; } diff --git a/module/story/model.php b/module/story/model.php index 2ed14ba3e5..dbc5452b74 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -3629,7 +3629,7 @@ class storyModel extends model $ccList = isset($story->mailto) ? str_replace(' ', '', trim($story->mailto, ',')) : ''; /* If the action is changed or reviewed, mail to the project or execution team. */ - if(strtolower($actionType) == 'changed' or strtolower($actionType) == 'reviewed') + if((strtolower($actionType) == 'changed' or strtolower($actionType) == 'reviewed') && $story->type == 'story') { $teamMembers = $this->getTeamMembers($story->id, $actionType); if($teamMembers) diff --git a/module/story/view/sendmail.html.php b/module/story/view/sendmail.html.php index 5282167564..f88fd79e5d 100644 --- a/module/story/view/sendmail.html.php +++ b/module/story/view/sendmail.html.php @@ -10,7 +10,7 @@ * @link https://www.zentao.net */ ?> -id . ' ' . $object->title;?> +type) . ' #' . $object->id . ' ' . $object->title;?> app->getModuleRoot() . 'common/view/mail.header.html.php';?> @@ -18,7 +18,7 @@ color) ? '#333' : $object->color;?> - id", 'html'), $mailTitle, '', "style='color: {$color}; text-decoration: underline;'");?> + type, 'view', "storyID=$object->id", 'html'), $mailTitle, '', "style='color: {$color}; text-decoration: underline;'");?>