禅道xampp文件夹无法删除_禅道Xampp版新增BUG页面的选人控件修改

本文介绍了一种解决禅道Windows一键安装包(XAMPP版)在创建bug时显示所有用户的问题。通过修改代码,仅显示项目团队成员,提高效率。详细讲述了修改DAO代码、增加按产品ID和项目ID查询团队成员的方法,以及相应的界面和权限调整。
摘要由CSDN通过智能技术生成

禅道WINDOWS一键安装包版(Xampp版)的软件在创建bug时,选择指派人员的时候,会把系统中的所有用户全部列出来,随着公司禅道使用人员日益增多,每次新增、修改、指派BUG,选择指派人员时只能按首字母排序,比较麻烦。因此,采取局部修改代码的方式,替换原有的部分安装文件,来解决此问题,实践证明,该方法可行性高,已在公司上线实施,得到同事们的高度认可。

下面将解决方法和思路作个总结:

1.解决方法

选择指派人员时,只选择某个项目中的团队成员,选择了项目模块,显示该模块对应的的负责人。将选择人员的范围缩小。

2.修改代码

2.1         修改dao代码

路径: zentao\lib\dao\dao.class.php  (数据库访问)

这里增加代码:

public function fetchPairsBySql($sql)

{

$stmt = $this->dbh->query($sql);

while($row = $stmt->fetch(PDO::FETCH_ASSOC))

{

if(!$ready)

{

if(empty($keyField)) $keyField = key($row);

if(empty($valueField))

{

end($row);

$valueField = key($row);

}

$ready = true;

}

$pairs[$row[$keyField]] = $row[$valueField];

}

return $pairs;

}

这个代码就是根据传入的SQL语句,查询需要的数据,这个比他自己提供的方法来的简单,直接传入sql就好了。

2.2         增加根据产品ID和项目ID查询团队成员的方法。

代码路径 zentao\module\user\model.php

// 根据产品ID获取团队成员

public function getByProductId($productId = '')

{

$sql="SELECT DISTINCT c.account,c.realname from zt_projectproduct a,zt_team b,zt_user c where  a.project=b.project  and b.account=c.account  and a.product=$productId  ";

$users = $this->dao->fetchPairsBySql($sql);

foreach($users as $account => $realName)

{

$firstLetter = ucfirst(substr($account, 0, 1)) . ':';

$users[$account] =  $firstLetter . ($realName ? $realName : $account);

}

return $users;

}

// 根据项目获取项目成员。

public function getByProjectId($projectId = '')

{

$sql="SELECT DISTINCT c.account,c.realname from  zt_team b,zt_user c where b.account=c.account and b.project=$projectId  ";

$users = $this->dao->fetchPairsBySql($sql);

foreach($users as $account => $realName)

{

$firstLetter = ucfirst(substr($account, 0, 1)) . ':';

$users[$account] =  $firstLetter . ($realName ? $realName : $account);

}

return $users;

}

3.3         界面修改

3.3.1  bug 创建页面

代码路径

zentao\module\bug\control.php    控制器,通过控制器找视图

方法:

//判断产品ID是否为空,为空则取全部人员

// 不为空则获取 产品 的团队成员。

public function create($productID, $extras = '')

{

//$this->view->users = $this->user->getPairs('nodeleted');

if (empty($productID)) {

$this->view->users = $this->user->getPairs('nodeleted');

}

else{

$this->view->users = $this->user->getByProductId($productID);

};

// 根据项目ID获取人员

public function getByProjectId($projectId = ''){

$users=$this->user->getByProjectId($projectId);

echo json_encode($users);

}

代码路径

zentao\module\bug\view\create.html.php

增加代码

这里是为了在项目改变时,重选选择项目团队成员。

这个代码的源码为:

代码路径 zentao\www\js\util.js

//这个使用js给人员选择框填充数据。

function setOpinion(obj,url){

obj.empty();

$.post(url,function(data){

var json=eval("(" + data + ")");

for(var key in json){

obj.append(""+json[key]+"");

}

});

}

zentao\module\bug\js\create.js

修改方法:

function loadProjectRelated(projectID)

{

if(projectID)

{

loadProjectTasks(projectID);

loadProjectStories(projectID);

loadProjectBuilds(projectID);

//增加的代码

loadMemberByProject(projectID);

}

//根据项目加载人员

function loadMemberByProject(projectId_){

var obj=$("#assignedTo");

var url="/zentao/bug-getByProjectId-"+projectId_+".html";

setOpinion(obj,url);

}

3.3.2  编辑bug页面

public function edit($bugID, $comment = false)

在这里修改

$users=$this->user->getByProjectId($projectID);

$this->view->users            = $this->user->appendDeleted($users, "$bug->assignedTo,$bug->resolvedBy,$bug->closedBy");

视图页面路径

zentao\module\bug\view\edit.html.php

增加代码:

js代码

代码路径 zentao\module\bug\js\edit.js

function loadMemberByProject(projectId_){

var obj=$("#assignedTo");

var url="/zentao/bug-getByProjectId-"+projectId_+".html";

setOpinion(obj,url);

}

3.3.3  指派bug 人员

代码路径 zentao\module\bug\control.php

修改代码:

public function assignTo($bugID)

$projectID       = $bug->project;

//修改获取项目团队。

$users=$this->user->getByProjectId($projectID);

3.3.4  后台数据权限修改

前面新增的按项目组成员取值的方法,在页面调用时,会受到后台权限控制的影响,后台权限页面对应的代码修改比较麻烦,暂做的硬处理,用的直接在数据库添加group的项目组成员的取值方法。

操作如下:

在zt_grouppriv表,根据group 授权,找到对应的group 数据,然后在数据库添加group权限即可。

如为group 1添加按项目组成员取值的方法:

Insert into zt_grouppriv(company, group, module, method) values (1,1,'bug','getByProjectId');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值