From a96bb1775277f36ed54113ba5ace200a54e558f0 Mon Sep 17 00:00:00 2001 From: pengjiangxiu Date: Thu, 24 Aug 2017 09:40:53 +0800 Subject: [PATCH] * * Adjust for bug batch activate. --- module/bug/control.php | 59 ++++++++++++++------------ module/bug/js/common.js | 2 +- module/bug/model.php | 51 ++++++++++++++++++++++ module/bug/view/activate.html.php | 2 +- module/bug/view/batchactivate.html.php | 46 ++++++++++++++++++++ module/bug/view/browse.html.php | 4 +- module/common/lang/en.php | 2 +- module/common/lang/zh-cn.php | 2 +- module/common/lang/zh-tw.php | 2 +- module/user/model.php | 4 +- 10 files changed, 137 insertions(+), 37 deletions(-) create mode 100644 module/bug/view/batchactivate.html.php diff --git a/module/bug/control.php b/module/bug/control.php index 26461b31f1..685340f81d 100644 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -513,18 +513,18 @@ class bug extends control } $bug = $this->bug->getById($bugID); - if($bug->toTask != 0) + if($bug->toTask != 0) { foreach($changes as $change) { - if($change['field'] == 'status') + if($change['field'] == 'status') { $confirmURL = $this->createLink('task', 'view', "taskID=$bug->toTask"); $cancelURL = $this->server->HTTP_REFERER; die(js::confirm(sprintf($this->lang->bug->remindTask, $bug->Task), $confirmURL, $cancelURL, 'parent', 'parent')); } } - } + } die(js::locate($this->createLink('bug', 'view', "bugID=$bugID"), 'parent')); } @@ -587,8 +587,8 @@ class bug extends control /** * Batch edit bug. - * - * @param int $productID + * + * @param int $productID * @access public * @return void */ @@ -618,7 +618,7 @@ class bug extends control die(js::confirm(sprintf($this->lang->bug->remindTask, $bug->task), $confirmURL, $cancelURL, 'parent', 'parent')); } } - } + } } die(js::locate($this->session->bugList, 'parent')); } @@ -933,8 +933,8 @@ class bug extends control /** * Activate a bug. - * - * @param int $bugID + * + * @param int $bugID * @access public * @return void */ @@ -1122,36 +1122,39 @@ class bug extends control } /** - * Batch activate bugs. - * + * Batch activate bugs. + * * @access public * @return void */ - public function batchActivate() + public function batchActivate($productID, $branch = 0) { - if($this->post->bugIDList) + if($this->post->statusList) { - $bugIDList = $this->post->bugIDList; - - /* Reset $_POST. Do not unset that because the function of close need that in model. */ - $_POST = array(); - - $bugs = $this->bug->getByList($bugIDList); - foreach($bugs as $bugID => $bug) + $activateBugs = $this->bug->batchActivate(); + foreach($activateBugs as $bugID => $bug) { - if($bug->status == 'active') - { - continue; - } - - $this->bug->activate($bugID); - - $actionID = $this->action->create('bug', $bugID, 'Activated'); + $actionID = $this->action->create('bug', $bugID, 'Activated', $bug['comment']); $this->bug->sendmail($bugID, $actionID); } + + die(js::locate($this->session->bugList, 'parent')); } - die(js::reload('parent')); + $bugIDList = $this->post->bugIDList ? $this->post->bugIDList : die(js::locate($this->session->bugList, 'parent')); + $bugs = $this->dao->select('id, title, status, resolvedBy, openedBuild')->from(TABLE_BUG)->where('id')->in($bugIDList)->fetchAll('id'); + + $this->bug->setMenu($this->products, $productID, $branch); + + $this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->bug->batchActivate; + $this->view->position[] = html::a($this->createLink('bug', 'browse', "productID=$productID"), $this->products[$productID]); + $this->view->position[] = $this->lang->bug->batchActivate; + + $this->view->bugs = $bugs; + $this->view->users = $this->user->getPairs(); + $this->view->builds = $this->loadModel('build')->getProductBuildPairs($productID, $branch, 'noempty'); + + $this->display(); } /** diff --git a/module/bug/js/common.js b/module/bug/js/common.js index 7734e9f505..fdd680d538 100644 --- a/module/bug/js/common.js +++ b/module/bug/js/common.js @@ -1,4 +1,4 @@ -$(function() +$(function() { setModal4List('iframe', 'bugList'); diff --git a/module/bug/model.php b/module/bug/model.php index 20d38ed35d..afd6ecbeac 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -658,6 +658,57 @@ class bugModel extends model return $allChanges; } + /** + * Batch active bugs. + * + * @access public + * @return array + */ + public function batchActivate() + { + $now = helper::now(); + $data = fixer::input('post')->get(); + + $activateBugs = array(); + $bugIDList = $data->bugIDList ? $data->bugIDList : array(); + + if(empty($bugIDList)) return $activateBugs; + + foreach($bugIDList as $bugID) + { + if($data->statusList[$bugID] == 'active') continue; + + $activateBugs[$bugID]['assignedTo'] = $data->assignedToList[$bugID]; + $activateBugs[$bugID]['openedBuild'] = $data->openedBuildList[$bugID]; + $activateBugs[$bugID]['comment'] = $data->commentList[$bugID]; + + $activateBugs[$bugID]['assignedDate'] = $now; + $activateBugs[$bugID]['resolution'] = ''; + $activateBugs[$bugID]['status'] = 'active'; + $activateBugs[$bugID]['resolvedDate'] = '0000-00-00'; + $activateBugs[$bugID]['resolvedBy'] = ''; + $activateBugs[$bugID]['resolvedBuild'] = ''; + $activateBugs[$bugID]['closedBy'] = ''; + $activateBugs[$bugID]['closedDate'] = '0000-00-00'; + $activateBugs[$bugID]['duplicateBug'] = 0; + $activateBugs[$bugID]['toTask'] = 0; + $activateBugs[$bugID]['toStory'] = 0; + $activateBugs[$bugID]['lastEditedBy'] = $this->app->user->account; + $activateBugs[$bugID]['lastEditedDate'] = $now; + } + + /* Update bugs. */ + foreach($activateBugs as $bugID => $bug) + { + $this->dao->update(TABLE_BUG)->data($bug, $skipFields = 'comment')->autoCheck()->where('id')->eq((int)$bugID)->exec(); + if(dao::isError()) die(js::error('bug#' . $bugID . dao::getError(true))); + + $this->dao->update(TABLE_BUG)->set('activatedCount = activatedCount + 1')->where('id')->eq((int)$bugID)->exec(); + } + + return $activateBugs; + } + /** * Assign a bug to a user again. * diff --git a/module/bug/view/activate.html.php b/module/bug/view/activate.html.php index 3326acbfe5..d9f5f27db7 100644 --- a/module/bug/view/activate.html.php +++ b/module/bug/view/activate.html.php @@ -37,7 +37,7 @@ bug->files;?> fetch('file', 'buildform');?> - + goback, $this->session->bugList);?> diff --git a/module/bug/view/batchactivate.html.php b/module/bug/view/batchactivate.html.php new file mode 100644 index 0000000000..141f022093 --- /dev/null +++ b/module/bug/view/batchactivate.html.php @@ -0,0 +1,46 @@ + + * @package bug + * @version $Id$ + * @link http://www.zentao.net + */ +?> + +
+
+ bug->common . $lang->colon . $lang->bug->batchActivate;?> +
+
+
"> + + + + + + + + + + + + + + + + + + + + + + + + +
idAB;?>bug->title;?>bug->assignedTo;?>bug->openedBuild;?>bug->legendComment;?>
id . html::hidden("bugIDList[$bug->id]", $bug->id);?>title . html::hidden("statusList[$bug->id]", $bug->status);?>id]", $users, $bug->resolvedBy, "class='form-control chosen'");?>id]", $builds, $bug->openedBuild, 'size=4 multiple=multiple class="form-control chosen"');?>id]", '', "class='form-control'");?>
+
+ diff --git a/module/bug/view/browse.html.php b/module/bug/view/browse.html.php index 59a865608d..10e72a610e 100644 --- a/module/bug/view/browse.html.php +++ b/module/bug/view/browse.html.php @@ -200,8 +200,8 @@ js::set('branch', $branch); $misc = common::hasPriv('bug', 'batchClose') ? "onclick=\"setFormAction('$actionLink', 'hiddenwin')\"" : $class; if($misc) echo "
  • " . html::a('javascript:;', $lang->bug->close, '', $misc) . "
  • "; - $actionLink = $this->createLink('bug', 'batchActivate'); - $misc = common::hasPriv('bug', 'batchActivate') ? "onclick=\"setFormAction('$actionLink', 'hiddenwin')\"" : $class; + $actionLink = $this->createLink('bug', 'batchActivate', "productID=$productID&branch=$branch"); + $misc = common::hasPriv('bug', 'batchActivate') ? "onclick=\"setFormAction('$actionLink')\"" : $class; if($misc) echo "
  • " . html::a('javascript:;', $lang->bug->activate, '', $misc) . "
  • "; if(common::hasPriv('bug', 'batchChangeModule')) diff --git a/module/common/lang/en.php b/module/common/lang/en.php index 4a005913f3..98ccda78b1 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -249,7 +249,7 @@ $lang->bug = new stdclass(); $lang->bug->menu = new stdclass(); $lang->bug->menu->product = array('link' => '%s', 'fixed' => true); -$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,confirmbug,assignto', 'subModule' => 'tree'); +$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,batchactivate,confirmbug,assignto', 'subModule' => 'tree'); $lang->bug->menu->testcase = array('link' => 'Case|testcase|browse|productID=%s'); $lang->bug->menu->testtask = array('link' => 'Build|testtask|browse|productID=%s'); $lang->bug->menu->testsuite = array('link' => 'Suite|testsuite|browse|productID=%s'); diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 819b579a13..e42dadacef 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -249,7 +249,7 @@ $lang->bug = new stdclass(); $lang->bug->menu = new stdclass(); $lang->bug->menu->product = array('link' => '%s', 'fixed' => true); -$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,confirmbug,assignto', 'subModule' => 'tree'); +$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,batchactivate,confirmbug,assignto', 'subModule' => 'tree'); $lang->bug->menu->testcase = array('link' => '用例|testcase|browse|productID=%s'); $lang->bug->menu->testtask = array('link' => '版本|testtask|browse|productID=%s'); $lang->bug->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s'); diff --git a/module/common/lang/zh-tw.php b/module/common/lang/zh-tw.php index 20c8c793a1..fd0ba48c69 100644 --- a/module/common/lang/zh-tw.php +++ b/module/common/lang/zh-tw.php @@ -249,7 +249,7 @@ $lang->bug = new stdclass(); $lang->bug->menu = new stdclass(); $lang->bug->menu->product = array('link' => '%s', 'fixed' => true); -$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,confirmbug,assignto', 'subModule' => 'tree'); +$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,batchactivate,confirmbug,assignto', 'subModule' => 'tree'); $lang->bug->menu->testcase = array('link' => '用例|testcase|browse|productID=%s'); $lang->bug->menu->testtask = array('link' => '版本|testtask|browse|productID=%s'); $lang->bug->menu->testsuite = array('link' => '套件|testsuite|browse|productID=%s'); diff --git a/module/user/model.php b/module/user/model.php index 1830b69f6f..fae5d643c1 100644 --- a/module/user/model.php +++ b/module/user/model.php @@ -63,9 +63,9 @@ class userModel extends model /** * Get the account=>realname pairs. - * + * * @param string $params noletter|noempty|noclosed|withguest|pofirst|devfirst|qafirst|pmfirst|realname, can be sets of theme - * @param string $usersToAppended account1,account2 + * @param string $usersToAppended account1,account2 * @access public * @return array */