* Finish task #61967.

This commit is contained in:
tianshujie
2022-07-25 13:36:14 +08:00
parent 0c9f532ee0
commit 96c71eb326
7 changed files with 36 additions and 28 deletions
+1 -8
View File
@@ -103,14 +103,7 @@ class personnel extends control
*/
public function whitelist($objectID = 0, $module = 'personnel', $objectType = 'program', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1, $programID = 0, $from = '')
{
if($this->app->tab == 'program')
{
$this->loadModel('program')->setMenu($objectID);
}
else if($this->app->tab == 'project')
{
$this->loadModel('project')->setMenu($objectID);
}
if($this->app->tab == 'program') $this->loadModel('program')->setMenu($objectID);
/* Load lang and set session. */
$this->app->loadLang('user');
+5 -5
View File
@@ -1605,17 +1605,17 @@ class programModel extends model
$menu .= "</ul>";
$menu .= "</div>";
}
$attr = $program->model == 'kanban' ? " disabled='disabled' style='pointer-events: none;'" : '';
$menu .= $this->buildMenu('project', 'edit', $params, $program, $type, 'edit', '', 'iframe', true);
$menu .= $this->buildMenu('project', 'team', $params, $program, $type, 'group', '', '', '', 'data-app="project"' . $attr);
$menu .= $this->buildMenu('project', 'group', $params, $program, $type, 'lock', '', '', '', 'data-app="project"' . $attr);
$menu .= $this->buildMenu('project', 'team', $params, $program, $type, 'group', '', '', '', 'data-app="project"');
$menu .= $this->buildMenu('project', 'group', $params, $program, $type, 'lock', '', '', '', 'data-app="project"');
if(common::hasPriv('project', 'manageProducts') || common::hasPriv('project', 'whitelist') || common::hasPriv('project', 'delete'))
{
$menu .= "<div class='btn-group'>";
$menu .= "<button type='button' class='btn dropdown-toggle' data-toggle='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('project', 'manageProducts', "$params&from=browse", $program, $type, 'link', '', '', '', "data-app={$this->app->tab}" . $attr);
$menu .= $this->buildMenu('project', 'whitelist', "$params&module=project&from=browse", $program, $type, 'shield-check', '', '', '', "data-app='project'" . $attr);
$menu .= $this->buildMenu('project', 'manageProducts', "$params&from=program", $program, $type, 'link', '', '', '', "data-app={$this->app->tab}");
$menu .= $this->buildMenu('project', 'whitelist', "$params&module=project&from=browse", $program, $type, 'shield-check', '', '', '', "data-app='project'");
if(common::hasPriv('project','delete'))
{
$menu .= $this->buildMenu("project", "delete", $params, $program, $type, 'trash', 'hiddenwin', '', '', "data-group='program'", $this->lang->delete);
+6
View File
@@ -184,3 +184,9 @@ $config->project->includedPriv['repo'] = array('create', 'showSyncCommit',
$config->project->includedPriv['testreport'] = array('create', 'view', 'delete', 'edit', 'export');
$config->project->includedPriv['auditplan'] = array('browse', 'create', 'edit', 'batchCreate', 'batchCheck', 'check', 'nc', 'result', 'assignTo');
if($config->edition != 'max') $config->project->includedPriv['stakeholder'] = array('browse', 'create', 'batchCreate', 'edit', 'delete', 'view', 'communicate', 'expect', 'expectation', 'deleteExpect', 'createExpect', 'editExpect', 'viewExpect');
$config->project->unsetWhitelist['view'] = 'project';
$config->project->unsetWhitelist['manageproducts'] = 'project';
$config->project->unsetWhitelist['team'] = 'project';
$config->project->unsetWhitelist['browse'] = 'stakeholder';
$config->project->unsetWhitelist['group'] = 'project';
$config->project->unsetWhitelist['approval'] = 'project';
+7 -5
View File
@@ -756,7 +756,8 @@ class project extends control
$this->session->set('teamList', $this->app->getURI(true), 'project');
$project = $this->project->getById($projectID);
$projectID = $this->project->setMenu($projectID);
$project = $this->project->getById($projectID);
if($this->config->systemMode == 'new')
{
@@ -771,8 +772,6 @@ class project extends control
return print(js::error($this->lang->notFound) . js::locate($this->createLink('project', 'browse')));
}
$this->project->setMenu($projectID);
$products = $this->loadModel('product')->getProducts($projectID);
$linkedBranches = array();
foreach($products as $product)
@@ -1923,6 +1922,10 @@ class project extends control
*/
public function whitelist($projectID = 0, $module = 'project', $from = 'project', $objectType = 'project', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
{
$projectID = $this->project->setMenu($projectID);
$project = $this->project->getById($projectID);
if(isset($project->acl) and $project->acl == 'open') $this->locate($this->createLink('project', 'view', "projectID=$projectID"));
echo $this->fetch('personnel', 'whitelist', "objectID=$projectID&module=$module&browseType=$objectType&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID&projectID=$projectID&from=$from");
}
@@ -1987,8 +1990,7 @@ class project extends control
if($diffProducts) $this->loadModel('action')->create('project', $projectID, 'Managed', '', !empty($_POST['products']) ? join(',', $_POST['products']) : '');
$locateLink = inLink('manageProducts', "projectID=$projectID");
if($from == 'program') $locateLink = $this->createLink('program', 'browse');
if($from == 'programproject') $locateLink = $this->session->programProject ? $this->session->programProject : inLink('programProject', "projectID=$projectID");
if($from == 'program') $locateLink = $this->session->projectList;
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $locateLink));
}
+14 -9
View File
@@ -2584,7 +2584,7 @@ class projectModel extends model
*
* @param int $objectID projectID
* @access public
* @return void
* @return int
*/
public function setMenu($objectID)
{
@@ -2625,11 +2625,17 @@ class projectModel extends model
include $this->app->getModulePath('', 'execution') . 'lang/' . $this->app->getClientLang() . '.php';
}
$this->lang->switcherMenu = $this->getSwitcher($objectID, $this->app->rawModule, $this->app->rawMethod);
$this->lang->switcherMenu = $this->getSwitcher($objectID, $moduleName, $methodName);
$this->saveState($objectID, $this->getPairsByProgram());
$project = $this->getById($objectID);
if(isset($project->acl) and $project->acl == 'open' and isset($this->config->project->unsetWhitelist[$methodName]) and $this->config->project->unsetWhitelist[$methodName] == $moduleName)
{
unset($this->lang->project->menu->settings['subMenu']->whitelist);
}
common::setMenuVars('project', $objectID);
return $objectID;
}
/**
@@ -2758,25 +2764,24 @@ class projectModel extends model
}
$from = $project->from == 'project' ? 'project' : 'pgmproject';
$iframe = ($this->app->tab == 'program' || $project->model == 'kanban') ? 'iframe' : '';
$onlyBody = ($this->app->tab == 'program' || $project->model == 'kanban') ? true : '';
$iframe = $this->app->tab == 'program' ? 'iframe' : '';
$onlyBody = $this->app->tab == 'program' ? true : '';
$dataApp = $this->config->systemMode == 'classic' ? "data-app=execution" : "data-app=project";
$attr = $project->model == 'kanban' ? " disabled='disabled' style='pointer-events: none;'" : '';
$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 . $attr, $this->lang->execution->team);
if($this->config->systemMode == 'new') $menu .= $this->buildMenu('project', 'group', "$params&programID={$project->programID}", $project, 'browse', 'lock', '', '', '', $dataApp . $attr);
$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);
if(common::hasPriv($moduleName, 'manageProducts') || common::hasPriv($moduleName, 'whitelist') || common::hasPriv($moduleName, 'delete'))
{
$menu .= "<div class='btn-group'>";
$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, $project, 'browse', 'link', '', 'btn-action', '', $attr, $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 . $attr);
$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($moduleName, "delete", $params, $project, 'browse', 'trash', 'hiddenwin', 'btn-action');
$menu .= "</ul>";
$menu .= "</div>";
+1 -1
View File
@@ -77,7 +77,7 @@ foreach($projects as $programID => $programProjects)
{
$link = helper::createLink('project', 'index', "projectID=%s");
}
elseif($project->model == 'kanban')
elseif($project->model == 'kanban' and (($module == 'stakeholder' and $method != 'browse') or ($module == 'project' and !in_array($method, array('build', 'view', 'manageproducts', 'team', 'whitlist', 'group')))))
{
$link = helper::createLink('project', 'index', "projectID=%s");
}
+2
View File
@@ -19,9 +19,11 @@
<div class="panel block-dynamic" style="height: 280px">
<div class="panel-heading">
<div class="panel-title"><?php echo $lang->execution->latestDynamic;?></div>
<?php if($project->model != 'kanban'):?>
<nav class="panel-actions nav nav-default">
<li><?php common::printLink('project', 'dynamic', "projectID=$project->id&type=all", '<i class="icon icon-more icon-sm"></i>', '', "title=$lang->more");?></li>
</nav>
<?php endif;?>
</div>
<div class="panel-body scrollbar-hover">
<ul class="timeline timeline-tag-left no-margin">