resolve conflict
This commit is contained in:
@@ -0,0 +1 @@
|
||||
ALTER table `zt_project` ADD `noExecution` enum('0', '1') NOT NULL DEFAULT '0';
|
||||
@@ -1193,6 +1193,7 @@ CREATE TABLE IF NOT EXISTS `zt_project` (
|
||||
`vision` varchar(10) NOT NULL DEFAULT 'rnd',
|
||||
`displayCards` smallint(6) NOT NULL default '0',
|
||||
`fluidBoard` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`noExecution` enum('0', '1') NOT NULL DEFAULT '0',
|
||||
`deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `parent` (`parent`),
|
||||
|
||||
+12
-23
@@ -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
@@ -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';
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -648,7 +648,6 @@ class custom extends control
|
||||
$this->view->mode = $mode;
|
||||
$this->view->program = $this->loadModel('program')->getTopPairs('', '', true);
|
||||
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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?";
|
||||
|
||||
@@ -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]?";
|
||||
|
||||
@@ -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] ?";
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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'>
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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ả';
|
||||
|
||||
@@ -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 = '分组名称';
|
||||
|
||||
@@ -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'>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';?>
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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¶m=" . 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')
|
||||
|
||||
+25
-16
@@ -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)
|
||||
@@ -1599,26 +1598,36 @@ class programModel extends model
|
||||
*/
|
||||
public function createDefaultProgram()
|
||||
{
|
||||
$account = isset($this->app->user->account) ? $this->app->user->account : '';
|
||||
$minBegin = $this->dao->select('min(begin) as min')->from(TABLE_PROJECT)->where('deleted')->eq(0)->fetch('min');
|
||||
$program = new stdClass();
|
||||
|
||||
$program->type = 'program';
|
||||
$program->name = $this->lang->program->defaultProgram;
|
||||
$program->budgetUnit = 'CNY';
|
||||
$program->whitelist = '';
|
||||
$program->status = 'doing';
|
||||
$program->grade = 1;
|
||||
$program->auth = 'extend';
|
||||
$program->openedDate = helper::today();
|
||||
$program->begin = $minBegin;
|
||||
$program->end = LONG_TIME;
|
||||
$program = new stdclass();
|
||||
$program->name = $this->lang->program->defaultProgram;
|
||||
$program->type = 'program';
|
||||
$program->budgetUnit = 'CNY';
|
||||
$program->status = 'doing';
|
||||
$program->auth = 'extend';
|
||||
$program->begin = $minBegin;
|
||||
$program->end = LONG_TIME;
|
||||
$program->openedBy = $account;
|
||||
$program->openedDate = helper::now();
|
||||
$program->openedVersion = $this->config->version;
|
||||
$program->acl = 'open';
|
||||
$program->grade = 1;
|
||||
$program->vision = 'rnd';
|
||||
|
||||
$this->app->loadLang('program');
|
||||
$this->app->loadLang('project');
|
||||
$this->lang->project->name = $this->lang->program->name;
|
||||
|
||||
$this->dao->insert(TABLE_PROGRAM)->data($program)->exec();
|
||||
if(dao::isError()) return false;
|
||||
|
||||
$insertID = $this->dao->lastInsertId();
|
||||
$programID = $this->dao->lastInsertId();
|
||||
|
||||
$this->dao->update(TABLE_PROGRAM)->set('path')->eq(",$insertID,")->where('id')->eq($insertID)->exec();
|
||||
$this->dao->update(TABLE_PROGRAM)->set('path')->eq(",{$programID},")->set('`order`')->eq($programID * 5)->where('id')->eq($programID)->exec();
|
||||
$this->loadModel('action')->create('program', $programID, 'openedbysystem');
|
||||
|
||||
return $insertID;
|
||||
return $programID;
|
||||
}
|
||||
}
|
||||
|
||||
+12
-16
@@ -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);
|
||||
}
|
||||
@@ -1234,7 +1233,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);
|
||||
@@ -2205,9 +2204,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)
|
||||
@@ -2230,10 +2229,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')
|
||||
@@ -2584,7 +2580,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);
|
||||
@@ -2607,14 +2603,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'))
|
||||
{
|
||||
@@ -2622,7 +2618,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>";
|
||||
@@ -2631,7 +2627,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');
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
@@ -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)
|
||||
{
|
||||
|
||||
@@ -161,12 +161,18 @@ class upgrade extends control
|
||||
if(version_compare($openVersion, '15_0', '>=') and version_compare($openVersion, '18_0', '<=') and $systemMode != 'new')
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.common.global.mode', 'lean');
|
||||
|
||||
/* Lean mode create default program. */
|
||||
$programID = $this->loadModel('program')->createDefaultProgram();
|
||||
|
||||
/* Set default program config. */
|
||||
$this->loadModel('setting')->setItem('system.common.global.defaultProgram', $programID);
|
||||
|
||||
/* 只有没有关联项目集的产品和项目关联到默认项目集下. */
|
||||
$this->upgrade->relationDefaultProgram($programID);
|
||||
|
||||
$this->upgrade->classic2Lean($programID);
|
||||
|
||||
$selectMode = false;
|
||||
}
|
||||
if(version_compare($openVersion, '18_0', '>')) $selectMode = false;
|
||||
@@ -704,9 +710,11 @@ class upgrade extends control
|
||||
$mergeMode = $this->post->projectType;
|
||||
if($mergeMode == 'manually') $this->locate(inlink('mergeProgram'));
|
||||
|
||||
$program = $this->upgrade->createDefaultProgram();
|
||||
if($mergeMode == 'project') $this->upgrade->upgradeInProjectMode($program->id);
|
||||
if($mergeMode == 'execution') $this->upgrade->upgradeInExecutionMode($program->id);
|
||||
if($mode == 'lean') $programID = $this->config->defaultProgram;
|
||||
if($mode == 'new') $programID = $this->loadModel('program')->createDefaultProgram();
|
||||
|
||||
if($mergeMode == 'project') $this->upgrade->upgradeInProjectMode($programID);
|
||||
if($mergeMode == 'execution') $this->upgrade->upgradeInExecutionMode($programID);
|
||||
|
||||
if(dao::isError()) return print(js::error(dao::getError()));
|
||||
$this->locate(inlink('afterExec', "fromVersion=$fromVersion"));
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
.panel {width: 1200px; margin: auto; padding: 0px 40px 40px 40px;}
|
||||
.panel h1 {margin-top: 20px; margin-bottom: 20px;}
|
||||
.panel .icon {font-size: 20px;}
|
||||
|
||||
#mainContent tr td .icon-close {font-weight: bold; color: #ea644a;}
|
||||
#mainContent tr td .icon-check {font-weight: bold; color: #329d38;}
|
||||
|
||||
@@ -7,4 +11,4 @@
|
||||
#useLean {background-color: #ddd!important; padding: 6px 85px;}
|
||||
#useNew {background-color: #ddd!important; padding: 6px 85px;}
|
||||
|
||||
#mainContent .datatable {cursor: default;}
|
||||
#mainContent .datatable {cursor: default;}
|
||||
|
||||
@@ -194,7 +194,7 @@ $lang->upgrade->selectUsage = '请选择使用场景';
|
||||
$lang->upgrade->useLean = '使用迅捷模式';
|
||||
$lang->upgrade->useNew = '使用综合模式';
|
||||
$lang->upgrade->remark = '备注';
|
||||
$lang->upgrade->remarkDesc = '后续您还可以在系统的后台自定义中进行切换';
|
||||
$lang->upgrade->remarkDesc = '后续您还可以在系统的后台自定义中进行切换。';
|
||||
|
||||
$lang->upgrade->to18Mode['lean'] = '迅捷模式';
|
||||
$lang->upgrade->to18Mode['new'] = '综合模式';
|
||||
$lang->upgrade->to18Mode['new'] = '综合模式';
|
||||
|
||||
@@ -7532,15 +7532,15 @@ class upgradeModel extends model
|
||||
/*
|
||||
* Upgrade from classic mode of 15 version to the lite mode of 18 version.
|
||||
*
|
||||
* @param int $programID
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function classic2Lean()
|
||||
public function classic2Lean($programID)
|
||||
{
|
||||
/* Set project mode as noExecution. */
|
||||
$this->loadModel('setting')->setItem('system.common.global.projectMode', 'noExecution');
|
||||
|
||||
$programID = $this->createDefaultProgram();
|
||||
$this->upgradeInProjectMode($programID);
|
||||
|
||||
return !dao::isError();
|
||||
@@ -7598,8 +7598,9 @@ class upgradeModel extends model
|
||||
public function upgradeInProjectMode($programID)
|
||||
{
|
||||
$this->loadModel('action');
|
||||
$now = helper::now();
|
||||
$account = isset($this->app->user->account) ? $this->app->user->account : '';
|
||||
$now = helper::now();
|
||||
$account = isset($this->app->user->account) ? $this->app->user->account : '';
|
||||
$projectMode = $this->setting->getItem('owner=system&module=common§ion=global&key=projectMode');
|
||||
|
||||
$noMergedSprints = $this->getNoMergedSprints();
|
||||
if(!$noMergedSprints) return true;
|
||||
@@ -7624,7 +7625,7 @@ class upgradeModel extends model
|
||||
$project->lastEditedDate = $now;
|
||||
$project->grade = 2;
|
||||
$project->acl = $sprint->acl == 'open' ? 'open' : 'private';
|
||||
if($this->config->global->mode == 'classic') $project->noExecution = '1';
|
||||
if($projectMode == 'noExecution') $project->noExecution = '1';
|
||||
|
||||
$this->dao->insert(TABLE_PROJECT)->data($project)->check('name', 'unique', "type='project' AND parent=$programID AND deleted='0'")->exec();
|
||||
if(dao::isError()) return false;
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.lite.html.php';?>
|
||||
<div class='container'>
|
||||
<div class='panel' style='padding:50px 280px'>
|
||||
<div class='panel'>
|
||||
<form method='post'>
|
||||
<h1 class='text-center'><?php echo $title;?></h1>
|
||||
<div class='main-row' id='mainContent'>
|
||||
@@ -33,53 +33,53 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2'><?php echo $this->lang->upgrade->program;?></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-close"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-close"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-check"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2'><?php echo $this->lang->upgrade->productRR;?></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-check"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2'><?php echo $this->lang->upgrade->productUR;?></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-close"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-close"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-check"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2'><?php echo $this->lang->upgrade->productLine;?></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-close"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-close"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-check"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2'><?php echo $this->lang->upgrade->projectScrum;?></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-close"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-close"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-check"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2'><?php echo $this->lang->upgrade->projectWaterfull;?></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-close"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-close"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-check"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2'><?php echo $this->lang->upgrade->projectKanban;?></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-check"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2'><?php echo $this->lang->upgrade->execution;?></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-check"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2'><?php echo $this->lang->upgrade->assetlib;?></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-close"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-close"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-check"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2'><?php echo $this->lang->upgrade->oa;?></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-2x icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-check"></i></td>
|
||||
<td colspan='2' class="text-center"><i class="icon icon-check"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2' style="font-weight:bold;"><?php echo $this->lang->upgrade->selectUsage;?></td>
|
||||
@@ -88,7 +88,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='2'><?php echo $this->lang->upgrade->remark;?></td>
|
||||
<td colspan='4' class="text-center"><?php echo $this->lang->upgrade->remarkDesc;?></td>
|
||||
<td colspan='4'><?php echo $this->lang->upgrade->remarkDesc;?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<?php echo html::hidden('mode','')?>
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user