diff --git a/module/bug/control.php b/module/bug/control.php index e89baa25dc..b1201af847 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -570,7 +570,7 @@ class bug extends control * @access public * @return void */ - public function resolve($bugID) + public function resolve($bugID, $toStory = false) { $this->view->users = $this->user->getPairs('nodeleted'); @@ -606,6 +606,7 @@ class bug extends control $this->view->position[] = html::a($this->createLink('bug', 'browse', "productID=$productID"), $this->products[$productID]); $this->view->position[] = $this->lang->bug->resolve; + $this->view->toStory = $toStory; $this->view->bug = $bug; $this->view->builds = $this->loadModel('build')->getProductBuildPairs($productID); $this->view->actions = $this->action->getList('bug', $bugID); diff --git a/module/bug/model.php b/module/bug/model.php index 6207f79d43..5c8bf47832 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -246,10 +246,13 @@ class bugModel extends model $actionID = $this->loadModel('action')->create('story', $storyID, 'Frombug', '', $bugID); $file = $this->dao->select('*')->from(TABLE_FILE)->where('objectType')->eq('bug')->andWhere('objectID')->eq($bugID)->fetch(); - $file->objectType = 'story'; - $file->objectID = $storyID; - unset($file->id); - $this->dao->insert(TABLE_FILE)->data($file)->exec(); + if(!empty($file)) + { + $file->objectType = 'story'; + $file->objectID = $storyID; + unset($file->id); + $this->dao->insert(TABLE_FILE)->data($file)->exec(); + } } $bug = fixer::input('post') diff --git a/module/bug/view/resolve.html.php b/module/bug/view/resolve.html.php index beb6bb5f10..d5e585ede7 100644 --- a/module/bug/view/resolve.html.php +++ b/module/bug/view/resolve.html.php @@ -16,7 +16,11 @@ title;?> bug->resolution;?> + bug->resolutionList, '', 'class=select-3 onchange=setDuplicate(this.value)');?> + + bug->resolutionList['tostory'];echo html::input('resolution', 'tostory', 'class=select-3 hidden');?> + bug->duplicateBug;?> diff --git a/module/bug/view/view.html.php b/module/bug/view/view.html.php index 6af1731911..68d8a96c75 100644 --- a/module/bug/view/view.html.php +++ b/module/bug/view/view.html.php @@ -25,6 +25,14 @@ common::printLink('bug', 'edit', $params, $lang->bug->buttonEdit); if(!($bug->status == 'active' and common::printLink('bug', 'resolve', $params, $lang->bug->buttonResolve))) echo $lang->bug->buttonResolve . ' '; if(!($bug->status == 'resolved' and common::printLink('bug', 'close', $params, $lang->bug->buttonClose))) echo $lang->bug->buttonClose . ' '; + if($bug->status == 'active' and common::hasPriv('bug', 'resolve')) + { + common::printLink('bug', 'resolve', "$params&toStory=true", $lang->bug->resolutionList['tostory']) . ' '; + } + else + { + echo $lang->bug->resolutionList['tostory'] . ' '; + } if(!(($bug->status == 'closed' or $bug->status == 'resolved') and $bug->resolution != 'tostory' and common::printLink('bug', 'activate', $params, $lang->bug->buttonActivate))) echo $lang->bug->buttonActivate . ' '; common::printLink('bug', 'create', $copyParams, $lang->bug->buttonCopy); common::printLink('testcase', 'create', $convertParams, $lang->bug->buttonCreateTestcase); @@ -45,19 +53,28 @@ fetch('file', 'printFiles', array('files' => $bug->files, 'fieldset' => 'true'));?>
- deleted) - { - if(!($bug->status == 'active' and $bug->confirmed == 0 and common::printLink('bug', 'confirmBug', $params, $lang->bug->buttonConfirm))) echo $lang->bug->buttonConfirm . ' '; - common::printLink('bug', 'edit', $params, $lang->bug->buttonEdit); - if(!($bug->status == 'active' and common::printLink('bug', 'resolve', $params, $lang->bug->buttonResolve))) echo $lang->bug->buttonResolve . ' '; - if(!($bug->status == 'resolved' and common::printLink('bug', 'close', $params, $lang->bug->buttonClose))) echo $lang->bug->buttonClose . ' '; - if(!(($bug->status == 'closed' or $bug->status == 'resolved') and $bug->resolution != 'tostory' and common::printLink('bug', 'activate', $params, $lang->bug->buttonActivate))) echo $lang->bug->buttonActivate . ' '; - common::printLink('bug', 'create', $copyParams, $lang->bug->buttonCopy); - common::printLink('bug', 'delete', $params, $lang->delete, 'hiddenwin'); - } - echo html::a($browseLink, $lang->goback); - ?> + deleted) + { + if(!($bug->status == 'active' and $bug->confirmed == 0 and common::printLink('bug', 'confirmBug', $params, $lang->bug->buttonConfirm))) echo $lang->bug->buttonConfirm . ' '; + common::printLink('bug', 'edit', $params, $lang->bug->buttonEdit); + if(!($bug->status == 'active' and common::printLink('bug', 'resolve', $params, $lang->bug->buttonResolve))) echo $lang->bug->buttonResolve . ' '; + if(!($bug->status == 'resolved' and common::printLink('bug', 'close', $params, $lang->bug->buttonClose))) echo $lang->bug->buttonClose . ' '; + if($bug->status == 'active' and common::hasPriv('bug', 'resolve')) + { + common::printLink('bug', 'resolve', "$params&toStory=true", $lang->bug->resolutionList['tostory']) . ' '; + } + else + { + echo $lang->bug->resolutionList['tostory'] . ' '; + } + if(!(($bug->status == 'closed' or $bug->status == 'resolved') and $bug->resolution != 'tostory' and common::printLink('bug', 'activate', $params, $lang->bug->buttonActivate))) echo $lang->bug->buttonActivate . ' '; + common::printLink('bug', 'create', $copyParams, $lang->bug->buttonCopy); + common::printLink('testcase', 'create', $convertParams, $lang->bug->buttonCreateTestcase); + common::printLink('bug', 'delete', $params, $lang->delete, 'hiddenwin'); + } + echo html::a($browseLink, $lang->goback); + ?>