diff --git a/module/bug/config.php b/module/bug/config.php index 78e2ad80b6..c00b49f9bc 100644 --- a/module/bug/config.php +++ b/module/bug/config.php @@ -43,5 +43,8 @@ $config->bug->search['params']['os'] = array('operator' => '=', $config->bug->search['params']['browser'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->browserList); $config->bug->search['params']['resolution'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->resolutionList); $config->bug->search['params']['mailto'] = array('operator' => 'include', 'control' => 'select', 'values' => 'users'); -$config->bug->search['params']['openedBuild'] = array('operator' => '=', 'control' => 'select', 'values' => 'builds'); +$config->bug->search['params']['openedBuild'] = array('operator' => 'include', 'control' => 'select', 'values' => 'builds'); $config->bug->search['params']['resolvedBuild']= array('operator' => '=', 'control' => 'select', 'values' => 'builds'); + +$config->bug->create->requiredFields = 'title,openedBuild'; +$config->bug->edit->requiredFields = $config->bug->create->requiredFields; diff --git a/module/bug/control.php b/module/bug/control.php index e7b23656a7..e744ab6076 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -182,7 +182,7 @@ class bug extends control $this->view->stories = $this->story->getProductStoryPairs($productID); $this->view->users = $this->user->getPairs('noclosed'); $this->view->projects = $this->product->getProjectPairs($productID); - $this->view->builds = $this->loadModel('build')->getProductBuildPairs($productID); + $this->view->builds = $this->loadModel('build')->getProductBuildPairs($productID, 'noempty'); $this->view->moduleID = $moduleID; $this->view->projectID = $projectID; $this->view->taskID = $taskID; @@ -265,7 +265,8 @@ class bug extends control $this->view->stories = $bug->project ? $this->story->getProjectStoryPairs($bug->project) : $this->story->getProductStoryPairs($bug->product); $this->view->tasks = $this->task->getProjectTaskPairs($bug->project); $this->view->users = $this->user->getPairs(); - $this->view->builds = $this->loadModel('build')->getProductBuildPairs($productID); + $this->view->openedBuilds = $this->loadModel('build')->getProductBuildPairs($productID, 'noempty'); + $this->view->resolvedBuilds = array('' => '') + $this->view->openedBuilds; $this->view->actions = $this->action->getList('bug', $bugID); $this->display(); diff --git a/module/bug/model.php b/module/bug/model.php index a46cd710c7..8d6e358275 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -43,15 +43,15 @@ class bugModel extends model ->add('openedBy', $this->app->user->account) ->add('openedDate', $now) ->setDefault('project,story,task', 0) + ->setDefault('openedBuild', '') ->setIF($this->post->assignedTo != '', 'assignedDate', $now) ->setIF($this->post->story != false, 'storyVersion', $this->loadModel('story')->getVersion($this->post->story)) - ->stripTags('title') + ->specialChars('title,steps') ->cleanInt('product, module, severity') - ->specialChars('steps') - ->join('mailto', ',') + ->join('openedBuild', ',') ->remove('files, labels') ->get(); - $this->dao->insert(TABLE_BUG)->data($bug)->autoCheck()->batchCheck('title,type,openedBuild', 'notempty')->exec(); + $this->dao->insert(TABLE_BUG)->data($bug)->autoCheck()->batchCheck($this->config->bug->create->requiredFields, 'notempty')->exec(); if(!dao::isError()) { $bugID = $this->dao->lastInsertID(); @@ -79,7 +79,13 @@ class bugModel extends model ->leftJoin(TABLE_TASK)->alias('t4')->on('t1.task = t4.id') ->where('t1.id')->eq((int)$bugID)->fetch(); foreach($bug as $key => $value) if(strpos($key, 'Date') !== false and !(int)substr($value, 0, 4)) $bug->$key = ''; - $bug->mailto = ltrim(trim($bug->mailto), ','); + if($bug->mailto) + { + $bug->mailto = ltrim(trim($bug->mailto), ','); // 去掉开始的,。 + $bug->mailto = str_replace(' ', '', $bug->mailto); + $bug->mailto = rtrim($bug->mailto, ',') . ','; + $bug->mailto = str_replace(',', ', ', $bug->mailto); + } if($bug->duplicateBug) $bug->duplicateBugTitle = $this->dao->findById($bug->duplicateBug)->from(TABLE_BUG)->fields('title')->fetch('title'); if($bug->case) $bug->caseTitle = $this->dao->findById($bug->case)->from(TABLE_CASE)->fields('title')->fetch('title'); if($bug->linkBug) $bug->linkBugTitles = $this->dao->select('id,title')->from(TABLE_BUG)->where('id')->in($bug->linkBug)->fetchPairs(); @@ -94,22 +100,23 @@ class bugModel extends model $now = date('Y-m-d H:i:s'); $bug = fixer::input('post') ->cleanInt('product,module,severity,project,story,task') - ->stripTags('title') - ->specialChars('steps') + ->specialChars('title,steps') ->remove('comment,fiels,labels') ->setDefault('project,module,project,story,task,duplicateBug', 0) + ->setDefault('openedBuild', '') ->add('lastEditedBy', $this->app->user->account) ->add('lastEditedDate', $now) - ->setIF($this->post->assignedTo != $oldBug->assignedTo, 'assignedDate', $now) - ->setIF($this->post->resolvedBy != '' and $this->post->resolvedDate == '', 'resolvedDate', $now) - ->setIF($this->post->resolution != '' and $this->post->resolvedDate == '', 'resolvedDate', $now) - ->setIF($this->post->resolution != '' and $this->post->resolvedBy == '', 'resolvedBy', $this->app->user->account) - ->setIF($this->post->closedBy != '' and $this->post->closedDate == '', 'closedDate', $now) - ->setIF($this->post->closedDate != '' and $this->post->closedBy == '', 'closedBy', $this->app->user->account) - ->setIF($this->post->closedBy != '' or $this->post->closedDate != '', 'assignedTo', 'closed') - ->setIF($this->post->closedBy != '' or $this->post->closedDate != '', 'assignedDate', $now) - ->setIF($this->post->resolution != '' or $this->post->resolvedDate != '', 'status', 'resolved') - ->setIF($this->post->closedBy != '' or $this->post->closedDate != '', 'status', 'closed') + ->join('openedBuild', ',') + ->setIF($this->post->assignedTo != $oldBug->assignedTo, 'assignedDate', $now) + ->setIF($this->post->resolvedBy != '' and $this->post->resolvedDate == '', 'resolvedDate', $now) + ->setIF($this->post->resolution != '' and $this->post->resolvedDate == '', 'resolvedDate', $now) + ->setIF($this->post->resolution != '' and $this->post->resolvedBy == '', 'resolvedBy', $this->app->user->account) + ->setIF($this->post->closedBy != '' and $this->post->closedDate == '', 'closedDate', $now) + ->setIF($this->post->closedDate != '' and $this->post->closedBy == '', 'closedBy', $this->app->user->account) + ->setIF($this->post->closedBy != '' or $this->post->closedDate != '', 'assignedTo', 'closed') + ->setIF($this->post->closedBy != '' or $this->post->closedDate != '', 'assignedDate', $now) + ->setIF($this->post->resolution != '' or $this->post->resolvedDate != '', 'status', 'resolved') + ->setIF($this->post->closedBy != '' or $this->post->closedDate != '', 'status', 'closed') ->setIF(($this->post->resolution != '' or $this->post->resolvedDate != '') and $this->post->assignedTo == '', 'assignedTo', $oldBug->openedBy) ->setIF(($this->post->resolution != '' or $this->post->resolvedDate != '') and $this->post->assignedTo == '', 'assignedDate', $now) ->setIF($this->post->resolution == '' and $this->post->resolvedDate =='', 'status', 'active') @@ -118,7 +125,7 @@ class bugModel extends model $this->dao->update(TABLE_BUG)->data($bug) ->autoCheck() - ->batchCheck('title,type', 'notempty') + ->batchCheck($this->config->bug->edit->requiredFields, 'notempty') ->checkIF($bug->resolvedBy, 'resolution', 'notempty') ->checkIF($bug->closedBy, 'resolution', 'notempty') ->checkIF($bug->resolution == 'duplicate', 'duplicateBug', 'notempty') diff --git a/module/bug/view/create.html.php b/module/bug/view/create.html.php index 40e704da61..da6227e470 100644 --- a/module/bug/view/create.html.php +++ b/module/bug/view/create.html.php @@ -23,8 +23,9 @@ */ ?> + -
+ +
- +
- - - - - - - + - + - + - + - + - diff --git a/module/bug/view/edit.html.php b/module/bug/view/edit.html.php index 38e81742d5..afb4e1858a 100644 --- a/module/bug/view/edit.html.php +++ b/module/bug/view/edit.html.php @@ -23,7 +23,10 @@ */ ?> - + +
@@ -244,7 +251,7 @@ function setDuplicate(resolution)
- + @@ -256,7 +263,7 @@ function setDuplicate(resolution) - + diff --git a/module/bug/view/view.html.php b/module/bug/view/view.html.php index 07d9a4be43..6181f70e30 100644 --- a/module/bug/view/view.html.php +++ b/module/bug/view/view.html.php @@ -122,7 +122,19 @@ - + @@ -174,7 +186,7 @@
bug->create;?>
bug->lblProductAndModule;?> +
bug->lblProjectAndTask;?> +
bug->lblStory;?> +
bug->openedBuild;?> - + +
bug->lblTypeAndSeverity;?> + bug->typeList, 'codeerror', 'class=select-2');?> bug->severityList, '', 'class=select-2');?>
bug->lblSystemBrowserAndHardware;?> + bug->osList, '', 'class=select-2');?> bug->browserList, '', 'class=select-2');?>
bug->lblAssignedTo;?>
bug->lblMailto;?>
bug->title;?>
bug->steps;?>
bug->files;?>fetch('file', 'buildform');?>fetch('file', 'buildform');?>
+
bug->openedBuild;?>openedBuild, 'class=select-3');?>openedBuild, 'size=4 multiple=multiple class=select-3');?>
bug->resolvedBy;?>
bug->resolvedBuild;?>resolvedBuild, 'class=select-3');?>resolvedBuild, 'class=select-3');?>
bug->resolution;?>
bug->openedBuild;?>openedBuild])) echo $builds[$bug->openedBuild]; else echo $bug->openedBuild;?> + openedBuild) + { + $openedBuilds = explode(',', $bug->openedBuild); + foreach($openedBuilds as $openedBuild) isset($builds[$openedBuild]) ? print($builds[$openedBuild] . '
') : print($openedBuild . '
'); + } + else + { + echo $bug->openedBuild; + } + ?> +
bug->lblResolved;?>
- +
bug->mailto;?>mailto); foreach($mailto as $account) echo ' ' . $users[$account]; ?>mailto)); foreach($mailto as $account) echo ' ' . $users[$account]; ?>
bug->linkBug;?>