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);
+ ?>
|