Merge branch 'sprint/zentaopms240' of https://gitlab.zcorp.cc/easycorp/zentaopms into sprint/zentaopms240

This commit is contained in:
lanzongjun
2022-09-19 13:31:09 +08:00
47 changed files with 332 additions and 524 deletions
+12 -23
View File
@@ -260,14 +260,11 @@ $lang->block->default['full']['my']['4']['grid'] = 4;
$lang->block->default['full']['my']['4']['source'] = 'todo';
$lang->block->default['full']['my']['4']['params']['count'] = '20';
if($config->systemMode == 'new')
{
$lang->block->default['full']['my']['5']['title'] = '項目統計';
$lang->block->default['full']['my']['5']['block'] = 'statistic';
$lang->block->default['full']['my']['5']['source'] = 'project';
$lang->block->default['full']['my']['5']['grid'] = 8;
$lang->block->default['full']['my']['5']['params']['count'] = '20';
}
$lang->block->default['full']['my']['5']['title'] = '項目統計';
$lang->block->default['full']['my']['5']['block'] = 'statistic';
$lang->block->default['full']['my']['5']['source'] = 'project';
$lang->block->default['full']['my']['5']['grid'] = 8;
$lang->block->default['full']['my']['5']['params']['count'] = '20';
$lang->block->default['full']['my']['6']['title'] = '我的貢獻';
$lang->block->default['full']['my']['6']['block'] = 'contribute';
@@ -292,23 +289,15 @@ $lang->block->default['full']['my']['8']['params']['issueCount'] = '20';
$lang->block->default['full']['my']['8']['params']['storyCount'] = '20';
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
if($config->systemMode == 'new')
{
$lang->block->default['full']['my']['9']['title'] = '項目人力投入';
$lang->block->default['full']['my']['9']['block'] = 'projectteam';
$lang->block->default['full']['my']['9']['source'] = 'project';
$lang->block->default['full']['my']['9']['grid'] = 8;
}
$lang->block->default['full']['my']['9']['title'] = '項目人力投入';
$lang->block->default['full']['my']['9']['block'] = 'projectteam';
$lang->block->default['full']['my']['9']['source'] = 'project';
$lang->block->default['full']['my']['9']['grid'] = 8;
$lang->block->default['full']['my']['10']['title'] = '項目列表';
$lang->block->default['full']['my']['10']['block'] = 'project';
$lang->block->default['full']['my']['10']['source'] = 'project';
$lang->block->default['full']['my']['10']['grid'] = 8;
if($config->systemMode == 'classic')
{
$lang->block->default['full']['my']['10']['block'] = 'execution';
$lang->block->default['full']['my']['10']['source'] = 'execution';
}
$lang->block->default['full']['my']['10']['params']['orderBy'] = 'id_desc';
$lang->block->default['full']['my']['10']['params']['count'] = '15';
@@ -334,7 +323,7 @@ $lang->block->availableBlocks->issue = '我的問題';
$lang->block->availableBlocks->meeting = '我的會議';
$lang->block->availableBlocks->feedback = '我的反饋';
if($config->systemMode == 'new') $lang->block->moduleList['project'] = '項目';
$lang->block->moduleList['project'] = '項目';
$lang->block->moduleList['product'] = $lang->productCommon;
$lang->block->moduleList['execution'] = $lang->execution->common;
$lang->block->moduleList['qa'] = '測試';
@@ -345,7 +334,7 @@ $lang->block->modules['project']->availableBlocks = new stdclass();
$lang->block->modules['project']->availableBlocks->project = '項目列表';
$lang->block->modules['project']->availableBlocks->recentproject = '近期項目';
$lang->block->modules['project']->availableBlocks->statistic = '項目統計';
if($config->systemMode == 'new') $lang->block->modules['project']->availableBlocks->projectteam = '項目人力投入';
$lang->block->modules['project']->availableBlocks->projectteam = '項目人力投入';
$lang->block->modules['scrum']['index'] = new stdclass();
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
@@ -502,7 +491,7 @@ $lang->block->typeList->testtask['done'] = '已測版本';
$lang->block->typeList->testtask['all'] = '全部';
$lang->block->modules['project']->moreLinkList = new stdclass();
$lang->block->modules['project']->moreLinkList->recentproject = $config->systemMode == 'new' ? 'project|browse|' : 'execution|all|';
$lang->block->modules['project']->moreLinkList->recentproject = 'project|browse|';
$lang->block->modules['project']->moreLinkList->statistic = 'project|browse|';
$lang->block->modules['project']->moreLinkList->project = 'project|browse|';
$lang->block->modules['project']->moreLinkList->cmmireport = 'weekly|index|';
+9 -20
View File
@@ -38,18 +38,10 @@ $config->bug->exportFields = 'id, product, branch, module, project, execution, s
lastEditedBy,
lastEditedDate, files ,feedbackBy, notifyEmail';
if($config->systemMode == 'classic') $config->bug->exportFields = str_replace(' project,', '', $config->bug->exportFields);
$config->bug->list->customCreateFields = 'execution,noticefeedbackBy,story,task,pri,severity,os,browser,deadline,mailto,keywords';
$config->bug->list->customBatchEditFields = 'type,severity,pri,productplan,assignedTo,deadline,resolvedBy,resolution,os,browser,keywords';
if($config->systemMode == 'new')
{
$config->bug->list->customBatchCreateFields = 'project,execution,steps,type,pri,deadline,severity,os,browser,keywords';
}
else
{
$config->bug->list->customBatchCreateFields = 'execution,steps,type,pri,deadline,severity,os,browser,keywords';
}
$config->bug->list->customBatchCreateFields = 'project,execution,steps,type,pri,deadline,severity,os,browser,keywords';
$config->bug->custom = new stdclass();
$config->bug->custom->createFields = $config->bug->list->customCreateFields;
@@ -83,7 +75,7 @@ $config->bug->search['fields']['status'] = $lang->bug->status;
$config->bug->search['fields']['confirmed'] = $lang->bug->confirmed;
$config->bug->search['fields']['story'] = $lang->bug->story;
if($config->systemMode == 'new') $config->bug->search['fields']['project'] = $lang->bug->project;
$config->bug->search['fields']['project'] = $lang->bug->project;
$config->bug->search['fields']['product'] = $lang->bug->product;
$config->bug->search['fields']['branch'] = '';
$config->bug->search['fields']['plan'] = $lang->bug->productplan;
@@ -129,7 +121,7 @@ $config->bug->search['params']['status'] = array('operator' => '=',
$config->bug->search['params']['confirmed'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->confirmedList);
$config->bug->search['params']['story'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
if($config->systemMode == 'new') $config->bug->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => '');
$config->bug->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => '');
$config->bug->search['params']['product'] = array('operator' => '=', 'control' => 'select', 'values' => '');
$config->bug->search['params']['branch'] = array('operator' => '=', 'control' => 'select', 'values' => '');
$config->bug->search['params']['plan'] = array('operator' => '=', 'control' => 'select', 'values' => '');
@@ -209,15 +201,12 @@ $config->bug->datatable->fieldList['type']['fixed'] = 'no';
$config->bug->datatable->fieldList['type']['width'] = '90';
$config->bug->datatable->fieldList['type']['required'] = 'no';
if($config->systemMode == 'new')
{
$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['project']['control'] = 'hidden';
$config->bug->datatable->fieldList['project']['dataSource'] = array('module' => 'product', 'method' => 'getProjectPairsByProduct', 'params' => '$productID');
}
$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['project']['control'] = 'hidden';
$config->bug->datatable->fieldList['project']['dataSource'] = array('module' => 'product', 'method' => 'getProjectPairsByProduct', 'params' => '$productID');
$config->bug->datatable->fieldList['execution']['title'] = 'execution';
$config->bug->datatable->fieldList['execution']['fixed'] = 'no';
+1 -8
View File
@@ -630,20 +630,13 @@ class bug extends control
/* Get executions. */
$executions = array(0 => '');
if(isset($projects[$projectID]) or $this->config->systemMode == 'classic') $executions += $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID);
if(isset($projects[$projectID])) $executions += $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID);
$execution = $executionID ? $this->loadModel('execution')->getByID($executionID) : '';
$executions = isset($executions[$executionID]) ? $executions : $executions + array($executionID => $execution->name);
/* Set custom. */
foreach(explode(',', $this->config->bug->list->customCreateFields) as $field) $customFields[$field] = $this->lang->bug->$field;
/* In repair classic mode, when the project is required, the asterisk is not displayed. */
if($this->config->systemMode == 'classic' and strpos(",{$this->config->bug->create->requiredFields},", ',project,') !== false)
{
$this->config->bug->create->requiredFields = str_replace(',project,', ',execution,', ",{$this->config->bug->create->requiredFields},");
$this->config->bug->create->requiredFields = trim($this->config->bug->create->requiredFields, ',');
}
$this->view->title = isset($this->products[$productID]) ? $this->products[$productID] . $this->lang->colon . $this->lang->bug->create : $this->lang->bug->create;
$this->view->customFields = $customFields;
$this->view->showFields = $this->config->bug->custom->createFields;
+4 -8
View File
@@ -66,7 +66,7 @@ class bugModel extends model
->setDefault('openedBuild', '')
->setDefault('notifyEmail', '')
->setDefault('deadline', '0000-00-00')
->setIF($this->config->systemMode == 'new' && $this->lang->navGroup->bug != 'qa', 'project', $this->session->project)
->setIF($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))
@@ -89,9 +89,6 @@ class bugModel extends model
$bug = $this->loadModel('file')->processImgURL($bug, $this->config->bug->editor->create['id'], $this->post->uid);
/* Use classic mode to replace required project. */
if($this->config->systemMode == 'classic' and strpos($this->config->bug->create->requiredFields, 'project') !== false) $this->config->bug->create->requiredFields = str_replace('project', 'execution', $this->config->bug->create->requiredFields);
$this->dao->insert(TABLE_BUG)->data($bug)
->autoCheck()
->checkIF($bug->notifyEmail, 'notifyEmail', 'email')
@@ -288,7 +285,7 @@ class bugModel extends model
}
}
if($this->config->systemMode == 'new' && $this->lang->navGroup->bug != 'qa') $bug->project = $this->session->project;
if($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')
@@ -1617,7 +1614,7 @@ class bugModel extends model
$this->config->bug->search['actionURL'] = $actionURL;
$this->config->bug->search['queryID'] = $queryID;
if($this->config->systemMode == 'new') $this->config->bug->search['params']['project']['values'] = $projectParams;
$this->config->bug->search['params']['project']['values'] = $projectParams;
$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']['module']['values'] = $modules;
@@ -2041,8 +2038,7 @@ class bugModel extends model
$users = $this->dao->select("t2.id, t2.account, t2.realname")->from(TABLE_TEAM)->alias('t1')
->leftJoin(TABLE_USER)->alias('t2')->on('t1.account = t2.account')
->where('t1.root')->in(array_keys($projects))
->beginIF($this->config->systemMode == 'new')->andWhere('t1.type')->eq('project')->fi()
->beginIF($this->config->systemMode == 'classic')->andWhere('t1.type')->eq('execution')->fi()
->andWhere('t1.type')->eq('project')
->andWhere('t2.deleted')->eq(0)
->fi()
->fetchAll('account');
+2 -2
View File
@@ -78,9 +78,9 @@ if($this->app->tab == 'project') js::set('objectID', $projectID);
</td>
</tr>
<?php $showExecution = (strpos(",$showFields,", ',execution,') !== false);?>
<?php $noExecution = (isset($config->projectMode) and $config->projectMode == 'noExecution');?>
<tr>
<th>
<?php if($config->systemMode == 'classic') $lang->bug->project = $lang->bug->execution;?>
<?php echo ($showExecution) ? $lang->bug->project : $lang->bug->type;?>
</th>
@@ -111,7 +111,7 @@ if($this->app->tab == 'project') js::set('objectID', $projectID);
<?php endif;?>
<?php if($showExecution):?>
<td>
<?php if($config->systemMode == 'new'):?>
<?php if(!$noExecution):?>
<div class='table-row'>
<div class='table-col' id='projectBox'>
<?php echo html::select('project', $projects, $projectID, "class='form-control chosen' onchange='loadProductExecutions({$productID}, this.value)'");?>
+26 -35
View File
@@ -49,40 +49,32 @@ class commonModel extends model
global $app;
$rawModule = $app->rawModule;
if($this->config->systemMode == 'classic')
if($rawModule == 'task' or $rawModule == 'effort')
{
if($rawModule == 'task') $this->syncExecutionStatus($objectID);
$taskID = $objectID;
$execution = $this->syncExecutionStatus($taskID);
$project = $this->syncProjectStatus($execution);
$this->syncProgramStatus($project);
}
if($this->config->systemMode == 'new')
if($rawModule == 'execution')
{
if($rawModule == 'task' or $rawModule == 'effort')
{
$taskID = $objectID;
$execution = $this->syncExecutionStatus($taskID);
$project = $this->syncProjectStatus($execution);
$this->syncProgramStatus($project);
}
if($rawModule == 'execution')
{
$executionID = $objectID;
$execution = $this->dao->select('id, project, grade, parent, status, deleted')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch();
$this->syncExecutionByChild($execution);
$project = $this->syncProjectStatus($execution);
$this->syncProgramStatus($project);
}
if($rawModule == 'project')
{
$projectID = $objectID;
$project = $this->dao->select('id, parent, path')->from(TABLE_PROJECT)->where('id')->eq($projectID)->fetch();
$this->syncProgramStatus($project);
}
if($rawModule == 'program')
{
$programID = $objectID;
$program = $this->dao->select('id, parent, path')->from(TABLE_PROGRAM)->where('id')->eq($programID)->fetch();
$this->syncProgramStatus($program);
}
$executionID = $objectID;
$execution = $this->dao->select('id, project, grade, parent, status, deleted')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch();
$this->syncExecutionByChild($execution);
$project = $this->syncProjectStatus($execution);
$this->syncProgramStatus($project);
}
if($rawModule == 'project')
{
$projectID = $objectID;
$project = $this->dao->select('id, parent, path')->from(TABLE_PROJECT)->where('id')->eq($projectID)->fetch();
$this->syncProgramStatus($project);
}
if($rawModule == 'program' and $this->config->systemMode == 'new')
{
$programID = $objectID;
$program = $this->dao->select('id, parent, path')->from(TABLE_PROGRAM)->where('id')->eq($programID)->fetch();
$this->syncProgramStatus($program);
}
}
@@ -938,7 +930,6 @@ class commonModel extends model
if($tab == 'product') $currentMethod = 'all';
}
if($config->systemMode == 'classic' and $tab == 'execution') $icon = zget($lang->navIcons, 'project', '');
$link = helper::createLink($currentModule, $currentMethod);
$className = $tab == 'devops' ? 'btn num' : 'btn';
$html = $link ? html::a($link, "$icon {$lang->$tab->common}", '', "class='$className' style='padding-top: 2px'") : "$icon {$lang->$tab->common}";
@@ -1248,9 +1239,10 @@ class commonModel extends model
echo "<ul id='searchTypeMenu' class='dropdown-menu'>";
$searchObjects = $lang->searchObjects;
if($config->systemMode != 'new') unset($searchObjects['program'], $searchObjects['project']);
if($config->systemMode != 'new') unset($searchObjects['program']);
if(!isset($config->projectMode) || $config->projectMode == 'noExecution') unset($searchObjects['execution']);
foreach ($searchObjects as $key => $value)
foreach($searchObjects as $key => $value)
{
$class = $key == $searchObject ? "class='selected'" : '';
if($key == 'program') $key = 'program-product';
@@ -1691,7 +1683,6 @@ EOD;
if(strtolower($module) == 'story' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
if(strtolower($module) == 'bug' and strtolower($method) == 'tostory') ($module = 'story') and ($method = 'create');
if(strtolower($module) == 'bug' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
if($config->systemMode == 'classic' and strtolower($module) == 'project') $module = 'execution';
if(!commonModel::hasPriv($module, $method, $object, $vars)) return false;
$link = helper::createLink($module, $method, $vars, '', $onlyBody, $programID);
+2 -11
View File
@@ -235,17 +235,8 @@ $lang->custom->weekendList[2] = '双休';
$lang->custom->weekendList[1] = '单休';
global $config;
if($config->systemMode == 'lean')
{
$lang->custom->sprintConceptList[0] = '产品 - 项目';
$lang->custom->sprintConceptList[1] = '产品 - 迭代';
$lang->custom->sprintConceptList[2] = '产品 - 冲刺';
}
else
{
$lang->custom->sprintConceptList[0] = '项目 - 产品 - 迭代';
$lang->custom->sprintConceptList[1] = '项目 - 产品 - 冲刺';
}
$lang->custom->sprintConceptList[0] = '项目 - 产品 - 迭代';
$lang->custom->sprintConceptList[1] = '项目 - 产品 - 冲刺';
$lang->custom->workingList['full'] = '完整研发管理工具';
+36 -60
View File
@@ -245,7 +245,7 @@ class execution extends control
$this->view->setModule = true;
$this->view->canBeChanged = common::canModify('execution', $execution); // Determines whether an object is editable.
$this->view->showBranch = $showBranch;
$this->view->projectName = $this->config->systemMode == 'new' ? $this->loadModel('project')->getById($execution->project)->name . ' / ' . $execution->name : $execution->name;
$this->view->projectName = $this->loadModel('project')->getById($execution->project)->name . ' / ' . $execution->name;
$this->display();
}
@@ -1713,11 +1713,11 @@ class execution extends control
if(!empty($this->config->user->moreLink)) $this->config->moreLinks["RD"] = $this->config->user->moreLink;
$this->loadModel('product');
$allProducts = $this->config->systemMode == 'classic' ? $this->product->getPairs('noclosed') : $this->product->getProductPairsByProject($projectID, 'noclosed');
$allProducts = $this->product->getProductPairsByProject($projectID, 'noclosed');
$copyProjects = $this->loadModel('project')->getPairsByProgram(isset($project->parent) ? $project->parent : '', 'noclosed', '', 'order_asc', '', isset($project->model) ? $project->model : '');
$copyProjectID = ($projectID == 0) ? key($copyProjects) : $projectID;
$this->view->title = (($this->app->tab == 'execution') and ($this->config->systemMode == 'new')) ? $this->lang->execution->createExec : $this->lang->execution->create;
$this->view->title = $this->app->tab == 'execution' ? $this->lang->execution->createExec : $this->lang->execution->create;
$this->view->position[] = $this->view->title;
$this->view->gobackLink = (isset($output['from']) and $output['from'] == 'global') ? $this->createLink('execution', 'all') : '';
$this->view->executions = array('' => '') + $this->execution->getList($projectID);
@@ -1741,7 +1741,7 @@ class execution extends control
$this->view->productPlans = array(0 => '') + $productPlans;
$this->view->whitelist = $whitelist;
$this->view->copyExecutionID = $copyExecutionID;
$this->view->branchGroups = isset($branchGroups) ? $branchGroups : $this->execution->getBranchByProduct(array_keys($products), $this->config->systemMode == 'new' ? $projectID : 0);
$this->view->branchGroups = isset($branchGroups) ? $branchGroups : $this->execution->getBranchByProduct(array_keys($products), $projectID);
$this->view->poUsers = $poUsers;
$this->view->pmUsers = $pmUsers;
$this->view->qdUsers = $qdUsers;
@@ -1867,7 +1867,7 @@ class execution extends control
$position[] = html::a($browseExecutionLink, $execution->name);
$position[] = $this->lang->execution->edit;
$allProducts = $this->config->systemMode == 'classic' ? $this->product->getPairs('noclosed', 0, $linkedProductIdList) : $this->product->getProducts($execution->project, 'noclosed', '', false, $linkedProductIdList);
$allProducts = $this->product->getProducts($execution->project, 'noclosed', '', false, $linkedProductIdList);
$allProducts = array(0 => '') + $allProducts;
$this->loadModel('productplan');
@@ -1935,9 +1935,9 @@ class execution extends control
$this->view->unmodifiableBranches = $unmodifiableBranches;
$this->view->multiBranchProducts = $this->product->getMultiBranchPairs();
$this->view->productPlans = $productPlans;
$this->view->branchGroups = $this->execution->getBranchByProduct(array_keys($linkedProducts), $this->config->systemMode == 'new' ? $execution->project : 0, 'noclosed', $linkedBranchList);
$this->view->branchGroups = $this->execution->getBranchByProduct(array_keys($linkedProducts), $execution->project, 'noclosed', $linkedBranchList);
$this->view->teamMembers = $this->execution->getTeamMembers($executionID);
if($this->config->systemMode == 'new') $this->view->allProjects = $this->project->getPairsByModel($project->model, 0, 'noclosed', $project->id);
$this->view->allProjects = $this->project->getPairsByModel($project->model, 0, 'noclosed', $project->id);
$this->display();
}
@@ -2274,12 +2274,9 @@ class execution extends control
$execution->projectInfo = $this->loadModel('project')->getByID($execution->project);
if($this->config->systemMode == 'new')
{
$programList = array_filter(explode(',', $execution->projectInfo->path));
array_pop($programList);
$this->view->programList = $this->loadModel('program')->getPairsByList($programList);
}
$programList = array_filter(explode(',', $execution->projectInfo->path));
array_pop($programList);
$this->view->programList = $this->loadModel('program')->getPairsByList($programList);
$type = $this->config->vision == 'lite' ? 'kanban' : 'stage,sprint,kanban';
if(empty($execution) || strpos($type, $execution->type) === false) return print(js::error($this->lang->notFound) . js::locate('back'));
@@ -2950,7 +2947,7 @@ class execution extends control
$branches = $this->project->getBranchesByProject($executionID);
$linkedProductIdList = empty($branches) ? '' : array_keys($branches);
$allProducts = $this->config->systemMode == 'classic' ? $this->product->getPairs('noclosed', 0, $linkedProductIdList) : $this->product->getProductPairsByProject($execution->project, 'all', $linkedProductIdList);
$allProducts = $this->product->getProductPairsByProject($execution->project, 'all', $linkedProductIdList);
$linkedProducts = $this->product->getProducts($execution->id, 'all', '', true, $linkedProductIdList);
$linkedBranches = array();
$executionStories = $this->project->getStoriesByProject($executionID);
@@ -2985,8 +2982,8 @@ class execution extends control
$this->view->unmodifiableBranches = $unmodifiableBranches;
$this->view->linkedBranches = $linkedBranches;
$this->view->linkedStoryIDList = $linkedStoryIDList;
$this->view->branchGroups = $this->execution->getBranchByProduct(array_keys($allProducts), $this->config->systemMode == 'new' ? $execution->project : 0, 'ignoreNormal|noclosed');
$this->view->allBranches = $this->execution->getBranchByProduct(array_keys($allProducts), $this->config->systemMode == 'new' ? $execution->project : 0, 'ignoreNormal');
$this->view->branchGroups = $this->execution->getBranchByProduct(array_keys($allProducts), $execution->project, 'ignoreNormal|noclosed');
$this->view->allBranches = $this->execution->getBranchByProduct(array_keys($allProducts), $execution->project, 'ignoreNormal');
$this->display();
}
@@ -3474,12 +3471,8 @@ class execution extends control
*/
public function ajaxGetTeamMembers($objectID)
{
$type = 'execution';
if($this->config->systemMode == 'new')
{
$type = $this->dao->findById($objectID)->from(TABLE_PROJECT)->fetch('type');
if($type != 'project') $type = 'execution';
}
$type = $this->dao->findById($objectID)->from(TABLE_PROJECT)->fetch('type');
if($type != 'project') $type = 'execution';
$users = $this->loadModel('user')->getPairs('nodeleted|noclosed');
$members = $this->user->getTeamMemberPairs($objectID, $type);
@@ -3524,7 +3517,7 @@ class execution extends control
->where('deleted')->eq(0)
->andWhere('type')->in('sprint,stage,kanban')
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->sprints)->fi()
->beginIF($this->config->systemMode == 'new')->andWhere('project')->in(array_keys($projects))->fi()
->andWhere('project')->in(array_keys($projects))
->orderBy('id_desc')
->fetchGroup('project', 'id');
@@ -3534,33 +3527,19 @@ class execution extends control
->fetchGroup('root', 'account');
$projectPairs = array();
if($this->config->systemMode == 'new')
foreach($projects as $project)
{
foreach($projects as $project)
{
$executions = zget($executionGroups, $project->id, array());
if(isset($project->model) and $project->model == 'waterfall') ksort($executions);
$executions = zget($executionGroups, $project->id, array());
if(isset($project->model) and $project->model == 'waterfall') ksort($executions);
foreach($executions as $execution)
{
if(isset($orderedExecutions[$execution->parent]) and $project->model != 'waterfall') unset($orderedExecutions[$execution->parent]);
$execution->teams = zget($teams, $execution->id, array());
$orderedExecutions[$execution->id] = $execution;
}
$projectPairs[$project->id] = $project->name;
}
}
else
{
foreach($executionGroups as $projectID => $executions)
foreach($executions as $execution)
{
foreach($executions as $execution)
{
$execution->teams = zget($teams, $execution->id, array());
$orderedExecutions[$execution->id] = $execution;
}
if(isset($orderedExecutions[$execution->parent]) and $project->model != 'waterfall') unset($orderedExecutions[$execution->parent]);
$execution->teams = zget($teams, $execution->id, array());
$orderedExecutions[$execution->id] = $execution;
}
$projectPairs[$project->id] = $project->name;
}
$projectExecutions = array();
@@ -4010,7 +3989,7 @@ class execution extends control
$projectID = $this->dao->findByID($executionID)->from(TABLE_EXECUTION)->fetch('project');
$planStories = array_keys($planStory);
if($this->config->systemMode == 'new' and $executionID != $projectID) $this->execution->linkStory($projectID, $planStories, $planProducts);
if($executionID != $projectID) $this->execution->linkStory($projectID, $planStories, $planProducts);
$this->execution->linkStory($executionID, $planStories, $planProducts, $extra);
}
@@ -4189,21 +4168,18 @@ class execution extends control
*/
public function ajaxGetProjectStartDate($executionID = 0)
{
if($this->config->systemMode == 'new')
$execution = $this->dao->select('id,project')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch();
$project = $this->dao->select('begin,end')->from(TABLE_PROJECT)->where('id')->eq($execution->project)->fetch();
if(empty($project))
{
$execution = $this->dao->select('id,project')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch();
$project = $this->dao->select('begin,end')->from(TABLE_PROJECT)->where('id')->eq($execution->project)->fetch();
if(empty($project))
{
echo '';
return false;
}
$date = array();
$date['begin'] = $project->begin;
$date['end'] = $project->end;
echo json_encode($date);
echo '';
return false;
}
$date = array();
$date['begin'] = $project->begin;
$date['end'] = $project->end;
echo json_encode($date);
}
/**
+4 -6
View File
@@ -145,8 +145,7 @@ $lang->execution->estimate = 'estimate';
$lang->execution->consumed = 'consumed';
$lang->execution->left = 'Left';
if($this->config->systemMode == 'new') $lang->execution->copyTeamTip = "select Project/{$lang->execution->common} to copy its members";
if($this->config->systemMode == 'classic') $lang->execution->copyTeamTip = "select Project/{$lang->execution->common} to copy its members";
$lang->execution->copyTeamTip = "copy Project/project team members";
$lang->execution->start = 'Start';
$lang->execution->activate = 'Aktivieren';
@@ -197,12 +196,12 @@ global $config;
if($config->systemMode == 'new')
{
$lang->execution->aclList['private'] = 'Private (for team members and project stakeholders)';
$lang->execution->aclList['open'] = 'Inherited Execution ACL (for who can access the current project)';
$lang->execution->aclList['open'] = 'Inherited Project ACL (for who can access the current project)';
}
else
{
$lang->execution->aclList['private'] = 'Private (for team members and project stakeholders)';
$lang->execution->aclList['open'] = 'Inherited Execution ACL (for who can access the current project)';
$lang->execution->aclList['open'] = 'Public (for who can access the current project)';
}
$lang->execution->kanbanAclList['private'] = 'Private';
@@ -371,8 +370,7 @@ $lang->execution->noMembers = 'Keine Mitglieder. ';
$lang->execution->workloadTotal = "The cumulative workload ratio should not exceed 100, and the total workload under the current product is: %s";
// $lang->execution->linkProjectStoryTip = "(Link {$lang->SRCommon} comes from {$lang->SRCommon} linked under the execution)";
$lang->execution->linkAllStoryTip = "({$lang->SRCommon} has never been linked under the project, and can be directly linked with {$lang->SRCommon} of the product linked with the sprint/stage)";
if($config->systemMode == 'classic') $lang->execution->copyTeamTitle = "Wählen Sie ein {$lang->executionCommon} Team zum Kopieren.";
if($config->systemMode == 'new') $lang->execution->copyTeamTitle = "Wählen Sie ein {$lang->executionCommon} Team zum Kopieren.";
$lang->execution->copyTeamTitle = "Choose a {$lang->project->common} or {$lang->execution->common} Team to copy.";
/* Interactive prompts. */
$lang->execution->confirmDelete = "Möchten Sie {$lang->executionCommon}[%s] löschen?";
+5 -7
View File
@@ -145,8 +145,7 @@ $lang->execution->estimate = 'Estimate';
$lang->execution->consumed = 'Consumed';
$lang->execution->left = 'Left';
if($this->config->systemMode == 'new') $lang->execution->copyTeamTip = "copy Project/{$lang->execution->common} team members";
if($this->config->systemMode == 'classic') $lang->execution->copyTeamTip = "copy Project/{$lang->executionCommon} team members";
$lang->execution->copyTeamTip = "copy Project/project team members";
$lang->execution->start = 'Start';
$lang->execution->activate = 'Activate';
@@ -196,13 +195,13 @@ $lang->execution->statusList['closed'] = 'Closed';
global $config;
if($config->systemMode == 'new')
{
$lang->execution->aclList['private'] = 'Private (for team members and execution stakeholders)';
$lang->execution->aclList['private'] = 'Private (for team members and project stakeholders)';
$lang->execution->aclList['open'] = 'Inherited Project ACL (for who can access the current project)';
}
else
{
$lang->execution->aclList['private'] = 'Private (for team members and execution stakeholders)';
$lang->execution->aclList['open'] = "Public (Users who can visit {$lang->executionCommon} can access it.)";
$lang->execution->aclList['private'] = 'Private (for team members and project stakeholders)';
$lang->execution->aclList['open'] = "Public (Users who can visit project can access it.)";
}
$lang->execution->kanbanAclList['private'] = 'Private';
@@ -371,8 +370,7 @@ $lang->execution->noMembers = 'No team members yet. ';
$lang->execution->workloadTotal = "The cumulative workload ratio should not exceed 100, and the total workload under the current product is: %s";
// $lang->execution->linkProjectStoryTip = "(Link {$lang->SRCommon} comes from {$lang->SRCommon} linked under the execution)";
$lang->execution->linkAllStoryTip = "({$lang->SRCommon} has never been linked under the execution, and can be directly linked with {$lang->SRCommon} of the product linked with the sprint/stage)";
if($config->systemMode == 'classic') $lang->execution->copyTeamTitle = "Choose a {$lang->execution->common} Team to copy.";
if($config->systemMode == 'new') $lang->execution->copyTeamTitle = "Choose a {$lang->project->common} or {$lang->execution->common} Team to copy.";
$lang->execution->copyTeamTitle = "Choose a {$lang->project->common} or {$lang->execution->common} Team to copy.";
/* Interactive prompts. */
$lang->execution->confirmDelete = "Do you want to delete the {$lang->executionCommon}[%s]?";
+3 -5
View File
@@ -145,8 +145,7 @@ $lang->execution->estimate = 'estimate';
$lang->execution->consumed = 'consumed';
$lang->execution->left = 'Left';
if($this->config->systemMode == 'new') $lang->execution->copyTeamTip = "select Project/{$lang->execution->common} to copy its members";
if($this->config->systemMode == 'classic') $lang->execution->copyTeamTip = "select Project/{$lang->execution->common} to copy its members";
$lang->execution->copyTeamTip = "copy Project/project team members";
$lang->execution->start = 'Démarrer';
$lang->execution->activate = 'Activer';
@@ -197,7 +196,7 @@ global $config;
if($config->systemMode == 'new')
{
$lang->execution->aclList['private'] = 'Private (for team members and project stakeholders)';
$lang->execution->aclList['open'] = 'Inherited Execution ACL (for who can access the current project)';
$lang->execution->aclList['open'] = 'Inherited Project ACL (for who can access the current project)';
}
else
{
@@ -371,8 +370,7 @@ $lang->execution->noMembers = "Actuellement il n'y a aucun membre dan
$lang->execution->workloadTotal = "The cumulative workload ratio should not exceed 100, and the total workload under the current product is: %s";
// $lang->execution->linkProjectStoryTip = "(Link {$lang->SRCommon} comes from {$lang->SRCommon} linked under the execution)";
$lang->execution->linkAllStoryTip = "({$lang->SRCommon} has never been linked under the project, and can be directly linked with {$lang->SRCommon} of the product linked with the sprint/stage)";
if($config->systemMode == 'classic') $lang->execution->copyTeamTitle = "Choisissez une Equipe {$lang->executionCommon} à copier.";
if($config->systemMode == 'new') $lang->execution->copyTeamTitle = "Choisissez une Equipe {$lang->executionCommon} à copier.";
$lang->execution->copyTeamTitle = "Choose a {$lang->project->common} or {$lang->execution->common} Team to copy.";
/* Interactive prompts. */
$lang->execution->confirmDelete = "Voulez-vous réellement supprimer le {$lang->executionCommon}[%s] ?";
+4 -6
View File
@@ -145,8 +145,7 @@ $lang->execution->estimate = '预计';
$lang->execution->consumed = '消耗';
$lang->execution->left = '剩余';
if($this->config->systemMode == 'new') $lang->execution->copyTeamTip = "可以选择复制项目或{$lang->execution->common}团队的成员";
if($this->config->systemMode == 'classic') $lang->execution->copyTeamTip = "可以选择复制{$lang->executionCommon}团队的成员";
$lang->execution->copyTeamTip = "可以选择复制项目或{$lang->execution->common}团队的成员";
$lang->execution->start = "开始";
$lang->execution->activate = "激活";
@@ -201,8 +200,8 @@ if($config->systemMode == 'new')
}
else
{
$lang->execution->aclList['private'] = "私有(团队成员和{$lang->executionCommon}负责人可访问)";
$lang->execution->aclList['open'] = "公开(有{$lang->executionCommon}视图权限即可访问)";
$lang->execution->aclList['private'] = "私有(团队成员和项目负责人可访问)";
$lang->execution->aclList['open'] = "公开(有项目视图权限即可访问)";
}
$lang->execution->kanbanAclList['private'] = '私有';
@@ -371,8 +370,7 @@ $lang->execution->noMembers = '暂时没有团队成员。';
$lang->execution->workloadTotal = "工作量占比累计不应当超过100, 当前产品下的工作量之和为%s";
// $lang->execution->linkProjectStoryTip = "(关联{$lang->SRCommon}来源于项目下所关联的{$lang->SRCommon})";
$lang->execution->linkAllStoryTip = "(项目下还未关联{$lang->SRCommon},可直接关联该{$lang->execution->common}所关联产品的{$lang->SRCommon})";
if($config->systemMode == 'classic') $lang->execution->copyTeamTitle = "选择一个{$lang->execution->common}团队";
if($config->systemMode == 'new') $lang->execution->copyTeamTitle = "选择一个{$lang->project->common}或{$lang->execution->common}团队";
$lang->execution->copyTeamTitle = "选择一个{$lang->project->common}或{$lang->execution->common}团队";
/* 交互提示。*/
$lang->execution->confirmDelete = "您确定删除{$lang->executionCommon}[%s]吗?";
+51 -86
View File
@@ -92,7 +92,7 @@ class executionModel extends model
$this->session->set('execution', $executionID, $this->app->tab);
/* Unset story, bug, build and testtask if type is ops. */
if($execution and $execution->type == 'stage' and $this->config->systemMode == 'new')
if($execution and $execution->type == 'stage')
{
global $lang;
$this->app->loadLang('project');
@@ -145,31 +145,21 @@ class executionModel extends model
setCookie("lastExecution", $executionID, $this->config->cookieLife, $this->config->webRoot, '', false, true);
$currentExecution = $this->getById($executionID);
if($this->config->systemMode == 'new')
if(isset($currentExecution->type) and $currentExecution->type == 'program') return;
if($currentExecution->project) $project = $this->loadModel('project')->getByID($currentExecution->project);
if(isset($project) and $project->model == 'waterfall')
{
if(isset($currentExecution->type) and $currentExecution->type == 'program') return;
if($currentExecution->project) $project = $this->loadModel('project')->getByID($currentExecution->project);
if(isset($project) and $project->model == 'waterfall')
{
$productID = $this->loadModel('product')->getProductIDByProject($project->id);
$productName = $this->dao->findByID($productID)->from(TABLE_PRODUCT)->fetch('name');
$currentExecution->name = $productName . '/' . $currentExecution->name;
}
$productID = $this->loadModel('product')->getProductIDByProject($project->id);
$productName = $this->dao->findByID($productID)->from(TABLE_PRODUCT)->fetch('name');
$currentExecution->name = $productName . '/' . $currentExecution->name;
}
$dropMenuLink = helper::createLink('execution', 'ajaxGetDropMenu', "executionID=$executionID&module=$currentModule&method=$currentMethod&extra=$extra");
$currentExecutionName = '';
if(isset($currentExecution->name)) $currentExecutionName = $currentExecution->name;
if($this->config->systemMode == 'classic')
{
$output = "<div class='btn-group header-btn' id='swapper'><button data-toggle='dropdown' type='button' class='btn' id='currentItem' title='{$currentExecutionName}'><span class='text'><i class='icon icon-sprint'></i> {$currentExecutionName}</span> <span class='caret'></span></button><div id='dropMenu' class='dropdown-menu search-list' data-ride='searchList' data-url='$dropMenuLink'>";
$output .= '<div class="input-control search-box has-icon-left has-icon-right search-example"><input type="search" class="form-control search-input" /><label class="input-control-icon-left search-icon"><i class="icon icon-search"></i></label><a class="input-control-icon-right search-clear-btn"><i class="icon icon-close icon-sm"></i></a></div>';
$output .= "</div></div>";
}
$output = "<div class='btn-group angle-btn'><div class='btn-group'><button data-toggle='dropdown' type='button' class='btn btn-limit' id='currentItem' title='{$currentExecutionName}'><span class='text'><i class='icon icon-{$this->lang->icons[$currentExecution->type]}'></i> {$currentExecutionName}</span> <span class='caret'></span></button><div id='dropMenu' class='dropdown-menu search-list' data-ride='searchList' data-url='$dropMenuLink'>";
$output .= '<div class="input-control search-box has-icon-left has-icon-right search-example"><input type="search" class="form-control search-input" /><label class="input-control-icon-left search-icon"><i class="icon icon-search"></i></label><a class="input-control-icon-right search-clear-btn"><i class="icon icon-close icon-sm"></i></a></div>';
$output .= "</div></div></div>";
@@ -310,25 +300,22 @@ class executionModel extends model
$type = 'sprint';
$this->lang->execution->team = $this->lang->execution->teamname;
if($this->config->systemMode == 'new')
if(empty($_POST['project']))
{
if(empty($_POST['project']))
{
dao::$errors['message'][] = $this->lang->execution->projectNotEmpty;
return false;
}
if($this->config->systemMode == 'new') $this->checkBeginAndEndDate($_POST['project'], $_POST['begin'], $_POST['end']);
if(dao::isError()) return false;
/* Determine whether to add a sprint or a stage according to the model of the execution. */
$project = $this->loadModel('project')->getByID($_POST['project']);
$type = 'sprint';
if($project) $type = zget($this->config->execution->modelList, $project->model, 'sprint');
$this->config->execution->create->requiredFields .= ',project';
dao::$errors['message'][] = $this->lang->execution->projectNotEmpty;
return false;
}
$this->checkBeginAndEndDate($_POST['project'], $_POST['begin'], $_POST['end']);
if(dao::isError()) return false;
/* Determine whether to add a sprint or a stage according to the model of the execution. */
$project = $this->loadModel('project')->getByID($_POST['project']);
$type = 'sprint';
if($project) $type = zget($this->config->execution->modelList, $project->model, 'sprint');
$this->config->execution->create->requiredFields .= ',project';
/* Judge workdays is legitimate. */
$workdays = helper::diffDate($_POST['end'], $_POST['begin']) + 1;
if(isset($_POST['days']) and $_POST['days'] > $workdays)
@@ -348,7 +335,6 @@ class executionModel extends model
->setDefault('team', substr($this->post->name, 0, 30))
->setIF($this->post->heightType == 'auto', 'displayCards', 0)
->setIF(!isset($_POST['whitelist']), 'whitelist', '')
->setIF($this->config->systemMode == 'new', 'parent', $this->post->project)
->setIF($this->post->acl == 'open', 'whitelist', '')
->join('whitelist', ',')
->setDefault('type', $type)
@@ -418,7 +404,7 @@ class executionModel extends model
$this->file->updateObjectID($this->post->uid, $executionID, 'execution');
/* Update the path. */
if($this->config->systemMode == 'new') $this->setTreePath($executionID);
$this->setTreePath($executionID);
$this->updateProducts($executionID);
@@ -442,7 +428,7 @@ class executionModel extends model
$this->dao->insert(TABLE_TEAM)->data($member)->exec();
$teamMembers[$account] = $member;
}
if($this->config->systemMode == 'new') $this->addProjectMembers($sprint->project, $teamMembers);
$this->addProjectMembers($sprint->project, $teamMembers);
/* Create doc lib. */
$this->app->loadLang('doc');
@@ -517,7 +503,7 @@ class executionModel extends model
if(in_array($execution->status, array('closed', 'suspended'))) $this->computeBurn($executionID);
if($this->config->systemMode == 'new' and (empty($execution->project) or $execution->project == $oldExecution->project)) $this->checkBeginAndEndDate($oldExecution->project, $execution->begin, $execution->end);
if(empty($execution->project) or $execution->project == $oldExecution->project) $this->checkBeginAndEndDate($oldExecution->project, $execution->begin, $execution->end);
if(dao::isError()) return false;
/* Child stage inherits parent stage permissions. */
@@ -803,7 +789,7 @@ class executionModel extends model
->checkIF($execution->begin != '', 'begin', 'date')
->checkIF($execution->end != '', 'end', 'date')
->checkIF($execution->end != '', 'end', 'ge', $execution->begin)
->checkIF((!empty($execution->name) and $this->config->systemMode == 'new'), 'name', 'unique', "id != $executionID and type in ('sprint','stage','kanban') and `project` = $projectID and `deleted` = '0'")
->checkIF(!empty($execution->name), 'name', 'unique', "id != $executionID and type in ('sprint','stage','kanban') and `project` = $projectID and `deleted` = '0'")
->checkIF(!empty($execution->code), 'code', 'unique', "id != $executionID and type in ('sprint','stage','kanban') and `deleted` = '0'")
->checkFlow()
->where('id')->eq($executionID)
@@ -901,7 +887,7 @@ class executionModel extends model
->remove('comment')
->get();
if($this->config->systemMode == 'new') $this->checkBeginAndEndDate($oldExecution->project, $execution->begin, $execution->end);
$this->checkBeginAndEndDate($oldExecution->project, $execution->begin, $execution->end);
if(dao::isError()) return false;
$execution = $this->loadModel('file')->processImgURL($execution, $this->config->execution->editor->putoff['id'], $this->post->uid);
@@ -1225,15 +1211,12 @@ class executionModel extends model
$currentExecution = $this->getById($executionID);
$currentExecutionName = $currentExecution->name;
if($this->config->systemMode == 'new')
{
$project = $this->loadModel('project')->getByID($currentExecution->project);
$project = $this->loadModel('project')->getByID($currentExecution->project);
if($project)
{
$projectNameTitle = $project->name . ' / ';
$projectNameSpan = "<span class='text'>{$project->name}</span> / ";
}
if($project)
{
$projectNameTitle = $project->name . ' / ';
$projectNameSpan = "<span class='text'>{$project->name}</span> / ";
}
}
@@ -1285,8 +1268,8 @@ class executionModel extends model
->where('deleted')->eq(0)
->andWhere('vision')->eq($this->config->vision)
->beginIF($type == 'all')->andWhere('type')->in('stage,sprint,kanban')->fi()
->beginIF($projectID and $this->config->systemMode == 'new')->andWhere('project')->eq($projectID)->fi()
->beginIF($type != 'all' and $this->config->systemMode == 'new')->andWhere('type')->eq($type)->fi()
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
->beginIF($type != 'all')->andWhere('type')->eq($type)->fi()
->beginIF(strpos($mode, 'withdelete') === false)->andWhere('deleted')->eq(0)->fi()
->beginIF(!$this->app->user->admin and strpos($mode, 'all') === false)->andWhere('id')->in($this->app->user->view->sprints)->fi()
->orderBy($orderBy)
@@ -1557,7 +1540,7 @@ class executionModel extends model
if($param == 'skipParent')
{
if($execution->parent < 0 and $execution->type == 'stage') unset($executions[$key]);
if($this->config->systemMode == 'new' and $execution->projectName) $execution->name = $execution->projectName . ' / ' . $execution->name;
if($execution->projectName) $execution->name = $execution->projectName . ' / ' . $execution->name;
}
else
{
@@ -2296,28 +2279,13 @@ class executionModel extends model
*/
public function getTasks2Imported($toExecution, $branches)
{
if($this->config->systemMode == 'classic')
{
$products = $this->loadModel('product')->getProducts($toExecution);
if(empty($products)) return array();
$execution = $this->getById($toExecution);
$executions = $this->dao->select('t1.product, t1.project')->from(TABLE_PROJECTPRODUCT)->alias('t1')
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.project=t2.id')
->where('t1.product')->in(array_keys($products))
->andWhere('t2.project')->eq($execution->project)
->fetchGroup('project');
}
else
{
$execution = $this->getById($toExecution);
$project = $this->loadModel('project')->getById($execution->project);
$brotherProjects = $this->project->getBrotherProjects($project);
$executions = $this->dao->select('id')->from(TABLE_EXECUTION)
->where('project')->in($brotherProjects)
->andWhere('status')->ne('closed')
->fetchPairs('id');
}
$execution = $this->getById($toExecution);
$project = $this->loadModel('project')->getById($execution->project);
$brotherProjects = $this->project->getBrotherProjects($project);
$executions = $this->dao->select('id')->from(TABLE_EXECUTION)
->where('project')->in($brotherProjects)
->andWhere('status')->ne('closed')
->fetchPairs('id');
$branches = str_replace(',', "','", $branches);
$tasks = $this->dao->select('t1.*, t2.id AS storyID, t2.title AS storyTitle, t2.version AS latestStoryVersion, t2.status AS storyStatus, t3.realname AS assignedToRealName')->from(TABLE_TASK)->alias('t1')
@@ -2817,12 +2785,10 @@ class executionModel extends model
}
}
if($this->config->systemMode == 'new')
{
$projectID = $this->dao->select('project')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch('project');
$this->session->set('project', $projectID);
$this->linkStory($projectID, $planStories, $planProducts);
}
$projectID = $this->dao->select('project')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch('project');
$this->session->set('project', $projectID);
$this->linkStory($projectID, $planStories, $planProducts);
$this->linkStory($executionID, $planStories, $planProducts);
}
@@ -2986,7 +2952,7 @@ class executionModel extends model
*/
public function getCanCopyObjects($projectID = 0)
{
if(empty($projectID) and $this->config->systemMode == 'new') return array();
if(empty($projectID)) return array();
$objectPairs = $this->dao->select('id,name')->from(TABLE_PROJECT)
->where('deleted')->eq(0)
@@ -4582,11 +4548,10 @@ class executionModel extends model
$burns = join(',', $execution->burns);
echo "<tr $trAttrs class='$trClass'>";
echo "<td><span id=$execution->id class='table-nest-icon icon table-nest-toggle'></span>";
if($this->config->systemMode == 'new')
{
$spanClass = $execution->type == 'stage' ? 'label-warning' : 'label-info';
echo "<span class='project-type-label label label-outline $spanClass'>{$this->lang->execution->typeList[$execution->type]}</span> ";
}
$spanClass = $execution->type == 'stage' ? 'label-warning' : 'label-info';
echo "<span class='project-type-label label label-outline $spanClass'>{$this->lang->execution->typeList[$execution->type]}</span> ";
if(empty($execution->children))
{
echo html::a(helper::createLink('execution', 'view', "executionID=$execution->id"), $execution->name);
-2
View File
@@ -95,8 +95,6 @@ js::set('isCNLang', !$this->loadModel('common')->checkNotCN())
{
if($value->show)
{
if($config->systemMode == 'classic' and $value->id == 'project') continue;
$this->datatable->printHead($value, $orderBy, $vars, $canBatchEdit);
$columns ++;
}
@@ -53,7 +53,7 @@
<?php endforeach;?>
</div>
</div>
<?php if($this->config->systemMode == 'classic' or $execution->grade == 1):?>
<?php if($execution->grade == 1):?>
<div class='detail'>
<div class='detail-title'><?php echo $lang->execution->unlinkedProducts;?></div>
<div class='detail-content row'>
+1 -4
View File
@@ -47,10 +47,7 @@ $lang->group->more = 'More';
$lang->group->allCheck = 'All';
$lang->group->noGroup = 'No group';
$lang->group->repeat = "『%s』『%s』exists.Please adjust it and try again.";
global $config;
if($config->systemMode == 'new') $lang->group->noneProject = 'No Project';
if($config->systemMode == 'classic') $lang->group->noneProject = 'No Project';
$lang->group->noneProject = 'No Project';
$lang->group->id = 'ID';
$lang->group->name = 'Name';
+1 -4
View File
@@ -47,10 +47,7 @@ $lang->group->more = 'More';
$lang->group->allCheck = 'All';
$lang->group->noGroup = 'No group';
$lang->group->repeat = "『%s』『%s』exists.Please adjust it and try again.";
global $config;
if($config->systemMode == 'new') $lang->group->noneProject = 'No Project';
if($config->systemMode == 'classic') $lang->group->noneProject = "No {$lang->executionCommon}";
$lang->group->noneProject = 'No Project';
$lang->group->id = 'ID';
$lang->group->name = 'Group';
+1 -4
View File
@@ -47,10 +47,7 @@ $lang->group->more = 'More';
$lang->group->allCheck = 'All';
$lang->group->noGroup = 'Aucun groupe';
$lang->group->repeat = "『%s』『%s』exists.Please adjust it and try again.";
global $config;
if($config->systemMode == 'new') $lang->group->noneProject = 'No Project';
if($config->systemMode == 'classic') $lang->group->noneProject = 'No Project';
$lang->group->noneProject = 'No Project';
$lang->group->id = 'ID';
$lang->group->name = 'Groupe';
+50 -51
View File
@@ -152,40 +152,6 @@ $lang->personnel->methodOrder[10] = 'invest';
$lang->personnel->methodOrder[15] = 'whitelist';
$lang->personnel->methodOrder[20] = 'addWhitelist';
/* Design. */
$lang->resource->design = new stdclass();
$lang->resource->design->browse = 'browse';
$lang->resource->design->view = 'view';
$lang->resource->design->create = 'create';
$lang->resource->design->batchCreate = 'batchCreate';
$lang->resource->design->edit = 'edit';
$lang->resource->design->assignTo = 'assignTo';
$lang->resource->design->delete = 'delete';
$lang->resource->design->linkCommit = 'linkCommit';
$lang->resource->design->viewCommit = 'viewCommit';
$lang->resource->design->unlinkCommit = 'unlinkCommit';
$lang->resource->design->revision = 'revision';
$lang->design->methodOrder[5] = 'browse';
$lang->design->methodOrder[10] = 'view';
$lang->design->methodOrder[15] = 'create';
$lang->design->methodOrder[20] = 'batchCreate';
$lang->design->methodOrder[25] = 'edit';
$lang->design->methodOrder[30] = 'assignTo';
$lang->design->methodOrder[35] = 'delete';
$lang->design->methodOrder[40] = 'linkCommit';
$lang->design->methodOrder[45] = 'viewCommit';
$lang->design->methodOrder[50] = 'unlinkCommit';
$lang->design->methodOrder[55] = 'revision';
/* Program plan. */
$lang->resource->programplan = new stdclass();
$lang->resource->programplan->create = 'create';
$lang->resource->programplan->edit = 'edit';
$lang->programplan->methodOrder[0] = 'create';
$lang->programplan->methodOrder[5] = 'edit';
/* Project. */
$lang->resource->project = new stdclass();
$lang->resource->project->index = 'index';
@@ -317,22 +283,6 @@ $lang->projectrelease->methodOrder[65] = 'batchUnlinkBug';
$lang->projectrelease->methodOrder[70] = 'changeStatus';
$lang->projectrelease->methodOrder[75] = 'notify';
/* Stage. */
$lang->resource->stage = new stdclass();
$lang->resource->stage->browse = 'browse';
$lang->resource->stage->create = 'create';
$lang->resource->stage->batchCreate = 'batchCreate';
$lang->resource->stage->edit = 'edit';
$lang->resource->stage->setType = 'setType';
$lang->resource->stage->delete = 'delete';
$lang->stage->methodOrder[5] = 'browse';
$lang->stage->methodOrder[10] = 'create';
$lang->stage->methodOrder[15] = 'batchCreate';
$lang->stage->methodOrder[20] = 'edit';
$lang->stage->methodOrder[25] = 'setType';
$lang->stage->methodOrder[30] = 'delete';
/* Stakeholer. */
$lang->resource->stakeholder = new stdclass();
$lang->resource->stakeholder->browse = 'browse';
@@ -372,6 +322,31 @@ $lang->stakeholder->methodOrder[80] = 'userIssue';
global $config;
if($config->systemMode == 'new')
{
/* Design. */
$lang->resource->design = new stdclass();
$lang->resource->design->browse = 'browse';
$lang->resource->design->view = 'view';
$lang->resource->design->create = 'create';
$lang->resource->design->batchCreate = 'batchCreate';
$lang->resource->design->edit = 'edit';
$lang->resource->design->assignTo = 'assignTo';
$lang->resource->design->delete = 'delete';
$lang->resource->design->linkCommit = 'linkCommit';
$lang->resource->design->viewCommit = 'viewCommit';
$lang->resource->design->unlinkCommit = 'unlinkCommit';
$lang->resource->design->revision = 'revision';
$lang->design->methodOrder[5] = 'browse';
$lang->design->methodOrder[10] = 'view';
$lang->design->methodOrder[15] = 'create';
$lang->design->methodOrder[20] = 'batchCreate';
$lang->design->methodOrder[25] = 'edit';
$lang->design->methodOrder[30] = 'assignTo';
$lang->design->methodOrder[35] = 'delete';
$lang->design->methodOrder[40] = 'linkCommit';
$lang->design->methodOrder[45] = 'viewCommit';
$lang->design->methodOrder[50] = 'unlinkCommit';
$lang->design->methodOrder[55] = 'revision';
/* Program. */
$lang->resource->program = new stdclass();
@@ -414,7 +389,31 @@ if($config->systemMode == 'new')
$lang->program->methodOrder[90] = 'unbindWhitelist';
$lang->program->methodOrder[95] = 'updateOrder';
/* Program plan. */
$lang->resource->programplan = new stdclass();
$lang->resource->programplan->create = 'create';
$lang->resource->programplan->edit = 'edit';
$lang->programplan->methodOrder[0] = 'create';
$lang->programplan->methodOrder[5] = 'edit';
$lang->resource->project->programTitle = 'moduleOpen';
/* Stage. */
$lang->resource->stage = new stdclass();
$lang->resource->stage->browse = 'browse';
$lang->resource->stage->create = 'create';
$lang->resource->stage->batchCreate = 'batchCreate';
$lang->resource->stage->edit = 'edit';
$lang->resource->stage->setType = 'setType';
$lang->resource->stage->delete = 'delete';
$lang->stage->methodOrder[5] = 'browse';
$lang->stage->methodOrder[10] = 'create';
$lang->stage->methodOrder[15] = 'batchCreate';
$lang->stage->methodOrder[20] = 'edit';
$lang->stage->methodOrder[25] = 'setType';
$lang->stage->methodOrder[30] = 'delete';
}
/* Product. */
@@ -821,7 +820,7 @@ $lang->resource->execution->addWhitelist = 'addWhitelist';
$lang->resource->execution->unbindWhitelist = 'unbindWhitelist';
$lang->resource->execution->storyEstimate = 'storyEstimate';
$lang->resource->execution->storyView = 'storyView';
if($config->systemMode == 'new') $lang->resource->execution->executionkanban = 'kanbanAction';
$lang->resource->execution->executionkanban = 'kanbanAction';
$lang->resource->execution->kanban = 'RDKanban';
$lang->resource->execution->setKanban = 'setKanban';
//if($config->systemMode == 'classic') $lang->resource->project->list = 'list';
-4
View File
@@ -36,10 +36,6 @@ $lang->group->noneProgram = "No Program";
$lang->group->noneProduct = "Không có {$lang->productCommon}";
$lang->group->noneProject = "No Project";
global $config;
if($config->systemMode == 'new') $lang->group->noneProject = 'No Project';
if($config->systemMode == 'classic') $lang->group->noneProject = "No {$lang->executionCommon}";
$lang->group->id = 'ID';
$lang->group->name = 'Nhóm';
$lang->group->desc = 'Mô tả';
+1 -4
View File
@@ -47,10 +47,7 @@ $lang->group->more = '更多';
$lang->group->allCheck = '全部';
$lang->group->noGroup = '暂时没有分组。';
$lang->group->repeat = "『%s』已经有『%s』这条记录了,请调整后再试。";
global $config;
if($config->systemMode == 'new') $lang->group->noneProject = '暂时没有项目';
if($config->systemMode == 'classic') $lang->group->noneProject = "暂时没有{$lang->executionCommon}";
$lang->group->noneProject = '暂时没有项目';
$lang->group->id = '编号';
$lang->group->name = '分组名称';
+1 -4
View File
@@ -38,10 +38,7 @@ $lang->group->noneProduct = "暫時沒有{$lang->productCommon}";
$lang->group->noneExecution = "暫時沒有{$lang->execution->common}";
$lang->group->project = '項目';
$lang->group->group = '分組';
global $config;
if($config->systemMode == 'new') $lang->group->noneProject = '暫時沒有項目';
if($config->systemMode == 'classic') $lang->group->noneProject = "暫時沒有{$lang->executionCommon}";
$lang->group->noneProject = '暫時沒有項目';
$lang->group->id = '編號';
$lang->group->name = '分組名稱';
@@ -43,6 +43,7 @@
</tr>
<?php $hiddenProgram = $config->systemMode == 'new' ? '' : 'hidden';?>
<?php $rowspan = $config->systemMode == 'new' ? 4 : 3;?>
<?php $noExecution = (isset($config->projectMode) and $config->projectMode == 'noExecution');?>
<?php if($projectAdmins):?>
<?php foreach($projectAdmins as $account => $group):?>
<tr class="line<?php echo $group->group;?>">
@@ -59,12 +60,25 @@
<td class='<?php echo $hiddenProgram?>'>
<?php echo html::checkbox("programAll[$group->group]", array(1 => ''), $group->programs == 'all' ? 1 : '', "onchange=toggleDisabled(this);");?>
</td>
<?php if($hiddenProgram):?>
<td>
<div class='input-group'>
<?php $disabled = $group->projects == 'all' ? "disabled='disabled'" : '';?>
<span class='input-group-addon addon-project'> <?php echo $lang->group->manageProject;?></span>
<?php echo html::select("project[$group->group][]", $projects, $group->projects == 'all' ? '' : $group->projects, "class='form-control picker-select' multiple $disabled");?>
</div>
</td>
<td>
<?php echo html::checkbox("projectAll[$group->group]", array(1 => ''), $group->projects == 'all' ? 1 : '', "onchange=toggleDisabled(this);");?>
</td>
<?php endif;?>
<td rowspan='<?php echo $rowspan?>' class='text-center'>
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
<?php $hidden = count($projectAdmins) == 1 ? 'hidden' : ''?>
<button type="button" class="btn btn-link btn-icon btn-delete <?php echo $hidden;?>" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
</td>
</tr>
<?php if(empty($hiddenProgram)):?>
<tr class="line<?php echo $group->group;?>">
<td>
<div class='input-group'>
@@ -77,6 +91,7 @@
<?php echo html::checkbox("projectAll[$group->group]", array(1 => ''), $group->projects == 'all' ? 1 : '', "onchange=toggleDisabled(this);");?>
</td>
</tr>
<?php endif;?>
<tr class="line<?php echo $group->group;?>">
<td>
<div class='input-group'>
@@ -89,6 +104,7 @@
<?php echo html::checkbox("productAll[$group->group]", array(1 => ''), $group->products == 'all' ? 1 : '', "onchange=toggleDisabled(this);");?>
</td>
</tr>
<?php if(!$noExecution):?>
<tr class="line<?php echo $group->group;?>">
<td>
<div class='input-group'>
@@ -101,6 +117,7 @@
<?php echo html::checkbox("executionAll[$group->group]", array(1 => ''), $group->executions == 'all' ? 1 : '', "onchange=toggleDisabled(this);");?>
</td>
</tr>
<?php endif;?>
<?php endforeach;?>
<?php else:?>
<tr class='line1'>
@@ -116,11 +133,23 @@
<td class='<?php echo $hiddenProgram?>'>
<?php echo html::checkbox('programAll[1]', array(1 => ''), '', "onchange=toggleDisabled(this);");?>
</td>
<?php if($hiddenProgram):?>
<td>
<div class='input-group'>
<span class='input-group-addon addon-project'> <?php echo $lang->group->manageProject;?></span>
<?php echo html::select('project[1][]', $projects, '', "class='form-control picker-select' multiple");?>
</div>
</td>
<td>
<?php echo html::checkbox('projectAll[1]', array(1 => ''), '', "onchange=toggleDisabled(this);");?>
</td>
<?php endif?>
<td rowspan='<?php echo $rowspan;?>' class='text-center'>
<button type="button" class="btn btn-link btn-icon btn-add" onclick="addItem(this)"><i class="icon icon-plus"></i></button>
<button type="button" class="btn btn-link btn-icon btn-delete hidden" onclick="deleteItem(this)"><i class="icon icon-close"></i></button>
</td>
</tr>
<?php if(empty($hiddenProgram)):?>
<tr class='line1'>
<td>
<div class='input-group'>
@@ -132,6 +161,7 @@
<?php echo html::checkbox('projectAll[1]', array(1 => ''), '', "onchange=toggleDisabled(this);");?>
</td>
</tr>
<?php endif?>
<tr class='line1'>
<td>
<div class='input-group'>
@@ -143,6 +173,7 @@
<?php echo html::checkbox('productAll[1]', array(1 => ''), '', "onchange=toggleDisabled(this);");?>
</td>
</tr>
<?php if(!$noExecution):?>
<tr class='line1'>
<td>
<div class='input-group'>
@@ -154,6 +185,7 @@
<?php echo html::checkbox('executionAll[1]', array(1 => ''), '', "onchange=toggleDisabled(this);");?>
</td>
</tr>
<?php endif?>
<?php endif;?>
<tr>
<td class='text-center form-actions' colspan='4'>
+2 -10
View File
@@ -1297,16 +1297,8 @@ class kanban extends control
$builds2Imported = array();
$projects = array($this->lang->kanban->allProjects);
if($this->config->systemMode == 'classic')
{
$projects += $this->loadModel('execution')->getPairs();
$builds2Imported = $this->build->getExecutionBuilds($selectedProjectID, '', '', 't1.date_desc,t1.id_desc', $pager);
}
else
{
$projects += $this->loadModel('project')->getPairsByProgram('', 'all', false, 'order_asc', 'kanban');
$builds2Imported = $this->build->getProjectBuilds($selectedProjectID, 'all', 0, 't1.date_desc,t1.id_desc', $pager);
}
$projects += $this->loadModel('project')->getPairsByProgram('', 'all', false, 'order_asc', 'kanban');
$builds2Imported = $this->build->getProjectBuilds($selectedProjectID, 'all', 0, 't1.date_desc,t1.id_desc', $pager);
$this->view->projects = $projects;
$this->view->selectedProjectID = $selectedProjectID;
+2 -2
View File
@@ -84,7 +84,7 @@ $lang->kanban->importRelease = 'Release';
$lang->kanban->importExecution = $lang->execution->common;
$lang->kanban->importBuild = 'Build';
$lang->kanban->allKanban = 'All Kanban';
$lang->kanban->allProjects = 'All ' . ($this->config->systemMode == 'classic' ? $lang->executionCommon : 'Projects');
$lang->kanban->allProjects = 'All Projects';
$lang->kanban->allProducts = 'All Products';
$lang->kanban->mine = 'Mine';
$lang->kanban->alignment = 'Alignment';
@@ -124,7 +124,7 @@ $lang->kanban->cardCountTip = 'Please enter the number of cards';
$lang->kanban->selectedKanban = 'Please select Kanban';
$lang->kanban->selectedProduct = 'Please select Product';
$lang->kanban->selectedProject = 'Please select ' . ($this->config->systemMode == 'classic' ? $lang->executionCommon : 'Project');
$lang->kanban->selectedProject = 'Please select Project';
$lang->kanban->selectedLane = 'Target Lane';
$lang->kanban->aclGroup['open'] = 'Open';
+2 -2
View File
@@ -84,7 +84,7 @@ $lang->kanban->importRelease = 'Release';
$lang->kanban->importExecution = $lang->execution->common;
$lang->kanban->importBuild = 'Build';
$lang->kanban->allKanban = 'All Kanban';
$lang->kanban->allProjects = 'All ' . ($this->config->systemMode == 'classic' ? $lang->executionCommon : 'Projects');
$lang->kanban->allProjects = 'All Projects';
$lang->kanban->allProducts = 'All Products';
$lang->kanban->mine = 'Mine';
$lang->kanban->alignment = 'Alignment';
@@ -124,7 +124,7 @@ $lang->kanban->cardCountTip = 'Please enter the number of cards';
$lang->kanban->selectedKanban = 'Please select Kanban';
$lang->kanban->selectedProduct = 'Please select Product';
$lang->kanban->selectedProject = 'Please select ' . ($this->config->systemMode == 'classic' ? $lang->executionCommon : 'Project');
$lang->kanban->selectedProject = 'Please select Project';
$lang->kanban->selectedLane = 'Target Lane';
$lang->kanban->aclGroup['open'] = 'Open';
+2 -2
View File
@@ -84,7 +84,7 @@ $lang->kanban->importRelease = 'Release';
$lang->kanban->importExecution = $lang->execution->common;
$lang->kanban->importBuild = 'Build';
$lang->kanban->allKanban = 'All Kanban';
$lang->kanban->allProjects = 'All ' . ($this->config->systemMode == 'classic' ? $lang->executionCommon : 'Projects');
$lang->kanban->allProjects = 'All Projects';
$lang->kanban->allProducts = 'All Products';
$lang->kanban->mine = 'Mine';
$lang->kanban->alignment = 'Alignment';
@@ -124,7 +124,7 @@ $lang->kanban->cardCountTip = 'Please enter the number of cards';
$lang->kanban->selectedKanban = 'Please select Kanban';
$lang->kanban->selectedProduct = 'Please select Product';
$lang->kanban->selectedProject = 'Please select ' . ($this->config->systemMode == 'classic' ? $lang->executionCommon : 'Project');
$lang->kanban->selectedProject = 'Please select Project';
$lang->kanban->selectedLane = 'Target Lane';
$lang->kanban->aclGroup['open'] = 'Open';
+2 -2
View File
@@ -84,7 +84,7 @@ $lang->kanban->importRelease = '发布';
$lang->kanban->importExecution = $lang->execution->common;
$lang->kanban->importBuild = '版本';
$lang->kanban->allKanban = '所有看板';
$lang->kanban->allProjects = '所有' . ($this->config->systemMode == 'classic' ? $lang->executionCommon : '项目');
$lang->kanban->allProjects = '所有项目';
$lang->kanban->allProducts = '所有产品';
$lang->kanban->mine = '我负责';
$lang->kanban->alignment = '列标题对齐方式';
@@ -124,7 +124,7 @@ $lang->kanban->cardCountTip = '请输入卡片数量';
$lang->kanban->selectedKanban = '请选择看板';
$lang->kanban->selectedProduct = '请选择产品';
$lang->kanban->selectedProject = '请选择' . ($this->config->systemMode == 'classic' ? $lang->executionCommon : '项目');
$lang->kanban->selectedProject = '请选择项目';
$lang->kanban->selectedLane = '目标泳道';
$lang->kanban->aclGroup['open'] = '公开';
@@ -23,10 +23,8 @@
</div>
</div>
<div class='input-group space'>
<?php if($config->systemMode == 'new'):?>
<span class='input-group-addon'><?php echo $lang->kanban->selectedProject;?></span>
<?php echo html::select('project', $projects, $selectedProjectID, "onchange='reloadObjectList(this.value)' class='form-control chosen' data-drop_direction='down'");?>
<?php endif;?>
<span class='input-group-addon'><?php echo $lang->kanban->selectedLane;?></span>
<?php echo html::select('lane', $lanePairs, '', "onchange='setTargetLane(this.value)' class='form-control chosen' data-drop_direction='down'");?>
</div>
@@ -88,9 +86,6 @@
<div class='table-empty-tip'><?php echo $lang->noData;?></div>
<?php endif;?>
</div>
<?php if($config->systemMode == 'classic'):?>
<style>.input-group {width: 45% !important}</style>
<?php else:?>
<style>#project_chosen {width: 45% !important}</style>
<?php endif;?>
<?php include '../../common/view/footer.lite.html.php';?>
+1 -2
View File
@@ -220,8 +220,7 @@ $(function()
if($item.children('.productplan').length) icon = '<i class="icon icon-delay">';
if($item.children('.release').length) icon = '<i class="icon icon-publish">';
if($item.children('.execution').length && systemMode == 'new') icon = '<i class="icon icon-run">';
if($item.children('.execution').length && systemMode == 'classic') icon = '<i class="icon icon-project">';
if($item.children('.execution').length) icon = '<i class="icon icon-run">';
$item.children('.cardName').prepend(icon);
});
+5 -10
View File
@@ -100,7 +100,7 @@ $lang->my->executionLink = 'Execution Default Page';
$lang->my->programLinkList = array();
$lang->my->programLinkList['program-browse'] = 'By default, you go to the program list, where you can view all of the programs';
$lang->my->programLinkList['program-project'] = 'By default, you go to the list of items in the most recent program, and you can view all items under the current program';
if($config->systemMode == 'new') $lang->my->programLinkList['program-kanban'] = 'Enter the Program Kanban by default, and check the progress of all Programs';
$lang->my->programLinkList['program-kanban'] = 'Enter the Program Kanban by default, and check the progress of all Programs';
$lang->my->productLinkList = array();
$lang->my->productLinkList['product-index'] = 'The default access to the product home page, you can understand the company’s overall product status';
@@ -109,21 +109,16 @@ $lang->my->productLinkList['product-dashboard'] = 'By default, go to the latest
$lang->my->productLinkList['product-browse'] = 'By default, go to the list of requirements for the most recent product and see the requirements under the current product';
$lang->my->productLinkList['product-kanban'] = 'Enter the Product Kanban by default, and check the progress of all Products';
global $config;
$lang->my->projectLinkList = array();
$lang->my->projectLinkList['project-browse'] = 'By default, you go to the project list, where you can view all the projects';
$lang->my->projectLinkList['project-execution'] = 'Go to Project-Exection by default. You can check all information in Execution';
$lang->my->projectLinkList['project-index'] = 'By default, go to the most recent project dashboard to see the current project overview';
if($config->systemMode == 'new') $lang->my->projectLinkList['project-kanban'] = 'Enter the Project Kanban by default, and check the progress of all Projects';
$lang->my->projectLinkList['project-kanban'] = 'Enter the Project Kanban by default, and check the progress of all Projects';
$lang->my->executionLinkList = array();
if($config->systemMode == 'new')
{
$lang->my->executionLinkList['execution-all'] = 'Enter the execution list by default, you can view all executions';
$lang->my->executionLinkList['execution-task'] = 'By default, enter the list of the most recently executed task, and you can view the task information under the current iteration';
$lang->my->executionLinkList['execution-executionkanban'] = 'By default, you can enter the execution Kanban to view the execution status of projects in progress';
}
if($config->systemMode == 'lean') $lang->my->executionLinkList['execution-task'] = 'By default, enter the list of the most recently executed task, and you can view the task information under the current iteration';
$lang->my->executionLinkList['execution-all'] = 'Enter the execution list by default, you can view all executions';
$lang->my->executionLinkList['execution-task'] = 'By default, enter the list of the most recently executed task, and you can view the task information under the current iteration';
$lang->my->executionLinkList['execution-executionkanban'] = 'By default, you can enter the execution Kanban to view the execution status of projects in progress';
$lang->my->guideChangeTheme = <<<EOT
<p class='theme-title'><span style='color: #0c60e1'>"Young Blue"</span> theme is available now!</p>
+5 -10
View File
@@ -100,7 +100,7 @@ $lang->my->executionLink = 'Execution Default Page';
$lang->my->programLinkList = array();
$lang->my->programLinkList['program-browse'] = 'By default, you go to the program list, where you can view all of the programs';
$lang->my->programLinkList['program-project'] = 'By default, you go to the list of items in the most recent program, and you can view all items under the current program';
if($config->systemMode == 'new') $lang->my->programLinkList['program-kanban'] = 'Enter the Program Kanban by default, and check the progress of all Programs';
$lang->my->programLinkList['program-kanban'] = 'Enter the Program Kanban by default, and check the progress of all Programs';
$lang->my->productLinkList = array();
$lang->my->productLinkList['product-index'] = 'The default access to the product home page, you can understand the company’s overall product status';
@@ -109,21 +109,16 @@ $lang->my->productLinkList['product-dashboard'] = 'By default, go to the latest
$lang->my->productLinkList['product-browse'] = 'By default, go to the list of requirements for the most recent product and see the requirements under the current product';
$lang->my->productLinkList['product-kanban'] = 'Enter the Product Kanban by default, and check the progress of all Products';
global $config;
$lang->my->projectLinkList = array();
$lang->my->projectLinkList['project-browse'] = 'By default, you go to the project list, where you can view all the projects';
$lang->my->projectLinkList['project-execution'] = 'Go to Project-Exection by default. You can check all information in Execution';
$lang->my->projectLinkList['project-index'] = 'By default, go to the most recent project dashboard to see the current project overview';
if($config->systemMode == 'new') $lang->my->projectLinkList['project-kanban'] = 'Enter the Project Kanban by default, and check the progress of all Projects';
$lang->my->projectLinkList['project-kanban'] = 'Enter the Project Kanban by default, and check the progress of all Projects';
$lang->my->executionLinkList = array();
if($config->systemMode == 'new')
{
$lang->my->executionLinkList['execution-all'] = 'Enter the execution list by default, you can view all executions';
$lang->my->executionLinkList['execution-task'] = 'By default, enter the list of the most recently executed task, and you can view the task information under the current iteration';
$lang->my->executionLinkList['execution-executionkanban'] = 'By default, you can enter the execution Kanban to view the execution status of projects in progress';
}
if($config->systemMode == 'lean') $lang->my->executionLinkList['execution-task'] = "By default, enter the list of the most recently {$lang->executionCommon} task, and you can view the task information under the current {$lang->executionCommon}";
$lang->my->executionLinkList['execution-all'] = 'Enter the execution list by default, you can view all executions';
$lang->my->executionLinkList['execution-task'] = 'By default, enter the list of the most recently executed task, and you can view the task information under the current iteration';
$lang->my->executionLinkList['execution-executionkanban'] = 'By default, you can enter the execution Kanban to view the execution status of projects in progress';
$lang->my->guideChangeTheme = <<<EOT
<p class='theme-title'><span style='color: #0c60e1'>"Young Blue"</span> theme is available now!</p>
+5 -10
View File
@@ -100,7 +100,7 @@ $lang->my->executionLink = 'Execution Default Page';
$lang->my->programLinkList = array();
$lang->my->programLinkList['program-browse'] = 'By default, you go to the program list, where you can view all of the programs';
$lang->my->programLinkList['program-project'] = 'By default, you go to the list of items in the most recent program, and you can view all items under the current program';
if($config->systemMode == 'new') $lang->my->programLinkList['program-kanban'] = 'Enter the Program Kanban by default, and check the progress of all Programs';
$lang->my->programLinkList['program-kanban'] = 'Enter the Program Kanban by default, and check the progress of all Programs';
$lang->my->productLinkList = array();
$lang->my->productLinkList['product-index'] = 'The default access to the product home page, you can understand the company’s overall product status';
@@ -109,21 +109,16 @@ $lang->my->productLinkList['product-dashboard'] = 'By default, go to the latest
$lang->my->productLinkList['product-browse'] = 'By default, go to the list of requirements for the most recent product and see the requirements under the current product';
$lang->my->productLinkList['product-kanban'] = 'Enter the Product Kanban by default, and check the progress of all Products';
global $config;
$lang->my->projectLinkList = array();
$lang->my->projectLinkList['project-browse'] = 'By default, you go to the project list, where you can view all the projects';
$lang->my->projectLinkList['project-execution'] = 'Go to Project-Exection by default. You can check all information in Execution';
$lang->my->projectLinkList['project-index'] = 'By default, go to the most recent project dashboard to see the current project overview';
if($config->systemMode == 'new') $lang->my->projectLinkList['project-kanban'] = 'Enter the Project Kanban by default, and check the progress of all Projects';
$lang->my->projectLinkList['project-kanban'] = 'Enter the Project Kanban by default, and check the progress of all Projects';
$lang->my->executionLinkList = array();
if($config->systemMode == 'new')
{
$lang->my->executionLinkList['execution-all'] = 'Enter the execution list by default, you can view all executions';
$lang->my->executionLinkList['execution-task'] = 'By default, enter the list of the most recently executed task, and you can view the task information under the current iteration';
$lang->my->executionLinkList['execution-executionkanban'] = 'By default, you can enter the execution Kanban to view the execution status of projects in progress';
}
if($config->systemMode == 'lean') $lang->my->executionLinkList['execution-task'] = 'By default, enter the list of the most recently executed task, and you can view the task information under the current iteration';
$lang->my->executionLinkList['execution-all'] = 'Enter the execution list by default, you can view all executions';
$lang->my->executionLinkList['execution-task'] = 'By default, enter the list of the most recently executed task, and you can view the task information under the current iteration';
$lang->my->executionLinkList['execution-executionkanban'] = 'By default, you can enter the execution Kanban to view the execution status of projects in progress';
$lang->my->guideChangeTheme = <<<EOT
<p class='theme-title'><span style='color: #0c60e1'>"Young Blue"</span> theme is available now!</p>
+6 -12
View File
@@ -80,13 +80,12 @@ $lang->my->form->lblAccount = 'Account Info';
$lang->my->programLink = 'Program Default Page';
$lang->my->productLink = 'Product Default Page';
$lang->my->projectLink = 'Project Default Page';
if($config->systemMode == 'classic') $lang->my->executionLink = $lang->executionCommon . ' Default Page';
if($config->systemMode == 'new') $lang->my->executionLink = 'Execution Default Page';
$lang->my->executionLink = 'Execution Default Page';
$lang->my->programLinkList = array();
$lang->my->programLinkList['program-browse'] = 'By default, you go to the program list, where you can view all of the programs';
$lang->my->programLinkList['program-project'] = 'By default, you go to the list of items in the most recent program, and you can view all items under the current program';
if($config->systemMode == 'new') $lang->my->programLinkList['program-kanban'] = 'Enter the Program Kanban by default, and check the progress of all Programs';
$lang->my->programLinkList['program-kanban'] = 'Enter the Program Kanban by default, and check the progress of all Programs';
$lang->my->productLinkList = array();
$lang->my->productLinkList['product-index'] = 'The default access to the product home page, you can understand the company’s overall product status';
@@ -95,21 +94,16 @@ $lang->my->productLinkList['product-dashboard'] = 'By default, go to the latest
$lang->my->productLinkList['product-browse'] = 'By default, go to the list of requirements for the most recent product and see the requirements under the current product';
$lang->my->productLinkList['product-kanban'] = 'Enter the Product Kanban by default, and check the progress of all Products';
global $config;
$lang->my->projectLinkList = array();
$lang->my->projectLinkList['project-browse'] = 'By default, you go to the project list, where you can view all the projects';
$lang->my->projectLinkList['project-execution'] = 'Go to Project-Exection by default. You can check all information in Execution';
$lang->my->projectLinkList['project-index'] = 'By default, go to the most recent project dashboard to see the current project overview';
if($config->systemMode == 'new') $lang->my->projectLinkList['project-kanban'] = 'Enter the Project Kanban by default, and check the progress of all Projects';
$lang->my->projectLinkList['project-kanban'] = 'Enter the Project Kanban by default, and check the progress of all Projects';
$lang->my->executionLinkList = array();
if($config->systemMode == 'new')
{
$lang->my->executionLinkList['execution-all'] = 'Enter the execution list by default, you can view all executions';
$lang->my->executionLinkList['execution-task'] = 'By default, enter the list of the most recently executed task, and you can view the task information under the current iteration';
$lang->my->executionLinkList['execution-executionkanban'] = 'By default, you can enter the execution Kanban to view the execution status of projects in progress';
}
if($config->systemMode == 'classic') $lang->my->executionLinkList['execution-task'] = "By default, enter the list of the most recently {$lang->executionCommon} task, and you can view the task information under the current {$lang->executionCommon}";
$lang->my->executionLinkList['execution-all'] = 'Enter the execution list by default, you can view all executions';
$lang->my->executionLinkList['execution-task'] = 'By default, enter the list of the most recently executed task, and you can view the task information under the current iteration';
$lang->my->executionLinkList['execution-executionkanban'] = 'By default, you can enter the execution Kanban to view the execution status of projects in progress';
$lang->my->guideChangeTheme = <<<EOT
<p class='theme-title'><span style='color: #0c60e1'>"Young Blue"</span> theme is available now!</p>
+5 -10
View File
@@ -100,7 +100,7 @@ $lang->my->executionLink = '执行默认着陆页';
$lang->my->programLinkList = array();
$lang->my->programLinkList['program-browse'] = '默认进入项目集列表,可以查看所有的项目集';
$lang->my->programLinkList['program-project'] = '默认进入最近一个项目集的项目列表,可以查看当前项目集下所有项目';
if($config->systemMode == 'new') $lang->my->programLinkList['program-kanban'] = '默认进入项目集看板,可以可视化的查看到所有项目集的进展情况';
$lang->my->programLinkList['program-kanban'] = '默认进入项目集看板,可以可视化的查看到所有项目集的进展情况';
$lang->my->productLinkList = array();
$lang->my->productLinkList['product-index'] = '默认进入产品主页,可以了解公司整体的产品状况';
@@ -109,21 +109,16 @@ $lang->my->productLinkList['product-dashboard'] = '默认进入最近一个产
$lang->my->productLinkList['product-browse'] = '默认进入最近一个产品的需求列表,可以查看当前产品下的需求信息';
$lang->my->productLinkList['product-kanban'] = '默认进入产品看板,可以可视化的查看到所有产品的进展情况';
global $config;
$lang->my->projectLinkList = array();
$lang->my->projectLinkList['project-browse'] = '默认进入项目列表,可以查看所有的项目';
$lang->my->projectLinkList['project-execution'] = '默认进入项目下所有执行列表,查看所有执行信息';
$lang->my->projectLinkList['project-index'] = '默认进入最近一个项目仪表盘,可以查看当前项目概况';
if($config->systemMode == 'new') $lang->my->projectLinkList['project-kanban'] = '默认进入项目看板,可以可视化的查看到所有项目的进展情况';
$lang->my->projectLinkList['project-kanban'] = '默认进入项目看板,可以可视化的查看到所有项目的进展情况';
$lang->my->executionLinkList = array();
if($config->systemMode == 'new')
{
$lang->my->executionLinkList['execution-all'] = '默认进入执行列表,可以查看所有的执行';
$lang->my->executionLinkList['execution-task'] = '默认进入最近一个执行的任务列表,可以查看当前迭代下的任务信息';
$lang->my->executionLinkList['execution-executionkanban'] = '默认进入执行看板,可以查看进行中项目的执行情况';
}
if($config->systemMode == 'lean') $lang->my->executionLinkList['execution-task'] = "默认进入最近一个{$lang->executionCommon}的任务列表,可以查看当前{$lang->executionCommon}下的任务信息";
$lang->my->executionLinkList['execution-all'] = '默认进入执行列表,可以查看所有的执行';
$lang->my->executionLinkList['execution-task'] = '默认进入最近一个执行的任务列表,可以查看当前迭代下的任务信息';
$lang->my->executionLinkList['execution-executionkanban'] = '默认进入执行看板,可以查看进行中项目的执行情况';
$lang->my->guideChangeTheme = <<<EOT
<p class='theme-title'>全新<span style='color: #0c60e1'>“青春蓝”</span>主题上线了!</p>
+6 -11
View File
@@ -89,13 +89,12 @@ $lang->my->form->lblAccount = '帳號信息';
$lang->my->programLink = '項目集預設着陸頁';
$lang->my->productLink = '產品預設着陸頁';
$lang->my->projectLink = '項目預設着陸頁';
if($config->systemMode == 'classic') $lang->my->executionLink = $lang->executionCommon . '預設着陸頁';
if($config->systemMode == 'new') $lang->my->executionLink = '執行預設着陸頁';
$lang->my->executionLink = '執行預設着陸頁';
$lang->my->programLinkList = array();
$lang->my->programLinkList['program-browse'] = '預設進入項目集列表,可以查看所有的項目集';
$lang->my->programLinkList['program-project'] = '預設進入最近一個項目集的項目列表,可以查看當前項目集下所有項目';
if($config->systemMode == 'new') $lang->my->programLinkList['program-kanban'] = '預設進入項目集看板,可以可視化的查看到所有項目集的進展情況';
$lang->my->programLinkList['program-kanban'] = '預設進入項目集看板,可以可視化的查看到所有項目集的進展情況';
$lang->my->productLinkList = array();
$lang->my->productLinkList['product-index'] = '預設進入產品主頁,可以瞭解公司整體的產品狀況';
@@ -109,16 +108,12 @@ $lang->my->projectLinkList = array();
$lang->my->projectLinkList['project-browse'] = '預設進入項目列表,可以查看所有的項目';
$lang->my->projectLinkList['project-execution'] = '預設進入項目下所有執行列表,查看所有執行信息';
$lang->my->projectLinkList['project-index'] = '預設進入最近一個項目儀表盤,可以查看當前項目概況';
if($config->systemMode == 'new') $lang->my->projectLinkList['project-kanban'] = '預設進入項目看板,可以可視化的查看到所有項目的進展情況';
$lang->my->projectLinkList['project-kanban'] = '預設進入項目看板,可以可視化的查看到所有項目的進展情況';
$lang->my->executionLinkList = array();
if($config->systemMode == 'new')
{
$lang->my->executionLinkList['execution-all'] = '預設進入執行列表,可以查看所有的執行';
$lang->my->executionLinkList['execution-task'] = '預設進入最近一個執行的任務列表,可以查看當前迭代下的任務信息';
$lang->my->executionLinkList['execution-executionkanban'] = '預設進入執行看板,可以查看進行中項目的執行情況';
}
if($config->systemMode == 'classic') $lang->my->executionLinkList['execution-task'] = "預設進入最近一個{$lang->executionCommon}的任務列表,可以查看當前{$lang->executionCommon}下的任務信息";
$lang->my->executionLinkList['execution-all'] = '預設進入執行列表,可以查看所有的執行';
$lang->my->executionLinkList['execution-task'] = '預設進入最近一個執行的任務列表,可以查看當前迭代下的任務信息';
$lang->my->executionLinkList['execution-executionkanban'] = '預設進入執行看板,可以查看進行中項目的執行情況';
$lang->my->guideChangeTheme = <<<EOT
<p class='theme-title'>全新<span style='color: #0c60e1'>“青春藍”</span>主題上線了!</p>
+4 -5
View File
@@ -648,7 +648,7 @@ class myModel extends model
unset($this->config->bug->search['fields']['closedBy']);
}
if($this->config->systemMode == 'new') $this->config->bug->search['params']['project']['values'] = $this->loadModel('project')->getPairsByProgram() + array('all' => $this->lang->bug->allProject) + array('' => '');
$this->config->bug->search['params']['project']['values'] = $this->loadModel('project')->getPairsByProgram() + array('all' => $this->lang->bug->allProject) + array('' => '');
$this->config->bug->search['params']['execution']['values'] = $this->loadModel('execution')->getPairs();
$this->config->bug->search['params']['product']['values'] = $products + array('' => '');
$this->config->bug->search['params']['plan']['values'] = $this->loadModel('productplan')->getPairs();
@@ -682,13 +682,12 @@ class myModel extends model
$queryName = $type == 'contribute' ? 'contributeRisk' : 'workRisk';
$this->app->loadConfig('risk');
$this->config->risk->search['module'] = $queryName;
$this->config->risk->search['actionURL'] = $actionURL;
$this->config->risk->search['queryID'] = $queryID;
$this->config->risk->search['module'] = $queryName;
$this->config->risk->search['actionURL'] = $actionURL;
$this->config->risk->search['queryID'] = $queryID;
$this->config->risk->search['params']['project']['values'] = array('') + $projects;
if($this->config->systemMode == 'classic') unset($this->config->risk->search['fields']['project']);
unset($this->config->risk->search['fields']['module']);
$this->loadModel('search')->setSearchParams($this->config->risk->search);
+5 -26
View File
@@ -7,7 +7,6 @@
</div>
<div class="modal-body">
<table class='table table-form'>
<?php if($this->config->systemMode == 'new'):?>
<tr>
<th><?php echo $lang->feedback->project;?></th>
<td><?php echo html::select('taskProjects', $projects, '', "class='form-control chosen'");?></td>
@@ -16,12 +15,6 @@
<th id='executionHead'><?php echo $lang->feedback->execution;?></th>
<td><?php echo html::select('executions', '', '', "class='form-control chosen'");?></td>
</tr>
<?php else:?>
<tr>
<th><?php echo $lang->execution->common;?></th>
<td><?php echo html::select('executions', '', '', "class='form-control chosen'");?></td>
</tr>
<?php endif;?>
<tr>
<td colspan='2' class='text-center'>
<?php echo html::a('', $lang->feedback->nextStep, '',"class='btn btn-primary btn-wide iframe hidden' data-app='my' data-width='95%' id=taskProjectA");?>
@@ -65,17 +58,9 @@ function getFeedbackID(obj)
{
var feedbackID = $(obj).attr("data-id");
$('#feedbackID').val(feedbackID);
if(systemMode == 'new')
{
$('#taskProjects').change();
getProjects(obj);
getExecutions(0);
}
else
{
var projectID = $(obj).attr("data-product");
getExecutions(projectID);
}
$('#taskProjects').change();
getProjects(obj);
getExecutions(0);
}
function getProjects(obj)
@@ -110,7 +95,7 @@ function initToBug(obj)
function getExecutions(projectID)
{
if(systemMode == 'new' && projectID)
if(projectID)
{
var langLink = createLink('feedback', 'ajaxGetExecutionLang', 'projectID=' + projectID);
$.post(langLink, function(executionLang)
@@ -183,19 +168,13 @@ function changeTaskButton()
$('#taskProjectA').addClass('hidden');
}
if(systemMode == 'new' && projectID && executionID)
if(projectID && executionID)
{
var href = createLink('task', 'create', 'executionID=' + executionID + '&storyID=0&moduleID=0&taskID=0&todoID=0&extra=projectID=' + projectID + ',feedbackID=' + feedbackID, '', true);
$('#taskProjectButton').addClass('hidden');
$('#taskProjectA').removeClass('hidden').attr('href', href);
}
else if(systemMode == 'classic' && executionID)
{
var href = createLink('task', 'create', 'executionID=' + executionID + '&storyID=0&moduleID=0&taskID=0&todoID=0&extra=projectID=0,feedbackID=' + feedbackID, '', true);
$('#taskProjectButton').addClass('hidden');
$('#taskProjectA').removeClass('hidden').attr('href', href);
}
}
function changeButton()
+1 -2
View File
@@ -792,7 +792,6 @@ class productplan extends control
$pager = new pager($recTotal, $recPerPage, $pageID);
/* Build the search form. */
if($this->config->systemMode == 'classic') unset($this->config->bug->search['fields']['project']);
$this->config->bug->search['actionURL'] = $this->createLink('productplan', 'view', "planID=$planID&type=bug&orderBy=$orderBy&link=true&param=" . helper::safe64Encode('&browseType=bySearch&queryID=myQueryID'));
$this->config->bug->search['queryID'] = $queryID;
$this->config->bug->search['style'] = 'simple';
@@ -801,7 +800,7 @@ class productplan extends control
$this->config->bug->search['params']['openedBuild']['values'] = $this->loadModel('build')->getBuildPairs($productID, $branch = 'all', $params = '');
$this->config->bug->search['params']['resolvedBuild']['values'] = $this->build->getBuildPairs($productID, $branch = 'all', $params = '');
$this->config->bug->search['params']['module']['values'] = $this->loadModel('tree')->getOptionMenu($plan->product, 'bug', 0, $plan->branch);
if($this->config->systemMode == 'new') $this->config->bug->search['params']['project']['values'] = $this->product->getProjectPairsByProduct($productID, $plan->branch);
$this->config->bug->search['params']['project']['values'] = $this->product->getProjectPairsByProduct($productID, $plan->branch);
unset($this->config->bug->search['fields']['product']);
if($this->session->currentProductType == 'normal')
+1 -2
View File
@@ -581,8 +581,7 @@ class programModel extends model
->andWhere('t1.reviewStatus')->eq('doing')
->fi()
->beginIF($path)->andWhere('t1.path')->like($path . '%')->fi()
->beginIF(!$queryAll and !$this->app->user->admin and $this->config->systemMode == 'new')->andWhere('t1.id')->in($this->app->user->view->projects)->fi()
->beginIF(!$queryAll and !$this->app->user->admin and $this->config->systemMode == 'classic')->andWhere('t1.id')->in($this->app->user->view->sprints)->fi()
->beginIF(!$queryAll and !$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->projects)->fi()
->beginIF($this->cookie->involved or $involved)
->andWhere('t1.openedBy', true)->eq($this->app->user->account)
->orWhere('t1.PM')->eq($this->app->user->account)
+12 -16
View File
@@ -163,7 +163,7 @@ class projectModel extends model
$project = $this->dao->select('*')->from(TABLE_PROJECT)
->where('id')->eq($projectID)
->beginIF($this->config->systemMode == 'new')->andWhere('`type`')->in($type)->fi()
->andWhere('`type`')->in($type)
->fetch();
if(!$project) return false;
@@ -197,12 +197,11 @@ class projectModel extends model
->groupBy('t1.root')
->fetchAll('root');
$condition = $this->config->systemMode == 'classic' ? 't2.id as project' : 't2.parent as project';
$condition = 't2.parent as project';
$estimates = $this->dao->select("$condition, sum(estimate) as estimate")->from(TABLE_TASK)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.execution = t2.id')
->where('t1.parent')->lt(1)
->beginIF($this->config->systemMode == 'new')->andWhere('t2.parent')->in($projectIdList)->fi()
->beginIF($this->config->systemMode == 'classic')->andWhere('t2.id')->in($projectIdList)->fi()
->andWhere('t2.parent')->in($projectIdList)
->andWhere('t1.deleted')->eq(0)
->andWhere('t2.deleted')->eq(0)
->groupBy('project')
@@ -895,7 +894,7 @@ class projectModel extends model
$this->config->project->search['params']['parent']['values'] = $programPairs;
if(isset($this->config->setCode) and $this->config->setCode == 0) unset($this->config->project->search['fields']['code'], $this->config->project->search['params']['code']);
if($this->config->systemMode == 'lite') unset($this->config->project->search['fields']['parent'], $this->config->project->search['params']['parent']);
if($this->config->systemMode == 'lean') unset($this->config->project->search['fields']['parent'], $this->config->project->search['params']['parent']);
$this->loadModel('search')->setSearchParams($this->config->project->search);
}
@@ -1231,7 +1230,7 @@ class projectModel extends model
$this->dao->insert(TABLE_TEAM)->data($member)->exec();
$teamMembers[$account] = $member;
}
if($this->config->systemMode == 'new') $this->loadModel('execution')->addProjectMembers($projectID, $teamMembers);
$this->loadModel('execution')->addProjectMembers($projectID, $teamMembers);
$whitelist = explode(',', $project->whitelist);
$this->loadModel('personnel')->updateWhitelist($whitelist, 'project', $projectID);
@@ -2202,9 +2201,9 @@ class projectModel extends model
if(defined('TUTORIAL')) return $this->loadModel('tutorial')->getTeamMembers();
$project = $this->getByID($projectID);
$type = $this->config->systemMode == 'new' ? $project->type : 'project';
if(empty($project)) return array();
$type = $this->config->systemMode == 'new' ? $project->type : 'project';
return $this->dao->select("t1.*, t1.hours * t1.days AS totalHours, t2.id as userID, if(t2.deleted='0', t2.realname, t1.account) as realname")->from(TABLE_TEAM)->alias('t1')
->leftJoin(TABLE_USER)->alias('t2')->on('t1.account = t2.account')
->where('t1.root')->eq((int)$projectID)
@@ -2227,10 +2226,7 @@ class projectModel extends model
if(empty($project)) return array();
$type = 'project';
if($this->config->systemMode == 'new')
{
if($project->type == 'sprint' or $project->type == 'stage' or $project->type == 'kanban') $type = 'execution';
}
if($project->type == 'sprint' or $project->type == 'stage' or $project->type == 'kanban') $type = 'execution';
$members = $this->dao->select("t1.account, if(t2.deleted='0', t2.realname, t1.account) as realname")->from(TABLE_TEAM)->alias('t1')
->leftJoin(TABLE_USER)->alias('t2')->on('t1.account = t2.account')
@@ -2581,7 +2577,7 @@ class projectModel extends model
$menu = '';
$params = "projectID=$project->id";
$moduleName = $this->config->systemMode == 'classic' ? "execution" : "project";
$moduleName = "project";
if($project->status == 'wait' || $project->status == 'suspended')
{
$menu .= $this->buildMenu($moduleName, 'start', $params, $project, 'browse', 'play', '', 'iframe', true);
@@ -2604,14 +2600,14 @@ class projectModel extends model
$from = $project->from == 'project' ? 'project' : 'pgmproject';
$iframe = $this->app->tab == 'program' ? 'iframe' : '';
$onlyBody = $this->app->tab == 'program' ? true : '';
$dataApp = $this->config->systemMode == 'classic' ? "data-app=execution" : "data-app=project";
$dataApp = "data-app=project";
$menu .= $this->buildMenu($moduleName, 'edit', $params, $project, 'browse', 'edit', '', $iframe, $onlyBody, $dataApp);
if($this->config->vision != 'lite')
{
$menu .= $this->buildMenu($moduleName, 'team', $params, $project, 'browse', 'group', '', '', '', $dataApp, $this->lang->execution->team);
if($this->config->systemMode == 'new') $menu .= $this->buildMenu('project', 'group', "$params&programID={$project->programID}", $project, 'browse', 'lock', '', '', '', $dataApp);
$menu .= $this->buildMenu('project', 'group', "$params&programID={$project->programID}", $project, 'browse', 'lock', '', '', '', $dataApp);
if(common::hasPriv($moduleName, 'manageProducts') || common::hasPriv($moduleName, 'whitelist') || common::hasPriv($moduleName, 'delete'))
{
@@ -2619,7 +2615,7 @@ class projectModel extends model
$menu .= "<button type='button' class='btn dropdown-toggle' data-toggle='context-dropdown' title='{$this->lang->more}'><i class='icon-more-alt'></i></button>";
$menu .= "<ul class='dropdown-menu pull-right text-center' role='menu'>";
$menu .= $this->buildMenu($moduleName, 'manageProducts', $params . "&from={$this->app->tab}", $project, 'browse', 'link', '', 'btn-action', '', '', $this->lang->project->manageProducts);
if($this->config->systemMode == 'new') $menu .= $this->buildMenu('project', 'whitelist', "$params&module=project&from=$from", $project, 'browse', 'shield-check', '', 'btn-action', '', $dataApp);
$menu .= $this->buildMenu('project', 'whitelist', "$params&module=project&from=$from", $project, 'browse', 'shield-check', '', 'btn-action', '', $dataApp);
$menu .= $this->buildMenu($moduleName, "delete", $params, $project, 'browse', 'trash', 'hiddenwin', 'btn-action');
$menu .= "</ul>";
$menu .= "</div>";
@@ -2628,7 +2624,7 @@ class projectModel extends model
else
{
$menu .= $this->buildMenu($moduleName, 'team', $params, $project, 'browse', 'group', '', '', '', $dataApp, $this->lang->execution->team);
if($this->config->systemMode == 'new') $menu .= $this->buildMenu('project', 'whitelist', "$params&module=project&from=$from", $project, 'browse', 'shield-check', '', 'btn-action', '', $dataApp);
$menu .= $this->buildMenu('project', 'whitelist', "$params&module=project&from=$from", $project, 'browse', 'shield-check', '', 'btn-action', '', $dataApp);
$menu .= $this->buildMenu($moduleName, "delete", $params, $project, 'browse', 'trash', 'hiddenwin', 'btn-action');
}
+3 -7
View File
@@ -1079,9 +1079,8 @@ class reportModel extends model
{
$projectStatus = $this->dao->select('t1.id,t1.status')->from(TABLE_PROJECT)->alias('t1')
->leftJoin(TABLE_TEAM)->alias('t2')->on("t1.id=t2.root")
->where('t1.type')->in($this->config->systemMode == 'classic' ? 'sprint,stage,kanban' : 'project')
->beginIF($this->config->systemMode == 'classic')->andWhere('t2.type')->eq('execution')->fi()
->beginIF($this->config->systemMode == 'new')->andWhere('t2.type')->eq('project')->fi()
->where('t1.type')->in('project')
->andWhere('t2.type')->eq('project')
->beginIF(!empty($accounts))->andWhere('t2.account')->in($accounts)->fi()
->andWhere('t1.deleted')->eq(0)
->fetchPairs('id', 'status');
@@ -1201,10 +1200,7 @@ class reportModel extends model
->fetchAll();
$pairs = array();
foreach($executions as $execution)
{
$pairs[$execution->id] = $this->config->systemMode == 'new' ? $execution->projectname . '/' .$execution->name : $execution->name;
}
foreach($executions as $execution) $pairs[$execution->id] = $execution->projectname . '/' .$execution->name;
return $pairs;
}
+1 -1
View File
@@ -27,7 +27,7 @@
</div>
<div class='col-sm-4'>
<div class='input-group'>
<span class='input-group-addon'><?php echo $this->config->systemMode == 'classic' ? $lang->executionCommon : $lang->execution->common;?></span>
<span class='input-group-addon'><?php echo $lang->execution->common;?></span>
<?php echo html::select('execution', $executions, $execution, "class='form-control chosen' onchange='changeParams(this)'");?>
</div>
</div>
+6 -12
View File
@@ -291,7 +291,7 @@ class task extends control
/* Set Custom*/
foreach(explode(',', $this->config->task->customCreateFields) as $field) $customFields[$field] = $this->lang->task->$field;
$executions = $this->config->systemMode == 'classic' ? $executions : $this->execution->getByProject($projectID, 'noclosed', 0, true);
$executions = $this->execution->getByProject($projectID, 'noclosed', 0, true);
$testStoryIdList = $this->loadModel('story')->getTestStories(array_keys($stories), $execution->id);
/* Stories that can be used to create test tasks. */
@@ -436,11 +436,8 @@ class task extends control
$modules = $this->loadModel('tree')->getTaskOptionMenu($executionID, 0, 0, $showAllModule ? 'allModule' : '');
/* Set Custom*/
if($this->config->systemMode == 'new')
{
$project = $this->project->getByID($execution->project);
if($project->model == 'waterfall') $this->config->task->create->requiredFields .= ',estStarted,deadline';
}
$project = $this->project->getByID($execution->project);
if($project->model == 'waterfall') $this->config->task->create->requiredFields .= ',estStarted,deadline';
foreach(explode(',', $this->config->task->customBatchCreateFields) as $field)
{
@@ -619,7 +616,7 @@ class task extends control
$this->view->users = $this->loadModel('user')->getPairs('nodeleted|noclosed', "{$this->view->task->openedBy},{$this->view->task->canceledBy},{$this->view->task->closedBy}");
$this->view->showAllModule = isset($this->config->execution->task->allModule) ? $this->config->execution->task->allModule : '';
$this->view->modules = $this->tree->getTaskOptionMenu($this->view->task->execution, 0, 0, $this->view->showAllModule ? 'allModule' : '');
$this->view->executions = $this->config->systemMode == 'classic' ? $this->execution->getPairs() : $this->execution->getByProject($task->project, 'noclosed', 0, true, false, $task->execution);
$this->view->executions = $this->execution->getByProject($task->project, 'noclosed', 0, true, false, $task->execution);
$this->display();
}
@@ -730,11 +727,8 @@ class task extends control
/* Set Custom*/
if(isset($execution))
{
if($this->config->systemMode == 'new')
{
$project = $this->project->getByID($execution->project);
if($project->model == 'waterfall') $this->config->task->edit->requiredFields .= ',estStarted,deadline';
}
$project = $this->project->getByID($execution->project);
if($project->model == 'waterfall') $this->config->task->edit->requiredFields .= ',estStarted,deadline';
foreach(explode(',', $this->config->task->customBatchEditFields) as $field)
{
+2 -2
View File
@@ -265,11 +265,11 @@ class upgrade extends control
/* 只有没有关联项目集的产品和项目关联到默认项目集下. */
$this->upgrade->relationDefaultProgram($programID);
$openVersion = $this->upgrade->getOpenVersion(str_replace('.', '_', $fromVersion));
if(version_compare($openVersion, '15_0', '<')) $this->locate(inlink('mergeTips'));
if(version_compare($openVersion, '15_0', '<')) $this->locate(inlink('selectMergeMode', "fromVersion=$fromVersion&mode=lean"));
$this->locate(inlink('afterExec', "fromVersion=$fromVersion"));
}
if($mode == 'new') $this->locate(inlink('mergeTips'));
if($mode == 'new') $this->locate(inlink('selectMergeMode', "fromVersion=$fromVersion&mode=new"));
}
$this->view->title = $this->lang->upgrade->selectMode;
+1 -1
View File
@@ -27,7 +27,7 @@
</thead>
<tbody>
<tr>
<td colspan='2'><?php echo $this->lang->upgrade->mode;?></td>
<td colspan='2'><?php echo $this->lang->upgrade->usage;?></td>
<td colspan='2'><?php echo $this->lang->upgrade->leanUsage;?></td>
<td colspan='2'><?php echo $this->lang->upgrade->newUsage;?></td>
</tr>
+6 -7
View File
@@ -1756,7 +1756,7 @@ class userModel extends model
if($allProducts === null) $allProducts = $this->dao->select('id,PO,QD,RD,createdBy,acl,whitelist,program,createdBy')->from(TABLE_PRODUCT)->where('acl')->ne('open')->fetchAll('id');
if($allProjects === null) $allProjects = $this->dao->select('id,PO,PM,QD,RD,acl,type,path,parent,openedBy')->from(TABLE_PROJECT)->where('acl')->ne('open')->andWhere('type')->eq('project')->fetchAll('id');
if($allPrograms === null) $allPrograms = $this->dao->select('id,PO,PM,QD,RD,acl,type,path,parent,openedBy')->from(TABLE_PROGRAM)->where('acl')->ne('open')->andWhere('type')->eq('program')->fetchAll('id');
if($allSprints === null) $allSprints = $this->dao->select('id,PO,PM,QD,RD,acl,project,path,parent,type,openedBy')->from(TABLE_PROJECT)->where('acl')->eq('private')->beginIF($this->config->systemMode == 'new')->andWhere('type')->in('sprint,stage,kanban')->fi()->fetchAll('id');
if($allSprints === null) $allSprints = $this->dao->select('id,PO,PM,QD,RD,acl,project,path,parent,type,openedBy')->from(TABLE_PROJECT)->where('acl')->eq('private')->andWhere('type')->in('sprint,stage,kanban')->fetchAll('id');
/* Get admins. */
$manageObjects = array();
@@ -1938,8 +1938,7 @@ class userModel extends model
$teamGroups = array();
$stmt = $this->dao->select('root,account')->from(TABLE_TEAM)
->where('1=1')
->beginIF($this->config->systemMode == 'new')->andWhere('type')->eq('project')->fi()
->beginIF($this->config->systemMode == 'classic')->andWhere('type')->eq('execution')->fi()
->andWhere('type')->eq('project')
->andWhere('root')->in(array_keys($projectProducts))
->andWhere('root')->ne(0)
->query();
@@ -2057,8 +2056,8 @@ class userModel extends model
/* Set opened sprints and stages into userview. */
$openedSprints = $this->dao->select('id')->from(TABLE_PROJECT)
->where('acl')->eq('open')
->beginIF($this->config->systemMode == 'new')->andWhere('type')->in('sprint,stage,kanban')->fi()
->beginIF($this->config->systemMode == 'new')->andWhere('project')->in($userView->projects)->fi()
->andWhere('type')->in('sprint,stage,kanban')
->andWhere('project')->in($userView->projects)
->fetchAll('id');
$openedSprints = join(',', array_keys($openedSprints));
@@ -2516,7 +2515,7 @@ class userModel extends model
}
/* Judge sprint auth. */
if(($project->type == 'sprint' or $project->type == 'stage' or $project->type == 'kanban') and $project->acl == 'private' and $this->config->systemMode == 'new')
if(($project->type == 'sprint' or $project->type == 'stage' or $project->type == 'kanban') and $project->acl == 'private')
{
$parent = $this->dao->select('openedBy,PM')->from(TABLE_PROJECT)->where('id')->eq($project->project)->fetch();
if(empty($parent)) return false;
@@ -2611,7 +2610,7 @@ class userModel extends model
}
/* Judge sprint auth. */
if(($project->type == 'sprint' || $project->type == 'stage') && $project->acl == 'private' && $this->config->systemMode == 'new')
if(($project->type == 'sprint' || $project->type == 'stage') && $project->acl == 'private')
{
$parent = $this->dao->select('openedBy,PM')->from(TABLE_PROJECT)->where('id')->eq($project->project)->fetch();
$users[$parent->openedBy] = $parent->openedBy;