禅道Xampp版新增BUG页面的选人控件修改

发表于:2017-3-02 10:56

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:wendyzhou    来源:51Testing软件测试网采编

  禅道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
  增加代码
  这里是为了在项目改变时,重选选择项目团队成员。
  <script src='/zentao/js/util.js' type='text/javascript'></script>
  这个代码的源码为:
  代码路径 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("<option value='"+key+"'>"+json[key]+"</option>");
}
});
}
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
  增加代码:
  <script src='/zentao/js/util.js' type='text/javascript'></script>
  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');
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号