* Distinguish project execution from bug module.
This commit is contained in:
+17
-17
@@ -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
@@ -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;
|
||||
|
||||
@@ -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 @@
|
||||
.chosen-container[id^="buildProject"] {max-width: 160px; border-radius: 0}
|
||||
.chosen-container[id^="buildExecution"] {max-width: 160px; border-radius: 0}
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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'>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user