Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms
This commit is contained in:
@@ -80,10 +80,14 @@ $filter->product->project = new stdclass();
|
|||||||
$filter->program->default = new stdclass();
|
$filter->program->default = new stdclass();
|
||||||
$filter->program->pgmproject = new stdclass();
|
$filter->program->pgmproject = new stdclass();
|
||||||
$filter->program->prjbrowse = new stdclass();
|
$filter->program->prjbrowse = new stdclass();
|
||||||
|
$filter->program->project = new stdclass();
|
||||||
|
$filter->program->browse = new stdclass();
|
||||||
|
$filter->program->export = new stdclass();
|
||||||
$filter->program->pgmbrowse = new stdclass();
|
$filter->program->pgmbrowse = new stdclass();
|
||||||
$filter->program->export = new stdclass();
|
$filter->program->export = new stdclass();
|
||||||
$filter->program->ajaxgetpgmdropmenu = new stdclass();
|
$filter->program->ajaxgetpgmdropmenu = new stdclass();
|
||||||
$filter->project->default = new stdclass();
|
$filter->project->default = new stdclass();
|
||||||
|
$filter->project->browse = new stdclass();
|
||||||
$filter->project->story = new stdclass();
|
$filter->project->story = new stdclass();
|
||||||
$filter->project->export = new stdclass();
|
$filter->project->export = new stdclass();
|
||||||
$filter->project->task = new stdclass();
|
$filter->project->task = new stdclass();
|
||||||
|
|||||||
@@ -189,9 +189,7 @@ class bug extends control
|
|||||||
$this->config->bug->search['onMenuBar'] = 'yes';
|
$this->config->bug->search['onMenuBar'] = 'yes';
|
||||||
$this->bug->buildSearchForm($productID, $this->products, $queryID, $actionURL);
|
$this->bug->buildSearchForm($productID, $this->products, $queryID, $actionURL);
|
||||||
|
|
||||||
$showModule = !empty($this->config->datatable->bugBrowse->showModule) ? $this->config->datatable->bugBrowse->showModule : '';
|
$showModule = !empty($this->config->datatable->bugBrowse->showModule) ? $this->config->datatable->bugBrowse->showModule : '';
|
||||||
$this->view->modulePairs = $showModule ? $this->tree->getModulePairs($productID, 'bug', $showModule) : array();
|
|
||||||
|
|
||||||
$productName = $productID ? $this->products[$productID] : $this->lang->product->allProduct;
|
$productName = $productID ? $this->products[$productID] : $this->lang->product->allProduct;
|
||||||
|
|
||||||
/* Set view. */
|
/* Set view. */
|
||||||
@@ -223,6 +221,7 @@ class bug extends control
|
|||||||
$this->view->tasks = $taskList;
|
$this->view->tasks = $taskList;
|
||||||
$this->view->setModule = true;
|
$this->view->setModule = true;
|
||||||
$this->view->isProjectBug = ($productID and !$this->projectID) ? false : true;
|
$this->view->isProjectBug = ($productID and !$this->projectID) ? false : true;
|
||||||
|
$this->view->modulePairs = $showModule ? $this->tree->getModulePairs($productID, 'bug', $showModule) : array();
|
||||||
|
|
||||||
$this->display();
|
$this->display();
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-1
@@ -1247,11 +1247,20 @@ class bugModel extends model
|
|||||||
$productParams = $productID ? array($productID => $products[$productID]) : $products;
|
$productParams = $productID ? array($productID => $products[$productID]) : $products;
|
||||||
$productParams = $productParams + array('all' => $this->lang->bug->allProduct);
|
$productParams = $productParams + array('all' => $this->lang->bug->allProduct);
|
||||||
|
|
||||||
|
/* Get all modules. */
|
||||||
|
$modules = array();
|
||||||
|
$this->loadModel('tree');
|
||||||
|
if($productID) $modules = $this->tree->getOptionMenu($productID, 'bug', 0);
|
||||||
|
if(!$productID)
|
||||||
|
{
|
||||||
|
foreach($products as $id => $productName) $modules += $this->tree->getOptionMenu($id, 'bug');
|
||||||
|
}
|
||||||
|
|
||||||
$this->config->bug->search['actionURL'] = $actionURL;
|
$this->config->bug->search['actionURL'] = $actionURL;
|
||||||
$this->config->bug->search['queryID'] = $queryID;
|
$this->config->bug->search['queryID'] = $queryID;
|
||||||
$this->config->bug->search['params']['product']['values'] = $productParams;
|
$this->config->bug->search['params']['product']['values'] = $productParams;
|
||||||
$this->config->bug->search['params']['plan']['values'] = $this->loadModel('productplan')->getPairs($productID);
|
$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']['module']['values'] = $modules;
|
||||||
$this->config->bug->search['params']['execution']['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']['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']['openedBuild']['values'] = $this->loadModel('build')->getProductBuildPairs($productID, 0, $params = '');
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
|
|||||||
<?php endif;?>
|
<?php endif;?>
|
||||||
<?php echo $moduleTree;?>
|
<?php echo $moduleTree;?>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<?php common::printLink('tree', 'browse', "productID=$productID&view=bug¤tModuleID=0&branch=0&from={$this->lang->navGroup->bug}", $lang->tree->manage, '', "class='btn btn-info btn-wide'");?>
|
<?php if($productID) common::printLink('tree', 'browse', "productID=$productID&view=bug¤tModuleID=0&branch=0&from={$this->lang->navGroup->bug}", $lang->tree->manage, '', "class='btn btn-info btn-wide'");?>
|
||||||
<hr class="space-sm" />
|
<hr class="space-sm" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -86,12 +86,13 @@ $lang->execution->menuOrder[15] = 'burn';
|
|||||||
$lang->execution->menuOrder[20] = 'view';
|
$lang->execution->menuOrder[20] = 'view';
|
||||||
$lang->execution->menuOrder[25] = 'story';
|
$lang->execution->menuOrder[25] = 'story';
|
||||||
$lang->execution->menuOrder[30] = 'qa';
|
$lang->execution->menuOrder[30] = 'qa';
|
||||||
$lang->execution->menuOrder[35] = 'ci';
|
$lang->execution->menuOrder[35] = 'repo';
|
||||||
$lang->execution->menuOrder[40] = 'doc';
|
$lang->execution->menuOrder[40] = 'ci';
|
||||||
$lang->execution->menuOrder[45] = 'build';
|
$lang->execution->menuOrder[45] = 'doc';
|
||||||
$lang->execution->menuOrder[50] = 'release';
|
$lang->execution->menuOrder[50] = 'build';
|
||||||
$lang->execution->menuOrder[55] = 'action';
|
$lang->execution->menuOrder[55] = 'release';
|
||||||
$lang->execution->menuOrder[60] = 'setting';
|
$lang->execution->menuOrder[60] = 'action';
|
||||||
|
$lang->execution->menuOrder[65] = 'setting';
|
||||||
|
|
||||||
$lang->task->menuOrder = $lang->execution->menuOrder;
|
$lang->task->menuOrder = $lang->execution->menuOrder;
|
||||||
$lang->build->menuOrder = $lang->execution->menuOrder;
|
$lang->build->menuOrder = $lang->execution->menuOrder;
|
||||||
|
|||||||
@@ -337,7 +337,7 @@ $lang->story->menu = $lang->product->menu;
|
|||||||
$lang->execution = new stdclass();
|
$lang->execution = new stdclass();
|
||||||
$lang->execution->homeMenu = new stdclass();
|
$lang->execution->homeMenu = new stdclass();
|
||||||
$lang->execution->homeMenu->index = '仪表盘|execution|index|';
|
$lang->execution->homeMenu->index = '仪表盘|execution|index|';
|
||||||
$lang->execution->homeMenu->list = '执行|execution|all|';
|
$lang->execution->homeMenu->list = array('link' => '执行|execution|all|', 'alias' => 'batchedit');
|
||||||
|
|
||||||
$lang->execution->menu = new stdclass();
|
$lang->execution->menu = new stdclass();
|
||||||
$lang->execution->menu->task = array('link' => '任务|execution|task|executionID=%s', 'subModule' => 'task,tree', 'alias' => 'importtask,importbug');
|
$lang->execution->menu->task = array('link' => '任务|execution|task|executionID=%s', 'subModule' => 'task,tree', 'alias' => 'importtask,importbug');
|
||||||
@@ -346,8 +346,10 @@ $lang->execution->menu->burn = array('link' => '燃尽图|execution|burn|exe
|
|||||||
$lang->execution->menu->view = array('link' => '视图|execution|grouptask|executionID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
$lang->execution->menu->view = array('link' => '视图|execution|grouptask|executionID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
||||||
$lang->execution->menu->story = array('link' => "{$lang->SRCommon}|execution|story|executionID=%s", 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
$lang->execution->menu->story = array('link' => "{$lang->SRCommon}|execution|story|executionID=%s", 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||||
$lang->execution->menu->qa = array('link' => '测试|execution|qa|', 'alias' => 'qa,bug,testcase,testtask,testreport');
|
$lang->execution->menu->qa = array('link' => '测试|execution|qa|', 'alias' => 'qa,bug,testcase,testtask,testreport');
|
||||||
|
$lang->execution->menu->repo = array('link' => '代码|repo|browse|projectID=%s');
|
||||||
$lang->execution->menu->doc = array('link' => '文档|doc|objectLibs|type=execution&objectID=%s&from=execution', 'subModule' => 'doc');
|
$lang->execution->menu->doc = array('link' => '文档|doc|objectLibs|type=execution&objectID=%s&from=execution', 'subModule' => 'doc');
|
||||||
$lang->execution->menu->build = array('link' => '版本|execution|build|executionID=%s', 'subModule' => 'build');
|
$lang->execution->menu->build = array('link' => '版本|execution|build|executionID=%s', 'subModule' => 'build');
|
||||||
|
$lang->execution->menu->release = array('link' => '发布|projectrelease|browse|project=%s');
|
||||||
$lang->execution->menu->action = array('link' => '动态|execution|dynamic|executionID=%s');
|
$lang->execution->menu->action = array('link' => '动态|execution|dynamic|executionID=%s');
|
||||||
$lang->execution->menu->setting = array('link' => '设置|execution|view|executionID=%s', 'subModule' => 'personnel', 'alias' => 'edit,manageproducts,team,whitelist,addwhitelist,managemembers', 'class' => 'dropdown dropdown-hover');
|
$lang->execution->menu->setting = array('link' => '设置|execution|view|executionID=%s', 'subModule' => 'personnel', 'alias' => 'edit,manageproducts,team,whitelist,addwhitelist,managemembers', 'class' => 'dropdown dropdown-hover');
|
||||||
|
|
||||||
|
|||||||
@@ -819,8 +819,8 @@ class execution extends control
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Exectuion qa dashboard.
|
* Exectuion qa dashboard.
|
||||||
*
|
*
|
||||||
* @param int $executionID
|
* @param int $executionID
|
||||||
* @access public
|
* @access public
|
||||||
* @return void
|
* @return void
|
||||||
@@ -910,9 +910,9 @@ class execution extends control
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execution case list.
|
* Execution case list.
|
||||||
*
|
*
|
||||||
* @param int $executionID
|
* @param int $executionID
|
||||||
* @access public
|
* @access public
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
@@ -932,7 +932,7 @@ class execution extends control
|
|||||||
$this->view->executionID = $executionID;
|
$this->view->executionID = $executionID;
|
||||||
$this->view->productID = $productID;
|
$this->view->productID = $productID;
|
||||||
$this->view->execution = $this->execution->getByID($executionID);
|
$this->view->execution = $this->execution->getByID($executionID);
|
||||||
|
|
||||||
$this->display();
|
$this->display();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1444,6 +1444,8 @@ class execution extends control
|
|||||||
*/
|
*/
|
||||||
public function batchEdit($executionID = 0)
|
public function batchEdit($executionID = 0)
|
||||||
{
|
{
|
||||||
|
$this->lang->execution->menu = $this->lang->execution->homeMenu;
|
||||||
|
|
||||||
$this->app->loadLang('stage');
|
$this->app->loadLang('stage');
|
||||||
|
|
||||||
if($this->post->names)
|
if($this->post->names)
|
||||||
@@ -2348,7 +2350,7 @@ class execution extends control
|
|||||||
{
|
{
|
||||||
if($confirm == 'no')
|
if($confirm == 'no')
|
||||||
{
|
{
|
||||||
$tip = $this->app->rawModule == 'executionstory' ? $this->lang->execution->confirmUnlinkExecutionStory : $this->lang->execution->confirmUnlinkStory;
|
$tip = $this->app->rawModule == 'projectstory' ? $this->lang->execution->confirmUnlinkExecutionStory : $this->lang->execution->confirmUnlinkStory;
|
||||||
die(js::confirm($tip, $this->createLink('execution', 'unlinkstory', "executionID=$executionID&storyID=$storyID&confirm=yes")));
|
die(js::confirm($tip, $this->createLink('execution', 'unlinkstory', "executionID=$executionID&storyID=$storyID&confirm=yes")));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2988,8 +2990,8 @@ class execution extends control
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show module menu for some module.
|
* Show module menu for some module.
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ $(function()
|
|||||||
var planID = $('#plan').val();
|
var planID = $('#plan').val();
|
||||||
if(planID)
|
if(planID)
|
||||||
{
|
{
|
||||||
parent.location.href = createLink('project', 'importPlanStories', 'projectID=' + projectID + '&planID=' + planID);
|
parent.location.href = createLink('execution', 'importPlanStories', 'executionID=' + executionID + '&planID=' + planID);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -142,6 +142,7 @@ $lang->execution->index = "Home";
|
|||||||
$lang->execution->task = 'Aufgaben';
|
$lang->execution->task = 'Aufgaben';
|
||||||
$lang->execution->groupTask = 'Nach Gruppen';
|
$lang->execution->groupTask = 'Nach Gruppen';
|
||||||
$lang->execution->story = 'Storys';
|
$lang->execution->story = 'Storys';
|
||||||
|
$lang->execution->qa = 'QA';
|
||||||
$lang->execution->bug = 'Bugs';
|
$lang->execution->bug = 'Bugs';
|
||||||
$lang->execution->dynamic = 'Verlauf';
|
$lang->execution->dynamic = 'Verlauf';
|
||||||
$lang->execution->latestDynamic = 'Letzter Verlauf';
|
$lang->execution->latestDynamic = 'Letzter Verlauf';
|
||||||
|
|||||||
@@ -146,6 +146,7 @@ $lang->execution->index = "{$lang->executionCommon} Home";
|
|||||||
$lang->execution->task = 'Task List';
|
$lang->execution->task = 'Task List';
|
||||||
$lang->execution->groupTask = 'Group View';
|
$lang->execution->groupTask = 'Group View';
|
||||||
$lang->execution->story = 'Story List';
|
$lang->execution->story = 'Story List';
|
||||||
|
$lang->execution->qa = 'QA';
|
||||||
$lang->execution->bug = 'Bug List';
|
$lang->execution->bug = 'Bug List';
|
||||||
$lang->execution->dynamic = 'Dynamics';
|
$lang->execution->dynamic = 'Dynamics';
|
||||||
$lang->execution->latestDynamic = 'Dynamics';
|
$lang->execution->latestDynamic = 'Dynamics';
|
||||||
@@ -185,7 +186,7 @@ $lang->execution->delete = "Delete {$lang->executionCommon}";
|
|||||||
$lang->execution->browse = "{$lang->executionCommon} List";
|
$lang->execution->browse = "{$lang->executionCommon} List";
|
||||||
$lang->execution->list = "{$lang->executionCommon} List";
|
$lang->execution->list = "{$lang->executionCommon} List";
|
||||||
$lang->execution->edit = "Edit {$lang->executionCommon}";
|
$lang->execution->edit = "Edit {$lang->executionCommon}";
|
||||||
$lang->execution->batchEdit = "Batch Edit";
|
$lang->execution->batchEdit = "Edit";
|
||||||
$lang->execution->manageMembers = 'Manage Team';
|
$lang->execution->manageMembers = 'Manage Team';
|
||||||
$lang->execution->unlinkMember = 'Remove Member';
|
$lang->execution->unlinkMember = 'Remove Member';
|
||||||
$lang->execution->unlinkStory = 'Unlink Story';
|
$lang->execution->unlinkStory = 'Unlink Story';
|
||||||
|
|||||||
@@ -141,6 +141,7 @@ $lang->execution->index = "Accueil {$lang->executionCommon}";
|
|||||||
$lang->execution->task = 'Liste Tâches';
|
$lang->execution->task = 'Liste Tâches';
|
||||||
$lang->execution->groupTask = 'Vision Groupée';
|
$lang->execution->groupTask = 'Vision Groupée';
|
||||||
$lang->execution->story = 'Liste Stories';
|
$lang->execution->story = 'Liste Stories';
|
||||||
|
$lang->execution->qa = 'QA';
|
||||||
$lang->execution->bug = 'Liste Bugs';
|
$lang->execution->bug = 'Liste Bugs';
|
||||||
$lang->execution->dynamic = 'Historique';
|
$lang->execution->dynamic = 'Historique';
|
||||||
$lang->execution->latestDynamic = 'Historique';
|
$lang->execution->latestDynamic = 'Historique';
|
||||||
|
|||||||
@@ -142,6 +142,7 @@ $lang->execution->index = "{$lang->executionCommon} Home";
|
|||||||
$lang->execution->task = 'Danh sách nhiệm vụ';
|
$lang->execution->task = 'Danh sách nhiệm vụ';
|
||||||
$lang->execution->groupTask = 'Xem kiểu nhóm';
|
$lang->execution->groupTask = 'Xem kiểu nhóm';
|
||||||
$lang->execution->story = 'Danh sách câu chuyện';
|
$lang->execution->story = 'Danh sách câu chuyện';
|
||||||
|
$lang->execution->qa = 'QA';
|
||||||
$lang->execution->bug = 'Danh sách Bug';
|
$lang->execution->bug = 'Danh sách Bug';
|
||||||
$lang->execution->dynamic = 'Lịch sử';
|
$lang->execution->dynamic = 'Lịch sử';
|
||||||
$lang->execution->latestDynamic = 'Lịch sử';
|
$lang->execution->latestDynamic = 'Lịch sử';
|
||||||
|
|||||||
@@ -150,6 +150,7 @@ $lang->execution->index = "{$lang->executionCommon}主页";
|
|||||||
$lang->execution->task = '任务列表';
|
$lang->execution->task = '任务列表';
|
||||||
$lang->execution->groupTask = '分组浏览任务';
|
$lang->execution->groupTask = '分组浏览任务';
|
||||||
$lang->execution->story = "{$lang->SRCommon}列表";
|
$lang->execution->story = "{$lang->SRCommon}列表";
|
||||||
|
$lang->execution->qa = '测试仪表盘';
|
||||||
$lang->execution->bug = 'Bug列表';
|
$lang->execution->bug = 'Bug列表';
|
||||||
$lang->execution->testcase = '用例列表';
|
$lang->execution->testcase = '用例列表';
|
||||||
$lang->execution->dynamic = '动态';
|
$lang->execution->dynamic = '动态';
|
||||||
@@ -190,7 +191,7 @@ $lang->execution->delete = "删除{$lang->executionCommon}";
|
|||||||
$lang->execution->browse = "浏览{$lang->executionCommon}";
|
$lang->execution->browse = "浏览{$lang->executionCommon}";
|
||||||
$lang->execution->list = "{$lang->executionCommon}列表";
|
$lang->execution->list = "{$lang->executionCommon}列表";
|
||||||
$lang->execution->edit = "编辑{$lang->executionCommon}";
|
$lang->execution->edit = "编辑{$lang->executionCommon}";
|
||||||
$lang->execution->batchEdit = "批量编辑";
|
$lang->execution->batchEdit = "编辑";
|
||||||
$lang->execution->manageMembers = '团队管理';
|
$lang->execution->manageMembers = '团队管理';
|
||||||
$lang->execution->unlinkMember = '移除成员';
|
$lang->execution->unlinkMember = '移除成员';
|
||||||
$lang->execution->unlinkStory = "移除{$lang->SRCommon}";
|
$lang->execution->unlinkStory = "移除{$lang->SRCommon}";
|
||||||
|
|||||||
@@ -113,8 +113,8 @@ class executionModel extends model
|
|||||||
if($methodName == 'all') $label = $this->lang->execution->allExecutions;
|
if($methodName == 'all') $label = $this->lang->execution->allExecutions;
|
||||||
if($methodName == 'create' and $moduleName == 'execution') $label = $this->lang->execution->create;
|
if($methodName == 'create' and $moduleName == 'execution') $label = $this->lang->execution->create;
|
||||||
|
|
||||||
foreach($this->lang->execution->viewMenu as $key => $menu) common::setMenuVars($this->lang->execution->viewMenu, $key, $executionID);
|
foreach($this->lang->execution->viewMenu as $key => $menu) common::setMenuVars($this->lang->execution->viewMenu, $key, $executionID);
|
||||||
foreach($this->lang->execution->qaMenu as $key => $menu) common::setMenuVars($this->lang->execution->qaMenu, $key, $executionID);
|
foreach($this->lang->execution->qaMenu as $key => $menu) common::setMenuVars($this->lang->execution->qaMenu, $key, $executionID);
|
||||||
|
|
||||||
foreach($this->lang->execution->menu as $key => $menu)
|
foreach($this->lang->execution->menu as $key => $menu)
|
||||||
{
|
{
|
||||||
@@ -881,7 +881,7 @@ class executionModel extends model
|
|||||||
*/
|
*/
|
||||||
public function getMainAction($module, $method)
|
public function getMainAction($module, $method)
|
||||||
{
|
{
|
||||||
if($method == 'index' or $method == 'all') return;
|
if(in_array($method, array('index', 'all', 'batchedit'))) return;
|
||||||
|
|
||||||
$link = html::a(helper::createLink('execution', 'all'), "<i class='icon icon-list'></i>", '', "style='border: none;'");
|
$link = html::a(helper::createLink('execution', 'all'), "<i class='icon icon-list'></i>", '', "style='border: none;'");
|
||||||
$html = "<p style='padding-top:5px;'>" . $link . "</p>";
|
$html = "<p style='padding-top:5px;'>" . $link . "</p>";
|
||||||
@@ -900,7 +900,7 @@ class executionModel extends model
|
|||||||
*/
|
*/
|
||||||
public function getSwitcher($executionID, $currentModule, $currentMethod)
|
public function getSwitcher($executionID, $currentModule, $currentMethod)
|
||||||
{
|
{
|
||||||
if($currentMethod == 'index' or $currentMethod == 'all') return;
|
if(in_array($currentMethod, array('index', 'all', 'batchedit'))) return;
|
||||||
|
|
||||||
$this->session->set('moreExecutionLink', $this->app->getURI(true));
|
$this->session->set('moreExecutionLink', $this->app->getURI(true));
|
||||||
|
|
||||||
@@ -2046,12 +2046,51 @@ class executionModel extends model
|
|||||||
$data->version = $versions[$storyID];
|
$data->version = $versions[$storyID];
|
||||||
$data->order = ++$lastOrder;
|
$data->order = ++$lastOrder;
|
||||||
$this->dao->insert(TABLE_PROJECTSTORY)->data($data)->exec();
|
$this->dao->insert(TABLE_PROJECTSTORY)->data($data)->exec();
|
||||||
|
|
||||||
$this->story->setStage($storyID);
|
$this->story->setStage($storyID);
|
||||||
|
$this->linkCases($executionID, (int)$products[$storyID], $storyID);
|
||||||
|
|
||||||
$action = $executionID == $this->session->PRJ ? 'linked2project' : 'linked2execution';
|
$action = $executionID == $this->session->PRJ ? 'linked2project' : 'linked2execution';
|
||||||
$this->action->create('story', $storyID, $action, '', $executionID);
|
$this->action->create('story', $storyID, $action, '', $executionID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Link cases.
|
||||||
|
*
|
||||||
|
* @param int $executionID
|
||||||
|
* @param int $productID
|
||||||
|
* @param int $storyID
|
||||||
|
* @param string $type
|
||||||
|
* @access public
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function linkCases($executionID, $productID, $storyID, $type = '')
|
||||||
|
{
|
||||||
|
$this->loadModel('action');
|
||||||
|
$linkedCases = $this->dao->select('*')->from(TABLE_PROJECTCASE)->where('project')->eq($executionID)->orderBy('order_desc')->fetchPairs('case', 'order');
|
||||||
|
$lastCaseOrder = empty($linkedCases) ? 0 : reset($linkedCases);
|
||||||
|
$cases = $this->dao->select('id, version')->from(TABLE_CASE)->where('story')->eq($storyID)->fetchParis('id');
|
||||||
|
foreach($cases as $caseID => $case)
|
||||||
|
{
|
||||||
|
if(isset($linkedCases[$caseID])) continue;
|
||||||
|
|
||||||
|
$object = new stdclass();
|
||||||
|
$object->project = $executionID;
|
||||||
|
$object->product = $productID;
|
||||||
|
$object->case = $caseID;
|
||||||
|
$object->version = $case->version;
|
||||||
|
$object->order = ++$lastCaseOrder;
|
||||||
|
|
||||||
|
$this->dao->insert(TABLE_PROJECTCASE)->data($object)->exec();
|
||||||
|
|
||||||
|
$action = $executionID == $this->session->PRJ ? 'linked2project' : 'linked2execution';
|
||||||
|
if($type) $action = $type == 'project' ? 'linked2project' : 'linked2execution';
|
||||||
|
|
||||||
|
$this->action->create('case', $caseID, $action, '', $executionID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Link all stories by execution.
|
* Link all stories by execution.
|
||||||
*
|
*
|
||||||
@@ -2106,7 +2145,7 @@ class executionModel extends model
|
|||||||
public function unlinkStory($executionID, $storyID)
|
public function unlinkStory($executionID, $storyID)
|
||||||
{
|
{
|
||||||
$execution = $this->dao->findById($executionID)->from(TABLE_EXECUTION)->fetch();
|
$execution = $this->dao->findById($executionID)->from(TABLE_EXECUTION)->fetch();
|
||||||
if($execution->type == 'execution')
|
if($execution->type == 'project')
|
||||||
{
|
{
|
||||||
$executions = $this->dao->select('*')->from(TABLE_EXECUTION)->where('parent')->eq($executionID)->fetchAll('id');
|
$executions = $this->dao->select('*')->from(TABLE_EXECUTION)->where('parent')->eq($executionID)->fetchAll('id');
|
||||||
$executionStories = $this->dao->select('project,story')->from(TABLE_PROJECTSTORY)->where('story')->eq($storyID)->andWhere('project')->in(array_keys($executions))->fetchAll();
|
$executionStories = $this->dao->select('project,story')->from(TABLE_PROJECTSTORY)->where('story')->eq($storyID)->andWhere('project')->in(array_keys($executions))->fetchAll();
|
||||||
@@ -2123,6 +2162,7 @@ class executionModel extends model
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->loadModel('story')->setStage($storyID);
|
$this->loadModel('story')->setStage($storyID);
|
||||||
|
$this->unlinkCases($executionID, $storyID);
|
||||||
$objectType = $executionID == $this->session->PRJ ? unlinkedfromproject : unlinkedfromexecution;
|
$objectType = $executionID == $this->session->PRJ ? unlinkedfromproject : unlinkedfromexecution;
|
||||||
$this->loadModel('action')->create('story', $storyID, $objectType, '', $executionID);
|
$this->loadModel('action')->create('story', $storyID, $objectType, '', $executionID);
|
||||||
|
|
||||||
@@ -2136,6 +2176,34 @@ class executionModel extends model
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unlink cases.
|
||||||
|
*
|
||||||
|
* @param int $executionID
|
||||||
|
* @param int $storyID
|
||||||
|
* @access public
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function unlinkCases($executionID, $storyID)
|
||||||
|
{
|
||||||
|
$this->loadModel('action');
|
||||||
|
$cases = $this->dao->select('id')->from(TABLE_CASE)->where('story')->eq($storyID)->fetchAll('id');
|
||||||
|
foreach($cases as $caseID => $case)
|
||||||
|
{
|
||||||
|
$this->dao->delete()->from(TABLE_PROJECTCASE)->where('project')->eq($executionID)->andWhere('`case`')->eq($caseID)->limit(1)->exec();
|
||||||
|
$action = $executionID == $this->session->PRJ ? 'unlinkedfromproject' : 'unlinkedfromexecution';
|
||||||
|
$this->action->create('case', $caseID, $action, '', $executionID);
|
||||||
|
}
|
||||||
|
|
||||||
|
$order = 1;
|
||||||
|
$cases = $this->dao->select('*')->from(TABLE_PROJECTCASE)->where('project')->eq($executionID)->orderBy('order')->fetchAll();
|
||||||
|
foreach($cases as $case)
|
||||||
|
{
|
||||||
|
if($case->order != $order) $this->dao->update(TABLE_PROJECTCASE)->set('`order`')->eq($order)->where('project')->eq($executionID)->andWhere('`case`')->eq($case->case)->exec();
|
||||||
|
$order++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get team members.
|
* Get team members.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -72,14 +72,13 @@
|
|||||||
<?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?>
|
<?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?>
|
||||||
</th>
|
</th>
|
||||||
<th><?php common::printOrderLink('name', $orderBy, $vars, $from == 'execution' ? $lang->execution->execName : $lang->execution->name);?></th>
|
<th><?php common::printOrderLink('name', $orderBy, $vars, $from == 'execution' ? $lang->execution->execName : $lang->execution->name);?></th>
|
||||||
<th class='w-150px'><?php common::printOrderLink('code', $orderBy, $vars, $from == 'execution' ? $lang->execution->execCode : $lang->execution->code);?></th>
|
|
||||||
<th class='thWidth'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->execution->owner);?></th>
|
<th class='thWidth'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->execution->owner);?></th>
|
||||||
<th class='w-90px'><?php common::printOrderLink('end', $orderBy, $vars, $lang->execution->end);?></th>
|
<th class='w-90px'><?php common::printOrderLink('end', $orderBy, $vars, $lang->execution->end);?></th>
|
||||||
<th class='w-90px'><?php common::printOrderLink('status', $orderBy, $vars, $from == 'execution' ? $lang->execution->execStatus : $lang->execution->status);?></th>
|
<th class='w-90px'><?php common::printOrderLink('status', $orderBy, $vars, $from == 'execution' ? $lang->execution->execStatus : $lang->execution->status);?></th>
|
||||||
<th class='w-70px hours'><?php echo $lang->execution->totalEstimate;?></th>
|
<th class='w-40px'><?php echo $lang->execution->totalEstimate;?></th>
|
||||||
<th class='w-70px hours'><?php echo $lang->execution->totalConsumed;?></th>
|
<th class='w-40px'><?php echo $lang->execution->totalConsumed;?></th>
|
||||||
<th class='w-70px hours'><?php echo $lang->execution->totalLeft;?></th>
|
<th class='w-40px'><?php echo $lang->execution->totalLeft;?></th>
|
||||||
<th class='w-80px'><?php echo $lang->execution->progress;?></th>
|
<th class='w-60px'><?php echo $lang->execution->progress;?></th>
|
||||||
<th class='w-100px'><?php echo $lang->execution->burn;?></th>
|
<th class='w-100px'><?php echo $lang->execution->burn;?></th>
|
||||||
<?php if($canOrder):?>
|
<?php if($canOrder):?>
|
||||||
<th class='w-60px sort-default'><?php common::printOrderLink('order', $orderBy, $vars, $lang->execution->orderAB);?></th>
|
<th class='w-60px sort-default'><?php common::printOrderLink('order', $orderBy, $vars, $lang->execution->orderAB);?></th>
|
||||||
@@ -107,16 +106,15 @@
|
|||||||
<a class="plan-toggle" data-id="<?php echo $execution->id;?>"><i class="icon icon-angle-double-right"></i></a>
|
<a class="plan-toggle" data-id="<?php echo $execution->id;?>"><i class="icon icon-angle-double-right"></i></a>
|
||||||
<?php endif;?>
|
<?php endif;?>
|
||||||
</td>
|
</td>
|
||||||
<td class='text-left' title="<?php echo $execution->code;?>"><?php echo $execution->code;?></td>
|
|
||||||
<td><?php echo zget($users, $execution->PM);?></td>
|
<td><?php echo zget($users, $execution->PM);?></td>
|
||||||
<td><?php echo $execution->end;?></td>
|
<td><?php echo $execution->end;?></td>
|
||||||
<?php $executionStatus = $this->processStatus('execution', $execution);?>
|
<?php $executionStatus = $this->processStatus('execution', $execution);?>
|
||||||
<td class='c-status' title='<?php echo $executionStatus;?>'>
|
<td class='c-status' title='<?php echo $executionStatus;?>'>
|
||||||
<span class="status-execution status-<?php echo $execution->status?>"><?php echo $executionStatus;?></span>
|
<span class="status-execution status-<?php echo $execution->status?>"><?php echo $executionStatus;?></span>
|
||||||
</td>
|
</td>
|
||||||
<td class='hours'><?php echo $execution->hours->totalEstimate . ' ' . $config->hourUnit;?></td>
|
<td class='hours' title='<?php echo $execution->hours->totalEstimate . ' ' . $this->lang->execution->workHour;?>'><?php echo $execution->hours->totalEstimate . ' ' . $this->lang->execution->workHourUnit;?></td>
|
||||||
<td class='hours'><?php echo $execution->hours->totalConsumed . ' ' . $config->hourUnit;?></td>
|
<td class='hours' title='<?php echo $execution->hours->totalConsumed . ' ' . $this->lang->execution->workHour;?>'><?php echo $execution->hours->totalConsumed . ' ' . $this->lang->execution->workHourUnit;?></td>
|
||||||
<td class='hours'><?php echo $execution->hours->totalLeft . ' ' . $config->hourUnit;?></td>
|
<td class='hours' title='<?php echo $execution->hours->totalLeft . ' ' . $this->lang->execution->workHour;?>'><?php echo $execution->hours->totalLeft . ' ' . $this->lang->execution->workHourUnit;?></td>
|
||||||
<td class="c-progress">
|
<td class="c-progress">
|
||||||
<div class='progress-pie' data-doughnut-size='90' data-color='#00da88' data-value='<?php echo $execution->hours->progress;?>' data-width='24' data-height='24' data-back-color='#e8edf3'>
|
<div class='progress-pie' data-doughnut-size='90' data-color='#00da88' data-value='<?php echo $execution->hours->progress;?>' data-width='24' data-height='24' data-back-color='#e8edf3'>
|
||||||
<div class='progress-info'><?php echo $execution->hours->progress;?></div>
|
<div class='progress-info'><?php echo $execution->hours->progress;?></div>
|
||||||
@@ -149,16 +147,15 @@
|
|||||||
echo html::a($this->createLink('execution', 'view', 'execution=' . $child->id), $child->name);
|
echo html::a($this->createLink('execution', 'view', 'execution=' . $child->id), $child->name);
|
||||||
?>
|
?>
|
||||||
</td>
|
</td>
|
||||||
<td class='text-left' title="<?php echo $child->code;?>"><?php echo $child->code;?></td>
|
|
||||||
<td><?php echo zget($users, $child->PM);?></td>
|
<td><?php echo zget($users, $child->PM);?></td>
|
||||||
<td><?php echo $child->end;?></td>
|
<td><?php echo $child->end;?></td>
|
||||||
<?php $executionStatus = $this->processStatus('execution', $child);?>
|
<?php $executionStatus = $this->processStatus('execution', $child);?>
|
||||||
<td class='c-status' title='<?php echo $executionStatus;?>'>
|
<td class='c-status' title='<?php echo $executionStatus;?>'>
|
||||||
<span class="status-execution status-<?php echo $child->status?>"><?php echo $executionStatus;?></span>
|
<span class="status-execution status-<?php echo $child->status?>"><?php echo $executionStatus;?></span>
|
||||||
</td>
|
</td>
|
||||||
<td class='hours'><?php echo $child->hours->totalEstimate;?></td>
|
<td class='hours' title='<?php echo $child->hours->totalEstimate . ' ' . $this->lang->execution->workHour;?>'><?php echo $child->hours->totalEstimate . ' ' . $this->lang->execution->workHourUnit;?></td>
|
||||||
<td class='hours'><?php echo $child->hours->totalConsumed;?></td>
|
<td class='hours' title='<?php echo $child->hours->totalConsumed . ' ' . $this->lang->execution->workHour;?>'><?php echo $child->hours->totalConsumed . ' ' . $this->lang->execution->workHourUnit;?></td>
|
||||||
<td class='hours'><?php echo $child->hours->totalLeft;?></td>
|
<td class='hours' title='<?php echo $child->hours->totalLeft . ' ' . $this->lang->execution->workHour;?>'><?php echo $child->hours->totalLeft . ' ' . $this->lang->execution->workHourUnit;?></td>
|
||||||
<td class="c-progress">
|
<td class="c-progress">
|
||||||
<div class='progress-pie' data-doughnut-size='90' data-color='#00da88' data-value='<?php echo $child->hours->progress;?>' data-width='24' data-height='24' data-back-color='#e8edf3'>
|
<div class='progress-pie' data-doughnut-size='90' data-color='#00da88' data-value='<?php echo $child->hours->progress;?>' data-width='24' data-height='24' data-back-color='#e8edf3'>
|
||||||
<div class='progress-info'><?php echo $child->hours->progress;?></div>
|
<div class='progress-info'><?php echo $child->hours->progress;?></div>
|
||||||
|
|||||||
@@ -82,7 +82,7 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
echo html::select("lifetimes[$executionID]", $lang->program->PRJLifeTimeList, $executions[$executionID]->lifetime, 'class=form-control');
|
echo html::select("lifetimes[$executionID]", $lang->execution->lifeTimeList, $executions[$executionID]->lifetime, 'class=form-control');
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</td>
|
</td>
|
||||||
@@ -108,7 +108,12 @@
|
|||||||
<?php endforeach;?>
|
<?php endforeach;?>
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr><td colspan='<?php echo count($visibleFields) + 6?>' class='text-center form-actions'><?php echo html::submitButton();?></td></tr>
|
<tr>
|
||||||
|
<td colspan='<?php echo count($visibleFields) + 6?>' class='text-center form-actions'>
|
||||||
|
<?php echo html::submitButton();?>
|
||||||
|
<?php echo html::backButton();?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
<?php js::set('moduleID', $this->cookie->storyModuleParam);?>
|
<?php js::set('moduleID', $this->cookie->storyModuleParam);?>
|
||||||
<?php js::set('productID', $this->cookie->storyProductParam);?>
|
<?php js::set('productID', $this->cookie->storyProductParam);?>
|
||||||
<?php js::set('branchID', str_replace(',', '_', $this->cookie->storyBranchParam));?>
|
<?php js::set('branchID', str_replace(',', '_', $this->cookie->storyBranchParam));?>
|
||||||
|
<?php js::set('executionID', $execution->id);?>
|
||||||
<?php js::set('confirmUnlinkStory', $lang->execution->confirmUnlinkStory)?>
|
<?php js::set('confirmUnlinkStory', $lang->execution->confirmUnlinkStory)?>
|
||||||
<?php js::set('typeError', sprintf($this->lang->error->notempty, $this->lang->task->type))?>
|
<?php js::set('typeError', sprintf($this->lang->error->notempty, $this->lang->task->type))?>
|
||||||
<?php js::set('workingHourError', sprintf($this->lang->error->notempty, $this->lang->workingHour))?>
|
<?php js::set('workingHourError', sprintf($this->lang->error->notempty, $this->lang->workingHour))?>
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ body.menu-hide {padding-left: 0;}
|
|||||||
|
|
||||||
#upgradeContent {display: none; position: absolute; right: 10px; top: -290px; height: 282px; background-color: #fff; left: 0px; padding: 5px 0; border: 1px solid rgba(0,0,0,.15); border-color: rgba(0,0,0,.1); opacity: 1; border-radius: 4px; box-shadow: 0 6px 12px rgba(0,0,0,.12), 0 1px 3px rgba(0,0,0,.1);}
|
#upgradeContent {display: none; position: absolute; right: 10px; top: -290px; height: 282px; background-color: #fff; left: 0px; padding: 5px 0; border: 1px solid rgba(0,0,0,.15); border-color: rgba(0,0,0,.1); opacity: 1; border-radius: 4px; box-shadow: 0 6px 12px rgba(0,0,0,.12), 0 1px 3px rgba(0,0,0,.1);}
|
||||||
#latestVersionList {height: 190px; overflow: auto;}
|
#latestVersionList {height: 190px; overflow: auto;}
|
||||||
|
#empty-tip {top: 1px; position: relative;}
|
||||||
|
|
||||||
.version-name {width: 20%;}
|
.version-name {width: 20%;}
|
||||||
.version-date {width: 15%; color: #8a8a8a;}
|
.version-date {width: 15%; color: #8a8a8a;}
|
||||||
|
|||||||
@@ -90,10 +90,12 @@ js::set('defaultOpen', $open);
|
|||||||
<div id="latestVersionList">
|
<div id="latestVersionList">
|
||||||
<?php if(empty($latestVersionList)):?>
|
<?php if(empty($latestVersionList)):?>
|
||||||
<div class="table-empty-tip" style='padding: 66px 10px;'>
|
<div class="table-empty-tip" style='padding: 66px 10px;'>
|
||||||
<div style='display: inline-block'><?php echo $lang->noData;?></div>
|
<div style='display: inline-block'>
|
||||||
|
<span id='empty-tip'><?php echo $lang->noData;?></span>
|
||||||
<a href='<?php echo $lang->website;?>' target='_blank'>
|
<a href='<?php echo $lang->website;?>' target='_blank'>
|
||||||
<span class="label label-badge label-info label-outline"><?php echo $lang->index->website . ': '. $lang->website;?></span>
|
<span class="label label-badge label-info label-outline"><?php echo $lang->index->website . ': '. $lang->website;?></span>
|
||||||
</a>
|
</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php else:?>
|
<?php else:?>
|
||||||
<table class='table has-sort-head'>
|
<table class='table has-sort-head'>
|
||||||
|
|||||||
@@ -215,8 +215,12 @@ $lang->testcase->searchStories = 'Story suchen';
|
|||||||
$lang->testcase->selectLib = 'Bibliothek wählen';
|
$lang->testcase->selectLib = 'Bibliothek wählen';
|
||||||
|
|
||||||
$lang->testcase->action = new stdclass();
|
$lang->testcase->action = new stdclass();
|
||||||
$lang->testcase->action->fromlib = array('main' => '$date, importiert von <strong>$actor</strong> aus Bibliothek <strong>$extra</strong>.');
|
$lang->testcase->action->fromlib = array('main' => '$date, importiert von <strong>$actor</strong> aus Bibliothek <strong>$extra</strong>.');
|
||||||
$lang->testcase->action->reviewed = array('main' => '$date, überprüft von <strong>$actor</strong> und Prüfungsergebnis ist <strong>$extra</strong>.', 'extra' => 'reviewResultList');
|
$lang->testcase->action->reviewed = array('main' => '$date, überprüft von <strong>$actor</strong> und Prüfungsergebnis ist <strong>$extra</strong>.', 'extra' => 'reviewResultList');
|
||||||
|
$lang->testcase->action->linked2project = array('main' => '$date, 由 <strong>$actor</strong> 关联到项目 <strong>$extra</strong>。');
|
||||||
|
$lang->testcase->action->unlinkedfromproject = array('main' => '$date, 由 <strong>$actor</strong> 从项目 <strong>$extra</strong> 移除。');
|
||||||
|
$lang->testcase->action->linked2execution = array('main' => '$date, 由 <strong>$actor</strong> 关联到' . $lang->executionCommon . ' <strong>$extra</strong>。');
|
||||||
|
$lang->testcase->action->unlinkedfromexecution = array('main' => '$date, 由 <strong>$actor</strong> 从' . $lang->executionCommon . ' <strong>$extra</strong> 移除。');
|
||||||
|
|
||||||
$lang->testcase->featureBar['browse']['all'] = $lang->testcase->allCases;
|
$lang->testcase->featureBar['browse']['all'] = $lang->testcase->allCases;
|
||||||
$lang->testcase->featureBar['browse']['wait'] = 'Wartend';
|
$lang->testcase->featureBar['browse']['wait'] = 'Wartend';
|
||||||
|
|||||||
@@ -215,8 +215,12 @@ $lang->testcase->searchStories = 'Enter to search for stories';
|
|||||||
$lang->testcase->selectLib = 'Select Library';
|
$lang->testcase->selectLib = 'Select Library';
|
||||||
|
|
||||||
$lang->testcase->action = new stdclass();
|
$lang->testcase->action = new stdclass();
|
||||||
$lang->testcase->action->fromlib = array('main' => '$date, imported by <strong>$actor</strong> from <strong>$extra</strong>.');
|
$lang->testcase->action->fromlib = array('main' => '$date, imported by <strong>$actor</strong> from <strong>$extra</strong>.');
|
||||||
$lang->testcase->action->reviewed = array('main' => '$date, recorded by <strong>$actor</strong> and the review result is <strong>$extra</strong>.', 'extra' => 'reviewResultList');
|
$lang->testcase->action->reviewed = array('main' => '$date, recorded by <strong>$actor</strong> and the review result is <strong>$extra</strong>.', 'extra' => 'reviewResultList');
|
||||||
|
$lang->testcase->action->linked2project = array('main' => '$date, 由 <strong>$actor</strong> 关联到项目 <strong>$extra</strong>。');
|
||||||
|
$lang->testcase->action->unlinkedfromproject = array('main' => '$date, 由 <strong>$actor</strong> 从项目 <strong>$extra</strong> 移除。');
|
||||||
|
$lang->testcase->action->linked2execution = array('main' => '$date, 由 <strong>$actor</strong> 关联到' . $lang->executionCommon . ' <strong>$extra</strong>。');
|
||||||
|
$lang->testcase->action->unlinkedfromexecution = array('main' => '$date, 由 <strong>$actor</strong> 从' . $lang->executionCommon . ' <strong>$extra</strong> 移除。');
|
||||||
|
|
||||||
$lang->testcase->featureBar['browse']['all'] = $lang->testcase->allCases;
|
$lang->testcase->featureBar['browse']['all'] = $lang->testcase->allCases;
|
||||||
$lang->testcase->featureBar['browse']['wait'] = 'Waiting';
|
$lang->testcase->featureBar['browse']['wait'] = 'Waiting';
|
||||||
|
|||||||
@@ -215,8 +215,12 @@ $lang->testcase->searchStories = 'Rechercher des stories';
|
|||||||
$lang->testcase->selectLib = 'Sélectionner Library';
|
$lang->testcase->selectLib = 'Sélectionner Library';
|
||||||
|
|
||||||
$lang->testcase->action = new stdclass();
|
$lang->testcase->action = new stdclass();
|
||||||
$lang->testcase->action->fromlib = array('main' => '$date, importé par <strong>$actor</strong> depuis <strong>$extra</strong>.');
|
$lang->testcase->action->fromlib = array('main' => '$date, importé par <strong>$actor</strong> depuis <strong>$extra</strong>.');
|
||||||
$lang->testcase->action->reviewed = array('main' => '$date, enregistré par <strong>$actor</strong> et le résultat de validation est <strong>$extra</strong>.', 'extra' => 'reviewResultList');
|
$lang->testcase->action->reviewed = array('main' => '$date, enregistré par <strong>$actor</strong> et le résultat de validation est <strong>$extra</strong>.', 'extra' => 'reviewResultList');
|
||||||
|
$lang->testcase->action->linked2project = array('main' => '$date, 由 <strong>$actor</strong> 关联到项目 <strong>$extra</strong>。');
|
||||||
|
$lang->testcase->action->unlinkedfromproject = array('main' => '$date, 由 <strong>$actor</strong> 从项目 <strong>$extra</strong> 移除。');
|
||||||
|
$lang->testcase->action->linked2execution = array('main' => '$date, 由 <strong>$actor</strong> 关联到' . $lang->executionCommon . ' <strong>$extra</strong>。');
|
||||||
|
$lang->testcase->action->unlinkedfromexecution = array('main' => '$date, 由 <strong>$actor</strong> 从' . $lang->executionCommon . ' <strong>$extra</strong> 移除。');
|
||||||
|
|
||||||
$lang->testcase->featureBar['browse']['all'] = $lang->testcase->allCases;
|
$lang->testcase->featureBar['browse']['all'] = $lang->testcase->allCases;
|
||||||
$lang->testcase->featureBar['browse']['wait'] = 'En Attente';
|
$lang->testcase->featureBar['browse']['wait'] = 'En Attente';
|
||||||
|
|||||||
@@ -215,8 +215,12 @@ $lang->testcase->searchStories = 'Nhập nội dung cần tìm cho câu chuyện
|
|||||||
$lang->testcase->selectLib = 'Chọn thư viện';
|
$lang->testcase->selectLib = 'Chọn thư viện';
|
||||||
|
|
||||||
$lang->testcase->action = new stdclass();
|
$lang->testcase->action = new stdclass();
|
||||||
$lang->testcase->action->fromlib = array('main' => '$date, nhập bởi <strong>$actor</strong> từ <strong>$extra</strong>.');
|
$lang->testcase->action->fromlib = array('main' => '$date, nhập bởi <strong>$actor</strong> từ <strong>$extra</strong>.');
|
||||||
$lang->testcase->action->reviewed = array('main' => '$date, ghi nhận bởi <strong>$actor</strong> và kết quả xét duyệt này là <strong>$extra</strong>.', 'extra' => 'reviewResultList');
|
$lang->testcase->action->reviewed = array('main' => '$date, ghi nhận bởi <strong>$actor</strong> và kết quả xét duyệt này là <strong>$extra</strong>.', 'extra' => 'reviewResultList');
|
||||||
|
$lang->testcase->action->linked2project = array('main' => '$date, 由 <strong>$actor</strong> 关联到项目 <strong>$extra</strong>。');
|
||||||
|
$lang->testcase->action->unlinkedfromproject = array('main' => '$date, 由 <strong>$actor</strong> 从项目 <strong>$extra</strong> 移除。');
|
||||||
|
$lang->testcase->action->linked2execution = array('main' => '$date, 由 <strong>$actor</strong> 关联到' . $lang->executionCommon . ' <strong>$extra</strong>。');
|
||||||
|
$lang->testcase->action->unlinkedfromexecution = array('main' => '$date, 由 <strong>$actor</strong> 从' . $lang->executionCommon . ' <strong>$extra</strong> 移除。');
|
||||||
|
|
||||||
$lang->testcase->featureBar['browse']['all'] = $lang->testcase->allCases;
|
$lang->testcase->featureBar['browse']['all'] = $lang->testcase->allCases;
|
||||||
$lang->testcase->featureBar['browse']['wait'] = 'Đang đợi';
|
$lang->testcase->featureBar['browse']['wait'] = 'Đang đợi';
|
||||||
|
|||||||
@@ -215,8 +215,12 @@ $lang->testcase->searchStories = "键入来搜索{$lang->SRCommon}";
|
|||||||
$lang->testcase->selectLib = '请选择库';
|
$lang->testcase->selectLib = '请选择库';
|
||||||
|
|
||||||
$lang->testcase->action = new stdclass();
|
$lang->testcase->action = new stdclass();
|
||||||
$lang->testcase->action->fromlib = array('main' => '$date, 由 <strong>$actor</strong> 从用例库 <strong>$extra</strong>导入。');
|
$lang->testcase->action->fromlib = array('main' => '$date, 由 <strong>$actor</strong> 从用例库 <strong>$extra</strong>导入。');
|
||||||
$lang->testcase->action->reviewed = array('main' => '$date, 由 <strong>$actor</strong> 记录评审结果,结果为 <strong>$extra</strong>。', 'extra' => 'reviewResultList');
|
$lang->testcase->action->reviewed = array('main' => '$date, 由 <strong>$actor</strong> 记录评审结果,结果为 <strong>$extra</strong>。', 'extra' => 'reviewResultList');
|
||||||
|
$lang->testcase->action->linked2project = array('main' => '$date, 由 <strong>$actor</strong> 关联到项目 <strong>$extra</strong>。');
|
||||||
|
$lang->testcase->action->unlinkedfromproject = array('main' => '$date, 由 <strong>$actor</strong> 从项目 <strong>$extra</strong> 移除。');
|
||||||
|
$lang->testcase->action->linked2execution = array('main' => '$date, 由 <strong>$actor</strong> 关联到' . $lang->executionCommon . ' <strong>$extra</strong>。');
|
||||||
|
$lang->testcase->action->unlinkedfromexecution = array('main' => '$date, 由 <strong>$actor</strong> 从' . $lang->executionCommon . ' <strong>$extra</strong> 移除。');
|
||||||
|
|
||||||
$lang->testcase->featureBar['browse']['all'] = $lang->testcase->allCases;
|
$lang->testcase->featureBar['browse']['all'] = $lang->testcase->allCases;
|
||||||
$lang->testcase->featureBar['browse']['wait'] = '待评审';
|
$lang->testcase->featureBar['browse']['wait'] = '待评审';
|
||||||
|
|||||||
@@ -697,6 +697,37 @@ class testcaseModel extends model
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Process the project and execute the use case. */
|
||||||
|
if($case->story != $oldCase->story)
|
||||||
|
{
|
||||||
|
$this->loadModel('action');
|
||||||
|
$oldProjects = $this->dao->select('t1.project,t2.type')->from(TABLE_PROJECTSTORY)->alias('t1')
|
||||||
|
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id')
|
||||||
|
->where('t1.story')->eq($oldCase->story)
|
||||||
|
->fetchPairs();
|
||||||
|
|
||||||
|
foreach($oldProjects as $id => $type)
|
||||||
|
{
|
||||||
|
$this->dao->delete()->from(TABLE_PROJECTCASE)->where('project')->eq($id)->andWhere('`case`')->eq($caseID)->exec();
|
||||||
|
$action = $type == 'project' ? 'unlinkedfromproject' : 'unlinkedfromexecution';
|
||||||
|
$this->action->create('case', $caseID, $action, '', $executionID);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($case->story != 0)
|
||||||
|
{
|
||||||
|
$this->loadModel('execution');
|
||||||
|
$projects = $this->dao->select('t1.project,t2.type')->from(TABLE_PROJECTSTORY)->alias('t1')
|
||||||
|
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id')
|
||||||
|
->where('t1.story')->eq($case->story)
|
||||||
|
->fetchPairs();
|
||||||
|
|
||||||
|
foreach($projects as $id => $type)
|
||||||
|
{
|
||||||
|
$this->execution->linkCases($id, $case->product, $case->story, $type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Join the steps to diff. */
|
/* Join the steps to diff. */
|
||||||
if($stepChanged and $this->post->steps)
|
if($stepChanged and $this->post->steps)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user