* Modify ajaxGetDropMenu.
This commit is contained in:
@@ -120,41 +120,9 @@ class project extends control
|
||||
*/
|
||||
public function ajaxGetDropMenu($projectID, $module, $method)
|
||||
{
|
||||
/* Load module. */
|
||||
$this->loadModel('program');
|
||||
|
||||
/* Set cookie for show all project. */
|
||||
$_COOKIE['showClosed'] = 1;
|
||||
|
||||
/* Sort project. */
|
||||
$programs = array();
|
||||
$orderedProjects = array();
|
||||
|
||||
$projects = $this->dao->select('*')->from(TABLE_PROJECT)
|
||||
->where('type')->eq('project')
|
||||
->beginIF($this->config->vision)->andWhere('vision')->eq($this->config->vision)->fi()
|
||||
->andWhere('deleted')->eq(0)
|
||||
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi()
|
||||
->orderBy('order_asc,id_desc')
|
||||
->fetchAll('id');
|
||||
|
||||
$programs = $this->program->getPairs(true);
|
||||
|
||||
foreach($projects as $project)
|
||||
{
|
||||
$project->parent = $this->program->getTopByID($project->parent);
|
||||
$project->parent = isset($programs[$project->parent]) ? $project->parent : $project->id;
|
||||
$orderedProjects[$project->parent][] = $project;
|
||||
unset($projects[$project->id]);
|
||||
}
|
||||
|
||||
$this->view->link = $this->project->getProjectLink($module, $method, $projectID);
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->projects = $orderedProjects;
|
||||
$this->view->module = $module;
|
||||
$this->view->method = $method;
|
||||
$this->view->programs = $programs;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -343,7 +311,7 @@ class project extends control
|
||||
if(empty($project) || $project->type != 'project') return print(js::error($this->lang->notFound) . js::locate('back'));
|
||||
|
||||
if(!$projectID) $this->locate($this->createLink('project', 'browse'));
|
||||
setCookie("lastProject", $projectID, $this->config->cookieLife, $this->config->webRoot, '', false, true);
|
||||
setCookie("lastProject", strVal($projectID), $this->config->cookieLife, $this->config->webRoot, '', false, true);
|
||||
|
||||
if($project->model == 'kanban' and $this->config->vision != 'lite')
|
||||
{
|
||||
@@ -487,7 +455,6 @@ class project extends control
|
||||
*/
|
||||
public function create($model = 'scrum', $programID = 0, $copyProjectID = 0, $extra = '')
|
||||
{
|
||||
$this->loadModel('execution');
|
||||
$this->session->set('projectModel', $model);
|
||||
|
||||
if($model == 'kanban') unset($this->lang->project->authList['reset']);
|
||||
@@ -522,8 +489,8 @@ class project extends control
|
||||
if($model == 'waterfall' or $model == 'waterfallplus')
|
||||
{
|
||||
$productID = $this->loadModel('product')->getProductIDByProject($projectID, true);
|
||||
$this->session->set('projectPlanList', $this->createLink('programplan', 'browse', "projectID=$projectID&productID=$productID&type=lists", '', false, $projectID), 'project');
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->createLink('programplan', 'create', "projectID=$projectID", '', false, $projectID)));
|
||||
$this->session->set('projectPlanList', $this->createLink('programplan', 'browse', "projectID=$projectID&productID=$productID&type=lists", '', '', $projectID), 'project');
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->createLink('programplan', 'create', "projectID=$projectID", '', '', $projectID)));
|
||||
}
|
||||
|
||||
$parent = isset($_POST['parent']) ? $_POST['parent'] : 0;
|
||||
|
||||
+28
-13
@@ -2,6 +2,25 @@
|
||||
declare(strict_types=1);
|
||||
class projectModel extends model
|
||||
{
|
||||
/**
|
||||
* 获取当前登录用户有权限查看的项目列表.
|
||||
* Get project list by current user.
|
||||
*
|
||||
* @param string $fields
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getListByCurrentUser(string $fields = '*') :array
|
||||
{
|
||||
return $this->dao->select($fields)->from(TABLE_PROJECT)
|
||||
->where('type')->eq('project')
|
||||
->beginIF($this->config->vision)->andWhere('vision')->eq($this->config->vision)->fi()
|
||||
->andWhere('deleted')->eq(0)
|
||||
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi()
|
||||
->orderBy('order_asc,id_desc')
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the privilege.
|
||||
*
|
||||
@@ -594,21 +613,17 @@ class projectModel extends model
|
||||
$project = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($projectID)->fetch();
|
||||
|
||||
if(empty($project->multiple)) return $link;
|
||||
|
||||
if(in_array($module, array('testreport', 'testcase')))
|
||||
return helper::createLink('project', $module, "projectID=%s");
|
||||
|
||||
if($module == 'projectstory' && in_array($method, array('story', 'linkstory', 'track')))
|
||||
return helper::createLink($module, $method, "projectID=%s");
|
||||
|
||||
if($module == 'project') $this->buildLinkForProject($module, $method);
|
||||
if(strpos(',project,product,projectstory,story,bug,doc,testcase,testtask,testreport,repo,build,projectrelease,stakeholder,issue,risk,meeting,report,measrecord,', ',' . $module . ',') !== false)
|
||||
{
|
||||
if($module == 'project' and $method == 'execution')
|
||||
{
|
||||
$link = helper::createLink($module, $method, "status=all&projectID=%s");
|
||||
}
|
||||
elseif($module == 'project' and strpos(',bug,testcase,testtask,testreport,build,dynamic,view,manageproducts,team,managemembers,whitelist,addwhitelist,group,', ',' . $method . ',') !== false)
|
||||
{
|
||||
$link = helper::createLink($module, $method, "projectID=%s");
|
||||
}
|
||||
elseif($module == 'project' and $method == 'managePriv')
|
||||
{
|
||||
$link = helper::createLink($module, 'group', "projectID=%s");
|
||||
}
|
||||
elseif($module == 'product' and $method == 'showerrornone')
|
||||
if($module == 'product' and $method == 'showerrornone')
|
||||
{
|
||||
$link = helper::createLink('projectstory', 'story', "projectID=%s");
|
||||
}
|
||||
|
||||
@@ -383,4 +383,74 @@ class projectTao extends projectModel
|
||||
|
||||
return !dao::isError();
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成project模块的项目下拉框跳转链接.
|
||||
* Build project link in project page.
|
||||
*
|
||||
* @param string $method
|
||||
* @access protected
|
||||
* @return string
|
||||
*/
|
||||
protected function buildLinkForProject(string $method) :string
|
||||
{
|
||||
if($method == 'execution')
|
||||
return helper::createLink($module, $method, "status=all&projectID=%s");
|
||||
|
||||
if($method == 'managePriv')
|
||||
return helper::createLink($module, 'group', "projectID=%s");
|
||||
|
||||
if($method == 'showerrornone')
|
||||
return helper::createLink('projectstory', 'story', "projectID=%s");
|
||||
|
||||
$methods = ',bug,testcase,testtask,testreport,build,dynamic,view,manageproducts,team,managemembers,whitelist,addwhitelist,group,';
|
||||
if(strpos($methods, ',' . $method . ',') !== false)
|
||||
return helper::createLink($module, $method, "projectID=%s");
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成bug模块的项目下拉框跳转链接.
|
||||
* Build project link in bug page.
|
||||
*
|
||||
* @param string $method
|
||||
* @access protected
|
||||
* @return string
|
||||
*/
|
||||
protected function buildLinkForBug(string $method) :string
|
||||
{
|
||||
if($method == 'create')
|
||||
return helper::createLink($module, $method, "productID=0&branch=0&extras=projectID=%s");
|
||||
|
||||
if($method == 'edit')
|
||||
return helper::createLink('project', 'bug', "projectID=%s");
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成story模块的项目下拉框跳转链接.
|
||||
* Build project link in story page.
|
||||
*
|
||||
* @param string $method
|
||||
* @access protected
|
||||
* @return string
|
||||
*/
|
||||
protected function buildLinkForStory(string $method) :string
|
||||
{
|
||||
if($method == 'change' or $method == 'create')
|
||||
return helper::createLink('projectstory', 'story', "projectID=%s");
|
||||
if($method == 'zerocase')
|
||||
return helper::createLink('project', 'testcase', "projectID=%s");
|
||||
}
|
||||
|
||||
protected function buildLinkForTask if($module == 'testtask')
|
||||
{
|
||||
if($method == 'browseunits')
|
||||
{
|
||||
$link = helper::createLink('project', 'testcase', "projectID=%s");
|
||||
}
|
||||
else
|
||||
{
|
||||
$link = helper::createLink('project', 'testtask', "projectID=%s");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . "/test/lib/init.php";
|
||||
su('admin');
|
||||
|
||||
$project = zdTable('project');
|
||||
$project->gen(5);
|
||||
|
||||
/**
|
||||
|
||||
title=测试 projectModel->getListByCurrentUser();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
- 执行projectModel模块的getListByCurrentUser方法 @1
|
||||
|
||||
- 执行projectModel模块的getListByCurrentUser方法 @1
|
||||
|
||||
- 执行projectModel模块的getListByCurrentUser方法
|
||||
- 第11条的id属性 @11
|
||||
- 第11条的name属性 @项目1
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
$projectModel = $tester->loadModel('project');
|
||||
|
||||
r(count($projectModel->getListByCurrentUser())) && p() && e('1');
|
||||
r(count($projectModel->getListByCurrentUser())) && p() && e('1');
|
||||
r($projectModel->getListByCurrentUser()) && p('11:id,name') && e('11,项目1');
|
||||
@@ -447,4 +447,43 @@ class projectZen extends project
|
||||
$this->view->actions = $this->loadModel('action')->getList('project', $projectID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取项目下拉选择框
|
||||
* Get project drop menu.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param int $module
|
||||
* @param int $method
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
protected function getDropMenu(int $projectID, string $module, string $method) :void
|
||||
{
|
||||
$this->loadModel('program');
|
||||
|
||||
$programs = array();
|
||||
$orderedProjects = array();
|
||||
|
||||
$projects = $this->project->getListByCurrentUser();
|
||||
$programs = $this->program->getPairs(true);
|
||||
$link = $this->project->getProjectLink($module, $method, $projectID);
|
||||
|
||||
foreach($projects as $project)
|
||||
{
|
||||
$project->parent = $this->program->getTopByID($project->parent);
|
||||
$project->parent = isset($programs[$project->parent]) ? $project->parent : $project->id;
|
||||
$orderedProjects[$project->parent][] = $project;
|
||||
unset($projects[$project->id]);
|
||||
}
|
||||
|
||||
$this->view->link = $link;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->projects = $orderedProjects;
|
||||
$this->view->module = $module;
|
||||
$this->view->method = $method;
|
||||
$this->view->programs = $programs;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user