* Distinguish project execution from bug module.

This commit is contained in:
tianshujie98
2021-03-05 13:35:01 +08:00
parent 21a340c39d
commit 7e1c35f09d
22 changed files with 547 additions and 559 deletions
+17 -17
View File
@@ -11,39 +11,39 @@ $config->bug->edit->requiredFields = $config->bug->create->requiredFields;
$config->bug->resolve->requiredFields = 'resolution';
$config->bug->list = new stdclass();
$config->bug->list->allFields = 'id, module, project, story, task,
$config->bug->list->allFields = 'id, module, execution, story, task,
title, keywords, severity, pri, type, os, browser, hardware,
found, steps, status, deadline, activatedCount, confirmed, mailto,
openedBy, openedDate, openedBuild,
openedBy, openedDate, openedBuild,
assignedTo, assignedDate,
resolvedBy, resolution, resolvedBuild, resolvedDate,
closedBy, closedDate,
duplicateBug, linkBug,
closedBy, closedDate,
duplicateBug, linkBug,
case,
lastEditedBy,
lastEditedDate';
$config->bug->list->defaultFields = 'id,severity,pri,title,openedBy,assignedTo,resolvedBy,resolution';
$config->bug->list->exportFields = 'id, product, branch, module, project, story, task,
$config->bug->list->exportFields = 'id, product, branch, module, execution, story, task,
title, keywords, severity, pri, type, os, browser,
steps, status, deadline, activatedCount, confirmed, mailto,
openedBy, openedDate, openedBuild,
openedBy, openedDate, openedBuild,
assignedTo, assignedDate,
resolvedBy, resolution, resolvedBuild, resolvedDate,
closedBy, closedDate,
duplicateBug, linkBug,
closedBy, closedDate,
duplicateBug, linkBug,
case,
lastEditedBy,
lastEditedDate, files';
$config->bug->list->customCreateFields = 'project,story,task,pri,severity,os,browser,deadline,mailto,keywords';
$config->bug->list->customBatchCreateFields = 'project,steps,type,pri,deadline,severity,os,browser,keywords';
$config->bug->list->customCreateFields = 'execution,story,task,pri,severity,os,browser,deadline,mailto,keywords';
$config->bug->list->customBatchCreateFields = 'execution,steps,type,pri,deadline,severity,os,browser,keywords';
$config->bug->list->customBatchEditFields = 'type,severity,pri,productplan,assignedTo,deadline,status,resolvedBy,resolution,os,browser,keywords';
$config->bug->custom = new stdclass();
$config->bug->custom->createFields = $config->bug->list->customCreateFields;
$config->bug->custom->batchCreateFields = 'project,deadline,steps,type,severity,os,browser';
$config->bug->custom->batchCreateFields = 'execution,deadline,steps,type,severity,os,browser';
$config->bug->custom->batchEditFields = 'type,severity,pri,branch,assignedTo,deadline,status,resolvedBy,resolution';
$config->bug->editor = new stdclass();
@@ -72,7 +72,7 @@ $config->bug->search['fields']['product'] = $lang->bug->product;
$config->bug->search['fields']['branch'] = '';
$config->bug->search['fields']['plan'] = $lang->bug->productplan;
$config->bug->search['fields']['id'] = $lang->bug->id;
$config->bug->search['fields']['project'] = $lang->bug->project;
$config->bug->search['fields']['execution'] = $lang->bug->execution;
$config->bug->search['fields']['severity'] = $lang->bug->severity;
$config->bug->search['fields']['pri'] = $lang->bug->pri;
@@ -115,7 +115,7 @@ $config->bug->search['params']['product'] = array('operator' => '=',
$config->bug->search['params']['branch'] = array('operator' => '=', 'control' => 'select', 'values' => '');
$config->bug->search['params']['plan'] = array('operator' => '=', 'control' => 'select', 'values' => '');
$config->bug->search['params']['module'] = array('operator' => 'belong', 'control' => 'select', 'values' => 'modules');
$config->bug->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => 'projects');
$config->bug->search['params']['execution'] = array('operator' => '=', 'control' => 'select', 'values' => 'executions');
$config->bug->search['params']['severity'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->severityList);
$config->bug->search['params']['pri'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->priList);
@@ -183,10 +183,10 @@ $config->bug->datatable->fieldList['type']['fixed'] = 'no';
$config->bug->datatable->fieldList['type']['width'] = '90';
$config->bug->datatable->fieldList['type']['required'] = 'no';
$config->bug->datatable->fieldList['project']['title'] = 'project';
$config->bug->datatable->fieldList['project']['fixed'] = 'no';
$config->bug->datatable->fieldList['project']['width'] = '120';
$config->bug->datatable->fieldList['project']['required'] = 'no';
$config->bug->datatable->fieldList['execution']['title'] = 'execution';
$config->bug->datatable->fieldList['execution']['fixed'] = 'no';
$config->bug->datatable->fieldList['execution']['width'] = '120';
$config->bug->datatable->fieldList['execution']['required'] = 'no';
$config->bug->datatable->fieldList['plan']['title'] = 'plan';
$config->bug->datatable->fieldList['plan']['fixed'] = 'no';
+84 -84
View File
@@ -47,7 +47,7 @@ class bug extends control
$this->loadModel('task');
/* Set bug menu group. */
$this->projectID = isset($_GET['PRJ']) ? $_GET['PRJ'] : 0;
$this->projectID = isset($_GET['project']) ? $_GET['project'] : 0;
if(!$this->projectID)
{
$this->app->loadConfig('qa');
@@ -146,11 +146,11 @@ class bug extends control
if($this->app->getViewType() == 'mhtml') $recPerPage = 10;
$pager = new pager($recTotal, $recPerPage, $pageID);
/* Get projects. */
$projects = $this->loadModel('project')->getExecutionPairs($this->projectID, 'all', 'empty|withdelete');
/* Get executios. */
$executions = $this->loadModel('execution')->getExecutionPairs($this->projectID, 'all', 'empty|withdelete');
/* Get bugs. */
$bugs = $this->bug->getBugs($productID, $projects, $branch, $browseType, $moduleID, $queryID, $sort, $pager);
$bugs = $this->bug->getBugs($productID, $executions, $branch, $browseType, $moduleID, $queryID, $sort, $pager);
/* Process the sql, get the conditon partion, save it to session. */
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'bug', $browseType == 'needconfirm' ? false : true);
@@ -202,7 +202,7 @@ class bug extends control
$this->view->memberPairs = $this->user->getPairs('noletter|nodeleted');
$this->view->branch = $branch;
$this->view->branches = $this->loadModel('branch')->getPairs($productID);
$this->view->projects = $projects;
$this->view->executions = $executions;
$this->view->plans = $this->loadModel('productplan')->getPairs($productID);
$this->view->stories = $storyList;
$this->view->tasks = $taskList;
@@ -259,7 +259,7 @@ class bug extends control
*
* @param int $productID
* @param string $branch
* @param string $extras others params, forexample, projectID=10,moduleID=10
* @param string $extras others params, forexample, executionID=10,moduleID=10
* @access public
* @return void
*/
@@ -343,9 +343,9 @@ class bug extends control
if(defined('RUN_MODE') && RUN_MODE == 'api') $this->send(array('status' => 'success', 'data' => $bugID));
if(isset($output['projectID']))
if(isset($output['executionID']))
{
$location = $this->createLink('project', 'bug', "projectID={$output['projectID']}");
$location = $this->createLink('execution', 'bug', "executionID={$output['executionID']}");
}
else
{
@@ -364,7 +364,7 @@ class bug extends control
$this->bug->setMenu($this->products, $productID, $branch);
/* Init vars. */
$projectID = $this->lang->navGroup->bug == 'project' ? $this->session->PRJ : 0;
$projectID = $this->lang->navGroup->bug == 'project' ? $this->session->project : 0;
$moduleID = 0;
$executionID = 0;
$taskID = 0;
@@ -405,7 +405,7 @@ class bug extends control
{
$bug = $this->bug->getById($bugID);
extract((array)$bug);
$executionID = $bug->project;
$executionID = $bug->execution;
$moduleID = $bug->module;
$taskID = $bug->task;
$storyID = $bug->story;
@@ -436,7 +436,7 @@ class bug extends control
if($executionID)
{
$builds = $this->loadModel('build')->getExecutionBuildPairs($executionID, $productID, $branch, 'noempty,noterminate,nodone');
$stories = $this->story->getProjectStoryPairs($executionID);
$stories = $this->story->getExecutionStoryPairs($executionID);
}
else
{
@@ -447,15 +447,15 @@ class bug extends control
$moduleOwner = $this->bug->getModuleOwner($moduleID, $productID);
/* Set team members of the latest project as assignedTo list. */
$latestProject = $this->product->getLatestProject($productID);
$projectMembers = array();
if(!empty($latestProject)) $projectMembers = $this->loadModel('project')->getTeamMemberPairs($latestProject->id, 'nodeleted', $moduleOwner);
if(empty($projectMembers)) $projectMembers = $this->view->users;
if($assignedTo and !isset($projectMembers[$assignedTo]))
/* Set team members of the latest execution as assignedTo list. */
$latestExecution = $this->product->getLatestProject($productID);
$executionMembers = array();
if(!empty($latestExecution)) $executionMembers = $this->loadModel('execution')->getTeamMemberPairs($latestExecution->id, 'nodeleted', $moduleOwner);
if(empty($executionMembers)) $executionMembers = $this->view->users;
if($assignedTo and !isset($executionMembers[$assignedTo]))
{
$user = $this->loadModel('user')->getById($assignedTo);
if($user) $projectMembers[$assignedTo] = $user->realname;
if($user) $executionMembers[$assignedTo] = $user->realname;
}
$moduleOptionMenu = $this->tree->getOptionMenu($productID, $viewType = 'bug', $startModuleID = 0, $branch);
@@ -478,7 +478,7 @@ class bug extends control
$this->view->productName = $this->products[$productID];
$this->view->moduleOptionMenu = $moduleOptionMenu;
$this->view->stories = $stories;
$this->view->projects = $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID);
$this->view->executions = $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID);
$this->view->builds = $builds;
$this->view->moduleID = (int)$moduleID;
$this->view->executionID = $executionID;
@@ -494,7 +494,7 @@ class bug extends control
$this->view->steps = htmlspecialchars($steps);
$this->view->os = $os;
$this->view->browser = $browser;
$this->view->projectMembers = $projectMembers;
$this->view->executionMembers = $executionMembers;
$this->view->assignedTo = $assignedTo;
$this->view->deadline = $deadline;
$this->view->mailto = $mailto;
@@ -538,7 +538,7 @@ class bug extends control
if($executionID)
{
$builds = $this->loadModel('build')->getExecutionBuildPairs($executionID, $productID, $branch, 'noempty');
$stories = $this->story->getProjectStoryPairs($executionID);
$stories = $this->story->getExecutionStoryPairs($executionID);
}
else
{
@@ -571,7 +571,7 @@ class bug extends control
$showFields = trim($showFields, ',');
}
$projectID = $this->lang->navGroup->bug == 'project' ? $this->session->PRJ : 0;
$projectID = $this->lang->navGroup->bug == 'project' ? $this->session->project : 0;
$this->view->customFields = $customFields;
$this->view->showFields = $showFields;
@@ -585,7 +585,7 @@ class bug extends control
$this->view->stories = $stories;
$this->view->builds = $builds;
$this->view->users = $this->user->getPairs('devfirst|nodeleted');
$this->view->projects = $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID);
$this->view->executions = $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID);
$this->view->executionID = $executionID;
$this->view->moduleOptionMenu = $this->tree->getOptionMenu($productID, $viewType = 'bug', $startModuleID = 0, $branch);
$this->view->moduleID = $moduleID;
@@ -607,10 +607,10 @@ class bug extends control
/* Judge bug exits or not. */
$bug = $this->bug->getById($bugID, true);
if(!$bug) die(js::error($this->lang->notFound) . js::locate('back'));
$this->session->PRJ = $bug->PRJ;
$this->view->products = $this->products = $this->product->getProductPairsByProject($this->session->PRJ);
$this->session->project = $bug->project;
$this->view->products = $this->products = $this->product->getProductPairsByProject($this->session->project);
$this->bug->checkBugProjectPriv($bug);
$this->bug->checkBugExecutionPriv($bug);
/* Update action. */
if($bug->assignedTo == $this->app->user->account) $this->loadModel('action')->read('bug', $bugID);
@@ -624,7 +624,7 @@ class bug extends control
{
session_write_close();
$this->lang->set('menugroup.bug', 'repo');
$repos = $this->loadModel('repo')->getRepoPairs($this->session->PRJ);
$repos = $this->loadModel('repo')->getRepoPairs($this->session->project);
$this->repo->setMenu($repos);
$this->lang->bug->menu = $this->lang->repo->menu;
}
@@ -719,9 +719,9 @@ class bug extends control
/* Get the info of bug, current product and modue. */
$bug = $this->bug->getById($bugID);
$productID = $bug->product;
$projectID = $bug->project;
$executionID = $bug->execution;
$currentModuleID = $bug->module;
$this->bug->checkBugProjectPriv($bug);
$this->bug->checkBugExecutionPriv($bug);
/* Set the menu. */
$this->bug->setMenu($this->products, $productID, $bug->branch);
@@ -733,9 +733,9 @@ class bug extends control
/* Assign. */
$allBuilds = $this->loadModel('build')->getProductBuildPairs($productID, $branch = 0, 'noempty');
if($projectID)
if($executionID)
{
$openedBuilds = $this->build->getExecutionBuildPairs($projectID, $productID, $bug->branch, 'noempty,noterminate,nodone');
$openedBuilds = $this->build->getExecutionBuildPairs($executionID, $productID, $bug->branch, 'noempty,noterminate,nodone');
}
else
{
@@ -755,7 +755,7 @@ class bug extends control
$oldResolvedBuild = array();
if(($bug->resolvedBuild) and isset($allBuilds[$bug->resolvedBuild])) $oldResolvedBuild[$bug->resolvedBuild] = $allBuilds[$bug->resolvedBuild];
$projectID = $this->lang->navGroup->bug == 'project' ? $this->session->PRJ : 0;
$projectID = $this->lang->navGroup->bug == 'project' ? $this->session->project : 0;
$this->view->bug = $bug;
$this->view->productID = $productID;
@@ -763,11 +763,11 @@ class bug extends control
$this->view->plans = $this->loadModel('productplan')->getPairs($productID, $bug->branch);
$this->view->moduleOptionMenu = $this->tree->getOptionMenu($productID, $viewType = 'bug', $startModuleID = 0, $bug->branch);
$this->view->currentModuleID = $currentModuleID;
$this->view->projects = $this->product->getExecutionPairsByProduct($bug->product, $bug->branch ? "0,{$bug->branch}" : 0, 'id_desc', $projectID);
$this->view->stories = $bug->project ? $this->story->getProjectStoryPairs($bug->project) : $this->story->getProductStoryPairs($bug->product, $bug->branch);
$this->view->executions = $this->product->getExecutionPairsByProduct($bug->product, $bug->branch ? "0,{$bug->branch}" : 0, 'id_desc', $projectID);
$this->view->stories = $bug->execution ? $this->story->getExecutionStoryPairs($bug->execution) : $this->story->getProductStoryPairs($bug->product, $bug->branch);
$this->view->branches = $this->session->currentProductType == 'normal' ? array() : $this->loadModel('branch')->getPairs($bug->product);
$this->view->tasks = $this->task->getProjectTaskPairs($bug->project);
$this->view->testtasks = $this->loadModel('testtask')->getPairs($bug->product, $bug->project, $bug->testtask);
$this->view->tasks = $this->task->getExecutionTaskPairs($bug->execution);
$this->view->testtasks = $this->loadModel('testtask')->getPairs($bug->product, $bug->execution, $bug->testtask);
$this->view->users = $this->user->getPairs('nodeleted', "$bug->assignedTo,$bug->resolvedBy,$bug->closedBy,$bug->openedBy");
$this->view->openedBuilds = $openedBuilds;
$this->view->resolvedBuilds = array('' => '') + $openedBuilds + $oldResolvedBuild;
@@ -909,7 +909,7 @@ class bug extends control
public function assignTo($bugID)
{
$bug = $this->bug->getById($bugID);
$this->bug->checkBugProjectPriv($bug);
$this->bug->checkBugExecutionPriv($bug);
/* Set menu. */
$this->bug->setMenu($this->products, $bug->product, $bug->branch);
@@ -995,11 +995,11 @@ class bug extends control
/**
* Batch update assign of bug.
*
* @param int $projectID
* @param int $executionID
* @access public
* @return void
*/
public function batchAssignTo($projectID, $type = 'project')
public function batchAssignTo($executionID, $type = 'execution')
{
if(!empty($_POST) && isset($_POST['bugIDList']))
{
@@ -1017,7 +1017,7 @@ class bug extends control
$this->loadModel('score')->create('ajax', 'batchOther');
}
if($type == 'product' || $type == 'my') die(js::locate($this->session->bugList, 'parent'));
die(js::locate($this->createLink('project', 'bug', "projectID=$projectID")));
die(js::locate($this->createLink('execution', 'bug', "executionID=$executionID")));
}
/**
@@ -1044,7 +1044,7 @@ class bug extends control
$bug = $this->bug->getById($bugID);
$productID = $bug->product;
$this->bug->checkBugProjectPriv($bug);
$this->bug->checkBugExecutionPriv($bug);
$this->bug->setMenu($this->products, $productID, $bug->branch);
$this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->bug->confirmBug;
@@ -1120,7 +1120,7 @@ class bug extends control
}
}
$projectID = $this->lang->navGroup->bug == 'project' ? $this->session->PRJ : 0;
$projectID = $this->lang->navGroup->bug == 'project' ? $this->session->project : 0;
$bug = $this->bug->getById($bugID);
$productID = $bug->product;
$users = $this->user->getPairs('noclosed');
@@ -1128,7 +1128,7 @@ class bug extends control
if(!isset($users[$assignedTo])) $assignedTo = $this->bug->getModuleOwner($bug->module, $productID);
unset($this->lang->bug->resolutionList['tostory']);
$this->bug->checkBugProjectPriv($bug);
$this->bug->checkBugExecutionPriv($bug);
$this->bug->setMenu($this->products, $productID, $bug->branch);
$this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->bug->resolve;
@@ -1138,7 +1138,7 @@ class bug extends control
$this->view->bug = $bug;
$this->view->users = $users;
$this->view->assignedTo = $assignedTo;
$this->view->projects = $this->loadModel('product')->getExecutionPairsByProduct($productID, $bug->branch ? "0,{$bug->branch}" : 0, 'id_desc', $projectID);
$this->view->executions = $this->loadModel('product')->getExecutionPairsByProduct($productID, $bug->branch ? "0,{$bug->branch}" : 0, 'id_desc', $projectID);
$this->view->builds = $this->loadModel('build')->getProductBuildPairs($productID, $branch = $bug->branch, 'all');
$this->view->actions = $this->action->getList('bug', $bugID);
$this->display();
@@ -1197,7 +1197,7 @@ class bug extends control
$bug = $this->bug->getById($bugID);
$productID = $bug->product;
$this->bug->checkBugProjectPriv($bug);
$this->bug->checkBugExecutionPriv($bug);
$this->bug->setMenu($this->products, $productID, $bug->branch);
$this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->bug->activate;
@@ -1244,7 +1244,7 @@ class bug extends control
$bug = $this->bug->getById($bugID);
$productID = $bug->product;
$this->bug->checkBugProjectPriv($bug);
$this->bug->checkBugExecutionPriv($bug);
$this->bug->setMenu($this->products, $productID, $bug->branch);
$this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->bug->close;
@@ -1271,7 +1271,7 @@ class bug extends control
/* Get bug and queryID. */
$bug = $this->bug->getById($bugID);
$queryID = ($browseType == 'bySearch') ? (int)$param : 0;
$this->bug->checkBugProjectPriv($bug);
$this->bug->checkBugExecutionPriv($bug);
/* Set the menu. */
$this->bug->setMenu($this->products, $bug->product, $bug->branch);
@@ -1374,7 +1374,7 @@ class bug extends control
public function confirmStoryChange($bugID)
{
$bug = $this->bug->getById($bugID);
$this->bug->checkBugProjectPriv($bug);
$this->bug->checkBugExecutionPriv($bug);
$this->dao->update(TABLE_BUG)->set('storyVersion')->eq($bug->latestStoryVersion)->where('id')->eq($bugID)->exec();
$this->loadModel('action')->create('bug', $bugID, 'confirmed', '', $bug->latestStoryVersion);
die(js::reload('parent'));
@@ -1458,41 +1458,41 @@ class bug extends control
}
/**
* AJAX: get team members of the project as assignedTo list.
* AJAX: get team members of the executions as assignedTo list.
*
* @param int $projectID
* @param int $executionID
* @param string $selectedUser
* @access public
* @return string
*/
public function ajaxLoadAssignedTo($projectID, $selectedUser = '')
public function ajaxLoadAssignedTo($executionID, $selectedUser = '')
{
$projectMembers = $this->loadModel('project')->getTeamMemberPairs($projectID, '', $selectedUser);
$executionMembers = $this->loadModel('execution')->getTeamMemberPairs($executionID, '', $selectedUser);
die(html::select('assignedTo', $projectMembers, $selectedUser, 'class="form-control"'));
die(html::select('assignedTo', $executionMembers, $selectedUser, 'class="form-control"'));
}
/**
* AJAX: get team members of the latest project of a product as assignedTo list.
* AJAX: get team members of the latest executions of a product as assignedTo list.
*
* @param int $productID
* @param string $selectedUser
* @access public
* @return string
*/
public function ajaxLoadProjectTeamMembers($productID, $selectedUser = '')
public function ajaxLoadExecutionTeamMembers($productID, $selectedUser = '')
{
$latestProject = $this->product->getLatestProject($productID);
if(!empty($latestProject))
$latestExecution = $this->product->getLatestProject($productID);
if(!empty($latestExecution))
{
$projectMembers = $this->loadModel('project')->getTeamMemberPairs($latestProject->id, 'nodeleted', $selectedUser);
$executionMembers = $this->loadModel('execution')->getTeamMemberPairs($latestExecution->id, 'nodeleted', $selectedUser);
}
else
{
$projectMembers = $this->loadModel('user')->getPairs('devfirst|noclosed|nodeleted');
$executionMembers = $this->loadModel('user')->getPairs('devfirst|noclosed|nodeleted');
}
die(html::select('assignedTo', $projectMembers, $selectedUser, 'class="form-control"'));
die(html::select('assignedTo', $executionMembers, $selectedUser, 'class="form-control"'));
}
/**
@@ -1528,11 +1528,11 @@ class bug extends control
* @param string $productID
* @param string $orderBy
* @param string $browseType
* @param int $projectID
* @param int $executionID
* @access public
* @return void
*/
public function export($productID, $orderBy, $browseType = '', $projectID = 0)
public function export($productID, $orderBy, $browseType = '', $executionID = 0)
{
if($_POST)
{
@@ -1555,10 +1555,10 @@ class bug extends control
->beginIF($this->post->exportType == 'selected')->andWhere('id')->in($this->cookie->checkedItem)->fi()
->orderBy($orderBy)->fetchAll('id');
/* Get users, products and projects. */
$users = $this->loadModel('user')->getPairs('noletter');
$products = $this->loadModel('product')->getPairs();
$projects = $this->loadModel('project')->getExecutionPairs($this->projectID, 'all', 'all');
/* Get users, products and executions. */
$users = $this->loadModel('user')->getPairs('noletter');
$products = $this->loadModel('product')->getPairs();
$executions = $this->loadModel('execution')->getExecutionPairs($this->projectID, 'all', 'all');
/* Get related objects id lists. */
$relatedProductIdList = array();
@@ -1604,7 +1604,7 @@ class bug extends control
$relatedBuilds = array('trunk' => $this->lang->trunk) + $this->dao->select('id, name')->from(TABLE_BUILD)->where('id')->in($relatedBuildIdList)->fetchPairs();
$relatedFiles = $this->dao->select('id, objectID, pathname, title')->from(TABLE_FILE)->where('objectType')->eq('bug')->andWhere('objectID')->in(@array_keys($bugs))->andWhere('extra')->ne('editor')->fetchGroup('objectID');
$relatedModules = $this->loadModel('tree')->getAllModulePairs('bug');
foreach($bugs as $bug)
{
if($this->post->fileType == 'csv')
@@ -1615,17 +1615,17 @@ class bug extends control
}
/* fill some field with useful value. */
$bug->product = !isset($products[$bug->product]) ? '' : $products[$bug->product] . "(#$bug->product)";
$bug->project = !isset($projects[$bug->project]) ? '' : $projects[$bug->project] . "(#$bug->project)";
$bug->story = !isset($relatedStories[$bug->story]) ? '' : $relatedStories[$bug->story] . "(#$bug->story)";
$bug->task = !isset($relatedTasks[$bug->task]) ? '' : $relatedTasks[$bug->task] . "($bug->task)";
$bug->case = !isset($relatedCases[$bug->case]) ? '' : $relatedCases[$bug->case] . "($bug->case)";
$bug->product = !isset($products[$bug->product]) ? '' : $products[$bug->product] . "(#$bug->product)";
$bug->execution = !isset($executions[$bug->execution]) ? '' : $executions[$bug->execution] . "(#$bug->execution)";
$bug->story = !isset($relatedStories[$bug->story]) ? '' : $relatedStories[$bug->story] . "(#$bug->story)";
$bug->task = !isset($relatedTasks[$bug->task]) ? '' : $relatedTasks[$bug->task] . "($bug->task)";
$bug->case = !isset($relatedCases[$bug->case]) ? '' : $relatedCases[$bug->case] . "($bug->case)";
if(isset($relatedModules[$bug->module])) $bug->module = $relatedModules[$bug->module] . "(#$bug->module)";
if(isset($relatedBugs[$bug->duplicateBug])) $bug->duplicateBug = $relatedBugs[$bug->duplicateBug] . "($bug->duplicateBug)";
if(isset($relatedBuilds[$bug->resolvedBuild])) $bug->resolvedBuild = $relatedBuilds[$bug->resolvedBuild] . "(#$bug->resolvedBuild)";
if(isset($relatedBranch[$bug->branch])) $bug->branch = $relatedBranch[$bug->branch] . "(#$bug->branch)";
if(isset($bugLang->priList[$bug->pri])) $bug->pri = $bugLang->priList[$bug->pri];
if(isset($bugLang->typeList[$bug->type])) $bug->type = $bugLang->typeList[$bug->type];
if(isset($bugLang->severityList[$bug->severity])) $bug->severity = $bugLang->severityList[$bug->severity];
@@ -1641,8 +1641,8 @@ class bug extends control
if(isset($users[$bug->lastEditedBy])) $bug->lastEditedBy = $users[$bug->lastEditedBy];
if(isset($users[$bug->closedBy])) $bug->closedBy = $users[$bug->closedBy];
$bug->title = htmlspecialchars_decode($bug->title,ENT_QUOTES);
$bug->title = htmlspecialchars_decode($bug->title,ENT_QUOTES);
if($bug->linkBug)
{
$tmpLinkBugs = array();
@@ -1704,11 +1704,11 @@ class bug extends control
$this->fetch('file', 'export2' . $this->post->fileType, $_POST);
}
$fileName = $this->lang->bug->common;
if($projectID)
$fileName = $this->lang->bug->common;
if($executionID)
{
$projectName = $this->dao->findById($projectID)->from(TABLE_PROJECT)->fetch('name');
$fileName = $projectName . $this->lang->dash . $fileName;
$executionName = $this->dao->findById($executionID)->from(TABLE_EXECUTION)->fetch('name');
$fileName = $executionName . $this->lang->dash . $fileName;
}
else
{
@@ -1741,16 +1741,16 @@ class bug extends control
/**
* Ajax get bug filed options for auto test.
*
* @param int $productID
* @param int $projectID
*
* @param int $productID
* @param int $executionID
* @access public
* @return void
*/
public function ajaxGetBugFieldOptions($productID, $projectID = 0)
public function ajaxGetBugFieldOptions($productID, $executionID = 0)
{
$modules = $this->loadModel('tree')->getOptionMenu($productID, 'bug');
$builds = $this->loadModel('build')->getExecutionBuildPairs($projectID, $productID);
$builds = $this->loadModel('build')->getExecutionBuildPairs($executionID, $productID);
$type = $this->lang->bug->typeList;
$pri = $this->lang->bug->priList;
$severity = $this->lang->bug->severityList;
+1 -1
View File
@@ -9,7 +9,7 @@ html[lang='en'] #deadlineTd .input-group-addon{padding: 5px 18px}
.bootbox-prompt .modal-dialog {width: 500px; margin-top: 10%;}
#buildBoxActions {padding-left: 15px;}
#projectIdBox {display:block;}
#executionIdBox {display:block;}
#module + .chosen-container-single .chosen-single,
#task + .chosen-container-single .chosen-single,
+1 -1
View File
@@ -1 +1 @@
.chosen-container[id^="buildProject"] {max-width: 160px; border-radius: 0}
.chosen-container[id^="buildExecution"] {max-width: 160px; border-radius: 0}
+13 -13
View File
@@ -27,14 +27,14 @@ function setBranchRelated(branchID, productID, num)
$("#modules" + num).chosen();
});
projectLink = createLink('product', 'ajaxGetProjects', 'productID=' + productID + '&projectID=0&branch=' + branchID + '&num=' + num);
$.get(projectLink, function(projects)
executionLink = createLink('product', 'ajaxGetExecutions', 'productID=' + productID + '&executionID=0&branch=' + branchID + '&num=' + num);
$.get(executionLink, function(executions)
{
if(!projects) projects = '<select id="projects' + num + '" name="projects[' + num + ']" class="form-control"></select>';
$('#projects' + num).replaceWith(projects);
$("#projects" + num + "_chosen").remove();
$("#projects" + num).next('.picker').remove();
$("#projects" + num).chosen();
if(!executions) executions = '<select id="executions' + num + '" name="executions[' + num + ']" class="form-control"></select>';
$('#executions' + num).replaceWith(executions);
$("#executions" + num + "_chosen").remove();
$("#executions" + num).next('.picker').remove();
$("#executions" + num).chosen();
});
buildLink = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + "&varName=openedBuilds&build=&branch=" + branchID + "&index=" + num);
@@ -69,26 +69,26 @@ function setOpenedBuilds(link, index)
$('#buildBox' + index + ' select').chosen();
index++;
if($('#projects' + index).val() != 'ditto') break;
if($('#executions' + index).val() != 'ditto') break;
}while(index < row)
});
}
/**
* Load project builds
* Load execution builds
*
* @param int $productID
* @param int $projectID
* @param int $executionID
* @param int $index
* @access public
* @return void
*/
function loadProjectBuilds(productID, projectID, index)
function loadExecutionBuilds(productID, executionID, index)
{
branch = $('#branches' + index).val();
if(projectID)
if(executionID)
{
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + "&varName=openedBuilds&build=&branch=" + branch + "&index=" + index);
link = createLink('build', 'ajaxGetExecutionBuilds', 'executionID=' + executionID + '&productID=' + productID + "&varName=openedBuilds&build=&branch=" + branch + "&index=" + index);
}
else
{
+88 -88
View File
@@ -21,16 +21,16 @@ $(function()
/**
* Load all fields.
*
* @param int $productID
*
* @param int $productID
* @access public
* @return void
*/
function loadAll(productID)
{
if(page == 'create')
if(page == 'create')
{
loadProjectTeamMembers(productID);
loadExecutionTeamMembers(productID);
setAssignedTo();
}
@@ -54,8 +54,8 @@ function loadAll(productID)
$('#taskIdBox').innerHTML = '<select id="task"></select>'; // Reset the task.
$('#task').chosen();
loadProductBranches(productID)
loadProductModules(productID);
loadProductProjects(productID);
loadProductModules(productID);
loadProductExecutions(productID);
loadProductBuilds(productID);
loadProductplans(productID);
loadProductStories(productID);
@@ -65,7 +65,7 @@ function loadAll(productID)
/**
* Load by branch.
*
*
* @access public
* @return void
*/
@@ -75,14 +75,14 @@ function loadBranch()
$('#task').chosen();
productID = $('#product').val();
loadProductModules(productID);
loadProductProjects(productID);
loadProductExecutions(productID);
loadProductBuilds(productID);
loadProductplans(productID);
loadProductStories(productID);
}
/**
*Load all builds of one project or product.
*Load all builds of one execution or product.
*
* @param object $object
* @access public
@@ -98,15 +98,15 @@ function loadAllBuilds(object)
}
else
{
productID = $('#product').val();
projectID = $('#project').val();
productID = $('#product').val();
executionID = $('#execution').val();
var buildBox = '';
if(page == 'edit') buildBox = $(object).closest('.input-group').attr('id');
if(projectID)
if(executionID)
{
loadAllProjectBuilds(projectID, productID, buildBox);
loadAllExecutionBuilds(executionID, productID, buildBox);
}
else
{
@@ -115,23 +115,23 @@ function loadAllBuilds(object)
}
}
/**
* Load all builds of the project.
/**
* Load all builds of the execution.
*
* @param int $projectID
* @param int $executionID
* @param int $productID
* @param string $buildBox
* @access public
* @return void
*/
function loadAllProjectBuilds(projectID, productID, buildBox)
function loadAllExecutionBuilds(executionID, productID, buildBox)
{
branch = $('#branch').val();
if(typeof(branch) == 'undefined') branch = 0;
if(page == 'create')
{
oldOpenedBuild = $('#openedBuild').val() ? $('#openedBuild').val() : 0;
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch + '&index=0&needCreate=true&type=all');
link = createLink('build', 'ajaxGetExecutionBuilds', 'executionID=' + executionID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch + '&index=0&needCreate=true&type=all');
$.get(link, function(data)
{
if(!data) data = '<select id="openedBuild" name="openedBuild" class="form-control" multiple=multiple></select>';
@@ -146,7 +146,7 @@ function loadAllProjectBuilds(projectID, productID, buildBox)
{
if(buildBox == 'openedBuildBox')
{
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch + '&index=0&needCreate=true&type=all');
link = createLink('build', 'ajaxGetExecutionBuilds', 'executionID=' + executionID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch + '&index=0&needCreate=true&type=all');
$('#openedBuildBox').load(link, function(){$(this).find('select').chosen()});
}
if(buildBox == 'resolvedBuildBox')
@@ -157,7 +157,7 @@ function loadAllProjectBuilds(projectID, productID, buildBox)
}
}
/**
/**
* Load all builds of the product.
*
* @param int $productID
@@ -169,7 +169,7 @@ function loadAllProductBuilds(productID, buildBox)
{
branch = $('#branch').val();
if(typeof(branch) == 'undefined') branch = 0;
if(page == 'create')
if(page == 'create')
{
link = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch + '&index=0&type=all');
$.get(link, function(data)
@@ -199,8 +199,8 @@ function loadAllProductBuilds(productID, buildBox)
/**
* Load product's modules.
*
* @param int $productID
*
* @param int $productID
* @access public
* @return void
*/
@@ -210,16 +210,16 @@ function loadProductModules(productID)
if(typeof(branch) == 'undefined') branch = 0;
link = createLink('tree', 'ajaxGetOptionMenu', 'productID=' + productID + '&viewtype=bug&branch=' + branch + '&rootModuleID=0&returnType=html&fieldID=&needManage=true');
$('#moduleIdBox').load(link, function()
{
{
$(this).find('select').chosen()
if(typeof(bugModule) == 'string') $('#moduleIdBox').prepend("<span class='input-group-addon' style='border-left-width: 1px;'>" + bugModule + "</span>");
});
}
/**
* Load product stories
*
* @param int $productID
* Load product stories
*
* @param int $productID
* @access public
* @return void
*/
@@ -232,20 +232,20 @@ function loadProductStories(productID)
}
/**
* Load projects of product.
*
* @param int $productID
* Load executions of product.
*
* @param int $productID
* @access public
* @return void
*/
function loadProductProjects(productID)
function loadProductExecutions(productID)
{
required = $('#project_chosen').hasClass('required');
required = $('#execution_chosen').hasClass('required');
branch = $('#branch').val();
if(typeof(branch) == 'undefined') branch = 0;
link = createLink('product', 'ajaxGetProjects', 'productID=' + productID + '&projectID=' + oldProjectID + '&branch=' + branch);
$('#projectIdBox').load(link, function()
link = createLink('product', 'ajaxGetExecutions', 'productID=' + productID + '&executionID=' + oldExecutionID + '&branch=' + branch);
$('#executionIdBox').load(link, function()
{
$(this).find('select').chosen();
if(required) $(this).addClass('required');
@@ -254,8 +254,8 @@ function loadProductProjects(productID)
/**
* Load product plans.
*
* @param productID $productID
*
* @param productID $productID
* @access public
* @return void
*/
@@ -268,9 +268,9 @@ function loadProductplans(productID)
}
/**
* Load product builds.
*
* @param productID $productID
* Load product builds.
*
* @param productID $productID
* @access public
* @return void
*/
@@ -301,21 +301,21 @@ function loadProductBuilds(productID)
}
/**
* Load project related bugs and tasks.
*
* @param int $projectID
* Load execution related bugs and tasks.
*
* @param int $executionID
* @access public
* @return void
*/
function loadProjectRelated(projectID)
function loadExecutionRelated(executionID)
{
if(projectID)
if(executionID)
{
loadProjectTasks(projectID);
loadProjectStories(projectID);
loadProjectBuilds(projectID);
loadAssignedTo(projectID);
loadTestTasks($('#product').val(), projectID);
loadExecutionTasks(executionID);
loadExecutionStories(executionID);
loadExecutionBuilds(executionID);
loadAssignedTo(executionID);
loadTestTasks($('#product').val(), executionID);
}
else
{
@@ -327,15 +327,15 @@ function loadProjectRelated(projectID)
}
/**
* Load project tasks.
*
* @param projectID $projectID
* Load execution tasks.
*
* @param executionID $executionID
* @access public
* @return void
*/
function loadProjectTasks(projectID)
function loadExecutionTasks(executionID)
{
link = createLink('task', 'ajaxGetProjectTasks', 'projectID=' + projectID + '&taskID=' + oldTaskID);
link = createLink('task', 'ajaxGetExecutionTasks', 'executionID=' + executionID + '&taskID=' + oldTaskID);
$.post(link, function(data)
{
if(!data) data = '<select id="task" name="task" class="form-control"></select>';
@@ -347,28 +347,28 @@ function loadProjectTasks(projectID)
}
/**
* Load project stories.
*
* @param projectID $projectID
* Load execution stories.
*
* @param executionID $executionID
* @access public
* @return void
*/
function loadProjectStories(projectID)
function loadExecutionStories(executionID)
{
branch = $('#branch').val();
if(typeof(branch) == 'undefined') branch = 0;
link = createLink('story', 'ajaxGetProjectStories', 'projectID=' + projectID + '&productID=' + $('#product').val() + '&branch=' + branch + '&moduleID=0&storyID=' + oldStoryID);
link = createLink('story', 'ajaxGetExecutionStories', 'executionID=' + executionID + '&productID=' + $('#product').val() + '&branch=' + branch + '&moduleID=0&storyID=' + oldStoryID);
$('#storyIdBox').load(link, function(){$('#story').chosen();});
}
/**
* Load builds of a project.
*
* @param int $projectID
* Load builds of a execution.
*
* @param int $executionID
* @access public
* @return void
*/
function loadProjectBuilds(projectID)
function loadExecutionBuilds(executionID)
{
branch = $('#branch').val();
if(typeof(branch) == 'undefined') branch = 0;
@@ -377,7 +377,7 @@ function loadProjectBuilds(projectID)
if(page == 'create')
{
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + "&branch=" + branch + "&index=0&needCreate=true");
link = createLink('build', 'ajaxGetExecutionBuilds', 'executionID=' + executionID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + "&branch=" + branch + "&index=0&needCreate=true");
$.get(link, function(data)
{
if(!data) data = '<select id="openedBuild" name="openedBuild" class="form-control" multiple=multiple></select>';
@@ -391,9 +391,9 @@ function loadProjectBuilds(projectID)
}
else
{
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch);
link = createLink('build', 'ajaxGetExecutionBuilds', 'executionID=' + executionID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch);
$('#openedBuildBox').load(link, function(){$(this).find('select').val(oldOpenedBuild).chosen()});
oldResolvedBuild = $('#resolvedBuild').val() ? $('#resolvedBuild').val() : 0;
link = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=' + branch);
$('#resolvedBuildBox').load(link, function(){$(this).find('select').val(oldResolvedBuild).chosen()});
@@ -402,9 +402,9 @@ function loadProjectBuilds(projectID)
/**
* Set story field.
*
* @param moduleID $moduleID
* @param productID $productID
*
* @param moduleID $moduleID
* @param productID $productID
* @param storyID $storyID
* @access public
* @return void
@@ -426,8 +426,8 @@ function setStories(moduleID, productID, storyID)
/**
* Load product branches.
*
* @param int $productID
*
* @param int $productID
* @access public
* @return void
*/
@@ -452,16 +452,16 @@ var oldAssignedToTitle = $("#assignedTo").find("option:selected").text();
var oldAssignedTo = $("#assignedTo").find("option:selected").val();
/**
* Load team members of the project as assignedTo list.
* Load team members of the execution as assignedTo list.
*
* @param int $projectID
* @param int $executionID
* @access public
* @return void
*/
function loadAssignedTo(projectID, selectedUser)
function loadAssignedTo(executionID, selectedUser)
{
selectedUser = (typeof(selectedUser) == 'undefined') ? '' : $('#assignedTo').val();
link = createLink('bug', 'ajaxLoadAssignedTo', 'projectID=' + projectID + '&selectedUser=' + selectedUser);
link = createLink('bug', 'ajaxLoadAssignedTo', 'executionID=' + executionID + '&selectedUser=' + selectedUser);
$.get(link, function(data)
{
var defaultOption = '<option title="' + oldAssignedToTitle + '" value="' + oldAssignedTo + '" selected="selected">' + oldAssignedToTitle + '</option>';
@@ -479,16 +479,16 @@ var oldTestTask = $("#testtask").find("option:selected").val();
/**
* Load test tasks.
*
* @param int $productID
* @param int $projectID
*
* @param int $productID
* @param int $executionID
* @access public
* @return void
*/
function loadTestTasks(productID, projectID)
function loadTestTasks(productID, executionID)
{
if(typeof(projectID) == 'undefined') projectID = 0;
link = createLink('testtask', 'ajaxGetTestTasks', 'productID=' + productID + '&projectID=' + projectID);
if(typeof(executionID) == 'undefined') executionID = 0;
link = createLink('testtask', 'ajaxGetTestTasks', 'productID=' + productID + '&executionID=' + executionID);
$.get(link, function(data)
{
var defaultOption = '<option title="' + oldTestTaskTitle + '" value="' + oldTestTask + '" selected="selected">' + oldTestTaskTitle + '</option>';
@@ -500,30 +500,30 @@ function loadTestTasks(productID, projectID)
/**
* notice for create build.
*
*
* @access public
* @return void
*/
function notice()
{
$('#buildBoxActions').empty().hide();
if($('#openedBuild').find('option').length <= 1)
if($('#openedBuild').find('option').length <= 1)
{
var html = '';
if($('#project').length == 0 || $('#project').val() == '')
if($('#execution').length == 0 || $('#execution').val() == '')
{
var branch = $('#branch').val();
if(typeof(branch) == 'undefined') branch = 0;
var link = createLink('release', 'create', 'productID=' + $('#product').val() + '&branch=' + branch);
var link = createLink('release', 'create', 'productID=' + $('#product').val() + '&branch=' + branch);
link += config.requestType == 'GET' ? '&onlybody=yes' : '?onlybody=yes';
html += '<a href="' + link + '" data-toggle="modal" data-type="iframe" style="padding-right:5px">' + createBuild + '</a> ';
html += '<a href="javascript:loadProductBuilds(' + $('#product').val() + ')">' + refresh + '</a>';
}
else
{
projectID = $('#project').val();
html += '<a href="' + createLink('build', 'create','projectID=' + projectID) + '" target="_blank" style="padding-right:5px">' + createBuild + '</a> ';
html += '<a href="javascript:loadProjectBuilds(' + projectID + ')">' + refresh + '</a>';
executionID = $('#execution').val();
html += '<a href="' + createLink('build', 'create','executionID=' + executionID) + '" target="_blank" style="padding-right:5px">' + createBuild + '</a> ';
html += '<a href="javascript:loadExecutionBuilds(' + executionID + ')">' + refresh + '</a>';
}
var $bba = $('#buildBoxActions');
if($bba.length)
+5 -5
View File
@@ -20,15 +20,15 @@ function loadAllUsers()
}
/**
* Load team members of the latest project of a product as assignedTo list.
* Load team members of the latest execution of a product as assignedTo list.
*
* @param int $productID
* @access public
* @return void
*/
function loadProjectTeamMembers(productID)
function loadExecutionTeamMembers(productID)
{
var link = createLink('bug', 'ajaxLoadProjectTeamMembers', 'productID=' + productID + '&selectedUser=' + $('#assignedTo').val());
var link = createLink('bug', 'ajaxLoadExecutionTeamMembers', 'productID=' + productID + '&selectedUser=' + $('#assignedTo').val());
$('#assignedToBox').load(link, function(){$('#assignedTo').chosen();});
}
@@ -92,11 +92,11 @@ $(function()
var assignedto = $('#assignedTo').val();
changeProductConfirmed = true;
oldStoryID = $('#story').val() || 0;
oldProjectID = 0;
oldExecutionID = 0;
oldOpenedBuild = '';
oldTaskID = $('#oldTaskID').val() || 0;
if($('#project').val()) loadProjectRelated($('#project').val());
if($('#execution').val()) loadExecutionRelated($('#execution').val());
if(!assignedto) setTimeout(function(){setAssignedTo(moduleID, productID)}, 500);
notice();
+8 -8
View File
@@ -5,8 +5,8 @@ $(function()
/**
* Set duplicate field.
*
* @param string $resolution
*
* @param string $resolution
* @access public
* @return void
*/
@@ -24,32 +24,32 @@ function setDuplicate(resolution)
/**
* Get story or task list.
*
* @param string $module
*
* @param string $module
* @access public
* @return void
*/
function getList(module)
{
productID = $('#product').val();
projectID = $('#project').val();
executionID = $('#execution').val();
storyID = $('#story').val();
taskID = $('#task').val();
if(module == 'story')
{
link = createLink('search', 'select', 'productID=' + productID + '&projectID=' + projectID + '&module=story&moduleID=' + storyID);
link = createLink('search', 'select', 'productID=' + productID + '&executionID=' + executionID + '&module=story&moduleID=' + storyID);
$('#storyListIdBox a').attr("href", link);
}
else
{
link = createLink('search', 'select', 'productID=' + productID + '&projectID=' + projectID + '&module=task&moduleID=' + taskID);
link = createLink('search', 'select', 'productID=' + productID + '&executionID=' + executionID + '&module=task&moduleID=' + taskID);
$('#taskListIdBox a').attr("href", link);
}
}
/**
* load stories of module.
*
*
* @access public
* @return void
*/
+2 -2
View File
@@ -36,13 +36,13 @@ $(function()
{
$('#resolvedBuildBox').addClass('hidden');
$('#newBuildBox').removeClass('hidden');
$('#newBuildProjectBox').removeClass('hidden');
$('#newBuildExecutionBox').removeClass('hidden');
}
else
{
$('#resolvedBuildBox').removeClass('hidden');
$('#newBuildBox').addClass('hidden');
$('#newBuildProjectBox').addClass('hidden');
$('#newBuildExecutionBox').addClass('hidden');
}
})
})
+23 -25
View File
@@ -1,12 +1,12 @@
<?php
/**
* The bug module English file of ZenTaoPMS.
* The bug module german file of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @copyright Copyright 2009-2021 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package bug
* @version $Id: en.php 4536 2013-03-02 13:39:37Z wwccss $
* @version $Id: de.php 4536 2013-03-02 13:39:37Z wwccss $
* @link http://www.zentao.net
*/
/* Fieldlist. */
@@ -17,7 +17,7 @@ $lang->bug->branch = 'Branch/Platform';
$lang->bug->productplan = 'Plan';
$lang->bug->module = 'Modul';
$lang->bug->moduleAB = 'Modul';
$lang->bug->project = $lang->executionCommon;
$lang->bug->execution = $lang->executionCommon;
$lang->bug->story = 'Story';
$lang->bug->storyVersion = 'Story Version';
$lang->bug->color = 'Farbe des Titels';
@@ -172,13 +172,13 @@ $lang->bug->legendRelated = 'Sonstige Infos';
$lang->bug->buttonConfirm = 'Confirm';
/* 交互提示。*/
$lang->bug->summary = "Bugs on this page : <strong>%s</strong> Total, <strong>%s</strong> Unresolved.";
$lang->bug->confirmChangeProduct = "Change {$lang->productCommon} will cause linked {$lang->executionCommon},Story and Task change. Do you want to do this?";
$lang->bug->confirmDelete = 'Do you want to delete this bug?';
$lang->bug->remindTask = 'This Bug has been converted to Task. Do you want to update Status of Task(ID %s)?';
$lang->bug->skipClose = 'Bug %s is not resolved. You cannot close it.';
$lang->bug->projectAccessDenied = "You access to the {$lang->executionCommon} to which this bug belongs is denied!";
$lang->bug->stepsNotEmpty = "The reproduction step cannot be empty.";
$lang->bug->summary = "Bugs on this page : <strong>%s</strong> Total, <strong>%s</strong> Unresolved.";
$lang->bug->confirmChangeProduct = "Change {$lang->productCommon} will cause linked {$lang->executionCommon},Story and Task change. Do you want to do this?";
$lang->bug->confirmDelete = 'Do you want to delete this bug?';
$lang->bug->remindTask = 'This Bug has been converted to Task. Do you want to update Status of Task(ID %s)?';
$lang->bug->skipClose = 'Bug %s is not resolved. You cannot close it.';
$lang->bug->executionAccessDenied = "You access to the {$lang->executionCommon} to which this bug belongs is denied!";
$lang->bug->stepsNotEmpty = "The reproduction step cannot be empty.";
/* 模板。*/
$lang->bug->tplStep = "<p>[Steps]</p><br/>";
@@ -278,7 +278,7 @@ $lang->bug->report->common = 'Berichte';
$lang->bug->report->select = 'Typ selektieren ';
$lang->bug->report->create = 'Bericht erstellen';
$lang->bug->report->charts['bugsPerProject'] = $lang->executionCommon . ' Bugs';
$lang->bug->report->charts['bugsPerExecution'] = $lang->executionCommon . ' Bugs';
$lang->bug->report->charts['bugsPerBuild'] = 'Bugs pro Build';
$lang->bug->report->charts['bugsPerModule'] = 'Bugs pro Modul';
$lang->bug->report->charts['openedBugsPerDay'] = 'Erstellte Bugs pro Tag';
@@ -303,7 +303,7 @@ $lang->bug->report->options->type = 'pie';
$lang->bug->report->options->width = 500;
$lang->bug->report->options->height = 140;
$lang->bug->report->bugsPerProject = new stdclass();
$lang->bug->report->bugsPerExecution = new stdclass();
$lang->bug->report->bugsPerBuild = new stdclass();
$lang->bug->report->bugsPerModule = new stdclass();
$lang->bug->report->openedBugsPerDay = new stdclass();
@@ -322,7 +322,7 @@ $lang->bug->report->bugsPerAssignedTo = new stdclass();
$lang->bug->report->bugLiveDays = new stdclass();
$lang->bug->report->bugHistories = new stdclass();
$lang->bug->report->bugsPerProject->graph = new stdclass();
$lang->bug->report->bugsPerExecution->graph = new stdclass();
$lang->bug->report->bugsPerBuild->graph = new stdclass();
$lang->bug->report->bugsPerModule->graph = new stdclass();
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
@@ -341,18 +341,18 @@ $lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
$lang->bug->report->bugLiveDays->graph = new stdclass();
$lang->bug->report->bugHistories->graph = new stdclass();
$lang->bug->report->bugsPerProject->graph->xAxisName = $lang->executionCommon;
$lang->bug->report->bugsPerBuild->graph->xAxisName = 'Build';
$lang->bug->report->bugsPerModule->graph->xAxisName = 'Modul';
$lang->bug->report->bugsPerExecution->graph->xAxisName = $lang->executionCommon;
$lang->bug->report->bugsPerBuild->graph->xAxisName = 'Build';
$lang->bug->report->bugsPerModule->graph->xAxisName = 'Modul';
$lang->bug->report->openedBugsPerDay->type = 'bar';
$lang->bug->report->openedBugsPerDay->graph->xAxisName = 'Datum';
$lang->bug->report->openedBugsPerDay->type = 'bar';
$lang->bug->report->openedBugsPerDay->graph->xAxisName = 'Datum';
$lang->bug->report->resolvedBugsPerDay->type = 'bar';
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = 'Datum';
$lang->bug->report->closedBugsPerDay->type = 'bar';
$lang->bug->report->closedBugsPerDay->graph->xAxisName = 'Datum';
$lang->bug->report->closedBugsPerDay->type = 'bar';
$lang->bug->report->closedBugsPerDay->graph->xAxisName = 'Datum';
$lang->bug->report->openedBugsPerUser->graph->xAxisName = 'Benutzer';
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName = 'Benutzer';
@@ -391,12 +391,10 @@ $lang->bug->featureBar['browse']['unclosed'] = $lang->bug->unclosed;
$lang->bug->featureBar['browse']['openedbyme'] = $lang->bug->openedByMe;
$lang->bug->featureBar['browse']['assigntome'] = $lang->bug->assignToMe;
$lang->bug->featureBar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe;
$lang->bug->featureBar['browse']['toclosed'] = $lang->bug->toClosed;
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
$lang->bug->moreSelects['toclosed'] = $lang->bug->toClosed;
$lang->bug->moreSelects['unresolved'] = $lang->bug->unResolved;
$lang->bug->moreSelects['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['longlifebugs'] = $lang->bug->longLifeBugs;
+21 -23
View File
@@ -2,7 +2,7 @@
/**
* The bug module English file of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @copyright Copyright 2009-2021 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package bug
@@ -17,7 +17,7 @@ $lang->bug->branch = 'Branch/Platform';
$lang->bug->productplan = 'Plan';
$lang->bug->module = 'Module';
$lang->bug->moduleAB = 'Module';
$lang->bug->project = $lang->executionCommon;
$lang->bug->execution = $lang->executionCommon;
$lang->bug->story = 'Story';
$lang->bug->storyVersion = 'Story Version';
$lang->bug->color = 'Color';
@@ -172,13 +172,13 @@ $lang->bug->legendRelated = 'Related Info';
$lang->bug->buttonConfirm = 'Confirm';
/* Interactive prompt. */
$lang->bug->summary = "Total <strong>%s</strong> bugs on this page, and <strong>%s</strong> Active.";
$lang->bug->confirmChangeProduct = "Any change to {$lang->productCommon} will cause linked {$lang->executionCommon}s, stories and tasks change. Do you want to do this?";
$lang->bug->confirmDelete = 'Do you want to delete this bug?';
$lang->bug->remindTask = 'This bug has been converted to a task. Do you want to update the status of Task(ID %s)?';
$lang->bug->skipClose = 'Bug %s is active. You cannot close it.';
$lang->bug->projectAccessDenied = "You access to the {$lang->executionCommon} to which this bug belongs is denied!";
$lang->bug->stepsNotEmpty = "The reproduction step cannot be empty.";
$lang->bug->summary = "Total <strong>%s</strong> bugs on this page, and <strong>%s</strong> Active.";
$lang->bug->confirmChangeProduct = "Any change to {$lang->productCommon} will cause linked {$lang->executionCommon}s, stories and tasks change. Do you want to do this?";
$lang->bug->confirmDelete = 'Do you want to delete this bug?';
$lang->bug->remindTask = 'This bug has been converted to a task. Do you want to update the status of Task(ID %s)?';
$lang->bug->skipClose = 'Bug %s is active. You cannot close it.';
$lang->bug->executionAccessDenied = "You access to the {$lang->executionCommon} to which this bug belongs is denied!";
$lang->bug->stepsNotEmpty = "The reproduction step cannot be empty.";
/* Template. */
$lang->bug->tplStep = "<p>[Steps]</p><br/>";
@@ -278,7 +278,7 @@ $lang->bug->report->common = 'Report';
$lang->bug->report->select = 'Select Report Type';
$lang->bug->report->create = 'Create Report';
$lang->bug->report->charts['bugsPerProject'] = $lang->executionCommon . ' Bugs';
$lang->bug->report->charts['bugsPerExecution'] = $lang->executionCommon . ' Bugs';
$lang->bug->report->charts['bugsPerBuild'] = 'Bugs Per Build';
$lang->bug->report->charts['bugsPerModule'] = 'Bugs Per Module';
$lang->bug->report->charts['openedBugsPerDay'] = 'Reported Bugs Per Day';
@@ -303,7 +303,7 @@ $lang->bug->report->options->type = 'pie';
$lang->bug->report->options->width = 500;
$lang->bug->report->options->height = 140;
$lang->bug->report->bugsPerProject = new stdclass();
$lang->bug->report->bugsPerExecution = new stdclass();
$lang->bug->report->bugsPerBuild = new stdclass();
$lang->bug->report->bugsPerModule = new stdclass();
$lang->bug->report->openedBugsPerDay = new stdclass();
@@ -322,7 +322,7 @@ $lang->bug->report->bugsPerAssignedTo = new stdclass();
$lang->bug->report->bugLiveDays = new stdclass();
$lang->bug->report->bugHistories = new stdclass();
$lang->bug->report->bugsPerProject->graph = new stdclass();
$lang->bug->report->bugsPerExecution->graph = new stdclass();
$lang->bug->report->bugsPerBuild->graph = new stdclass();
$lang->bug->report->bugsPerModule->graph = new stdclass();
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
@@ -341,18 +341,18 @@ $lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
$lang->bug->report->bugLiveDays->graph = new stdclass();
$lang->bug->report->bugHistories->graph = new stdclass();
$lang->bug->report->bugsPerProject->graph->xAxisName = $lang->executionCommon;
$lang->bug->report->bugsPerBuild->graph->xAxisName = 'Build';
$lang->bug->report->bugsPerModule->graph->xAxisName = 'Module';
$lang->bug->report->bugsPerExecution->graph->xAxisName = $lang->executionCommon;
$lang->bug->report->bugsPerBuild->graph->xAxisName = 'Build';
$lang->bug->report->bugsPerModule->graph->xAxisName = 'Module';
$lang->bug->report->openedBugsPerDay->type = 'bar';
$lang->bug->report->openedBugsPerDay->graph->xAxisName = 'Date';
$lang->bug->report->openedBugsPerDay->type = 'bar';
$lang->bug->report->openedBugsPerDay->graph->xAxisName = 'Date';
$lang->bug->report->resolvedBugsPerDay->type = 'bar';
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = 'Date';
$lang->bug->report->closedBugsPerDay->type = 'bar';
$lang->bug->report->closedBugsPerDay->graph->xAxisName = 'Date';
$lang->bug->report->closedBugsPerDay->type = 'bar';
$lang->bug->report->closedBugsPerDay->graph->xAxisName = 'Date';
$lang->bug->report->openedBugsPerUser->graph->xAxisName = 'User';
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName = 'User';
@@ -391,12 +391,10 @@ $lang->bug->featureBar['browse']['unclosed'] = $lang->bug->unclosed;
$lang->bug->featureBar['browse']['openedbyme'] = $lang->bug->openedByMe;
$lang->bug->featureBar['browse']['assigntome'] = $lang->bug->assignToMe;
$lang->bug->featureBar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe;
$lang->bug->featureBar['browse']['toclosed'] = $lang->bug->toClosed;
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
$lang->bug->moreSelects['toclosed'] = $lang->bug->toClosed;
$lang->bug->moreSelects['unresolved'] = $lang->bug->unResolved;
$lang->bug->moreSelects['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['longlifebugs'] = $lang->bug->longLifeBugs;
+23 -25
View File
@@ -1,12 +1,12 @@
<?php
/**
* The bug module English file of ZenTaoPMS.
* The bug module french file of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @copyright Copyright 2009-2021 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package bug
* @version $Id: en.php 4536 2013-03-02 13:39:37Z wwccss $
* @version $Id: fr.php 4536 2013-03-02 13:39:37Z wwccss $
* @link https://www.zentao.pm
*/
/* Fieldlist. */
@@ -17,7 +17,7 @@ $lang->bug->branch = 'Branche/Plateforme';
$lang->bug->productplan = 'Plan';
$lang->bug->module = 'Module';
$lang->bug->moduleAB = 'Module';
$lang->bug->project = $lang->executionCommon;
$lang->bug->execution = $lang->executionCommon;
$lang->bug->story = 'Story';
$lang->bug->storyVersion = 'Version Story';
$lang->bug->color = 'Couleur';
@@ -172,13 +172,13 @@ $lang->bug->legendRelated = 'Infos connexes';
$lang->bug->buttonConfirm = 'Confirmer';
/* 交互提示。*/
$lang->bug->summary = "Total de <strong>%s</strong> bugs sur cette page, et <strong>%s</strong> sont Actifs.";
$lang->bug->confirmChangeProduct = "Tout changement aux {$lang->productCommon} fera que les {$lang->executionCommon}s, stories et tâches associées vont changer. Voulez-vous faire cela ?";
$lang->bug->confirmDelete = 'Voulez-vous supprimer ce bug ?';
$lang->bug->remindTask = 'Ce bug a été converti en tâche. Voulez-vous mettre à jour le statut de la Tâche(ID %s) ?';
$lang->bug->skipClose = 'Bug %s est actif. Vous ne pouvez pas le fermer.';
$lang->bug->projectAccessDenied = "Votre accès à {$lang->executionCommon} auquel ce bug appartient est refusé !";
$lang->bug->stepsNotEmpty = "The reproduction step cannot be empty.";
$lang->bug->summary = "Total de <strong>%s</strong> bugs sur cette page, et <strong>%s</strong> sont Actifs.";
$lang->bug->confirmChangeProduct = "Tout changement aux {$lang->productCommon} fera que les {$lang->executionCommon}s, stories et tâches associées vont changer. Voulez-vous faire cela ?";
$lang->bug->confirmDelete = 'Voulez-vous supprimer ce bug ?';
$lang->bug->remindTask = 'Ce bug a été converti en tâche. Voulez-vous mettre à jour le statut de la Tâche(ID %s) ?';
$lang->bug->skipClose = 'Bug %s est actif. Vous ne pouvez pas le fermer.';
$lang->bug->executionAccessDenied = "Votre accès à {$lang->executionCommon} auquel ce bug appartient est refusé !";
$lang->bug->stepsNotEmpty = "The reproduction step cannot be empty.";
/* 模板。*/
$lang->bug->tplStep = "<p>[Etape]</p><br/>";
@@ -278,7 +278,7 @@ $lang->bug->report->common = 'Rapport';
$lang->bug->report->select = 'Sélect Type de Rapport';
$lang->bug->report->create = 'Créer Rapport';
$lang->bug->report->charts['bugsPerProject'] = 'Bugs ' . $lang->executionCommon;
$lang->bug->report->charts['bugsPerExecution'] = 'Bugs ' . $lang->executionCommon;
$lang->bug->report->charts['bugsPerBuild'] = 'Bugs Par Build';
$lang->bug->report->charts['bugsPerModule'] = 'Bugs Par Module';
$lang->bug->report->charts['openedBugsPerDay'] = 'Bugs Détectés Par Jour';
@@ -303,7 +303,7 @@ $lang->bug->report->options->type = 'pie';
$lang->bug->report->options->width = 500;
$lang->bug->report->options->height = 140;
$lang->bug->report->bugsPerProject = new stdclass();
$lang->bug->report->bugsPerExecution = new stdclass();
$lang->bug->report->bugsPerBuild = new stdclass();
$lang->bug->report->bugsPerModule = new stdclass();
$lang->bug->report->openedBugsPerDay = new stdclass();
@@ -322,7 +322,7 @@ $lang->bug->report->bugsPerAssignedTo = new stdclass();
$lang->bug->report->bugLiveDays = new stdclass();
$lang->bug->report->bugHistories = new stdclass();
$lang->bug->report->bugsPerProject->graph = new stdclass();
$lang->bug->report->bugsPerExecution->graph = new stdclass();
$lang->bug->report->bugsPerBuild->graph = new stdclass();
$lang->bug->report->bugsPerModule->graph = new stdclass();
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
@@ -341,18 +341,18 @@ $lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
$lang->bug->report->bugLiveDays->graph = new stdclass();
$lang->bug->report->bugHistories->graph = new stdclass();
$lang->bug->report->bugsPerProject->graph->xAxisName = $lang->executionCommon;
$lang->bug->report->bugsPerBuild->graph->xAxisName = 'Build';
$lang->bug->report->bugsPerModule->graph->xAxisName = 'Module';
$lang->bug->report->bugsPerExecution->graph->xAxisName = $lang->executionCommon;
$lang->bug->report->bugsPerBuild->graph->xAxisName = 'Build';
$lang->bug->report->bugsPerModule->graph->xAxisName = 'Module';
$lang->bug->report->openedBugsPerDay->type = 'bar';
$lang->bug->report->openedBugsPerDay->graph->xAxisName = 'Date';
$lang->bug->report->openedBugsPerDay->type = 'bar';
$lang->bug->report->openedBugsPerDay->graph->xAxisName = 'Date';
$lang->bug->report->resolvedBugsPerDay->type = 'bar';
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = 'Date';
$lang->bug->report->closedBugsPerDay->type = 'bar';
$lang->bug->report->closedBugsPerDay->graph->xAxisName = 'Date';
$lang->bug->report->closedBugsPerDay->type = 'bar';
$lang->bug->report->closedBugsPerDay->graph->xAxisName = 'Date';
$lang->bug->report->openedBugsPerUser->graph->xAxisName = 'User';
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName = 'User';
@@ -391,12 +391,10 @@ $lang->bug->featureBar['browse']['unclosed'] = $lang->bug->unclosed;
$lang->bug->featureBar['browse']['openedbyme'] = $lang->bug->openedByMe;
$lang->bug->featureBar['browse']['assigntome'] = $lang->bug->assignToMe;
$lang->bug->featureBar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe;
$lang->bug->featureBar['browse']['toclosed'] = $lang->bug->toClosed;
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
$lang->bug->moreSelects['toclosed'] = $lang->bug->toClosed;
$lang->bug->moreSelects['unresolved'] = $lang->bug->unResolved;
$lang->bug->moreSelects['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['longlifebugs'] = $lang->bug->longLifeBugs;
+26 -28
View File
@@ -1,8 +1,8 @@
<?php
/**
* The bug module English file of ZenTaoPMS.
* The bug module Vietnamese file of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @copyright Copyright 2009-2021 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Nguyễn Quốc Nho <quocnho@gmail.com>
* @package bug
@@ -17,7 +17,7 @@ $lang->bug->branch = 'Branch/Platform';
$lang->bug->productplan = 'Kế hoạch';
$lang->bug->module = 'Module';
$lang->bug->moduleAB = 'Module';
$lang->bug->project = $lang->executionCommon;
$lang->bug->execution = $lang->executionCommon;
$lang->bug->story = 'Câu chuyện';
$lang->bug->storyVersion = 'Phiên bản câu chuyện';
$lang->bug->color = 'Màu';
@@ -172,13 +172,13 @@ $lang->bug->legendRelated = 'Thông tin liên quan';
$lang->bug->buttonConfirm = 'Xác nhận';
/* Interactive prompt. */
$lang->bug->summary = "Tổng <strong>%s</strong> bugs, và <strong>%s</strong> kích hoạt.";
$lang->bug->confirmChangeProduct = "Mọi sự thay đổi tới {$lang->productCommon} sẽ là nguyên nhân liên kết {$lang->executionCommon}, câu chuyện và nhiệm vụ thay đổi. Bạn có muốn làm điều này?";
$lang->bug->confirmDelete = 'Bạn có muốn xóa bug này?';
$lang->bug->remindTask = 'Bug này đã chuyển thành một nhiệm vụ. Bạn có muốn cập nhật tình trạng của nhiệm vụ(ID %s)?';
$lang->bug->skipClose = 'Bug %s được kích hoạt. Bạn không thể đóng nó.';
$lang->bug->projectAccessDenied = "Truy cập của bạn tới {$lang->executionCommon} mà Bug này sở hữu bị từ chối!";
$lang->bug->stepsNotEmpty = "The reproduction step cannot be empty.";
$lang->bug->summary = "Tổng <strong>%s</strong> bugs, và <strong>%s</strong> kích hoạt.";
$lang->bug->confirmChangeProduct = "Mọi sự thay đổi tới {$lang->productCommon} sẽ là nguyên nhân liên kết {$lang->executionCommon}, câu chuyện và nhiệm vụ thay đổi. Bạn có muốn làm điều này?";
$lang->bug->confirmDelete = 'Bạn có muốn xóa bug này?';
$lang->bug->remindTask = 'Bug này đã chuyển thành một nhiệm vụ. Bạn có muốn cập nhật tình trạng của nhiệm vụ(ID %s)?';
$lang->bug->skipClose = 'Bug %s được kích hoạt. Bạn không thể đóng nó.';
$lang->bug->executionAccessDenied = "Truy cập của bạn tới {$lang->executionCommon} mà Bug này sở hữu bị từ chối!";
$lang->bug->stepsNotEmpty = "The reproduction step cannot be empty.";
/* Template. */
$lang->bug->tplStep = "<p>[Các bước]</p><br/>";
@@ -197,7 +197,7 @@ $lang->bug->priList[2] = '2';
$lang->bug->priList[3] = '3';
$lang->bug->priList[4] = '4';
$lang->bug->osList[''] = '';
$lang->bug->osList[''] = '';
$lang->bug->osList['all'] = 'Tất cả';
$lang->bug->osList['windows'] = 'Windows';
$lang->bug->osList['win10'] = 'Windows 10';
@@ -220,7 +220,7 @@ $lang->bug->osList['osx'] = 'OS X';
$lang->bug->osList['unix'] = 'Unix';
$lang->bug->osList['others'] = 'Khác';
$lang->bug->browserList[''] = '';
$lang->bug->browserList[''] = '';
$lang->bug->browserList['all'] = 'Tất cả';
$lang->bug->browserList['ie'] = 'IE series';
$lang->bug->browserList['ie11'] = 'IE11';
@@ -243,7 +243,7 @@ $lang->bug->browserList['maxthon'] = 'Maxthon';
$lang->bug->browserList['uc'] = 'UC';
$lang->bug->browserList['other'] = 'Khác';
$lang->bug->typeList[''] = '';
$lang->bug->typeList[''] = '';
$lang->bug->typeList['codeerror'] = 'Lỗi mã nguồn';
$lang->bug->typeList['config'] = 'Lỗi cấu hình';
$lang->bug->typeList['install'] = 'Lỗi cài đặt';
@@ -254,7 +254,7 @@ $lang->bug->typeList['automation'] = 'Lỗi Script';
$lang->bug->typeList['designdefect'] = 'Lỗi thiết kế';
$lang->bug->typeList['others'] = 'Lỗi khác';
$lang->bug->statusList[''] = '';
$lang->bug->statusList[''] = '';
$lang->bug->statusList['active'] = 'Kích hoạt';
$lang->bug->statusList['resolved'] = 'Đã giải quyết';
$lang->bug->statusList['closed'] = 'Đã đóng';
@@ -262,7 +262,7 @@ $lang->bug->statusList['closed'] = 'Đã đóng';
$lang->bug->confirmedList[1] = 'Có';
$lang->bug->confirmedList[0] = 'Không';
$lang->bug->resolutionList[''] = '';
$lang->bug->resolutionList[''] = '';
$lang->bug->resolutionList['bydesign'] = 'Như thiết kế';
$lang->bug->resolutionList['duplicate'] = 'Đã nhân bản';
$lang->bug->resolutionList['external'] = 'External';
@@ -278,7 +278,7 @@ $lang->bug->report->common = 'Báo cáo';
$lang->bug->report->select = 'Chọn loại báo cáo';
$lang->bug->report->create = 'Tạo báo cáo';
$lang->bug->report->charts['bugsPerProject'] = 'Bugs '.$lang->executionCommon;
$lang->bug->report->charts['bugsPerExecution'] = 'Bugs '.$lang->executionCommon;
$lang->bug->report->charts['bugsPerBuild'] = 'Bugs mỗi bản dựng';
$lang->bug->report->charts['bugsPerModule'] = 'Bugs mỗi Module';
$lang->bug->report->charts['openedBugsPerDay'] = 'Bugs đã báo cáo mỗi ngày';
@@ -303,7 +303,7 @@ $lang->bug->report->options->type = 'pie';
$lang->bug->report->options->width = 500;
$lang->bug->report->options->height = 140;
$lang->bug->report->bugsPerProject = new stdclass();
$lang->bug->report->bugsPerExecution = new stdclass();
$lang->bug->report->bugsPerBuild = new stdclass();
$lang->bug->report->bugsPerModule = new stdclass();
$lang->bug->report->openedBugsPerDay = new stdclass();
@@ -322,7 +322,7 @@ $lang->bug->report->bugsPerAssignedTo = new stdclass();
$lang->bug->report->bugLiveDays = new stdclass();
$lang->bug->report->bugHistories = new stdclass();
$lang->bug->report->bugsPerProject->graph = new stdclass();
$lang->bug->report->bugsPerExecution->graph = new stdclass();
$lang->bug->report->bugsPerBuild->graph = new stdclass();
$lang->bug->report->bugsPerModule->graph = new stdclass();
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
@@ -341,12 +341,12 @@ $lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
$lang->bug->report->bugLiveDays->graph = new stdclass();
$lang->bug->report->bugHistories->graph = new stdclass();
$lang->bug->report->bugsPerProject->graph->xAxisName = $lang->executionCommon;
$lang->bug->report->bugsPerBuild->graph->xAxisName = 'Bản dựng';
$lang->bug->report->bugsPerModule->graph->xAxisName = 'Module';
$lang->bug->report->bugsPerExecution->graph->xAxisName = $lang->executionCommon;
$lang->bug->report->bugsPerBuild->graph->xAxisName = 'Bản dựng';
$lang->bug->report->bugsPerModule->graph->xAxisName = 'Module';
$lang->bug->report->openedBugsPerDay->type = 'bar';
$lang->bug->report->openedBugsPerDay->graph->xAxisName = 'Ngày';
$lang->bug->report->openedBugsPerDay->type = 'bar';
$lang->bug->report->openedBugsPerDay->graph->xAxisName = 'Ngày';
$lang->bug->report->resolvedBugsPerDay->type = 'bar';
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = 'Ngày';
@@ -391,12 +391,10 @@ $lang->bug->featureBar['browse']['unclosed'] = $lang->bug->unclosed;
$lang->bug->featureBar['browse']['openedbyme'] = $lang->bug->openedByMe;
$lang->bug->featureBar['browse']['assigntome'] = $lang->bug->assignToMe;
$lang->bug->featureBar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe;
$lang->bug->featureBar['browse']['toclosed'] = $lang->bug->toClosed;
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
$lang->bug->featureBar['browse']['more'] = $lang->more;
$lang->bug->moreSelects['toclosed'] = $lang->bug->toClosed;
$lang->bug->moreSelects['unresolved'] = $lang->bug->unResolved;
$lang->bug->moreSelects['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['longlifebugs'] = $lang->bug->longLifeBugs;
+18 -20
View File
@@ -17,7 +17,7 @@ $lang->bug->branch = '分支/平台';
$lang->bug->productplan = '所属' . '计划';
$lang->bug->module = '所属模块';
$lang->bug->moduleAB = '模块';
$lang->bug->project = '所属' . $lang->executionCommon;
$lang->bug->execution = '所属' . $lang->executionCommon;
$lang->bug->story = "相关{$lang->SRCommon}";
$lang->bug->storyVersion = "{$lang->SRCommon}版本";
$lang->bug->color = '标题颜色';
@@ -172,13 +172,13 @@ $lang->bug->legendRelated = '其他信息';
$lang->bug->buttonConfirm = '确认';
/* 交互提示。*/
$lang->bug->summary = "本页共 <strong>%s</strong> 个Bug,未解决 <strong>%s</strong>。";
$lang->bug->confirmChangeProduct = "修改{$lang->productCommon}会导致相应的{$lang->executionCommon}、{$lang->SRCommon}和任务发生变化,确定吗?";
$lang->bug->confirmDelete = '您确认要删除该Bug吗?';
$lang->bug->remindTask = '该Bug已经转化为任务,是否更新任务(编号:%s)状态 ?';
$lang->bug->skipClose = 'Bug %s 不是已解决状态,不能关闭。';
$lang->bug->projectAccessDenied = "您无权访问该Bug所属的{$lang->executionCommon}!";
$lang->bug->stepsNotEmpty = "重现步骤不能为空。";
$lang->bug->summary = "本页共 <strong>%s</strong> 个Bug,未解决 <strong>%s</strong>。";
$lang->bug->confirmChangeProduct = "修改{$lang->productCommon}会导致相应的{$lang->executionCommon}、{$lang->SRCommon}和任务发生变化,确定吗?";
$lang->bug->confirmDelete = '您确认要删除该Bug吗?';
$lang->bug->remindTask = '该Bug已经转化为任务,是否更新任务(编号:%s)状态 ?';
$lang->bug->skipClose = 'Bug %s 不是已解决状态,不能关闭。';
$lang->bug->executionAccessDenied = "您无权访问该Bug所属的{$lang->executionCommon}!";
$lang->bug->stepsNotEmpty = "重现步骤不能为空。";
/* 模板。*/
$lang->bug->tplStep = "<p>[步骤]</p><br/>";
@@ -278,7 +278,7 @@ $lang->bug->report->common = '报表';
$lang->bug->report->select = '请选择报表类型';
$lang->bug->report->create = '生成报表';
$lang->bug->report->charts['bugsPerProject'] = $lang->executionCommon . 'Bug数量';
$lang->bug->report->charts['bugsPerExecution'] = $lang->executionCommon . 'Bug数量';
$lang->bug->report->charts['bugsPerBuild'] = '版本Bug数量';
$lang->bug->report->charts['bugsPerModule'] = '模块Bug数量';
$lang->bug->report->charts['openedBugsPerDay'] = '每天新增Bug数';
@@ -303,7 +303,7 @@ $lang->bug->report->options->type = 'pie';
$lang->bug->report->options->width = 500;
$lang->bug->report->options->height = 140;
$lang->bug->report->bugsPerProject = new stdclass();
$lang->bug->report->bugsPerExecution = new stdclass();
$lang->bug->report->bugsPerBuild = new stdclass();
$lang->bug->report->bugsPerModule = new stdclass();
$lang->bug->report->openedBugsPerDay = new stdclass();
@@ -322,7 +322,7 @@ $lang->bug->report->bugsPerAssignedTo = new stdclass();
$lang->bug->report->bugLiveDays = new stdclass();
$lang->bug->report->bugHistories = new stdclass();
$lang->bug->report->bugsPerProject->graph = new stdclass();
$lang->bug->report->bugsPerExecution->graph = new stdclass();
$lang->bug->report->bugsPerBuild->graph = new stdclass();
$lang->bug->report->bugsPerModule->graph = new stdclass();
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
@@ -341,18 +341,18 @@ $lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
$lang->bug->report->bugLiveDays->graph = new stdclass();
$lang->bug->report->bugHistories->graph = new stdclass();
$lang->bug->report->bugsPerProject->graph->xAxisName = $lang->executionCommon;
$lang->bug->report->bugsPerBuild->graph->xAxisName = '版本';
$lang->bug->report->bugsPerModule->graph->xAxisName = '模块';
$lang->bug->report->bugsPerExecution->graph->xAxisName = $lang->executionCommon;
$lang->bug->report->bugsPerBuild->graph->xAxisName = '版本';
$lang->bug->report->bugsPerModule->graph->xAxisName = '模块';
$lang->bug->report->openedBugsPerDay->type = 'bar';
$lang->bug->report->openedBugsPerDay->graph->xAxisName = '日期';
$lang->bug->report->openedBugsPerDay->type = 'bar';
$lang->bug->report->openedBugsPerDay->graph->xAxisName = '日期';
$lang->bug->report->resolvedBugsPerDay->type = 'bar';
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = '日期';
$lang->bug->report->closedBugsPerDay->type = 'bar';
$lang->bug->report->closedBugsPerDay->graph->xAxisName = '日期';
$lang->bug->report->closedBugsPerDay->type = 'bar';
$lang->bug->report->closedBugsPerDay->graph->xAxisName = '日期';
$lang->bug->report->openedBugsPerUser->graph->xAxisName = '用户';
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName = '用户';
@@ -395,8 +395,6 @@ $lang->bug->featureBar['browse']['toclosed'] = $lang->bug->toClosed;
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
$lang->bug->moreSelects['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['longlifebugs'] = $lang->bug->longLifeBugs;
+18 -20
View File
@@ -17,7 +17,7 @@ $lang->bug->branch = '分支/平台';
$lang->bug->productplan = '所屬' . '計劃';
$lang->bug->module = '所屬模組';
$lang->bug->moduleAB = '模組';
$lang->bug->project = '所屬' . $lang->executionCommon;
$lang->bug->execution = '所屬' . $lang->executionCommon;
$lang->bug->story = "相關{$lang->SRCommon}";
$lang->bug->storyVersion = "{$lang->SRCommon}版本";
$lang->bug->color = '標題顏色';
@@ -172,13 +172,13 @@ $lang->bug->legendRelated = '其他信息';
$lang->bug->buttonConfirm = '確認';
/* 交互提示。*/
$lang->bug->summary = "本頁共 <strong>%s</strong> 個Bug,未解決 <strong>%s</strong>。";
$lang->bug->confirmChangeProduct = "修改{$lang->productCommon}會導致相應的{$lang->executionCommon}、{$lang->SRCommon}和任務發生變化,確定嗎?";
$lang->bug->confirmDelete = '您確認要刪除該Bug嗎?';
$lang->bug->remindTask = '該Bug已經轉化為任務,是否更新任務(編號:%s)狀態 ?';
$lang->bug->skipClose = 'Bug %s 不是已解決狀態,不能關閉。';
$lang->bug->projectAccessDenied = "您無權訪問該Bug所屬的{$lang->executionCommon}!";
$lang->bug->stepsNotEmpty = "重現步驟不能為空。";
$lang->bug->summary = "本頁共 <strong>%s</strong> 個Bug,未解決 <strong>%s</strong>。";
$lang->bug->confirmChangeProduct = "修改{$lang->productCommon}會導致相應的{$lang->executionCommon}、{$lang->SRCommon}和任務發生變化,確定嗎?";
$lang->bug->confirmDelete = '您確認要刪除該Bug嗎?';
$lang->bug->remindTask = '該Bug已經轉化為任務,是否更新任務(編號:%s)狀態 ?';
$lang->bug->skipClose = 'Bug %s 不是已解決狀態,不能關閉。';
$lang->bug->executionAccessDenied = "您無權訪問該Bug所屬的{$lang->executionCommon}!";
$lang->bug->stepsNotEmpty = "重現步驟不能為空。";
/* 模板。*/
$lang->bug->tplStep = "<p>[步驟]</p><br/>";
@@ -278,7 +278,7 @@ $lang->bug->report->common = '報表';
$lang->bug->report->select = '請選擇報表類型';
$lang->bug->report->create = '生成報表';
$lang->bug->report->charts['bugsPerProject'] = $lang->executionCommon . 'Bug數量';
$lang->bug->report->charts['bugsPerExecution'] = $lang->executionCommon . 'Bug數量';
$lang->bug->report->charts['bugsPerBuild'] = '版本Bug數量';
$lang->bug->report->charts['bugsPerModule'] = '模組Bug數量';
$lang->bug->report->charts['openedBugsPerDay'] = '每天新增Bug數';
@@ -303,7 +303,7 @@ $lang->bug->report->options->type = 'pie';
$lang->bug->report->options->width = 500;
$lang->bug->report->options->height = 140;
$lang->bug->report->bugsPerProject = new stdclass();
$lang->bug->report->bugsPerExecution = new stdclass();
$lang->bug->report->bugsPerBuild = new stdclass();
$lang->bug->report->bugsPerModule = new stdclass();
$lang->bug->report->openedBugsPerDay = new stdclass();
@@ -322,7 +322,7 @@ $lang->bug->report->bugsPerAssignedTo = new stdclass();
$lang->bug->report->bugLiveDays = new stdclass();
$lang->bug->report->bugHistories = new stdclass();
$lang->bug->report->bugsPerProject->graph = new stdclass();
$lang->bug->report->bugsPerExecution->graph = new stdclass();
$lang->bug->report->bugsPerBuild->graph = new stdclass();
$lang->bug->report->bugsPerModule->graph = new stdclass();
$lang->bug->report->openedBugsPerDay->graph = new stdclass();
@@ -341,18 +341,18 @@ $lang->bug->report->bugsPerAssignedTo->graph = new stdclass();
$lang->bug->report->bugLiveDays->graph = new stdclass();
$lang->bug->report->bugHistories->graph = new stdclass();
$lang->bug->report->bugsPerProject->graph->xAxisName = $lang->executionCommon;
$lang->bug->report->bugsPerBuild->graph->xAxisName = '版本';
$lang->bug->report->bugsPerModule->graph->xAxisName = '模組';
$lang->bug->report->bugsPerExecution->graph->xAxisName = $lang->executionCommon;
$lang->bug->report->bugsPerBuild->graph->xAxisName = '版本';
$lang->bug->report->bugsPerModule->graph->xAxisName = '模組';
$lang->bug->report->openedBugsPerDay->type = 'bar';
$lang->bug->report->openedBugsPerDay->graph->xAxisName = '日期';
$lang->bug->report->openedBugsPerDay->type = 'bar';
$lang->bug->report->openedBugsPerDay->graph->xAxisName = '日期';
$lang->bug->report->resolvedBugsPerDay->type = 'bar';
$lang->bug->report->resolvedBugsPerDay->graph->xAxisName = '日期';
$lang->bug->report->closedBugsPerDay->type = 'bar';
$lang->bug->report->closedBugsPerDay->graph->xAxisName = '日期';
$lang->bug->report->closedBugsPerDay->type = 'bar';
$lang->bug->report->closedBugsPerDay->graph->xAxisName = '日期';
$lang->bug->report->openedBugsPerUser->graph->xAxisName = '用戶';
$lang->bug->report->resolvedBugsPerUser->graph->xAxisName = '用戶';
@@ -395,8 +395,6 @@ $lang->bug->featureBar['browse']['toclosed'] = $lang->bug->toClosed;
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
$lang->bug->moreSelects['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['longlifebugs'] = $lang->bug->longLifeBugs;
+170 -170
View File
@@ -69,16 +69,16 @@ class bugModel extends model
$bug = fixer::input('post')
->setDefault('openedBy', $this->app->user->account)
->setDefault('openedDate', $now)
->setDefault('project,story,task', 0)
->setDefault('execution,story,task', 0)
->setDefault('openedBuild', '')
->setDefault('deadline', '0000-00-00')
->setIF($this->config->systemMode == 'new' && $this->lang->navGroup->bug != 'qa', 'PRJ', $this->session->PRJ)
->setIF($this->config->systemMode == 'new' && $this->lang->navGroup->bug != 'qa', 'project', $this->session->project)
->setIF(strpos($this->config->bug->create->requiredFields, 'deadline') !== false, 'deadline', $this->post->deadline)
->setIF($this->post->assignedTo != '', 'assignedDate', $now)
->setIF($this->post->story != false, 'storyVersion', $this->loadModel('story')->getVersion($this->post->story))
->setIF(strpos($this->config->bug->create->requiredFields, 'project') !== false, 'project', $this->post->project)
->setIF(strpos($this->config->bug->create->requiredFields, 'execution') !== false, 'execution', $this->post->execution)
->stripTags($this->config->bug->editor->create['id'], $this->config->allowedTags)
->cleanInt('product,project,module,severity')
->cleanInt('product,execution,module,severity')
->join('openedBuild', ',')
->join('mailto', ',')
->remove('files, labels,uid,oldTaskID,contactListMenu')
@@ -132,23 +132,23 @@ class bugModel extends model
$moduleOwners = array();
while($module = $stmt->fetch()) $moduleOwners[$module->id] = $module->owner;
$module = 0;
$project = 0;
$type = '';
$pri = 0;
$os = '';
$browser = '';
$module = 0;
$execution = 0;
$type = '';
$pri = 0;
$os = '';
$browser = '';
foreach($data->title as $i => $title)
{
if($data->modules[$i] != 'ditto') $module = (int)$data->modules[$i];
if($data->projects[$i] != 'ditto') $project = (int)$data->projects[$i];
if($data->types[$i] != 'ditto') $type = $data->types[$i];
if($data->pris[$i] != 'ditto') $pri = $data->pris[$i];
if($data->oses[$i] != 'ditto') $os = $data->oses[$i];
if($data->browsers[$i] != 'ditto') $browser = $data->browsers[$i];
if($data->modules[$i] != 'ditto') $module = (int)$data->modules[$i];
if($data->executions[$i] != 'ditto') $execution = (int)$data->executions[$i];
if($data->types[$i] != 'ditto') $type = $data->types[$i];
if($data->pris[$i] != 'ditto') $pri = $data->pris[$i];
if($data->oses[$i] != 'ditto') $os = $data->oses[$i];
if($data->browsers[$i] != 'ditto') $browser = $data->browsers[$i];
$data->modules[$i] = (int)$module;
$data->projects[$i] = (int)$project;
$data->executions[$i] = (int)$execution;
$data->types[$i] = $type;
$data->pris[$i] = $pri;
$data->oses[$i] = $os;
@@ -169,7 +169,7 @@ class bugModel extends model
$bug->product = (int)$productID;
$bug->branch = (int)$data->branches[$i];
$bug->module = (int)$data->modules[$i];
$bug->project = (int)$data->projects[$i];
$bug->execution = (int)$data->executions[$i];
$bug->openedBuild = implode(',', $data->openedBuilds[$i]);
$bug->color = $data->color[$i];
$bug->title = $data->title[$i];
@@ -234,7 +234,7 @@ class bugModel extends model
}
}
if($this->config->systemMode == 'new' && $this->lang->navGroup->bug != 'qa') $bug->PRJ = $this->session->PRJ;
if($this->config->systemMode == 'new' && $this->lang->navGroup->bug != 'qa') $bug->project = $this->session->project;
$this->dao->insert(TABLE_BUG)->data($bug)
->autoCheck()
->batchCheck($this->config->bug->create->requiredFields, 'notempty')
@@ -278,7 +278,7 @@ class bugModel extends model
* Get bugs.
*
* @param int $productID
* @param array $projects
* @param array $executions
* @param int $branch
* @param string $browseType
* @param int $moduleID
@@ -288,7 +288,7 @@ class bugModel extends model
* @access public
* @return array
*/
public function getBugs($productID, $projects, $branch, $browseType, $moduleID, $queryID, $sort, $pager)
public function getBugs($productID, $executions, $branch, $browseType, $moduleID, $queryID, $sort, $pager)
{
/* Set modules and browse type. */
$modules = $moduleID ? $this->loadModel('tree')->getAllChildId($moduleID) : '0';
@@ -297,21 +297,21 @@ class bugModel extends model
/* Get bugs by browse type. */
$bugs = array();
if($browseType == 'all') $bugs = $this->getAllBugs($productID, $branch, $modules, $projects, $sort, $pager);
elseif($browseType == 'bymodule') $bugs = $this->getModuleBugs($productID, $branch, $modules, $projects, $sort, $pager);
elseif($browseType == 'assigntome') $bugs = $this->getByAssigntome($productID, $branch, $modules, $projects, $sort, $pager);
elseif($browseType == 'openedbyme') $bugs = $this->getByOpenedbyme($productID, $branch, $modules, $projects, $sort, $pager);
elseif($browseType == 'resolvedbyme') $bugs = $this->getByResolvedbyme($productID, $branch, $modules, $projects, $sort, $pager);
elseif($browseType == 'assigntonull') $bugs = $this->getByAssigntonull($productID, $branch, $modules, $projects, $sort, $pager);
elseif($browseType == 'unconfirmed') $bugs = $this->getUnconfirmed($productID, $branch, $modules, $projects, $sort, $pager);
elseif($browseType == 'unresolved') $bugs = $this->getByStatus($productID, $branch, $modules, $projects, 'unresolved', $sort, $pager);
elseif($browseType == 'unclosed') $bugs = $this->getByStatus($productID, $branch, $modules, $projects, 'unclosed', $sort, $pager);
elseif($browseType == 'toclosed') $bugs = $this->getByStatus($productID, $branch, $modules, $projects, 'toclosed', $sort, $pager);
elseif($browseType == 'longlifebugs') $bugs = $this->getByLonglifebugs($productID, $branch, $modules, $projects, $sort, $pager);
elseif($browseType == 'postponedbugs') $bugs = $this->getByPostponedbugs($productID, $branch, $modules, $projects, $sort, $pager);
elseif($browseType == 'needconfirm') $bugs = $this->getByNeedconfirm($productID, $branch, $modules, $projects, $sort, $pager);
if($browseType == 'all') $bugs = $this->getAllBugs($productID, $branch, $modules, $executions, $sort, $pager);
elseif($browseType == 'bymodule') $bugs = $this->getModuleBugs($productID, $branch, $modules, $executions, $sort, $pager);
elseif($browseType == 'assigntome') $bugs = $this->getByAssigntome($productID, $branch, $modules, $executions, $sort, $pager);
elseif($browseType == 'openedbyme') $bugs = $this->getByOpenedbyme($productID, $branch, $modules, $executions, $sort, $pager);
elseif($browseType == 'resolvedbyme') $bugs = $this->getByResolvedbyme($productID, $branch, $modules, $executions, $sort, $pager);
elseif($browseType == 'assigntonull') $bugs = $this->getByAssigntonull($productID, $branch, $modules, $executions, $sort, $pager);
elseif($browseType == 'unconfirmed') $bugs = $this->getUnconfirmed($productID, $branch, $modules, $executions, $sort, $pager);
elseif($browseType == 'unresolved') $bugs = $this->getByStatus($productID, $branch, $modules, $executions, 'unresolved', $sort, $pager);
elseif($browseType == 'unclosed') $bugs = $this->getByStatus($productID, $branch, $modules, $executions, 'unclosed', $sort, $pager);
elseif($browseType == 'toclosed') $bugs = $this->getByStatus($productID, $branch, $modules, $executions, 'toclosed', $sort, $pager);
elseif($browseType == 'longlifebugs') $bugs = $this->getByLonglifebugs($productID, $branch, $modules, $executions, $sort, $pager);
elseif($browseType == 'postponedbugs') $bugs = $this->getByPostponedbugs($productID, $branch, $modules, $executions, $sort, $pager);
elseif($browseType == 'needconfirm') $bugs = $this->getByNeedconfirm($productID, $branch, $modules, $executions, $sort, $pager);
elseif($browseType == 'bysearch') $bugs = $this->getBySearch($productID, $branch, $queryID, $sort, '', $pager);
elseif($browseType == 'overduebugs') $bugs = $this->getOverdueBugs($productID, $branch, $modules, $projects, $sort, $pager);
elseif($browseType == 'overduebugs') $bugs = $this->getOverdueBugs($productID, $branch, $modules, $executions, $sort, $pager);
return $this->checkDelayBugs($bugs);
}
@@ -358,17 +358,17 @@ class bugModel extends model
}
/**
* Check bug project priv.
*
* @param object $bug
* Check bug execution priv.
*
* @param object $bug
* @access public
* @return void
*/
public function checkBugProjectPriv($bug)
public function checkBugExecutionPriv($bug)
{
if($bug->project and !$this->loadModel('project')->checkPriv($bug->project))
if($bug->execution and !$this->loadModel('execution')->checkPriv($bug->execution))
{
echo(js::alert($this->lang->bug->projectAccessDenied));
echo(js::alert($this->lang->bug->executionAccessDenied));
$loginLink = $this->config->requestType == 'GET' ? "?{$this->config->moduleVar}=user&{$this->config->methodVar}=login" : "user{$this->config->requestFix}login";
if(strpos($this->server->http_referer, $loginLink) !== false) die(js::locate(helper::createLink('bug', 'index', '')));
die(js::locate('back'));
@@ -385,13 +385,13 @@ class bugModel extends model
* @access public
* @return array
*/
public function getModuleBugs($productID, $branch = 0, $moduleIdList = 0, $projects, $orderBy = 'id_desc', $pager = null)
public function getModuleBugs($productID, $branch = 0, $moduleIdList = 0, $executions, $orderBy = 'id_desc', $pager = null)
{
return $this->dao->select('*')->from(TABLE_BUG)
->where('product')->eq((int)$productID)
->beginIF(!empty($branch))->andWhere('branch')->eq($branch)->fi()
->beginIF(!empty($moduleIdList))->andWhere('module')->in($moduleIdList)->fi()
->andWhere('project')->in(array_keys($projects))
->andWhere('execution')->in(array_keys($executions))
->andWhere('deleted')->eq(0)
->orderBy($orderBy)->page($pager)->fetchAll();
}
@@ -410,7 +410,7 @@ class bugModel extends model
{
$bugs = $this->dao->select('*')->from(TABLE_BUG)
->where('plan')->eq((int)$planID)
->beginIF(!$this->app->user->admin)->andWhere('project')->in('0,' . $this->app->user->view->projects)->fi()
->beginIF(!$this->app->user->admin)->andWhere('execution')->in('0,' . $this->app->user->view->sprints)->fi()
->beginIF($status != 'all')->andWhere('status')->in($status)->fi()
->andWhere('deleted')->eq(0)
->orderBy($orderBy)->page($pager)->fetchAll('id');
@@ -430,9 +430,9 @@ class bugModel extends model
*/
public function getById($bugID, $setImgSize = false)
{
$bug = $this->dao->select('t1.*, t2.name AS projectName, t3.title AS storyTitle, t3.status AS storyStatus, t3.version AS latestStoryVersion, t4.name AS taskName, t5.title AS planName')
$bug = $this->dao->select('t1.*, t2.name AS executionName, t3.title AS storyTitle, t3.status AS storyStatus, t3.version AS latestStoryVersion, t4.name AS taskName, t5.title AS planName')
->from(TABLE_BUG)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.execution = t2.id')
->leftJoin(TABLE_STORY)->alias('t3')->on('t1.story = t3.id')
->leftJoin(TABLE_TASK)->alias('t4')->on('t1.task = t4.id')
->leftJoin(TABLE_PRODUCTPLAN)->alias('t5')->on('t1.plan = t5.id')
@@ -479,13 +479,13 @@ class bugModel extends model
*
* @param array $products
* @param int $branch
* @param int $projectID
* @param array $executions
* @param array $excludeBugs
* @param object $pager
* @access public
* @return array
*/
public function getActiveBugs($products, $branch, $projects, $excludeBugs, $pager = null)
public function getActiveBugs($products, $branch, $executions, $excludeBugs, $pager = null)
{
return $this->dao->select('*')->from(TABLE_BUG)
->where('status')->eq('active')
@@ -493,7 +493,7 @@ class bugModel extends model
->andWhere('toTask')->eq(0)
->beginIF(!empty($products))->andWhere('product')->in($products)->fi()
->beginIF($branch)->andWhere('branch')->in("0,$branch")->fi()
->beginIF(!empty($projects))->andWhere('project')->in($projects)->fi()
->beginIF(!empty($executions))->andWhere('execution')->in($executions)->fi()
->beginIF($excludeBugs)->andWhere('id')->notIN($excludeBugs)->fi()
->andWhere('deleted')->eq(0)
->orderBy('id desc')
@@ -502,15 +502,15 @@ class bugModel extends model
}
/**
* get Active And Postponed Bugs
* Get active and postponed bugs.
*
* @param int $products
* @param int $projectID
* @param int $executionID
* @param int $pager
* @access public
* @return void
*/
public function getActiveAndPostponedBugs($products, $projectID, $pager = null)
public function getActiveAndPostponedBugs($products, $executionID, $pager = null)
{
return $this->dao->select('t1.*')->from(TABLE_BUG)->alias('t1')
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.product = t2.product')
@@ -518,8 +518,8 @@ class bugModel extends model
->andWhere('t1.toTask')->eq(0)
->andWhere('t1.toStory')->eq(0)
->beginIF(!empty($products))->andWhere('t1.product')->in($products)->fi()
->beginIF(empty($products))->andWhere('t1.project')->eq($projectID)->fi()
->andWhere('t2.project')->eq($projectID)
->beginIF(empty($products))->andWhere('t1.execution')->eq($executionID)->fi()
->andWhere('t2.execution')->eq($executionID)
->andWhere("(t2.branch = '0' OR t1.branch = '0' OR t2.branch = t1.branch)")
->andWhere('t1.deleted')->eq(0)
->orderBy('id desc')
@@ -585,9 +585,9 @@ class bugModel extends model
$now = helper::now();
$bug = fixer::input('post')
->cleanInt('product,module,severity,project,story,task,branch')
->cleanInt('product,module,severity,execution,story,task,branch')
->stripTags($this->config->bug->editor->edit['id'], $this->config->allowedTags)
->setDefault('product,module,project,story,task,duplicateBug,branch', 0)
->setDefault('product,module,execution,story,task,duplicateBug,branch', 0)
->setDefault('openedBuild', '')
->setDefault('plan', 0)
->setDefault('deadline', '0000-00-00')
@@ -941,16 +941,16 @@ class bugModel extends model
if($bug->resolution == 'duplicate' and !$this->post->duplicateBug) dao::$errors[] = sprintf($this->lang->error->notempty, $this->lang->bug->duplicateBug);
if(empty($bug->buildName)) dao::$errors['buildName'][] = sprintf($this->lang->error->notempty, $this->lang->bug->placeholder->newBuildName);
if(empty($bug->buildProject)) dao::$errors['buildProject'][] = sprintf($this->lang->error->notempty, $this->lang->bug->project);
if(empty($bug->buildExecution)) dao::$errors['buildExecution'][] = sprintf($this->lang->error->notempty, $this->lang->bug->execution);
if(dao::isError()) return false;
$buildData = new stdclass();
$buildData->product = (int)$oldBug->product;
$buildData->branch = (int)$oldBug->branch;
$buildData->project = $bug->buildProject;
$buildData->name = $bug->buildName;
$buildData->date = date('Y-m-d');
$buildData->builder = $this->app->user->account;
$buildData->product = (int)$oldBug->product;
$buildData->branch = (int)$oldBug->branch;
$buildData->execution = $bug->buildExecution;
$buildData->name = $bug->buildName;
$buildData->date = date('Y-m-d');
$buildData->builder = $this->app->user->account;
$this->dao->insert(TABLE_BUILD)->data($buildData)->autoCheck()
->check('name', 'unique', "product = {$buildData->product} AND branch = {$buildData->branch} AND deleted = '0'")
->exec();
@@ -962,7 +962,7 @@ class bugModel extends model
if($bug->resolvedBuild and $bug->resolvedBuild != 'trunk') $bug->testtask = (int) $this->dao->select('id')->from(TABLE_TESTTASK)->where('build')->eq($bug->resolvedBuild)->orderBy('id_desc')->limit(1)->fetch('id');
$this->dao->update(TABLE_BUG)->data($bug, 'buildName,createBuild,buildProject,comment')
$this->dao->update(TABLE_BUG)->data($bug, 'buildName,createBuild,buildExecution,comment')
->autoCheck()
->batchCheck($this->config->bug->resolve->requiredFields, 'notempty')
->checkIF($bug->resolution == 'duplicate', 'duplicateBug', 'notempty')
@@ -1232,13 +1232,13 @@ class bugModel extends model
*/
public function buildSearchForm($productID, $products, $queryID, $actionURL)
{
$projectID = $this->lang->navGroup->bug == 'qa' ? 0 : $this->session->PRJ;
$projectID = $this->lang->navGroup->bug == 'qa' ? 0 : $this->session->project;
$this->config->bug->search['actionURL'] = $actionURL;
$this->config->bug->search['queryID'] = $queryID;
$this->config->bug->search['params']['product']['values'] = array($productID => $products[$productID], 'all' => $this->lang->bug->allProduct);
$this->config->bug->search['params']['plan']['values'] = $this->loadModel('productplan')->getPairs($productID);
$this->config->bug->search['params']['module']['values'] = $this->loadModel('tree')->getOptionMenu($productID, $viewType = 'bug', $startModuleID = 0);
$this->config->bug->search['params']['project']['values'] = $this->product->getExecutionPairsByProduct($productID, 0, 'id_desc', $projectID);
$this->config->bug->search['params']['execution']['values'] = $this->product->getExecutionPairsByProduct($productID, 0, 'id_desc', $projectID);
$this->config->bug->search['params']['severity']['values'] = array(0 => '') + $this->lang->bug->severityList; //Fix bug #939.
$this->config->bug->search['params']['openedBuild']['values'] = $this->loadModel('build')->getProductBuildPairs($productID, 0, $params = '');
$this->config->bug->search['params']['resolvedBuild']['values'] = $this->config->bug->search['params']['openedBuild']['values'];
@@ -1333,17 +1333,17 @@ class bugModel extends model
* @param string $orderBy
* @param int $limit
* @param object $pager
* @param int $projectID
* @param int $executionID
* @access public
* @return void
*/
public function getUserBugs($account, $type = 'assignedTo', $orderBy = 'id_desc', $limit = 0, $pager = null, $projectID = 0)
public function getUserBugs($account, $type = 'assignedTo', $orderBy = 'id_desc', $limit = 0, $pager = null, $executionID = 0)
{
if(!$this->loadModel('common')->checkField(TABLE_BUG, $type)) return array();
$bugs = $this->dao->select('t1.*,t2.name as productName')->from(TABLE_BUG)->alias('t1')
->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product = t2.id')
->where('t1.deleted')->eq(0)
->beginIF($projectID)->andWhere('t1.PRJ')->eq($projectID)->fi()
->beginIF($executionID)->andWhere('t1.execution')->eq($executionID)->fi()
->beginIF($type != 'closedBy' and $this->app->moduleName == 'block')->andWhere('t1.status')->ne('closed')->fi()
->beginIF($type != 'all')->andWhere("t1.`$type`")->eq($account)->fi()
->orderBy($orderBy)
@@ -1360,11 +1360,11 @@ class bugModel extends model
* @param bool $appendProduct
* @param int $limit
* @param array $skipProductIDList
* @param array $skipProjectIDList
* @param array $skipExecutionIDList
* @access public
* @return array
*/
public function getUserBugPairs($account, $appendProduct = true, $limit = 0, $skipProductIDList = array(), $skipProjectIDList = array())
public function getUserBugPairs($account, $appendProduct = true, $limit = 0, $skipProductIDList = array(), $skipExecutionIDList = array())
{
$bugs = array();
$stmt = $this->dao->select('t1.id, t1.title, t2.name as product')
@@ -1373,7 +1373,7 @@ class bugModel extends model
->on('t1.product=t2.id')
->where('t1.assignedTo')->eq($account)
->beginIF(!empty($skipProductIDList))->andWhere('t1.product')->notin($skipProductIDList)->fi()
->beginIF(!empty($skipProjectIDList))->andWhere('t1.project')->notin($skipProjectIDList)->fi()
->beginIF(!empty($skipExecutionIDList))->andWhere('t1.execution')->notin($skipExecutionIDList)->fi()
->andWhere('t1.deleted')->eq(0)
->orderBy('id desc')
->beginIF($limit > 0)->limit($limit)->fi()
@@ -1387,47 +1387,47 @@ class bugModel extends model
}
/**
* Get bugs of a project.
* Get bugs of a execution.
*
* @param int $projectID
* @param int $executionID
* @param int $build
* @param string $type
* @param int $param
* @param string $orderBy
* @param string $excludeBugs
* @param string $excludeBugs
* @param object $pager
* @access public
* @return array
*/
public function getProjectBugs($projectID, $build = 0, $type = '', $param = 0, $orderBy = 'id_desc', $excludeBugs = '', $pager = null)
public function getExecutionBugs($executionID, $build = 0, $type = '', $param = 0, $orderBy = 'id_desc', $excludeBugs = '', $pager = null)
{
$type = strtolower($type);
if($type == 'bysearch')
{
$queryID = (int)$param;
$products = $this->loadModel('project')->getProducts($projectID);
$products = $this->loadModel('execution')->getProducts($executionID);
if($this->session->projectBugQuery == false) $this->session->set('projectBugQuery', ' 1 = 1');
if($this->session->executionBugQuery == false) $this->session->set('executionBugQuery', ' 1 = 1');
if($queryID)
{
$query = $this->loadModel('search')->getQuery($queryID);
if($query)
{
$this->session->set('projectBugQuery', $query->sql);
$this->session->set('projectBugForm', $query->form);
$this->session->set('executionBugQuery', $query->sql);
$this->session->set('executionBugForm', $query->form);
}
}
$allProduct = "`product` = 'all'";
$bugQuery = $this->session->projectBugQuery;
if(strpos($this->session->projectBugQuery, $allProduct) !== false)
$bugQuery = $this->session->executionBugQuery;
if(strpos($this->session->executionBugQuery, $allProduct) !== false)
{
$bugQuery = str_replace($allProduct, '1', $this->session->projectBugQuery);
$bugQuery = str_replace($allProduct, '1', $this->session->executionBugQuery);
}
$bugs = $this->dao->select('*')->from(TABLE_BUG)
->where($bugQuery)
->andWhere('project')->eq((int)$projectID)
->andWhere('execution')->eq((int)$executionID)
->andWhere('deleted')->eq(0)
->beginIF($excludeBugs)->andWhere('id')->notIN($excludeBugs)->fi()
->orderBy($orderBy)
@@ -1438,7 +1438,7 @@ class bugModel extends model
{
$bugs = $this->dao->select('*')->from(TABLE_BUG)
->where('deleted')->eq(0)
->beginIF(empty($build))->andWhere('project')->eq($projectID)->fi()
->beginIF(empty($build))->andWhere('execution')->eq($executionID)->fi()
->beginIF($type == 'unresolved')->andWhere('status')->eq('active')->fi()
->beginIF($type == 'noclosed')->andWhere('status')->ne('closed')->fi()
->beginIF($build)->andWhere("CONCAT(',', openedBuild, ',') like '%,$build,%'")->fi()
@@ -1456,33 +1456,33 @@ class bugModel extends model
*
* @param int $build
* @param int $productID
* @param int $branch
* @param string $linkedBugs
* @param object $pager
* @param int $branch
* @param string $linkedBugs
* @param object $pager
* @access public
* @return array
*/
public function getProductLeftBugs($build, $productID, $branch = 0, $linkedBugs = '', $pager = null)
{
$build = $this->dao->select('*')->from(TABLE_BUILD)->where('id')->eq($build)->fetch();
if(empty($build->project)) return array();
if(empty($build->execution)) return array();
$project = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($build->project)->fetch();
$execution = $this->dao->select('*')->from(TABLE_EXECUTION)->where('id')->eq($build->execution)->fetch();
$beforeBuilds = $this->dao->select('t1.id')->from(TABLE_BUILD)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id')
->leftJoin(TABLE_EXECTUION)->alias('t2')->on('t1.execution=t2.id')
->where('t1.product')->eq($productID)
->andWhere('t2.status')->ne('done')
->andWhere('t2.deleted')->eq(0)
->andWhere('t1.deleted')->eq(0)
->andWhere('t1.date')->lt($project->begin)
->andWhere('t1.date')->lt($execution->begin)
->fetchPairs('id', 'id');
$bugs = $this->dao->select('*')->from(TABLE_BUG)->where('deleted')->eq(0)
->andWhere('product')->eq($productID)
->andWhere('toStory')->eq(0)
->andWhere('openedDate')->ge($project->begin)
->andWhere('openedDate')->le($project->end)
->andWhere("(status = 'active' OR resolvedDate > '{$project->end}')")
->andWhere('openedDate')->ge($execution->begin)
->andWhere('openedDate')->le($execution->end)
->andWhere("(status = 'active' OR resolvedDate > '{$execution->end}')")
->andWhere('openedBuild')->notin($beforeBuilds)
->beginIF($linkedBugs)->andWhere('id')->notIN($linkedBugs)->fi()
->beginIF($branch)->andWhere('branch')->in("0,$branch")->fi()
@@ -1504,7 +1504,7 @@ class bugModel extends model
$bugs = array('' => '');
$data = $this->dao->select('id, title')->from(TABLE_BUG)
->where('product')->eq((int)$productID)
->beginIF(!$this->app->user->admin)->andWhere('project')->in('0,' . $this->app->user->view->projects)->fi()
->beginIF(!$this->app->user->admin)->andWhere('execution')->in('0,' . $this->app->user->view->sprints)->fi()
->andWhere('deleted')->eq(0)
->orderBy('id desc')
->fetchAll();
@@ -1525,17 +1525,17 @@ class bugModel extends model
*/
public function getReleaseBugs($buildID, $productID, $branch = 0, $linkedBugs = '', $pager = null)
{
$project = $this->dao->select('t1.id,t1.begin')->from(TABLE_PROJECT)->alias('t1')
->leftJoin(TABLE_BUILD)->alias('t2')->on('t1.id = t2.project')
$execution = $this->dao->select('t1.id,t1.begin')->from(TABLE_EXECUTION)->alias('t1')
->leftJoin(TABLE_BUILD)->alias('t2')->on('t1.id = t2.execution')
->where('t2.id')->eq($buildID)
->fetch();
$bugs = $this->dao->select('*')->from(TABLE_BUG)
->where('resolvedDate')->ge($project->begin)
->where('resolvedDate')->ge($execution->begin)
->andWhere('resolution')->ne('postponed')
->andWhere('product')->eq($productID)
->beginIF($linkedBugs)->andWhere('id')->notIN($linkedBugs)->fi()
->beginIF($branch)->andWhere('branch')->in("0,$branch")->fi()
->andWhere("(project != '$project->id' OR (project = '$project->id' and openedDate < '$project->begin'))")
->andWhere("(execution != '$execution->id' OR (execution = '$execution->id' and openedDate < '$execution->begin'))")
->andWhere('deleted')->eq(0)
->orderBy('openedDate ASC')
->page($pager)
@@ -1547,16 +1547,16 @@ class bugModel extends model
* Get bugs of a story.
*
* @param int $storyID
* @param int $projectID
* @param int $executionID
* @access public
* @return array
*/
public function getStoryBugs($storyID, $projectID = 0)
public function getStoryBugs($storyID, $executionID = 0)
{
return $this->dao->select('id, title, pri, type, status, assignedTo, resolvedBy, resolution')
->from(TABLE_BUG)
->where('story')->eq((int)$storyID)
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
->beginIF($executionID)->andWhere('execution')->eq($executionID)->fi()
->andWhere('deleted')->eq(0)
->fetchAll('id');
}
@@ -1585,17 +1585,17 @@ class bugModel extends model
* Get counts of some stories' bugs.
*
* @param array $stories
* @param int $projectID
* @param int $executionID
* @access public
* @return int
*/
public function getStoryBugCounts($stories, $projectID = 0)
public function getStoryBugCounts($stories, $executionID = 0)
{
$bugCounts = $this->dao->select('story, COUNT(*) AS bugs')
->from(TABLE_BUG)
->where('story')->in($stories)
->andWhere('deleted')->eq(0)
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
->beginIF($executionID)->andWhere('execution')->eq($executionID)->fi()
->groupBy('story')
->fetchPairs();
foreach($stories as $storyID) if(!isset($bugCounts[$storyID])) $bugCounts[$storyID] = 0;
@@ -1669,22 +1669,22 @@ class bugModel extends model
}
/**
* Get report data of bugs per project
* Get report data of bugs per execution.
*
* @access public
* @return array
*/
public function getDataOfBugsPerProject()
public function getDataOfBugsPerExecution()
{
$datas = $this->dao->select('project as name, count(project) as value')->from(TABLE_BUG)->where($this->reportCondition())->groupBy('project')->orderBy('value DESC')->fetchAll('name');
$datas = $this->dao->select('execution as name, count(execution) as value')->from(TABLE_BUG)->where($this->reportCondition())->groupBy('execution')->orderBy('value DESC')->fetchAll('name');
if(!$datas) return array();
$projects = $this->loadModel('project')->getExecutionPairs($this->session->PRJ);
$executions = $this->loadModel('execution')->getExecutionPairs($this->session->project);
$maxLength = 12;
if(common::checkNotCN()) $maxLength = 22;
foreach($datas as $projectID => $data)
foreach($datas as $executionID => $data)
{
$data->name = isset($projects[$projectID]) ? $projects[$projectID] : $this->lang->report->undefined;
$data->name = isset($executions[$executionID]) ? $executions[$executionID] : $this->lang->report->undefined;
$data->title = $data->name;
if(mb_strlen($data->name) > $maxLength) $data->name = mb_substr($data->name, 0, $maxLength) . '...';
}
@@ -2000,18 +2000,18 @@ class bugModel extends model
* @param int $productID
* @param int $branch
* @param array $modules
* @param array $projects
* @param array $executions
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getAllBugs($productID, $branch, $modules, $projects, $orderBy, $pager = null)
public function getAllBugs($productID, $branch, $modules, $executions, $orderBy, $pager = null)
{
$bugs = $this->dao->select('t1.*, t2.title as planTitle')->from(TABLE_BUG)->alias('t1')
->leftJoin(TABLE_PRODUCTPLAN)->alias('t2')->on('t1.plan = t2.id')
->where('t1.product')->eq($productID)
->andWhere('t1.project')->in(array_keys($projects))
->andWhere('t1.execution')->in(array_keys($executions))
->beginIF($branch)->andWhere('t1.branch')->eq($branch)->fi()
->beginIF($modules)->andWhere('t1.module')->in($modules)->fi()
->andWhere('t1.deleted')->eq(0)
@@ -2028,18 +2028,18 @@ class bugModel extends model
* @param int $productID
* @param int $branch
* @param array $modules
* @param array $projects
* @param array $executions
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getByAssigntome($productID, $branch, $modules, $projects, $orderBy, $pager)
public function getByAssigntome($productID, $branch, $modules, $executions, $orderBy, $pager)
{
return $this->dao->findByAssignedTo($this->app->user->account)->from(TABLE_BUG)->andWhere('product')->eq($productID)
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
->beginIF($modules)->andWhere('module')->in($modules)->fi()
->andWhere('project')->in(array_keys($projects))
->andWhere('execution')->in(array_keys($executions))
->andWhere('deleted')->eq(0)
->orderBy($orderBy)->page($pager)->fetchAll();
}
@@ -2050,18 +2050,18 @@ class bugModel extends model
* @param int $productID
* @param int $branch
* @param array $modules
* @param array $projects
* @param array $executions
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getByOpenedbyme($productID, $branch, $modules, $projects, $orderBy, $pager)
public function getByOpenedbyme($productID, $branch, $modules, $executions, $orderBy, $pager)
{
return $this->dao->findByOpenedBy($this->app->user->account)->from(TABLE_BUG)->andWhere('product')->eq($productID)
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
->beginIF($modules)->andWhere('module')->in($modules)->fi()
->andWhere('project')->in(array_keys($projects))
->andWhere('execution')->in(array_keys($executions))
->andWhere('deleted')->eq(0)
->orderBy($orderBy)->page($pager)->fetchAll();
}
@@ -2072,18 +2072,18 @@ class bugModel extends model
* @param int $productID
* @param int $branch
* @param array $modules
* @param array $projects
* @param array $executions
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getByResolvedbyme($productID, $branch, $modules, $projects, $orderBy, $pager)
public function getByResolvedbyme($productID, $branch, $modules, $executions, $orderBy, $pager)
{
return $this->dao->findByResolvedBy($this->app->user->account)->from(TABLE_BUG)->andWhere('product')->eq($productID)
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
->beginIF($modules)->andWhere('module')->in($modules)->fi()
->andWhere('project')->in(array_keys($projects))
->andWhere('execution')->in(array_keys($executions))
->andWhere('deleted')->eq(0)
->orderBy($orderBy)->page($pager)->fetchAll();
}
@@ -2094,19 +2094,19 @@ class bugModel extends model
* @param int $productID
* @param int $branch
* @param array $modules
* @param array $projects
* @param array $executions
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getByAssigntonull($productID, $branch, $modules, $projects, $orderBy, $pager)
public function getByAssigntonull($productID, $branch, $modules, $executions, $orderBy, $pager)
{
return $this->dao->findByAssignedTo('')->from(TABLE_BUG)->andWhere('product')->eq($productID)
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
->beginIF($modules)->andWhere('module')->in($modules)->fi()
->andWhere('project')->in(array_keys($projects))
->andWhere('execution')->in(array_keys($executions))
->andWhere('deleted')->eq(0)
->orderBy($orderBy)->page($pager)->fetchAll();
}
@@ -2117,20 +2117,20 @@ class bugModel extends model
* @param int $productID
* @param int $branch
* @param array $modules
* @param int $projects
* @param int $executions
* @param int $orderBy
* @param int $pager
* @access public
* @return void
*/
public function getUnconfirmed($productID, $branch, $modules, $projects, $orderBy, $pager)
public function getUnconfirmed($productID, $branch, $modules, $executions, $orderBy, $pager)
{
return $this->dao->select('*')->from(TABLE_BUG)
->where('confirmed')->eq(0)
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
->beginIF($modules)->andWhere('module')->in($modules)->fi()
->andWhere('product')->eq($productID)
->andWhere('project')->in(array_keys($projects))
->andWhere('execution')->in(array_keys($executions))
->andWhere('deleted')->eq(0)
->orderBy($orderBy)->page($pager)->fetchAll();
}
@@ -2141,17 +2141,17 @@ class bugModel extends model
* @param int $productID
* @param int $branch
* @param array $modules
* @param array $projects
* @param array $executions
* @param string $status
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getOverdueBugs($productID, $branch, $modules, $projects, $orderBy, $pager)
public function getOverdueBugs($productID, $branch, $modules, $executions, $orderBy, $pager)
{
return $this->dao->select('*')->from(TABLE_BUG)
->where('project')->in(array_keys($projects))
->where('execution')->in(array_keys($executions))
->andWhere('product')->eq($productID)
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
->beginIF($modules)->andWhere('module')->in($modules)->fi()
@@ -2168,17 +2168,17 @@ class bugModel extends model
* @param int $productID
* @param int $branch
* @param array $modules
* @param array $projects
* @param array $executions
* @param string $status
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getByStatus($productID, $branch, $modules, $projects, $status, $orderBy, $pager)
public function getByStatus($productID, $branch, $modules, $executions, $status, $orderBy, $pager)
{
return $this->dao->select('*')->from(TABLE_BUG)
->where('project')->in(array_keys($projects))
->where('execution')->in(array_keys($executions))
->andWhere('product')->eq($productID)
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
->beginIF($modules)->andWhere('module')->in($modules)->fi()
@@ -2195,17 +2195,17 @@ class bugModel extends model
* @param int $productID
* @param int $branch
* @param array $modules
* @param array $projects
* @param array $executions
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getByLonglifebugs($productID, $branch, $modules, $projects, $orderBy, $pager)
public function getByLonglifebugs($productID, $branch, $modules, $executions, $orderBy, $pager)
{
$lastEditedDate = date(DT_DATE1, time() - $this->config->bug->longlife * 24 * 3600);
return $this->dao->findByLastEditedDate("<", $lastEditedDate)->from(TABLE_BUG)->andWhere('product')->eq($productID)
->andWhere('project')->in(array_keys($projects))
->andWhere('execution')->in(array_keys($executions))
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
->beginIF($modules)->andWhere('module')->in($modules)->fi()
->andWhere('openedDate')->lt($lastEditedDate)
@@ -2219,18 +2219,18 @@ class bugModel extends model
* @param int $productID
* @param int $branch
* @param array $modules
* @param array $projects
* @param array $executions
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getByPostponedbugs($productID, $branch, $modules, $projects, $orderBy, $pager)
public function getByPostponedbugs($productID, $branch, $modules, $executions, $orderBy, $pager)
{
return $this->dao->findByResolution('postponed')->from(TABLE_BUG)->andWhere('product')->eq($productID)
->beginIF($branch)->andWhere('branch')->in($branch)->fi()
->beginIF($modules)->andWhere('module')->in($modules)->fi()
->andWhere('project')->in(array_keys($projects))
->andWhere('execution')->in(array_keys($executions))
->andWhere('deleted')->eq(0)
->orderBy($orderBy)->page($pager)->fetchAll();
}
@@ -2241,13 +2241,13 @@ class bugModel extends model
* @param int $productID
* @param int $branch
* @param array $modules
* @param array $projects
* @param array $executions
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getByNeedconfirm($productID, $branch, $modules, $projects, $orderBy, $pager)
public function getByNeedconfirm($productID, $branch, $modules, $executions, $orderBy, $pager)
{
return $this->dao->select('t1.*, t2.title AS storyTitle')->from(TABLE_BUG)->alias('t1')->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id')
->where("t2.status = 'active'")
@@ -2255,7 +2255,7 @@ class bugModel extends model
->beginIF($branch)->andWhere('t1.branch')->in($branch)->fi()
->beginIF($modules)->andWhere('t1.module')->in($modules)->fi()
->andWhere('t2.version > t1.storyVersion')
->andWhere('t1.project')->in(array_keys($projects))
->andWhere('t1.execution')->in(array_keys($executions))
->andWhere('t1.deleted')->eq(0)
->orderBy($orderBy)
->page($pager)
@@ -2313,7 +2313,7 @@ class bugModel extends model
if(strpos($bugQuery, ' `closedDate` ') !== false) $bugQuery = str_replace(' `closedDate` ', " `closedDate` != '0000-00-00 00:00:00' AND `closedDate` ", $bugQuery);
$bugs = $this->dao->select('*')->from(TABLE_BUG)->where($bugQuery)
->beginIF(!$this->app->user->admin)->andWhere('project')->in('0,' . $this->app->user->view->projects)->fi()
->beginIF(!$this->app->user->admin)->andWhere('execution')->in('0,' . $this->app->user->view->sprints)->fi()
->beginIF($excludeBugs)->andWhere('id')->notIN($excludeBugs)->fi()
->andWhere('deleted')->eq(0)
->orderBy($orderBy)->page($pager)->fetchAll();
@@ -2334,29 +2334,29 @@ class bugModel extends model
$relatedStoryIdList = array();
$relatedTaskIdList = array();
$relatedCaseIdList = array();
$relatedProjectIdList = array();
$relatedExecutionIdList = array();
foreach($bugs as $bug)
{
$relatedModuleIdList[$bug->module] = $bug->module;
$relatedStoryIdList[$bug->story] = $bug->story;
$relatedTaskIdList[$bug->task] = $bug->task;
$relatedCaseIdList[$bug->case] = $bug->case;
$relatedProjectIdList[$bug->project] = $bug->project;
$relatedModuleIdList[$bug->module] = $bug->module;
$relatedStoryIdList[$bug->story] = $bug->story;
$relatedTaskIdList[$bug->task] = $bug->task;
$relatedCaseIdList[$bug->case] = $bug->case;
$relatedExecutionIdList[$bug->execution] = $bug->execution;
/* Get related objects title or names. */
$relatedModules = $this->dao->select('id, name')->from(TABLE_MODULE)->where('id')->in($relatedModuleIdList)->fetchPairs();
$relatedStories = $this->dao->select('id, title')->from(TABLE_STORY) ->where('id')->in($relatedStoryIdList)->fetchPairs();
$relatedTasks = $this->dao->select('id, name')->from(TABLE_TASK)->where('id')->in($relatedTaskIdList)->fetchPairs();
$relatedCases = $this->dao->select('id, title')->from(TABLE_CASE)->where('id')->in($relatedCaseIdList)->fetchPairs();
$relatedProjects = $this->dao->select('id, name')->from(TABLE_PROJECT)->where('id')->in($relatedProjectIdList)->fetchPairs();
$relatedModules = $this->dao->select('id, name')->from(TABLE_MODULE)->where('id')->in($relatedModuleIdList)->fetchPairs();
$relatedStories = $this->dao->select('id, title')->from(TABLE_STORY) ->where('id')->in($relatedStoryIdList)->fetchPairs();
$relatedTasks = $this->dao->select('id, name')->from(TABLE_TASK)->where('id')->in($relatedTaskIdList)->fetchPairs();
$relatedCases = $this->dao->select('id, title')->from(TABLE_CASE)->where('id')->in($relatedCaseIdList)->fetchPairs();
$relatedExecutions = $this->dao->select('id, name')->from(TABLE_EXECUTION)->where('id')->in($relatedExecutionIdList)->fetchPairs();
/* fill some field with useful value. */
if(isset($relatedModules[$bug->module])) $bug->module = $relatedModules[$bug->module];
if(isset($relatedStories[$bug->story])) $bug->story = $relatedStories[$bug->story];
if(isset($relatedTasks[$bug->task])) $bug->task = $relatedTasks[$bug->task];
if(isset($relatedCases[$bug->case])) $bug->case = $relatedCases[$bug->case];
if(isset($relatedProjects[$bug->project])) $bug->project = $relatedProjects[$bug->project];
if(isset($relatedModules[$bug->module])) $bug->module = $relatedModules[$bug->module];
if(isset($relatedStories[$bug->story])) $bug->story = $relatedStories[$bug->story];
if(isset($relatedTasks[$bug->task])) $bug->task = $relatedTasks[$bug->task];
if(isset($relatedCases[$bug->case])) $bug->case = $relatedCases[$bug->case];
if(isset($relatedExecutions[$bug->execution])) $bug->execution = $relatedExecutions[$bug->execution];
}
return $bugs;
}
@@ -2438,7 +2438,7 @@ class bugModel extends model
* @param array $builds
* @param array $branches
* @param array $modulePairs
* @param array $projects
* @param array $executions
* @param array $plans
* @param array $stories
* @param array $tasks
@@ -2446,7 +2446,7 @@ class bugModel extends model
* @access public
* @return void
*/
public function printCell($col, $bug, $users, $builds, $branches, $modulePairs, $projects = array(), $plans = array(), $stories = array(), $tasks = array(), $mode = 'datatable')
public function printCell($col, $bug, $users, $builds, $branches, $modulePairs, $executions = array(), $plans = array(), $stories = array(), $tasks = array(), $mode = 'datatable')
{
/* Check the product is closed. */
$canBeChanged = common::canBeChanged('bug', $bug);
@@ -2511,7 +2511,7 @@ class bugModel extends model
$title = "title='" . zget($users, $bug->resolvedBy) . "'";
}
if($id == 'deadline' && isset($bug->delay)) $class .= ' delayed';
if(strpos(',type,project,story,plan,task,openedBuild,', ",{$id},") !== false) $class .= ' text-ellipsis';
if(strpos(',type,execution,story,plan,task,openedBuild,', ",{$id},") !== false) $class .= ' text-ellipsis';
echo "<td class='" . $class . "' $title>";
if(isset($this->config->bizVersion)) $this->loadModel('flow')->printFlowCell('bug', $bug, $id);
@@ -2556,8 +2556,8 @@ class bugModel extends model
case 'branch':
echo zget($branches, $bug->branch, '');
break;
case 'project':
echo zget($projects, $bug->project, '');
case 'execution':
echo zget($executions, $bug->execution, '');
break;
case 'plan':
echo zget($plans, $bug->plan, '');
@@ -2823,9 +2823,9 @@ class bugModel extends model
}
/**
* Summary
*
* @param array $bugs
* Summary
*
* @param array $bugs
* @access public
* @return string
*/
+6 -6
View File
@@ -46,10 +46,10 @@
<table class='table table-form'>
<thead>
<tr>
<th class='w-50px'><?php echo $lang->idAB;?></th>
<th class='w-50px'><?php echo $lang->idAB;?></th>
<th class='w-120px<?php echo zget($visibleFields, $product->type, ' hidden')?>'> <?php echo $lang->product->branch;?></th>
<th class='w-120px<?php echo zget($requiredFields, 'module', '', ' required');?>'> <?php echo $lang->bug->module;?></th>
<th class='w-130px<?php echo zget($visibleFields, 'project', ' hidden') . zget($requiredFields, 'project', '', ' required');?>'><?php echo $lang->bug->project;?></th>
<th class='w-130px<?php echo zget($visibleFields, 'execution', ' hidden') . zget($requiredFields, 'execution', '', ' required');?>'><?php echo $lang->bug->execution;?></th>
<th class='w-100px required'><?php echo $lang->bug->openedBuild;?></th>
<th class='c-title required'><?php echo $lang->bug->title;?></th>
<th class='w-100px<?php echo zget($visibleFields, 'deadline', ' hidden') . zget($requiredFields, 'deadline', '', ' required');?>'><?php echo $lang->bug->deadline;?></th>
@@ -69,7 +69,7 @@
<tbody>
<?php
$moduleOptionMenu += array('ditto' => $lang->bug->ditto);
$projects += array('ditto' => $lang->bug->ditto);
$executions += array('ditto' => $lang->bug->ditto);
$lang->bug->typeList += array('ditto' => $lang->bug->ditto);
$lang->bug->priList += array('ditto' => $lang->bug->ditto);
$lang->bug->osList += array('ditto' => $lang->bug->ditto);
@@ -90,7 +90,7 @@
<td class='text-center'><?php echo $i+1;?></td>
<td class='<?php echo zget($visibleFields, $product->type, ' hidden')?>' style='overflow:visible'><?php echo html::select("branches[$i]", $branches, $branch, "class='form-control chosen' onchange='setBranchRelated(this.value, $productID, $i)'");?></td>
<td><?php echo html::select("modules[$i]", $moduleOptionMenu, $moduleID, "class='form-control chosen'");?></td>
<td class='<?php echo zget($visibleFields, 'project', ' hidden')?>' style='overflow:visible'><?php echo html::select("projects[$i]", $projects, $executionID, "class='form-control chosen' onchange='loadProjectBuilds($productID, this.value, $i)'");?></td>
<td class='<?php echo zget($visibleFields, 'execution', ' hidden')?>' style='overflow:visible'><?php echo html::select("executions[$i]", $executions, $executionID, "class='form-control chosen' onchange='loadExecutionBuilds($productID, this.value, $i)'");?></td>
<td id='buildBox<?php echo $i;?>'><?php echo html::select("openedBuilds[$i][]", $builds, 'trunk', "class='form-control chosen' multiple");?></td>
<td>
<div class='input-group'>
@@ -133,7 +133,7 @@
<td><?php echo $i+1;?></td>
<td class='<?php echo zget($visibleFields, $product->type, ' hidden')?>' style='overflow:visible'><?php echo html::select("branches[$i]", $branches, $branch, "class='form-control chosen' onchange='setBranchRelated(this.value, $productID, $i)'");?></td>
<td><?php echo html::select("modules[$i]", $moduleOptionMenu, $moduleID, "class='form-control chosen'");?></td>
<td class='<?php echo zget($visibleFields, 'project', ' hidden')?>' style='overflow:visible'><?php echo html::select("projects[$i]", $projects, $executionID, "class='form-control chosen' onchange='loadProjectBuilds($productID, this.value, $i)'");?></td>
<td class='<?php echo zget($visibleFields, 'execution', ' hidden')?>' style='overflow:visible'><?php echo html::select("executions[$i]", $executions, $executionID, "class='form-control chosen' onchange='loadExecutionBuilds($productID, this.value, $i)'");?></td>
<td id='buildBox<?php echo $i;?>'><?php echo html::select("openedBuilds[$i][]", $builds, '', "class='form-control chosen' multiple");?></td>
<td>
<div class='input-group'>
@@ -179,7 +179,7 @@
<td>%s</td>
<td class='<?php echo zget($visibleFields, $product->type, ' hidden')?>' style='overflow:visible'><?php echo html::select("branches[%s]", $branches, $branch, "class='form-control chosen' onchange='setBranchRelated(this.value, $productID, \"%s\")'");?></td>
<td><?php echo html::select("modules[%s]", $moduleOptionMenu, $moduleID, "class='form-control'");?></td>
<td class='<?php echo zget($visibleFields, 'project', ' hidden')?>' style='overflow:visible'><?php echo html::select("projects[%s]", $projects, $executionID, "class='form-control chosen' onchange='loadProjectBuilds($productID, this.value, \"%s\")'");?></td>
<td class='<?php echo zget($visibleFields, 'execution', ' hidden')?>' style='overflow:visible'><?php echo html::select("executions[%s]", $executions, $executionID, "class='form-control chosen' onchange='loadExecutionBuilds($productID, this.value, \"%s\")'");?></td>
<td id='buildBox%s'><?php echo html::select("openedBuilds[%s][]", $builds, '', "class='form-control chosen' multiple");?></td>
<td>
<div class='input-group'>
+3 -3
View File
@@ -111,7 +111,7 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
<?php if(common::canModify('product', $product)):?>
<?php if(!common::checkNotCN()):?>
<?php
common::printLink('bug', 'batchCreate', "productID=$productID&branch=$branch&projectID=0&moduleID=$moduleID", "<i class='icon icon-plus'></i>" . $lang->bug->batchCreate, '', "class='btn btn-secondary'");
common::printLink('bug', 'batchCreate', "productID=$productID&branch=$branch&executionID=0&moduleID=$moduleID", "<i class='icon icon-plus'></i>" . $lang->bug->batchCreate, '', "class='btn btn-secondary'");
if(commonModel::isTutorialMode())
{
$wizardParams = helper::safe64Encode("productID=$productID&branch=$branch&extra=moduleID=$moduleID");
@@ -147,7 +147,7 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
<?php $disabled = common::hasPriv('bug', 'batchCreate') ? '' : "class='disabled'";?>
<li <?php echo $disabled?>>
<?php
$batchLink = $this->createLink('bug', 'batchCreate', "productID=$productID&branch=$branch&projectID=0&moduleID=$moduleID");
$batchLink = $this->createLink('bug', 'batchCreate', "productID=$productID&branch=$branch&executionID=0&moduleID=$moduleID");
echo "<li>" . html::a($batchLink, "<i class='icon icon-plus'></i>" . $lang->bug->batchCreate) . "</li>";
?>
</li>
@@ -236,7 +236,7 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
<tbody>
<?php foreach($bugs as $bug):?>
<tr data-id='<?php echo $bug->id?>'>
<?php foreach($setting as $value) $this->bug->printCell($value, $bug, $users, $builds, $branches, $modulePairs, $projects, $plans, $stories, $tasks, $useDatatable ? 'datatable' : 'table');?>
<?php foreach($setting as $value) $this->bug->printCell($value, $bug, $users, $builds, $branches, $modulePairs, $executions, $plans, $stories, $tasks, $useDatatable ? 'datatable' : 'table');?>
</tr>
<?php endforeach;?>
</tbody>
+7 -7
View File
@@ -69,11 +69,11 @@ js::set('isStepsTemplate', $isStepsTemplate);
</div>
</td>
</tr>
<?php $showProject = (strpos(",$showFields,", ',project,') !== false);?>
<?php $showExecution = (strpos(",$showFields,", ',execution,') !== false);?>
<tr>
<th><?php echo ($showProject) ? $lang->bug->project : $lang->bug->type;?></th>
<th><?php echo ($showexEcution) ? $lang->bug->execution : $lang->bug->type;?></th>
<?php if(!$showProject):?>
<?php if(!$showexEcution):?>
<?php $showOS = strpos(",$showFields,", ',os,') !== false;?>
<?php $showBrowser = strpos(",$showFields,", ',browser,') !== false;?>
<td>
@@ -90,8 +90,8 @@ js::set('isStepsTemplate', $isStepsTemplate);
</div>
</td>
<?php endif;?>
<?php if($showProject):?>
<td><span id='projectIdBox'><?php echo html::select('project', $projects, $executionID, "class='form-control chosen' onchange='loadProjectRelated(this.value)'");?></span></td>
<?php if($showExecution):?>
<td><span id='executionIdBox'><?php echo html::select('execution', $executions, $executionID, "class='form-control chosen' onchange='loadExecutionRelated(this.value)'");?></span></td>
<?php endif;?>
<td>
<div class='input-group' id='buildBox'>
@@ -106,7 +106,7 @@ js::set('isStepsTemplate', $isStepsTemplate);
<th><nobr><?php echo $lang->bug->lblAssignedTo;?></nobr></th>
<td>
<div class='input-group'>
<?php echo html::select('assignedTo', $projectMembers, $assignedTo, "class='form-control chosen'");?>
<?php echo html::select('assignedTo', $ExecutionMembers, $assignedTo, "class='form-control chosen'");?>
<span class='input-group-btn'><?php echo html::commonButton($lang->bug->allUsers, "class='btn btn-default' onclick='loadAllUsers()' data-toggle='tooltip'");?></span>
</div>
</td>
@@ -120,7 +120,7 @@ js::set('isStepsTemplate', $isStepsTemplate);
</td>
</tr>
<?php endif;?>
<?php if($showProject):?>
<?php if($showExecution):?>
<?php $showOS = strpos(",$showFields,", ',os,') !== false;?>
<?php $showBrowser = strpos(",$showFields,", ',browser,') !== false;?>
<tr>
+4 -4
View File
@@ -16,10 +16,10 @@ include '../../common/view/datepicker.html.php';
include '../../common/view/kindeditor.html.php';
js::set('page' , 'edit');
js::set('changeProductConfirmed' , false);
js::set('changeProjectConfirmed' , false);
js::set('changeExecutionConfirmed' , false);
js::set('confirmChangeProduct' , $lang->bug->confirmChangeProduct);
js::set('planID' , $bug->plan);
js::set('oldProjectID' , $bug->project);
js::set('oldExecutionID' , $bug->execution);
js::set('oldStoryID' , $bug->story);
js::set('oldTaskID' , $bug->task);
js::set('oldOpenedBuild' , $bug->openedBuild);
@@ -175,8 +175,8 @@ js::set('oldResolvedBuild' , $bug->resolvedBuild);
<table class='table table-form'>
<tbody>
<tr>
<th class='w-85px'><?php echo $lang->bug->project;?></th>
<td><span id='projectIdBox'><?php echo html::select('project', $projects, $bug->project, "class='form-control chosen' onchange='loadProjectRelated(this.value)'");?></span></td>
<th class='w-85px'><?php echo $lang->bug->execution;?></th>
<td><span id='executionIdBox'><?php echo html::select('execution', $executions, $bug->execution, "class='form-control chosen' onchange='loadExecutionRelated(this.value)'");?></span></td>
</tr>
<tr>
<th><?php echo $lang->bug->story;?></th>
+5 -5
View File
@@ -13,7 +13,7 @@
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/kindeditor.html.php';?>
<?php include '../../common/view/datepicker.html.php';?>
<?php
<?php
js::set('page' , 'resolve');
js::set('productID' , $bug->product);
?>
@@ -42,10 +42,10 @@ js::set('productID' , $bug->product);
</tr>
<tr>
<th><?php echo $lang->bug->resolvedBuild;?></th>
<td id='newBuildProjectBox' class='hidden'>
<td id='newBuildExecutionBox' class='hidden'>
<div class='input-group'>
<span class='input-group-addon'><?php echo $lang->build->project;?></span>
<?php echo html::select('buildProject', $projects, '', "class='form-control chosen'");?>
<span class='input-group-addon'><?php echo $lang->build->execution;?></span>
<?php echo html::select('buildExecution', $executions, '', "class='form-control chosen'");?>
</div>
</td>
<td>
@@ -54,7 +54,7 @@ js::set('productID' , $bug->product);
</td>
<td>
<?php if(common::hasPriv('build', 'create')):?>
<div class='checkbox-primary'>
<div class='checkbox-primary'>
<input type='checkbox' id='createBuild' name='createBuild' value='1' />
<label for='createBuild'><?php echo $lang->bug->createBuild;?></label>
</div>
+4 -4
View File
@@ -82,7 +82,7 @@
common::printIcon('bug', 'close', $params, $bug, 'button', '', '', 'text-danger iframe showinonlybody', true);
common::printIcon('bug', 'activate', $params, $bug, 'button', '', '', 'text-success iframe showinonlybody', true);
common::printIcon('bug', 'toStory', "product=$bug->product&branch=$bug->branch&module=0&story=0&project=0&bugID=$bug->id", $bug, 'button', $lang->icons['story'], '', '', '', '', $lang->bug->toStory);
common::printIcon('bug', 'toStory', "product=$bug->product&branch=$bug->branch&module=0&story=0&execution=0&bugID=$bug->id", $bug, 'button', $lang->icons['story'], '', '', '', '', $lang->bug->toStory);
common::printIcon('bug', 'createCase', $convertParams, $bug, 'button', 'sitemap');
echo $this->buildOperateMenu($bug, 'view');
@@ -207,7 +207,7 @@
<tr>
<th><?php echo $lang->bug->deadline;?></th>
<td>
<?php
<?php
if($bug->deadline) echo $bug->deadline;
if(isset($bug->delay)) printf($lang->bug->delayWarning, $bug->delay);
?>
@@ -236,8 +236,8 @@
<table class='table table-data'>
<tbody>
<tr>
<th class='w-60px'><?php echo $lang->bug->project;?></th>
<td><?php if($bug->project) echo html::a($this->createLink('project', 'browse', "projectid=$bug->project"), $bug->projectName);?></td>
<th class='w-60px'><?php echo $lang->bug->execution;?></th>
<td><?php if($bug->execution) echo html::a($this->createLink('execution', 'browse', "executionid=$bug->execution"), $bug->executionName);?></td>
</tr>
<tr class='nofixed'>
<th><?php echo $lang->bug->story;?></th>