diff --git a/module/projectrelease/control.php b/module/projectrelease/control.php index 8879d19699..69e076f360 100644 --- a/module/projectrelease/control.php +++ b/module/projectrelease/control.php @@ -228,6 +228,51 @@ class projectrelease extends control $this->display(); } + /** + * Delete a release. + * + * @param int $releaseID + * @param string $confirm yes|no + * @access public + * @return void + */ + public function delete($releaseID, $confirm = 'no') + { + if($confirm == 'no') + { + die(js::confirm($this->lang->release->confirmDelete, $this->createLink('projectrelease', 'delete', "releaseID=$releaseID&confirm=yes"))); + } + else + { + $this->release->delete(TABLE_RELEASE, $releaseID); + + $release = $this->dao->select('*')->from(TABLE_RELEASE)->where('id')->eq((int)$releaseID)->fetch(); + $build = $this->dao->select('*')->from(TABLE_BUILD)->where('id')->eq((int)$release->build)->fetch(); + if(empty($build->project)) $this->loadModel('build')->delete(TABLE_BUILD, $build->id); + + $this->executeHooks($releaseID); + + /* if ajax request, send result. */ + if($this->server->ajax) + { + if(dao::isError()) + { + $response['result'] = 'fail'; + $response['message'] = dao::getError(); + } + else + { + $response['result'] = 'success'; + $response['message'] = ''; + $release = $this->release->getById($releaseID); + $this->dao->update(TABLE_BUILD)->set('deleted')->eq(1)->where('id')->eq($release->build)->andWhere('name')->eq($release->name)->exec(); + } + $this->send($response); + } + die(js::locate($this->session->releaseList, 'parent')); + } + } + /** * Export the stories of release to HTML. * diff --git a/module/projectrelease/view/browse.html.php b/module/projectrelease/view/browse.html.php index ad6eb66b8e..3b9181b9bd 100644 --- a/module/projectrelease/view/browse.html.php +++ b/module/projectrelease/view/browse.html.php @@ -32,7 +32,7 @@

release->noRelease;?> - + createLink('projectrelease', 'create', "productID=$product->id&branch=$branch"), " " . $lang->release->create, '', "class='btn btn-info'");?>

@@ -58,7 +58,7 @@ - + id"), sprintf('%03d', $release->id));?> @@ -81,17 +81,17 @@ id&type=story&link=true"), ' ', '', "class='btn' title='{$lang->release->linkStory}'"); - if(common::hasPriv('release', 'linkBug')) echo html::a(inlink('view', "releaseID=$release->id&type=bug&link=true"), ' ', '', "class='btn' title='{$lang->release->linkBug}'"); - if(common::hasPriv('release', 'changeStatus', $release)) + if(common::hasPriv('projectrelease', 'linkStory')) echo html::a(inlink('view', "releaseID=$release->id&type=story&link=true"), ' ', '', "class='btn' title='{$lang->release->linkStory}'"); + if(common::hasPriv('projectrelease', 'linkBug')) echo html::a(inlink('view', "releaseID=$release->id&type=bug&link=true"), ' ', '', "class='btn' title='{$lang->release->linkBug}'"); + if(common::hasPriv('projectrelease', 'changeStatus', $release)) { $changedStatus = $release->status == 'normal' ? 'terminate' : 'normal'; - echo html::a($this->createLink('release', 'changeStatus', "releaseID=$release->id&status=$changedStatus"), ' ', 'hiddenwin', "class='btn' title='{$lang->release->changeStatusList[$changedStatus]}'"); + echo html::a($this->createLink('projectrelease', 'changeStatus', "releaseID=$release->id&status=$changedStatus"), ' ', 'hiddenwin', "class='btn' title='{$lang->release->changeStatusList[$changedStatus]}'"); } common::printIcon('projectrelease', 'edit', "release=$release->id", $release, 'list'); - if(common::hasPriv('release', 'delete', $release)) + if(common::hasPriv('projectrelease', 'delete', $release)) { - $deleteURL = $this->createLink('release', 'delete', "releaseID=$release->id&confirm=yes"); + $deleteURL = $this->createLink('projectrelease', 'delete', "releaseID=$release->id&confirm=yes"); echo html::a("javascript:ajaxDelete(\"$deleteURL\", \"releaseList\", confirmDelete)", '', '', "class='btn' title='{$lang->release->delete}'"); } } diff --git a/module/projectrelease/view/view.html.php b/module/projectrelease/view/view.html.php index 16f52a8fe6..d6990ea72e 100644 --- a/module/projectrelease/view/view.html.php +++ b/module/projectrelease/view/view.html.php @@ -31,19 +31,19 @@
deleted and $canBeChanged) { echo $this->buildOperateMenu($release, 'view'); - if(common::hasPriv('release', 'changeStatus', $release)) + if(common::hasPriv('projectrelease', 'changeStatus', $release)) { $changedStatus = $release->status == 'normal' ? 'terminate' : 'normal'; echo html::a(inlink('changeStatus', "releaseID=$release->id&status=$changedStatus"), ' ' . $lang->release->changeStatusList[$changedStatus], 'hiddenwin', "class='btn btn-link' title='{$lang->release->changeStatusList[$changedStatus]}'"); } - if(common::hasPriv('release', 'edit')) echo html::a(inlink('edit', "releaseID=$release->id"), " " . $this->lang->edit, '', "class='btn btn-link' title='{$this->lang->edit}'"); - if(common::hasPriv('release', 'delete')) echo html::a(inlink('delete', "releaseID=$release->id"), " " . $this->lang->delete, '', "class='btn btn-link' title='{$this->lang->delete}' target='hiddenwin'"); + if(common::hasPriv('projectrelease', 'edit')) echo html::a(inlink('edit', "releaseID=$release->id"), " " . $this->lang->edit, '', "class='btn btn-link' title='{$this->lang->edit}'"); + if(common::hasPriv('projectrelease', 'delete')) echo html::a(inlink('delete', "releaseID=$release->id"), " " . $this->lang->delete, '', "class='btn btn-link' title='{$this->lang->delete}' target='hiddenwin'"); } ?>
@@ -59,19 +59,19 @@
  • >icons['bug'], 'text-red') . ' ' . $lang->release->generatedBugs;?>
  • >icons['plan'], 'text-info') . ' ' . $lang->release->view;?>
  • -
  • +
  • ' id='stories'> - +
    id}, \"story\")", ' ' . $lang->release->linkStory, '', "class='btn btn-primary'");?>
    id}&type=story&link=$link¶m=$param&orderBy=%s";?> @@ -122,9 +122,9 @@
    story->stageList[$story->stage];?> createLink('release', 'unlinkStory', "releaseID=$release->id&story=$story->id"); + $unlinkURL = $this->createLink('projectrelease', 'unlinkStory', "releaseID=$release->id&story=$story->id"); echo html::a("javascript:ajaxDelete(\"$unlinkURL\", \"storyList\", confirmUnlinkStory)", '', '', "class='btn' title='{$lang->release->unlinkStory}'"); } ?> @@ -138,7 +138,7 @@
    id"); echo html::a('###', $lang->release->batchUnlink, '', "onclick='setFormAction(\"$unlinkURL\", \"hiddenwin\", this)' class='btn'"); @@ -162,13 +162,13 @@
    ' id='bugs'> - +
    id}, \"bug\")", ' ' . $lang->release->linkBug, '', "class='btn btn-primary'");?>
    id");?>" id='linkedBugsForm' data-ride="table"> - + id}&type=bug&link=$link¶m=$param&orderBy=%s";?> @@ -212,9 +212,9 @@
    resolvedDate, 5, 11)?> createLink('release', 'unlinkBug', "releaseID=$release->id&bug=$bug->id"); + $unlinkURL = $this->createLink('projectrelease', 'unlinkBug', "releaseID=$release->id&bug=$bug->id"); echo html::a("javascript:ajaxDelete(\"$unlinkURL\", \"bugList\", confirmUnlinkBug)", '', '', "class='btn' title='{$lang->release->unlinkBug}'"); } ?> @@ -240,13 +240,13 @@
    ' id='leftBugs'> - +
    id}, \"leftBug\")", ' ' . $lang->release->linkBug, '', "class='btn btn-primary'");?>
    id&type=leftBug");?>" id='linkedBugsForm' data-ride="table"> - + id}&type=leftBug&link=$link¶m=$param&orderBy=%s";?> @@ -303,9 +303,9 @@
    openedDate?> createLink('release', 'unlinkBug', "releaseID=$release->id&bug=$bug->id&type=leftBug"); + $unlinkURL = $this->createLink('projectrelease', 'unlinkBug', "releaseID=$release->id&bug=$bug->id&type=leftBug"); echo html::a("javascript:ajaxDelete(\"$unlinkURL\", \"leftBugList\", confirmUnlinkBug)", '', '', "class='btn' title='{$lang->release->unlinkBug}'"); } ?>