Merge branch 'sprint/zentaopms240' of https://gitlab.zcorp.cc/easycorp/zentaopms into sprint/zentaopms240_lanzongjun
This commit is contained in:
@@ -207,7 +207,7 @@ $lang->scrum->menu->index = array('link' => "{$lang->dashboard}|project|inde
|
||||
$lang->scrum->menu->execution = array('link' => "$lang->executionCommon|project|execution|status=all&projectID=%s", 'exclude' => 'execution-testreport', 'subModule' => 'task');
|
||||
$lang->scrum->menu->story = array('link' => "$lang->SRCommon|projectstory|story|projectID=%s", 'subModule' => 'projectstory,tree', 'alias' => 'story,track');
|
||||
$lang->scrum->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=project&objectID=%s", 'subModule' => 'doc');
|
||||
$lang->scrum->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport,execution', 'alias' => 'bug,testtask,testcase,testreport', 'exclude' => 'execution-create,execution-batchedit');
|
||||
$lang->scrum->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport', 'alias' => 'bug,testtask,testcase,testreport', 'exclude' => 'execution-create,execution-batchedit');
|
||||
$lang->scrum->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
|
||||
$lang->scrum->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s");
|
||||
$lang->scrum->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease');
|
||||
@@ -377,6 +377,34 @@ $lang->execution->menu->settings['subMenu']->whitelist = array('link' => "$lang-
|
||||
|
||||
$lang->execution->dividerMenu = ',story,build,';
|
||||
|
||||
$lang->noSprint = new stdclass();
|
||||
$lang->noSprint->menu = new stdclass();
|
||||
$lang->noSprint->menu->task = $lang->execution->menu->task;
|
||||
$lang->noSprint->menu->kanban = $lang->execution->menu->kanban;
|
||||
$lang->noSprint->menu->burn = $lang->execution->menu->burn;
|
||||
$lang->noSprint->menu->view = $lang->execution->menu->view;
|
||||
$lang->noSprint->menu->story = $lang->execution->menu->story;
|
||||
$lang->noSprint->menu->qa = $lang->scrum->menu->qa;
|
||||
$lang->noSprint->menu->devops = $lang->scrum->menu->devops;
|
||||
$lang->noSprint->menu->doc = $lang->scrum->menu->doc;
|
||||
$lang->noSprint->menu->build = $lang->scrum->menu->build;
|
||||
$lang->noSprint->menu->dynamic = $lang->scrum->menu->dynamic;
|
||||
$lang->noSprint->menu->settings = $lang->scrum->menu->settings;
|
||||
|
||||
$lang->noSprint->dividerMenu = ',story,build,';
|
||||
|
||||
$lang->noSprint->menuOrder[5] = 'task';
|
||||
$lang->noSprint->menuOrder[10] = 'kanban';
|
||||
$lang->noSprint->menuOrder[15] = 'burn';
|
||||
$lang->noSprint->menuOrder[20] = 'view';
|
||||
$lang->noSprint->menuOrder[25] = 'story';
|
||||
$lang->noSprint->menuOrder[30] = 'qa';
|
||||
$lang->noSprint->menuOrder[35] = 'devops';
|
||||
$lang->noSprint->menuOrder[40] = 'doc';
|
||||
$lang->noSprint->menuOrder[45] = 'build';
|
||||
$lang->noSprint->menuOrder[50] = 'dynamic';
|
||||
$lang->noSprint->menuOrder[55] = 'settings';
|
||||
|
||||
/* QA menu.*/
|
||||
$lang->qa->menu = new stdclass();
|
||||
$lang->qa->menu->index = array('link' => "$lang->dashboard|qa|index");
|
||||
|
||||
@@ -3402,7 +3402,7 @@ EOD;
|
||||
* @param int $objectID
|
||||
* @param array $params
|
||||
*/
|
||||
static private function setMenuVarsEx($menu, $objectID, $params = array())
|
||||
static public function setMenuVarsEx($menu, $objectID, $params = array())
|
||||
{
|
||||
if(is_array($menu))
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?php
|
||||
<?php
|
||||
if($extView = $this->getExtViewFile(__FILE__)){include $extView; return helper::cd();}
|
||||
$clientLang = $app->getClientLang();
|
||||
$webRoot = $this->app->getWebRoot();
|
||||
@@ -81,7 +81,7 @@ $xuanExtFile = $extensionRoot . 'xuan/common/ext/view/header.xuanxuan.html.hook.
|
||||
if(file_exists($xuanExtFile)) include $xuanExtFile;
|
||||
?>
|
||||
</head>
|
||||
<?php
|
||||
<?php
|
||||
$bodyClass = $this->app->getViewType() == 'xhtml' ? 'allow-self-open' : '';
|
||||
if(isset($pageBodyClass)) $bodyClass = $bodyClass . ' ' . $pageBodyClass;
|
||||
if($this->moduleName == 'index' && $this->methodName == 'index') $bodyClass .= ' menu-' . ($this->cookie->hideMenu ? 'hide' : 'show');
|
||||
@@ -93,3 +93,10 @@ if(strpos($_SERVER['HTTP_USER_AGENT'], 'xuanxuan') !== false) $bodyClass .= ' xx
|
||||
.main-actions-holder {display: none !important;}
|
||||
</style>
|
||||
<?php endif;?>
|
||||
<?php if(isset($this->config->resetNavGroup)):?>
|
||||
<script>
|
||||
<?php foreach($this->config->resetNavGroup as $key => $value):?>
|
||||
parent.navGroup.<?php echo $key?> = '<?php echo $value?>';
|
||||
<?php endforeach;?>
|
||||
</script>
|
||||
<?php endif;?>
|
||||
|
||||
@@ -642,11 +642,14 @@ class custom extends control
|
||||
|
||||
$this->app->loadLang('upgrade');
|
||||
|
||||
$this->view->title = $this->lang->custom->mode;
|
||||
$this->view->position[] = $this->lang->custom->common;
|
||||
$this->view->position[] = $this->view->title;
|
||||
$this->view->mode = $mode;
|
||||
$this->view->program = $this->loadModel('program')->getTopPairs('', '', true);
|
||||
$hasMoreData = $this->custom->hasMoreData() ? 'yes' : 'no';
|
||||
$this->lang->custom->changeModeContentTips['lean'] = $this->lang->custom->hasMoreData[$hasMoreData];
|
||||
|
||||
$this->view->title = $this->lang->custom->mode;
|
||||
$this->view->position[] = $this->lang->custom->common;
|
||||
$this->view->position[] = $this->view->title;
|
||||
$this->view->mode = $mode;
|
||||
$this->view->program = $this->loadModel('program')->getTopPairs('', '', true);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -1,15 +1,40 @@
|
||||
$(function()
|
||||
{
|
||||
$('#modeTab').addClass('btn-active-text');
|
||||
$('[name=mode]').change(function()
|
||||
|
||||
$('[name=mode]').change(function(){$("#selectDefaultProgram").toggle($(this).val() == 'lean'); });
|
||||
|
||||
$(document).on('click', '#submit', function()
|
||||
{
|
||||
if($(this).val() == 'lean')
|
||||
if(mode == $('[name=mode]:checked').val()) return false;
|
||||
|
||||
if($(this).hasClass('canSubmit'))
|
||||
{
|
||||
$("#selectDefaultProgram").removeClass('hidden');
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#selectDefaultProgram").addClass('hidden');
|
||||
$(this).removeClass('canSubmit');
|
||||
return true;
|
||||
}
|
||||
|
||||
$(this).addClass('canSubmit');
|
||||
|
||||
var $mode = $('[name=mode]:checked').val();
|
||||
var confirmTitle = changeModeTitleTips[$mode];
|
||||
var confirmContent = changeModeContentTips[$mode]
|
||||
|
||||
$('#confirmModal .modal-title').html(confirmTitle);
|
||||
$('#confirmModal .modal-body').html(confirmContent);
|
||||
|
||||
$('#confirmModal').modal('show');
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
$(document).on('click', '.btn-confirm', function()
|
||||
{
|
||||
$('#submit').click();
|
||||
});
|
||||
|
||||
$('#confirmModal').on('hide.zui.modal', function()
|
||||
{
|
||||
$('#submit').removeClass('canSubmit');
|
||||
})
|
||||
})
|
||||
|
||||
@@ -240,11 +240,17 @@ $lang->custom->sprintConceptList[1] = 'Program Product Sprint';
|
||||
|
||||
$lang->custom->workingList['full'] = 'Full Management of Dev';
|
||||
|
||||
$lang->custom->menuTip = 'Click to show/hide navigation bar. Drag to swtich display order.';
|
||||
$lang->custom->saveFail = 'Failed to save!';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->changeClassicTip = 'The Program module will be hidden, if you switch to the classic mode.';
|
||||
$lang->custom->changeModeTips = 'Historical deleted data does not participate in the data merging process. After switching the mode, it will not support restoration. Please know.';
|
||||
$lang->custom->menuTip = 'Click to show/hide navigation bar. Drag to swtich display order.';
|
||||
$lang->custom->saveFail = 'Failed to save!';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->changeModeTips = 'Historical deleted data does not participate in the data merging process. After switching the mode, it will not support restoration. Please know.';
|
||||
|
||||
$lang->custom->changeModeTitleTips['new'] = 'Are you sure you want to switch to the new mode?';
|
||||
$lang->custom->changeModeTitleTips['lean'] = 'Are you sure you want to switch to the lean mode?';
|
||||
$lang->custom->changeModeContentTips['new'] = 'The new mode is suitable for medium and large R&D teams. After switching the new mode, the system will enable functions such as program sets.';
|
||||
|
||||
$lang->custom->hasMoreData['yes'] = 'After switching to lean mode, the system will close the program function, and the related functions of the program will be hidden.';
|
||||
$lang->custom->hasMoreData['no'] = 'After switching to lean mode, the system will close functions such as program sets, waterfall projects, asset libraries and user requirements.';
|
||||
|
||||
$lang->custom->scoreStatus[1] = 'On';
|
||||
$lang->custom->scoreStatus[0] = 'Off';
|
||||
|
||||
@@ -240,11 +240,17 @@ $lang->custom->sprintConceptList[1] = 'Program Product Sprint';
|
||||
|
||||
$lang->custom->workingList['full'] = 'Application Lifecycle Management';
|
||||
|
||||
$lang->custom->menuTip = 'Click to show/hide the menu. Drag to switch display order.';
|
||||
$lang->custom->saveFail = 'Failed to save!';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->changeClassicTip = 'The Program module will be hidden, if you switch to the classic mode.';
|
||||
$lang->custom->changeModeTips = 'Historical deleted data does not participate in the data merging process. After switching the mode, it will not support restoration. Please know.';
|
||||
$lang->custom->menuTip = 'Click to show/hide the menu. Drag to switch display order.';
|
||||
$lang->custom->saveFail = 'Failed to save!';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->changeModeTips = 'Historical deleted data does not participate in the data merging process. After switching the mode, it will not support restoration. Please know.';
|
||||
|
||||
$lang->custom->changeModeTitleTips['new'] = 'Are you sure you want to switch to the new mode?';
|
||||
$lang->custom->changeModeTitleTips['lean'] = 'Are you sure you want to switch to the lean mode?';
|
||||
$lang->custom->changeModeContentTips['new'] = 'The new mode is suitable for medium and large R&D teams. After switching the new mode, the system will enable functions such as program sets.';
|
||||
|
||||
$lang->custom->hasMoreData['yes'] = 'After switching to lean mode, the system will close the program function, and the related functions of the program will be hidden.';
|
||||
$lang->custom->hasMoreData['no'] = 'After switching to lean mode, the system will close functions such as program sets, waterfall projects, asset libraries and user requirements.';
|
||||
|
||||
$lang->custom->scoreStatus[1] = 'On';
|
||||
$lang->custom->scoreStatus[0] = 'Off';
|
||||
|
||||
@@ -240,11 +240,17 @@ $lang->custom->sprintConceptList[1] = 'Program Product Sprint';
|
||||
|
||||
$lang->custom->workingList['full'] = 'Application Lifecycle Management';
|
||||
|
||||
$lang->custom->menuTip = "Cliquez pour montrer/cacher le menu. Déplacez pour changer l'ordre d'affichage.";
|
||||
$lang->custom->saveFail = 'Echec de la sauvegarde !';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->changeClassicTip = 'The Program module will be hidden, if you switch to the classic mode.';
|
||||
$lang->custom->changeModeTips = 'Historical deleted data does not participate in the data merging process. After switching the mode, it will not support restoration. Please know.';
|
||||
$lang->custom->menuTip = "Cliquez pour montrer/cacher le menu. Déplacez pour changer l'ordre d'affichage.";
|
||||
$lang->custom->saveFail = 'Echec de la sauvegarde !';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->changeModeTips = 'Historical deleted data does not participate in the data merging process. After switching the mode, it will not support restoration. Please know.';
|
||||
|
||||
$lang->custom->changeModeTitleTips['new'] = 'Are you sure you want to switch to the new mode?';
|
||||
$lang->custom->changeModeTitleTips['lean'] = 'Are you sure you want to switch to the lean mode?';
|
||||
$lang->custom->changeModeContentTips['new'] = 'The new mode is suitable for medium and large R&D teams. After switching the new mode, the system will enable functions such as program sets.';
|
||||
|
||||
$lang->custom->hasMoreData['yes'] = 'After switching to lean mode, the system will close the program function, and the related functions of the program will be hidden.';
|
||||
$lang->custom->hasMoreData['no'] = 'After switching to lean mode, the system will close functions such as program sets, waterfall projects, asset libraries and user requirements.';
|
||||
|
||||
$lang->custom->scoreStatus[1] = 'On';
|
||||
$lang->custom->scoreStatus[0] = 'Off';
|
||||
|
||||
@@ -240,11 +240,17 @@ $lang->custom->sprintConceptList[1] = '项目 产品 冲刺';
|
||||
|
||||
$lang->custom->workingList['full'] = '完整研发管理工具';
|
||||
|
||||
$lang->custom->menuTip = '点击显示或隐藏导航条目,拖拽来更改显示顺序。';
|
||||
$lang->custom->saveFail = '保存失败!';
|
||||
$lang->custom->page = '页面';
|
||||
$lang->custom->changeClassicTip = '切换为老版本的习惯后,系统将取消项目集功能。';
|
||||
$lang->custom->changeModeTips = '历史删除数据不参与数据归并流程,切换模式后将不支持还原,请知悉';
|
||||
$lang->custom->menuTip = '点击显示或隐藏导航条目,拖拽来更改显示顺序。';
|
||||
$lang->custom->saveFail = '保存失败!';
|
||||
$lang->custom->page = '页面';
|
||||
$lang->custom->changeModeTips = '历史删除数据不参与数据归并流程,切换模式后将不支持还原,请知悉';
|
||||
|
||||
$lang->custom->changeModeTitleTips['new'] = '您确定要切换到综合模式吗?';
|
||||
$lang->custom->changeModeTitleTips['lean'] = '您确定要切换到迅捷模式吗?';
|
||||
$lang->custom->changeModeContentTips['new'] = '综合模式适用于中大型研发团队,切换综合模式后,系统将启用项目集等功能。';
|
||||
|
||||
$lang->custom->hasMoreData['yes'] = '切换到迅捷模式后,系统将关闭项目集功能,项目集的相关功能将会被隐藏。';
|
||||
$lang->custom->hasMoreData['no'] = '切换到迅捷模式后,系统将关闭项目集、瀑布项目、资产库、用户需求等功能。';
|
||||
|
||||
$lang->custom->scoreStatus[1] = '开启';
|
||||
$lang->custom->scoreStatus[0] = '关闭';
|
||||
|
||||
@@ -816,4 +816,19 @@ class customModel extends model
|
||||
$this->dao->update(TABLE_BLOCK)->set("`title` = REPLACE(`title`, '{$commonList[$oldIndex]}', '{$commonList[$newIndex]}')")->where('source')->eq('product')->exec();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for waterfall, assetLib, URStory data in new mode.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function hasMoreData()
|
||||
{
|
||||
$waterfallCount = $this->dao->select('COUNT(*) AS waterfallCount')->from(TABLE_PROJECT)->where('model')->eq('waterfall')->andWhere('deleted')->ne('0')->fetch('waterfallCount');
|
||||
$assetLibCount = $this->dao->select('COUNT(*) AS assetLibCount')->from(TABLE_ASSETLIB)->where('deleted')->ne('0')->fetch('assetLibCount');
|
||||
$URStoryCount = $this->dao->select('COUNT(*) AS URStoryCount')->from(TABLE_STORY)->where('type')->eq('requirement')->andWhere('deleted')->ne('0')->fetch('URStoryCount');
|
||||
|
||||
return $waterfallCount || $assetLibCount || $URStoryCount;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,8 +11,11 @@
|
||||
*/
|
||||
?>
|
||||
<?php include 'header.html.php';?>
|
||||
<?php js::set('changeModeTitleTips', $lang->custom->changeModeTitleTips);?>
|
||||
<?php js::set('changeModeContentTips', $lang->custom->changeModeContentTips);?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<form class="load-indicator main-form" method='post'>
|
||||
<form id='modeForm' class="load-indicator main-form" method='post'>
|
||||
<div class='main-header'>
|
||||
<div class='heading'>
|
||||
<strong><?php echo $lang->custom->mode?></strong>
|
||||
@@ -28,18 +31,37 @@
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<?php $class = $mode == 'new' ? "class='hidden'" : "";?>
|
||||
<?php $class = $mode == 'new' ? "class='hide'" : "";?>
|
||||
<tr id="selectDefaultProgram" <?php echo $class;?>>
|
||||
<td></td>
|
||||
<td><?php echo html::select('program', $program, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<?php echo html::submitButton($lang->custom->switch);?>
|
||||
</td>
|
||||
<td><?php echo html::submitButton($lang->custom->switch);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class='modal fade' id='confirmModal'>
|
||||
<div class='modal-dialog'>
|
||||
<div class='modal-content'>
|
||||
<div class='modal-header'>
|
||||
<button type='button' class='close' data-dismiss='modal'><span aria-hidden='true'>×</span><span class='sr-only'><?php echo $this->lang->close;?></span></button>
|
||||
<h4 class='modal-title'></h4>
|
||||
</div>
|
||||
<div class='modal-body'></div>
|
||||
<div class='modal-footer'>
|
||||
<button type='button' class='btn btn-primary btn-wide btn-confirm'><?php echo $lang->confirm;?></button>
|
||||
<button type='button' class='btn btn-default btn-wide' data-dismiss='modal'><?php echo $this->lang->cancel;?></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<style>
|
||||
#confirmModal .modal-header {border-bottom: 0px}
|
||||
#confirmModal .modal-header h4.modal-title{font-weight: 700}
|
||||
#confirmModal .modal-footer {border-top: 0px; text-align: center}
|
||||
</style>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -122,6 +122,8 @@ class executionModel extends model
|
||||
|
||||
$this->lang->switcherMenu = $this->getSwitcher($executionID, $this->app->rawModule, $this->app->rawMethod);
|
||||
common::setMenuVars('execution', $executionID);
|
||||
|
||||
$this->loadModel('project')->setNoSprintMenu($executionID);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -31,6 +31,9 @@ $config->project->sortFields->end = 'end';
|
||||
$config->project->sortFields->status = 'status';
|
||||
$config->project->sortFields->budget = 'budget';
|
||||
|
||||
$config->project->noSprint['project'] = ',qa,devops,doc,build,dynamic,settings,';
|
||||
$config->project->noSprint['execution'] = ',task,kanban,burn,view,story,';
|
||||
|
||||
global $lang;
|
||||
$config->project->datatable = new stdclass();
|
||||
$config->project->datatable->defaultField = array('id', 'name', 'PM', 'status', 'begin', 'end', 'budget', 'progress', 'actions');
|
||||
|
||||
@@ -304,6 +304,17 @@ class project extends control
|
||||
$this->project->setMenu($projectID);
|
||||
|
||||
$project = $this->project->getByID($projectID);
|
||||
|
||||
/* Locate to task when set no execution. */
|
||||
if($project->noSprint)
|
||||
{
|
||||
$executions = $this->loadModel('execution')->getList($project->id);
|
||||
foreach($executions as $execution)
|
||||
{
|
||||
if($execution->noSprint) $this->locate($this->createLink('execution', 'task', "executionID={$execution->id}"));
|
||||
}
|
||||
}
|
||||
|
||||
if(empty($project) || $project->type != 'project') return print(js::error($this->lang->notFound) . js::locate('back'));
|
||||
|
||||
if(!$projectID) $this->locate($this->createLink('project', 'browse'));
|
||||
|
||||
@@ -2472,9 +2472,96 @@ class projectModel extends model
|
||||
if(isset($project->acl) and $project->acl == 'open') unset($this->lang->project->menu->settings['subMenu']->whitelist);
|
||||
|
||||
common::setMenuVars('project', $objectID);
|
||||
|
||||
$this->setNoSprintMenu($objectID);
|
||||
return $objectID;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set noSprint menu.
|
||||
*
|
||||
* @param int $objectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setNoSprintMenu($objectID)
|
||||
{
|
||||
$moduleName = $this->app->rawModule;
|
||||
$methodName = $this->app->rawMethod;
|
||||
|
||||
$navGroup = zget($this->lang->navGroup, $moduleName);
|
||||
$this->config->resetNavGroup['execution'] = 'execution';
|
||||
$this->config->resetNavGroup[$moduleName] = $navGroup;
|
||||
|
||||
$project = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($objectID)->andWhere('noSprint')->eq(1)->fetch();
|
||||
if(empty($project)) return;
|
||||
if($project->type != 'project' and $project->type != 'sprint') return;
|
||||
|
||||
if($project->type == 'project')
|
||||
{
|
||||
$projectID = $project->id;
|
||||
$executionID = $this->dao->select('*')->from(TABLE_EXECUTION)
|
||||
->where('project')->eq($projectID)
|
||||
->andWhere('noSprint')->eq(1)
|
||||
->andWhere('type')->eq('sprint')
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetch('id');
|
||||
}
|
||||
elseif($project->type == 'sprint')
|
||||
{
|
||||
$executionID = $project->id;
|
||||
$projectID = $this->dao->select('*')->from(TABLE_PROJECT)
|
||||
->where('id')->eq($project->project)
|
||||
->andWhere('noSprint')->eq(1)
|
||||
->andWhere('type')->eq('project')
|
||||
->andWhere('deleted')->eq(0)
|
||||
->fetch('id');
|
||||
}
|
||||
if(empty($projectID) or empty($executionID)) return;
|
||||
|
||||
$this->app->tab = 'project';
|
||||
$_COOKIE['tab'] = 'project';
|
||||
|
||||
$this->lang->navGroup->$moduleName = 'project';
|
||||
$this->lang->$navGroup->menu = $this->lang->noSprint->menu;
|
||||
$this->lang->$navGroup->menuOrder = $this->lang->noSprint->menuOrder;
|
||||
$this->lang->$navGroup->dividerMenu = $this->lang->noSprint->dividerMenu;
|
||||
|
||||
foreach($this->lang->$navGroup->menu as $label => $menu)
|
||||
{
|
||||
$objectID = 0;
|
||||
if(strpos($this->config->project->noSprint['project'], ",{$label},") !== false) $objectID = $projectID;
|
||||
if(strpos($this->config->project->noSprint['execution'], ",{$label},") !== false)
|
||||
{
|
||||
$objectID = $executionID;
|
||||
$this->lang->$navGroup->menu->$label['subModule'] = 'project';
|
||||
}
|
||||
$this->lang->$navGroup->menu->$label = commonModel::setMenuVarsEx($menu, $objectID);
|
||||
if(isset($menu['subMenu']))
|
||||
{
|
||||
foreach($menu['subMenu'] as $key1 => $subMenu) $this->lang->$navGroup->menu->{$label}['subMenu']->$key1 = common::setMenuVarsEx($subMenu, $objectID);
|
||||
}
|
||||
|
||||
if(!isset($menu['dropMenu'])) continue;
|
||||
foreach($menu['dropMenu'] as $key2 => $dropMenu)
|
||||
{
|
||||
$this->lang->$navGroup->menu->{$label}['dropMenu']->$key2 = common::setMenuVarsEx($dropMenu, $objectID);
|
||||
|
||||
if(!isset($dropMenu['subMenu'])) continue;
|
||||
foreach($dropMenu['subMenu'] as $key3 => $subMenu) $this->lang->$navGroup->menu->{$label}['dropMenu']->$key3 = common::setMenuVarsEx($subMenu, $objectID);
|
||||
}
|
||||
}
|
||||
|
||||
$this->config->resetNavGroup[$moduleName] = 'project';
|
||||
|
||||
/* If objectID is set, cannot use homeMenu. */
|
||||
unset($this->lang->$navGroup->homeMenu);
|
||||
$this->lang->switcherMenu = $this->getSwitcher($projectID, $moduleName, $methodName);
|
||||
$this->lang->project->menu = $this->lang->$navGroup->menu;
|
||||
$this->lang->project->menuOrder = $this->lang->$navGroup->menuOrder;
|
||||
$this->lang->project->dividerMenu = $this->lang->$navGroup->dividerMenu;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the project model can be changed.
|
||||
*
|
||||
|
||||
@@ -687,8 +687,9 @@ class upgrade extends control
|
||||
if(dao::isError()) return print(js::error(dao::getError()));
|
||||
$this->locate(inlink('afterExec', "fromVersion=$fromVersion"));
|
||||
}
|
||||
$this->view->title = $this->lang->upgrade->selectMergeMode;
|
||||
$this->view->systemMode = $mode;
|
||||
$this->view->title = $this->lang->upgrade->selectMergeMode;
|
||||
$this->view->fromVersion = $fromVersion;
|
||||
$this->view->systemMode = $mode;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
|
||||
@@ -535,6 +535,7 @@ $(function()
|
||||
/* Toggles data migration mode events. */
|
||||
$('input[name="projectType"]').change(function()
|
||||
{
|
||||
$('.programForm').show();
|
||||
$('.createProjectTip').toggleClass('hidden');
|
||||
$('.createExecutionTip').toggleClass('hidden');
|
||||
$('.projectName').toggleClass('hidden');
|
||||
@@ -544,6 +545,7 @@ $(function()
|
||||
|
||||
if($(this).val() == 'project')
|
||||
{
|
||||
if(mode == 'lean') $('.programForm').hide();
|
||||
$('[name=projectAcl]').attr('disabled', 'disabled');
|
||||
$('[name=programAcl]').removeAttr('disabled');
|
||||
}
|
||||
@@ -811,8 +813,10 @@ function toggleProject(obj)
|
||||
*/
|
||||
function hiddenProject()
|
||||
{
|
||||
$('#programBox').show();
|
||||
if($('[name^=sprints]:checked').length == 0)
|
||||
{
|
||||
if(mode == 'lean') $('#programBox').hide();
|
||||
$(".programParams input").attr('disabled' ,'disabled');
|
||||
$(".programParams select").attr('disabled' ,'disabled').trigger('chosen:updated');
|
||||
$('.programParams').hide();
|
||||
@@ -833,6 +837,7 @@ function hiddenProject()
|
||||
|
||||
if($('#newProject0').is(':checked')) $('#projects').attr('disabled', 'disabled');
|
||||
|
||||
$('.programForm').show();
|
||||
var projectType = $('input[name="projectType"]:checked').val();
|
||||
if(projectType == 'project')
|
||||
{
|
||||
@@ -842,6 +847,7 @@ function hiddenProject()
|
||||
$('.projectStatus').addClass('hidden');
|
||||
$('[name=projectAcl]').attr('disabled', 'disabled');
|
||||
$('[name=programAcl]').removeAttr('disabled');
|
||||
if(mode == 'lean') $('.programForm').hide();
|
||||
}
|
||||
|
||||
if(projectType == 'execution')
|
||||
@@ -853,6 +859,12 @@ function hiddenProject()
|
||||
$('[name=programAcl]').attr('disabled', 'disabled');
|
||||
$('[name=projectAcl]').removeAttr('disabled');
|
||||
}
|
||||
|
||||
if(mode == 'lean')
|
||||
{
|
||||
$('form #newProgram0').prop('checked', false);
|
||||
toggleProgram($('form #newProgram0'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<table class='table table-form programParams'>
|
||||
<caption class='strong'><?php echo $lang->upgrade->dataMethod;?></caption>
|
||||
<tr><td><?php echo html::radio('projectType', $this->lang->upgrade->projectType, $projectType);?></td></tr>
|
||||
<tr><td class='createProjectTip'><?php echo $lang->upgrade->createProjectTip?></td></tr>
|
||||
<tr><td class='createExecutionTip hidden'><?php echo $lang->upgrade->createExecutionTip?></td></tr>
|
||||
<tr><td class='createProjectTip text-gray <?php echo $projectType == 'project' ? '' : 'hidden';?>'><?php echo $lang->upgrade->createProjectTip?></td></tr>
|
||||
<tr><td class='createExecutionTip text-gray <?php echo $projectType == 'execution' ? '' : 'hidden';?>'><?php echo $lang->upgrade->createExecutionTip?></td></tr>
|
||||
</table>
|
||||
<table class='table table-form'>
|
||||
<table class='table table-form programForm'>
|
||||
<caption class='strong'><?php echo $lang->upgrade->setProgram;?></caption>
|
||||
<tr>
|
||||
<tr class="<?php echo $systemMode == 'lean' ? 'hide' : '';?>">
|
||||
<th>
|
||||
<span class="pgm-exist hidden"><?php echo $lang->upgrade->existProgram;?></span>
|
||||
<span class="pgm-no-exist"><?php echo $lang->upgrade->programName;?></span>
|
||||
@@ -25,7 +25,7 @@
|
||||
<?php echo html::hidden('programID', '');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr class="<?php echo $systemMode == 'lean' ? 'hide' : '';?>">
|
||||
<th><?php echo $lang->program->common . $lang->program->status;?></th>
|
||||
<td><?php echo html::select('programStatus', $lang->program->statusList, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
@@ -53,7 +53,7 @@
|
||||
<th><?php echo $lang->project->status;?></th>
|
||||
<td><?php echo html::select('projectStatus', $lang->project->statusList, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr class='LineName'>
|
||||
<tr class='LineName <?php echo $systemMode == 'lean' ? 'hide' : '';?>'>
|
||||
<th>
|
||||
<span class="line-exist hidden"><?php echo $lang->upgrade->existLine;?></span>
|
||||
<span class="line-no-exist"><?php echo $lang->upgrade->line;?></span>
|
||||
@@ -94,6 +94,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr class='programParams'>
|
||||
<?php if($systemMode == 'lean') unset($lang->project->subAclList['program']);?>
|
||||
<th><?php echo $lang->project->acl;?></th>
|
||||
<td class='programAcl'><?php echo nl2br(html::radio('programAcl', $lang->program->aclList, 'open', '', 'block'));?></td>
|
||||
<td class='projectAcl hidden'><?php echo nl2br(html::radio('projectAcl', $lang->project->subAclList, 'open', '', 'block'));?></td>
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
</table>
|
||||
</div>
|
||||
<div class='panel-footer text-center'>
|
||||
<?php echo html::commonButton($lang->upgrade->back, '', 'btn btn-wide btn-secondary');?>
|
||||
<?php echo html::a($this->createLink('upgrade', 'to18guide', "fromVersion=$fromVersion"), $lang->upgrade->back, '', "class='btn btn-wide btn-secondary'");?>
|
||||
<?php echo html::submitButton($lang->upgrade->next);?>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
Reference in New Issue
Block a user