Merge branch 'master' into 'sprint/master_lanzongjun_fixbug'
# Conflicts: # module/project/lang/de.php # module/project/lang/en.php # module/project/lang/fr.php
This commit is contained in:
@@ -567,7 +567,6 @@ $lang->block->flowchart['admin'] = array('Administrator', 'Abteilung erstellen
|
||||
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
|
||||
$lang->block->flowchart['product'] = array($lang->productCommon . ' Besitzer', $lang->productCommon . ' erstellen', 'Module pflegen', 'Pläne pflegen', 'Storys pflegen', 'Release erstellen');
|
||||
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
$lang->block->flowchart['dev'] = array('Entwickler', 'Aufgabe/Bugs anfordern', 'Update Status', 'Aufgaben/Bugs abschließen');
|
||||
$lang->block->flowchart['tester'] = array('QS Team', 'Fälle erstellen', 'Fälle ausführen', 'Bug Berichte', 'Bugs überprüfen', 'Bugs schließen');
|
||||
|
||||
|
||||
@@ -567,7 +567,6 @@ $lang->block->flowchart['admin'] = array('Administrator', 'Add Departments', '
|
||||
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
|
||||
$lang->block->flowchart['product'] = array($lang->productCommon . ' Owner', 'Add ' . $lang->productCommon, 'Maintain Modules', 'Maintain Plans', 'Maintain Stories', 'Create Releases');
|
||||
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
$lang->block->flowchart['project'] = array('Project Manager', 'Add ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
$lang->block->flowchart['dev'] = array('Dev Team', 'Claim Tasks/Bugs', 'Design', 'Update Status', 'Finish Tasks/Bugs', 'Commit Code');
|
||||
$lang->block->flowchart['tester'] = array('Test Team', 'Write Cases', 'Run Cases', 'Report Bugs', 'Verify Bugs', 'Close Bugs');
|
||||
|
||||
|
||||
@@ -567,7 +567,6 @@ $lang->block->flowchart['admin'] = array('Administrateur', 'Ajoute Compartimen
|
||||
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
|
||||
$lang->block->flowchart['product'] = array($lang->productCommon . ' Owner', 'Ajoute ' . $lang->productCommon . '/Modules', 'Ajoute ' . $lang->executionCommon . 's', 'Ajoute Stories', 'Maintient Plans', 'Crée Releases');
|
||||
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
$lang->block->flowchart['dev'] = array('Développeurs', 'Réclament Tâches/Bugs', 'Effectuent Tâches', 'Corrigent Bugs', 'MàJ Statuts', 'Terminent Tâches/Bugs');
|
||||
$lang->block->flowchart['tester'] = array('Testeurs', 'Rédigent CasTests', 'Jouent CasTests', 'Détectent Bugs', 'Vérifient Corrections', 'Ferment Bugs');
|
||||
|
||||
|
||||
@@ -286,6 +286,9 @@ class bug extends control
|
||||
}
|
||||
}
|
||||
|
||||
$project = $this->loadModel('project')->getByShadowProduct($productID);
|
||||
if(!$project->multiple) unset($this->lang->bug->report->charts['bugsPerExecution']);
|
||||
|
||||
$this->qa->setMenu($this->products, $productID, $branchID);
|
||||
$this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->bug->common . $this->lang->colon . $this->lang->bug->reportChart;
|
||||
$this->view->position[] = html::a($this->createLink('bug', 'browse', "productID=$productID"), $this->products[$productID]);
|
||||
|
||||
@@ -792,6 +792,8 @@ if(!helper::hasFeature('devops'))
|
||||
unset($lang->scrum->menu->devops, $lang->scrum->menuOrder[25]);
|
||||
unset($lang->waterfall->menu->devops, $lang->waterfall->menuOrder[35]);
|
||||
unset($lang->execution->menu->devops, $lang->execution->menuOrder[45]);
|
||||
unset($lang->project->noMultiple->scrum->menu->devops, $lang->project->noMultiple->scrum->menuOrder[35]);
|
||||
unset($lang->scrum->menu->settings['subMenu']->managerepo);
|
||||
}
|
||||
|
||||
if(!helper::hasFeature('kanban'))
|
||||
|
||||
@@ -56,8 +56,8 @@ $lang->custom->dept = 'Dept';
|
||||
$lang->custom->code = $lang->code;
|
||||
$lang->custom->setCode = 'Enable or Disable Code';
|
||||
$lang->custom->execution = 'Execution';
|
||||
$lang->custom->defaultProgram = 'Default program';
|
||||
$lang->custom->selectDefaultProgram = 'Please select default program';
|
||||
$lang->custom->defaultProgram = 'Default program';
|
||||
$lang->custom->modeManagement = 'Mode Management';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = 'Working Hours/';
|
||||
@@ -103,6 +103,7 @@ $lang->custom->object['user'] = 'User';
|
||||
$lang->custom->object['block'] = 'ClosedBlock';
|
||||
$lang->custom->object['flow'] = 'Flow';
|
||||
$lang->custom->object['score'] = 'Score';
|
||||
$lang->custom->object['mode'] = 'Mode';
|
||||
|
||||
$lang->custom->menuOrder[5] = 'project';
|
||||
$lang->custom->menuOrder[10] = 'product';
|
||||
|
||||
@@ -103,6 +103,7 @@ $lang->custom->object['user'] = 'User';
|
||||
$lang->custom->object['block'] = 'Block';
|
||||
$lang->custom->object['flow'] = 'Flow';
|
||||
$lang->custom->object['score'] = 'Score';
|
||||
$lang->custom->object['mode'] = 'Mode';
|
||||
|
||||
$lang->custom->menuOrder[5] = 'project';
|
||||
$lang->custom->menuOrder[10] = 'product';
|
||||
|
||||
@@ -103,6 +103,7 @@ $lang->custom->object['user'] = 'Utilisateur';
|
||||
$lang->custom->object['block'] = 'Bloc';
|
||||
$lang->custom->object['flow'] = 'Flow';
|
||||
$lang->custom->object['score'] = 'Score';
|
||||
$lang->custom->object['mode'] = 'Mode';
|
||||
|
||||
$lang->custom->menuOrder[5] = 'project';
|
||||
$lang->custom->menuOrder[10] = 'product';
|
||||
|
||||
@@ -291,7 +291,7 @@
|
||||
<?php if($doc->contentType == 'markdown'):?>
|
||||
<?php css::import($jsRoot . "markdown/simplemde.min.css");?>
|
||||
<?php js::import($jsRoot . 'markdown/simplemde.min.js'); ?>
|
||||
<?php js::set('markdownText', $doc->content);?>
|
||||
<?php js::set('markdownText', htmlspecialchars($doc->content));?>
|
||||
<script>
|
||||
$(function()
|
||||
{
|
||||
|
||||
@@ -244,7 +244,7 @@ js::set('docID', $doc->id);
|
||||
<?php if($doc->contentType == 'markdown'):?>
|
||||
<?php css::import($jsRoot . "markdown/simplemde.min.css");?>
|
||||
<?php js::import($jsRoot . 'markdown/simplemde.min.js'); ?>
|
||||
<?php js::set('markdownText', $doc->content);?>
|
||||
<?php js::set('markdownText', htmlspecialchars($doc->content));?>
|
||||
<script>
|
||||
$(function()
|
||||
{
|
||||
|
||||
@@ -215,6 +215,7 @@ class execution extends control
|
||||
/* Build the search form. */
|
||||
$actionURL = $this->createLink('execution', 'task', "executionID=$executionID&status=bySearch¶m=myQueryID");
|
||||
$this->config->execution->search['onMenuBar'] = 'yes';
|
||||
if(!$execution->multiple) unset($this->config->execution->search['fields']['execution']);
|
||||
$this->execution->buildTaskSearchForm($executionID, $this->executions, $queryID, $actionURL);
|
||||
|
||||
/* team member pairs. */
|
||||
@@ -685,7 +686,7 @@ class execution extends control
|
||||
unset($this->config->bug->search['fields']['resolvedDate']);
|
||||
unset($this->config->bug->search['fields']['closedDate']);
|
||||
unset($this->config->bug->search['fields']['branch']);
|
||||
if(empty($execution->multiple) && empty($execution->hasProduct)) unset($this->config->bug->search['fields']['plan']);
|
||||
if(empty($execution->multiple) and empty($execution->hasProduct)) unset($this->config->bug->search['fields']['plan']);
|
||||
if(empty($project->hasProduct))
|
||||
{
|
||||
unset($this->config->bug->search['fields']['product']);
|
||||
|
||||
@@ -103,6 +103,7 @@ $lang->misc->feature->themeDesc = '<p>ZenTao 15.0+ a new "Youth Blue" theme
|
||||
$lang->misc->feature->visionsDesc = "<p>The concept of interface has been added since 16.5. Users can deal with R&D affairs in <span style='color: #0c60e1'>[Full Feature Interface]</span> and daily office affairs in <span style='color: #0c60e1'>[Operation Management Interface]</span>.</p><p>You can view the current interface on the avatar, and click the name of the interface to view and switch other interfaces.</p>";
|
||||
$lang->misc->feature->visionsImage = 'theme/default/images/main/visions_en.png';
|
||||
|
||||
$lang->misc->releaseDate['18.0.beta1'] = '2022-11-16';
|
||||
$lang->misc->releaseDate['17.8'] = '2022-11-02';
|
||||
$lang->misc->releaseDate['17.7'] = '2022-10-19';
|
||||
$lang->misc->releaseDate['17.6.2'] = '2022-09-23';
|
||||
@@ -192,6 +193,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
|
||||
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
|
||||
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
|
||||
|
||||
$lang->misc->feature->all['18.0.beta1'][] = array('title' => "Multiple core processes in ZenTao are improved: A project without any product linked in is able to be created, as well as creating projects without sprints/iterations linked in; projects are able to link products beyond the father program; switch easily between ZenTao Lite mode and Full Lifecycle Management mode.", 'desc' => '');
|
||||
$lang->misc->feature->all['17.8'][] = array('title' => "We have optimized the color of status in lists, as well as the dashboard color. At the same time, the page of the task effort has been improved.", 'desc' => '');
|
||||
$lang->misc->feature->all['17.7'][] = array('title' => "The table is optimized in the transition version. At the same time, we have added the new feature of Work Order and get the Feedback features improved as well. Fix bugs.", 'desc' => '');
|
||||
$lang->misc->feature->all['17.6.2'][] = array('title' => "3 themes in ZenTao including Green, ZenTao Blue, and Young Blue are updated. At the same time, the attachments could be uploaded in bulk in ZenTao. Fix bugs.", 'desc' => '');
|
||||
|
||||
@@ -103,6 +103,7 @@ $lang->misc->feature->themeDesc = '<p>ZenTao 15.0+ a new "Youth Blue" theme
|
||||
$lang->misc->feature->visionsDesc = "<p>The concept of interface has been added since 16.5. Users can deal with R&D affairs in <span style='color: #0c60e1'>[Full Feature Interface]</span> and daily office affairs in <span style='color: #0c60e1'>[Operation Management Interface]</span>.</p><p>You can view the current interface on the avatar, and click the name of the interface to view and switch other interfaces.</p>";
|
||||
$lang->misc->feature->visionsImage = 'theme/default/images/main/visions_en.png';
|
||||
|
||||
$lang->misc->releaseDate['18.0.beta1'] = '2022-11-16';
|
||||
$lang->misc->releaseDate['17.8'] = '2022-11-02';
|
||||
$lang->misc->releaseDate['17.7'] = '2022-10-19';
|
||||
$lang->misc->releaseDate['17.6.2'] = '2022-09-23';
|
||||
@@ -192,6 +193,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
|
||||
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
|
||||
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
|
||||
|
||||
$lang->misc->feature->all['18.0.beta1'][] = array('title' => "Multiple core processes in ZenTao are improved: A project without any product linked in is able to be created, as well as creating projects without sprints/iterations linked in; projects are able to link products beyond the father program; switch easily between ZenTao Lite mode and Full Lifecycle Management mode.", 'desc' => '');
|
||||
$lang->misc->feature->all['17.8'][] = array('title' => "We have optimized the color of status in lists, as well as the dashboard color. At the same time, the page of the task effort has been improved.", 'desc' => '');
|
||||
$lang->misc->feature->all['17.7'][] = array('title' => "The table is optimized in the transition version. At the same time, we have added the new feature of Work Order and get the Feedback features improved as well. Fix bugs.", 'desc' => '');
|
||||
$lang->misc->feature->all['17.6.2'][] = array('title' => "3 themes in ZenTao including Green, ZenTao Blue, and Young Blue are updated. At the same time, the attachments could be uploaded in bulk in ZenTao. Fix bugs.", 'desc' => '');
|
||||
|
||||
@@ -103,6 +103,7 @@ $lang->misc->feature->themeDesc = '<p>ZenTao 15.0+ a new "Youth Blue" theme
|
||||
$lang->misc->feature->visionsDesc = "<p>The concept of interface has been added since 16.5. Users can deal with R&D affairs in <span style='color: #0c60e1'>[Full Feature Interface]</span> and daily office affairs in <span style='color: #0c60e1'>[Operation Management Interface]</span>.</p><p>You can view the current interface on the avatar, and click the name of the interface to view and switch other interfaces.</p>";
|
||||
$lang->misc->feature->visionsImage = 'theme/default/images/main/visions_en.png';
|
||||
|
||||
$lang->misc->releaseDate['18.0.beta1'] = '2022-11-16';
|
||||
$lang->misc->releaseDate['17.8'] = '2022-11-02';
|
||||
$lang->misc->releaseDate['17.7'] = '2022-10-19';
|
||||
$lang->misc->releaseDate['17.6.2'] = '2022-09-23';
|
||||
@@ -192,6 +193,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
|
||||
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
|
||||
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
|
||||
|
||||
$lang->misc->feature->all['18.0.beta1'][] = array('title' => "Multiple core processes in ZenTao are improved: A project without any product linked in is able to be created, as well as creating projects without sprints/iterations linked in; projects are able to link products beyond the father program; switch easily between ZenTao Lite mode and Full Lifecycle Management mode.", 'desc' => '');
|
||||
$lang->misc->feature->all['17.8'][] = array('title' => "We have optimized the color of status in lists, as well as the dashboard color. At the same time, the page of the task effort has been improved.", 'desc' => '');
|
||||
$lang->misc->feature->all['17.7'][] = array('title' => "The table is optimized in the transition version. At the same time, we have added the new feature of Work Order and get the Feedback features improved as well. Fix bugs.", 'desc' => '');
|
||||
$lang->misc->feature->all['17.6.2'][] = array('title' => "3 themes in ZenTao including Green, ZenTao Blue, and Young Blue are updated. At the same time, the attachments could be uploaded in bulk in ZenTao. Fix bugs.", 'desc' => '');
|
||||
|
||||
@@ -103,6 +103,7 @@ $lang->misc->feature->themeDesc = "<p>禅道15系列上线了全新的“
|
||||
$lang->misc->feature->visionsDesc = "<p>从16.5开始增加了界面概念,用户可以在<span style='color:#0c60e1'>[研发综合界面]</span>中处理研发事务、在<span style='color:#0c60e1'>[运营管理界面]</span>处理日常办公事务。</p><p>在头像右侧即可查看当前所处界面,点击当前界面名称可查看和切换其他的界面。</p>";
|
||||
$lang->misc->feature->visionsImage = 'theme/default/images/main/visions.png';
|
||||
|
||||
$lang->misc->releaseDate['18.0.beta1'] = '2022-11-16';
|
||||
$lang->misc->releaseDate['17.8'] = '2022-11-02';
|
||||
$lang->misc->releaseDate['17.7'] = '2022-10-19';
|
||||
$lang->misc->releaseDate['17.6.2'] = '2022-09-23';
|
||||
@@ -192,6 +193,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
|
||||
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
|
||||
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
|
||||
|
||||
$lang->misc->feature->all['18.0.beta1'][] = array('title' => '主要对禅道多项核心流程进行改进,新增无产品项目、无迭代项目;支持项目跨项目集关联产品;支持轻量管理模式和全生命周期管理模式进行切换。', 'desc' => '');
|
||||
$lang->misc->feature->all['17.8'][] = array('title' => '列表状态颜色、仪表盘颜色的改版和任务日志页面的优化。', 'desc' => '');
|
||||
$lang->misc->feature->all['17.7'][] = array('title' => '过渡版本表格优化完成。新增工单功能,优化了反馈功能。修复Bug。', 'desc' => '');
|
||||
$lang->misc->feature->all['17.6.2'][] = array('title' => '禅道更新叶兰绿、禅道蓝、青春蓝三大主题。实现附件批量上传功能。修复Bug。', 'desc' => '');
|
||||
|
||||
@@ -88,6 +88,7 @@ class programModel extends model
|
||||
$dao = $this->dao->select('id, name, program')->from(TABLE_PRODUCT)
|
||||
->where('deleted')->eq(0)
|
||||
->andWhere('vision')->eq($this->config->vision)
|
||||
->beginIF($programID !== '')->andWhere('program')->eq($programID)->fi()
|
||||
->beginIF($shadow !== 'all')->andWhere('shadow')->eq((int)$shadow)->fi()
|
||||
->beginIF($mode == 'assign')->andWhere('program')->eq($programID)->fi()
|
||||
->beginIF(strpos($status, 'noclosed') !== false)->andWhere('status')->ne('closed')->fi()
|
||||
@@ -99,7 +100,7 @@ class programModel extends model
|
||||
$productPrograms = $this->dao->select('id, name')->from(TABLE_PROJECT)->where('type')->eq('program')->andWhere('deleted')->eq('0')->fetchPairs();
|
||||
|
||||
/* Put products of current program first.*/
|
||||
if($mode != 'assign' && $programID)
|
||||
if(!empty($products) and $mode != 'assign' and $programID)
|
||||
{
|
||||
$currentProgramProducts = $products[$programID];
|
||||
unset($products[$programID]);
|
||||
|
||||
@@ -1174,12 +1174,12 @@ class project extends control
|
||||
$products = $this->product->getProducts($projectID);
|
||||
|
||||
if(!$project->multiple) unset($this->config->bug->datatable->fieldList['execution']);
|
||||
|
||||
if(!$project->hasProduct)
|
||||
{
|
||||
unset($this->config->bug->search['fields']['product']);
|
||||
if($project->model != 'scrum') unset($this->config->bug->search['fields']['plan']);
|
||||
}
|
||||
if(!$project->multiple and !$project->hasProduct) unset($this->config->bug->search['fields']['plan']);
|
||||
|
||||
$productPairs = array('0' => $this->lang->product->all);
|
||||
foreach($products as $productData) $productPairs[$productData->id] = $productData->name;
|
||||
|
||||
@@ -23,9 +23,7 @@
|
||||
#productsBox .input-group-addon > div {display: inline-block !important;}
|
||||
#productsBox .required + .text-danger.help-text {position: relative; left: 10px;}
|
||||
#productsBox > #productNameLabel {padding-top: 8px;}
|
||||
#plansBox .row {display: inline-table; width: 102%;}
|
||||
#plansBox .col-sm-4 {float: none; display: inline-block; padding-right: 5px;}
|
||||
.futureBox {vertical-align: top !important; padding-top: 13px !important;}
|
||||
#linkPlan {padding-top: 25px !important;}
|
||||
#projectType {padding-top: 7px !important;}
|
||||
.division .icon-help {margin-left: 15px}
|
||||
|
||||
@@ -160,8 +160,10 @@ function setParentProgram(parentProgram)
|
||||
var selectedProduct = $(this).find('[name^=products]').val();
|
||||
var selectedBranch = $(this).find('[name^=branch]').val();
|
||||
var selectedPlan = $('#plan' + index ).find('[name^=plans]').val();
|
||||
var newProductHtml = $(this).find('span.input-group-addon');
|
||||
|
||||
$(this).html(productSelectHtml);
|
||||
$(this).append(newProductHtml);
|
||||
$(this).find('[name^=products]').attr('name', 'products[' + index + ']').attr('id', 'products' + index).attr('data-branch', selectedBranch).attr('data-plan', selectedPlan);
|
||||
$(this).find('[name^=products]').val(selectedProduct).chosen().change();
|
||||
});
|
||||
|
||||
@@ -300,6 +300,13 @@ $lang->project->kanbanSubAclList['private'] = "Private (Only the project leader,
|
||||
$lang->project->kanbanSubAclList['open'] = "Open (accessible with project view permissions)";
|
||||
$lang->project->kanbanSubAclList['program'] = 'Open in the program (all upper-level program team leaders and stakeholders, the project leader, team members can access)';
|
||||
|
||||
global $config;
|
||||
if($config->systemMode == 'light')
|
||||
{
|
||||
unset($lang->project->subAclList['program']);
|
||||
unset($lang->project->kanbanSubAclList['program']);
|
||||
}
|
||||
|
||||
$lang->project->authList['extend'] = 'Inherit (system privilege and project privilege)';
|
||||
$lang->project->authList['reset'] = 'Reset (project privilege only)';
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='c-id'><?php echo $lang->idAB;?></th>
|
||||
<?php if(!empty($globalDisableProgram)):?>
|
||||
<?php if(empty($globalDisableProgram)):?>
|
||||
<th class='c-parent'><?php echo $lang->project->parent;?></th>
|
||||
<?php endif;?>
|
||||
<th class='c-name required'><?php echo $lang->project->name;?></th>
|
||||
@@ -51,7 +51,7 @@
|
||||
<?php $aclList = (empty($globalDisableProgram) and $project->parent) ? $lang->program->subAcls : $lang->project->acls;?>
|
||||
<tr id="projects[<?php echo $projectID;?>]">
|
||||
<td><?php echo sprintf('%03d', $projectID) . html::hidden("projectIdList[$projectID]", $projectID);?></td>
|
||||
<?php if(!empty($globalDisableProgram)):?>
|
||||
<?php if(empty($globalDisableProgram)):?>
|
||||
<?php if(isset($unauthorizedPrograms[$project->parent])):?>
|
||||
<td>
|
||||
<?php echo html::select("parents[$projectID]", $unauthorizedPrograms, $project->parent, "class='form-control chosen' onchange='outOfDateTip($projectID)' data-id='$projectID' data-name='{$project->name}' data-parent='{$project->parent}' disabled");?>
|
||||
|
||||
@@ -25,7 +25,10 @@
|
||||
$colClass = $hasWaterfall ? 'col-xs-4' : 'col-xs-6';
|
||||
?>
|
||||
<div class='<?php echo $colClass?>'>
|
||||
<?php $tab = $from == 'global' ? 'project' : $app->tab;?>
|
||||
<?php
|
||||
$tab = $from == 'global' ? 'project' : $app->tab;
|
||||
if($tab == 'product') $tab = 'project';
|
||||
?>
|
||||
<div class='project-type text-center'>
|
||||
<?php echo html::a($this->createLink("project", "create", "model=scrum&programID=$programID©ProjectID=0&extra=productID=$productID,branchID=$branchID"), "<img class='project-type-img' data-type='scrum' src='{$config->webRoot}theme/default/images/main/scrum.png'>", '', "data-app='{$tab}' class='createButton'")?>
|
||||
<h3><?php echo $lang->project->scrum; ?></h3>
|
||||
|
||||
@@ -509,8 +509,14 @@ class release extends control
|
||||
$executionIdList = array();
|
||||
foreach($builds as $build)
|
||||
{
|
||||
if(empty($build->execution)) continue;
|
||||
$executionIdList[$build->execution] = $build->execution;
|
||||
if(!empty($build->execution))
|
||||
{
|
||||
$executionIdList[$build->execution] = $build->execution;
|
||||
}
|
||||
elseif(!empty($build->project))
|
||||
{
|
||||
$executionIdList[$build->project] = $build->project;
|
||||
}
|
||||
}
|
||||
|
||||
if($browseType == 'bySearch')
|
||||
|
||||
@@ -30,6 +30,7 @@ $lang->release->confirmUnlinkBug = "Möchten Sie diesen Bug löschen?";
|
||||
$lang->release->existBuild = '『Build』『%s』 existiert bereits. Sie können den 『name』 ändern oder ein anderes 『build』 wählen.';
|
||||
$lang->release->noRelease = 'Keine Releases. ';
|
||||
$lang->release->errorDate = 'The release date should not be greater than today.';
|
||||
$lang->release->tips = 'If no build is selected for a release, a build with the same name as the release is created by default.';
|
||||
|
||||
$lang->release->basicInfo = 'Basis Info';
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ $lang->release->confirmUnlinkBug = "Voulez-vous retirer ce bug de la release ?
|
||||
$lang->release->existBuild = '『Build』『%s』existant. Vous pouvez changer『name』ou choisir un『build』.';
|
||||
$lang->release->noRelease = 'Pas de release à ce jour.';
|
||||
$lang->release->errorDate = "La date de release ne doit pas être supérieure à aujourd'hui.";
|
||||
$lang->release->tips = 'If no build is selected for a release, a build with the same name as the release is created by default.';
|
||||
|
||||
$lang->release->basicInfo = 'Infos de Base';
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
$lang->repo->common = 'Repo';
|
||||
$lang->repo->codeRepo = 'Code Library';
|
||||
$lang->repo->browse = 'View';
|
||||
$lang->repo->viewRevision = 'View Revision';
|
||||
$lang->repo->product = 'Product';
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
$lang->repo->common = 'Repo';
|
||||
$lang->repo->codeRepo = 'Code Library';
|
||||
$lang->repo->browse = 'View';
|
||||
$lang->repo->viewRevision = 'View Revision';
|
||||
$lang->repo->product = 'Product';
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
$lang->repo->common = 'Référentiel';
|
||||
$lang->repo->codeRepo = 'Code Library';
|
||||
$lang->repo->browse = 'Aff';
|
||||
$lang->repo->viewRevision = 'Aff Modifs';
|
||||
$lang->repo->product = 'Product';
|
||||
|
||||
@@ -2025,6 +2025,8 @@ class story extends control
|
||||
*/
|
||||
public function batchToTask($executionID = 0, $projectID = 0)
|
||||
{
|
||||
if($this->app->tab == 'execution' and $executionID) $this->loadModel('execution')->setMenu($executionID);
|
||||
|
||||
if(!empty($_POST['name']))
|
||||
{
|
||||
$response['result'] = 'success';
|
||||
@@ -2710,6 +2712,7 @@ class story extends control
|
||||
|
||||
$this->story->replaceURLang($storyType);
|
||||
|
||||
$this->products = $this->product->getPairs('', 0, '', 'all');
|
||||
if($this->app->tab == 'project')
|
||||
{
|
||||
$project = $this->dao->findByID($projectID)->from(TABLE_PROJECT)->fetch();
|
||||
@@ -2729,12 +2732,13 @@ class story extends control
|
||||
unset($this->lang->story->report->charts['storysPerPlan']);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->product->setMenu($productID, $branchID);
|
||||
}
|
||||
|
||||
if($storyType != 'story') unset($this->lang->story->report->charts['storysPerStage']);
|
||||
|
||||
$this->products = $this->product->getPairs('', 0, '', 'all');
|
||||
$this->product->setMenu($productID, $branchID);
|
||||
|
||||
$this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->story->reportChart;
|
||||
$this->view->position[] = $this->products[$productID];
|
||||
$this->view->position[] = $this->lang->story->reportChart;
|
||||
|
||||
@@ -3082,7 +3082,7 @@ class storyModel extends model
|
||||
}
|
||||
elseif($branch !== 'all' and $branch !== '' and strpos($storyQuery, '`branch` =') === false and $queryProductID != 'all')
|
||||
{
|
||||
$storyQuery .= " AND `branch` in($branch)";
|
||||
if($branch and strpos($storyQuery, '`branch` =') === false) $storyQuery .= " AND `branch` " . helper::dbIN($branch);
|
||||
}
|
||||
$storyQuery = preg_replace("/`plan` +LIKE +'%([0-9]+)%'/i", "CONCAT(',', `plan`, ',') LIKE '%,$1,%'", $storyQuery);
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ class testtask extends control
|
||||
$this->view->branch = $branch;
|
||||
$this->view->beginTime = $beginTime;
|
||||
$this->view->endTime = $endTime;
|
||||
$this->view->product = $this->product->getByID($productID);
|
||||
$this->view->product = $product;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -72,7 +72,9 @@ $status = strtolower($status);
|
||||
<th class='c-id text-left'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th class='c-name text-left'> <?php common::printOrderLink('name', $orderBy, $vars, $lang->testtask->name);?></th>
|
||||
<th class='text-left'> <?php common::printOrderLink('build', $orderBy, $vars, $lang->testtask->build);?></th>
|
||||
<?php if(!$product->shadow):?>
|
||||
<th class='text-left'> <?php common::printOrderLink('product', $orderBy, $vars, $lang->testtask->product);?></th>
|
||||
<?php endif;?>
|
||||
<th class='text-left'> <?php common::printOrderLink('execution', $orderBy, $vars, $lang->testtask->execution);?></th>
|
||||
<th class='c-status text-left'><?php common::printOrderLink('status', $orderBy, $vars, $lang->statusAB);?></th>
|
||||
<th class='c-user text-left'> <?php common::printOrderLink('owner', $orderBy, $vars, $lang->testtask->owner);?></th>
|
||||
@@ -101,7 +103,9 @@ $status = strtolower($status);
|
||||
<td><?php echo html::a(inlink('cases', "taskID=$task->id"), sprintf('%03d', $task->id));?></td>
|
||||
<td class='c-name' title="<?php echo $task->name?>"><?php echo html::a(inlink('cases', "taskID=$task->id"), $task->name);?></td>
|
||||
<td class='c-name' title="<?php echo $task->buildName?>"><?php echo ($task->build == 'trunk' || empty($task->buildName)) ? $lang->trunk : html::a($this->createLink('build', 'view', "buildID=$task->build"), $task->buildName, '', "data-group=execution");?></td>
|
||||
<?php if(!$product->shadow):?>
|
||||
<td class='c-name' title="<?php echo $task->productName?>"><?php echo $task->productName?></td>
|
||||
<?php endif;?>
|
||||
<td class='c-name' title="<?php echo $task->executionName?>"><?php echo $task->executionName?></td>
|
||||
<?php $statusName = $this->processStatus('testtask', $task);?>
|
||||
<td title='<?php echo $statusName;?>'>
|
||||
|
||||
@@ -28,6 +28,7 @@ $config->upgrade->maxVersion['max3_6_2'] = '17_6_1';
|
||||
$config->upgrade->maxVersion['max3_6_3'] = '17_6_2';
|
||||
$config->upgrade->maxVersion['max3_7'] = '17_7';
|
||||
$config->upgrade->maxVersion['max3_8'] = '17_8';
|
||||
$config->upgrade->maxVersion['max4_0_beta1'] = '18_0_beta1';
|
||||
|
||||
$config->upgrade->bizVersion = array();
|
||||
$config->upgrade->bizVersion['biz1_0'] = '9_5_1';
|
||||
@@ -94,6 +95,7 @@ $config->upgrade->bizVersion['biz7_6_1'] = '17_6_1';
|
||||
$config->upgrade->bizVersion['biz7_6_2'] = '17_6_2';
|
||||
$config->upgrade->bizVersion['biz7_7'] = '17_7';
|
||||
$config->upgrade->bizVersion['biz7_8'] = '17_8';
|
||||
$config->upgrade->bizVersion['biz8_0_beta1'] = '18_0_beta1';
|
||||
|
||||
$config->upgrade->proVersion = array();
|
||||
$config->upgrade->proVersion['pro1_0'] = '3_1';
|
||||
|
||||
@@ -140,7 +140,7 @@ $lang->upgrade->selectMode = 'Select Mode';
|
||||
$lang->upgrade->mode = 'Mode';
|
||||
$lang->upgrade->usage = 'Usage scenarios';
|
||||
$lang->upgrade->lightUsage = 'Provides the core function of project management, suitable for small R&D teams';
|
||||
$lang->upgrade->newUsage = 'The concept is more complete and rigorous, and the function is more abundant. It is suitable for medium and large R&D teams';
|
||||
$lang->upgrade->ALMUsage = 'The concept is more complete and rigorous, and the function is more abundant. It is suitable for medium and large R&D teams';
|
||||
$lang->upgrade->program = 'Program';
|
||||
$lang->upgrade->productRR = 'Product - R&D requirements';
|
||||
$lang->upgrade->productUR = 'Product - User requirements';
|
||||
|
||||
@@ -169,6 +169,7 @@ $lang->upgrade->fromVersions['17_6_1'] = '17.6.1';
|
||||
$lang->upgrade->fromVersions['17_6_2'] = '17.6.2';
|
||||
$lang->upgrade->fromVersions['17_7'] = '17.7';
|
||||
$lang->upgrade->fromVersions['17_8'] = '17.8';
|
||||
$lang->upgrade->fromVersions['18_0_beta1'] = '18.0.beta1';
|
||||
|
||||
global $config;
|
||||
/* Lite. */
|
||||
@@ -342,6 +343,7 @@ $lang->upgrade->fromVersions['biz7_6_1'] = 'Biz7.6.1';
|
||||
$lang->upgrade->fromVersions['biz7_6_2'] = 'Biz7.6.2';
|
||||
$lang->upgrade->fromVersions['biz7_7'] = 'Biz7.7';
|
||||
$lang->upgrade->fromVersions['biz7_8'] = 'Biz7.8';
|
||||
$lang->upgrade->fromVersions['biz8_0_beta1'] = 'Biz8.0.beta1';
|
||||
|
||||
/* Max. */
|
||||
$lang->upgrade->fromVersions['max2_0_beta4'] = 'Max2.0.beta4';
|
||||
@@ -371,3 +373,4 @@ $lang->upgrade->fromVersions['max3_6_1'] = 'Max3.6.1';
|
||||
$lang->upgrade->fromVersions['max3_6_2'] = 'Max3.6.2';
|
||||
$lang->upgrade->fromVersions['max3_6_3'] = 'Max3.6.3';
|
||||
$lang->upgrade->fromVersions['max3_7'] = 'Max3.7';
|
||||
$lang->upgrade->fromVersions['max3_8'] = 'Max3.8';
|
||||
|
||||
@@ -567,6 +567,15 @@ class upgradeModel extends model
|
||||
$this->execSQL($xuanxuanSql);
|
||||
}
|
||||
break;
|
||||
case '17_8':
|
||||
if(!$executedXuanxuan)
|
||||
{
|
||||
$xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'upgradexuanxuan6.5.sql';
|
||||
$this->execSQL($xuanxuanSql);
|
||||
}
|
||||
$this->xuanSetMuteForHiddenGroups();
|
||||
$this->xuanNotifyGroupHiddenUsers();
|
||||
break;
|
||||
}
|
||||
|
||||
$this->deletePatch();
|
||||
@@ -1042,6 +1051,10 @@ class upgradeModel extends model
|
||||
$xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'upgradexuanxuan6.4.sql';
|
||||
$confirmContent .= file_get_contents($xuanxuanSql);
|
||||
case '17_7': $confirmContent .= file_get_contents($this->getUpgradeFile('17.7'));
|
||||
case '17_8':
|
||||
$confirmContent .= file_get_contents($this->getUpgradeFile('17.8'));
|
||||
$xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'upgradexuanxuan6.5.sql';
|
||||
$confirmContent .= file_get_contents($xuanxuanSql);
|
||||
}
|
||||
|
||||
return $confirmContent;
|
||||
@@ -7899,4 +7912,34 @@ class upgradeModel extends model
|
||||
/* Delete history module */
|
||||
$this->dao->delete()->from(TABLE_MODULE)->where('type')->eq('feedback')->andWhere('root')->eq(0)->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Xuan: Set mute and freeze for hidden groups.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function xuanSetMuteForHiddenGroups()
|
||||
{
|
||||
$this->dao->update(TABLE_IM_CHATUSER)->set('hide')->eq('0')->set('mute')->eq('1')->set('freeze')->eq('1')->where('hide')->eq('1')->andWhere('quit')->eq('0000-00-00 00:00:00')->exec();
|
||||
return !dao::isError();
|
||||
}
|
||||
|
||||
/**
|
||||
* Xuan: Notify users who have hide the group.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function xuanNotifyGroupHiddenUsers()
|
||||
{
|
||||
$noticeUsers = $this->dao->select('user')->from(TABLE_IM_CHATUSER)->where('hide')->eq('1')->andWhere('quit')->eq('0000-00-00 00:00:00')->groupBy('user')->fetchAll();
|
||||
|
||||
$sender = new stdClass();
|
||||
$sender->avatar = commonModel::getSysURL() . '/www/favicon.ico';
|
||||
$sender->id = 'upgradeArchive';
|
||||
$sender->realname = $this->lang->upgrade->archiveChangeNoticeTitle;
|
||||
$this->loadModel('im')->messageCreateNotify(array_keys($noticeUsers), '', '', $this->lang->upgrade->archiveChangeNoticeContent, 'text', '', array(), $sender);
|
||||
return !dao::isError();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user