1. 禅道API开发手册
1.1  配置使用与常见问题
1.2  调用SDK示例
1.3. 部门相关接口
1.3.1  获取部门列表
1.3.2  批量添加部门
1.4. 用户相关接口
1.4.1  获得添加用户所用的参数列表
1.4.2  添加单个用户
1.4.3  获取用户列表
1.5. 产品相关接口
1.5.1  获取产品列表
1.5.2  添加单个产品可选信息
1.5.3  添加单个产品
1.6. 项目相关接口
1.6.1  获取项目列表
1.6.2  添加单个项目可选信息
1.6.3  添加单个项目
1.7. 任务相关接口
1.7.1  获取任务列表
1.7.2  添加单个任务可选信息
1.7.3  添加单个任务
1.7.4  完成单个任务可选信息
1.7.5  完成单个任务
1.8. bug相关接口
1.8.1  获取Bug列表
1.8.2  添加单个Bug可选信息
1.8.3  添加单个Bug
1.8.4  解决单个Bug可选信息
1.8.5  解决单个Bug
2. 禅道API文档v1
2.1. Token
2.1.1  获取Token
2.2. 部门
2.2.1  获取部门列表
2.2.2  获取部门详情
2.3. 用户
2.3.1  获取我的个人信息
2.3.2  获取用户列表
2.3.3  获取用户信息
2.3.4  修改用户信息
2.3.5  删除用户
2.3.6  创建用户
2.4. 项目集
2.4.1  获取项目集列表
2.4.2  修改项目集
2.4.3  获取项目集详情
2.4.4  删除项目集
2.4.5  创建项目集
2.5. 产品
2.5.1  获取产品列表
2.5.2  创建产品
2.5.3  获取产品详情
2.5.4  编辑产品
2.5.5  删除产品
2.6. 产品计划
2.6.1  获取产品计划列表
2.6.2  创建计划
2.6.3  获取计划详情
2.6.4  修改计划
2.6.5  删除计划
2.6.6  产品计划关联需求
2.6.7  产品计划取消关联需求
2.6.8  产品计划关联Bug
2.6.9  产品计划取消关联Bug
2.7. 发布
2.7.1  获取产品发布列表
2.7.2  获取项目发布列表
2.8. 需求
2.8.1  获取产品需求列表
2.8.2  获取项目需求列表
2.8.3  获取执行需求列表
2.8.4  创建需求
2.8.5  获取需求详情
2.8.6  变更需求
2.8.7  修改需求其他字段
2.8.8  删除需求
2.9. 项目
2.9.1  获取项目列表
2.9.2  创建项目
2.9.3  获取项目详情
2.9.4  修改项目
2.9.5  删除项目
2.10. 版本
2.10.1  获取项目版本列表
2.10.2  获取执行版本列表
2.10.3  创建版本
2.10.4  获取版本详情
2.10.5  修改版本
2.10.6  删除版本
2.11. 执行
2.11.1  获取项目的执行列表
2.11.2  创建执行
2.11.3  查看执行详情
2.11.4  修改执行
2.11.5  删除执行
2.12. 任务
2.12.1  获取执行任务列表
2.12.2  创建任务
2.12.3  获取任务详情
2.12.4  修改任务
2.12.5  删除任务
2.13. Bug
2.13.1  获取产品Bug列表
2.13.2  创建Bug
2.13.3  获取Bug详情
2.13.4  修改Bug
2.13.5  删除Bug
2.14. 用例
2.14.1  获取产品用例列表
2.14.2  创建用例
2.14.3  获取用例详情
2.14.4  修改用例
2.14.5  删除用例
2.14.6  执行用例
2.15. 测试单
2.15.1  获取测试单列表
2.15.2  获取项目的测试单
2.15.3  获取测试单详情
2.16. 反馈
2.16.1  创建反馈
2.16.2  指派反馈
2.16.3  关闭反馈
2.16.4  删除反馈
2.16.5  修改反馈
2.16.6  获取反馈详情
2.16.7  获取反馈列表
3. 定制开发
3.1  二次开发机制
3.2  禅道的目录结构
3.3  找到要修改的文件
3.4  禅道的数据库结构
3.5  公用模块--common
3.6  如何登记菜单
3.7  如何登记权限
3.8  示例:如何修改禅道的语言提示?
3.9  示例:创建bug时可以设置优先级字段
3.10  使用在线扩展编辑器
3.11  二次开发编辑器和翻译功能限制使用说明
3.12  禅道项目管理软件打包规范1.1版本

如何登记菜单

2012-09-27 11:14:18
王春生
47963
最后编辑:马喆 于 2020-10-29 10:31:23
分享链接
摘要:扩展禅道遇到的一个问题就是如何将自己增加的功能登记到菜单中,本篇文章来讲述如何来实现这个功能。

扩展禅道遇到的一个问题就是如何将自己增加的功能登记到菜单中,本篇文章来讲述如何来实现这个功能。

一、菜单的组成

禅道的导航菜单分为三个部分,顶部菜单、模块菜单、功能菜单。

二、菜单的定义

菜单的代码定义是在zentao/module/common/lang/zh-cn语言文件中。我们来看下主菜单的定义。


2.1 主导航菜单的定义

80 $lang->menu->my = ' 我的地盘|my|index';
81 $lang->menu->product = '产品视图|product|index';
82 $lang->menu->project = '项目视图|project|index';

83 $lang->menu->qa = '测试视图|qa|index';

我们来看下代码的含义: 83 $lang->menu->qa = '测试视图|qa|index';

这行代码定义了测试视图的代码,其中的menu->qa定义的是菜单的键值,可以根据实际的模块定义。后面是使用竖线分开的三个参数,分别是菜单的文本,对应到模块和方法。这句话就表示要定义一个顶级菜单,文本是“测试视图”,链接到qa模块的index方法。


2.2 模块菜单的定义

我们以产品视图的模块菜单为例:

144 $lang->product->menu->list = '%s';
145 $lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'subModule' => 'story');
155 $lang->product->menu->create = array('link' => ' 新增产品|product|create', 'float' => 'right');
158 $lang->productplan->menu = $lang->product->menu;
159 $lang->release->menu = $lang->product->menu;

这几行代码定义了产品视图模块的模块菜单,这里面出现了一些新的定义方法:


2.2.1 使用数组来定义链接

145 $lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'subModule' => 'story');

这行代码对链接进行定义的时候,使用了数组,分别定义了两个元素,link和subModule。其中link多增加了一个参数字段:productID=%s,代表产品视图的“需求”菜单会链接到product模块的browse方法,传递的参数是productID=%s,其中的%s会被替换成当前的产品id。


2.2.2 使用subModuel来定义子模块。145 $lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'subModule' => 'story');

subModule定义的是它的子模块,这个需要是用来保持菜单高亮使用。这样当访问到story模块的时候,还会保持“产品视图”这个定义菜单高亮。


2.2.3 使用alias来定义方法别名 151 $lang->product->menu->view = array('link' => '概况|product|view|productID=%s', 'alias' => 'edit');

这个地方的alias代表product的edit页面和product的view页面是相同的,这样当编辑产品的时候,“概况”菜单还是会保持高亮的。


2.2.4 定义菜单的位置

所有的菜单默认都是显示在左侧的,如果需要将菜单显示在右侧,则需要定义它的float参数。
155 $lang->product->menu->create = array('link' => ' 新增产品|product|create', 'float' => 'right');

通过设置float参数,可以定义这个新增产品的链接显示在页面的右侧。


2.3 功能菜单的定义

功能菜单是在每一个模块的视图文件里面打印的,其扩展方法和视图的扩展相同,后面会讲到这一点。

三、菜单顺序的定义

前面讲述的是禅道菜单的定义,下面来讲下禅道菜单顺序的定义。在common/lang/下面有一个menuOrder.php的文件,在这个文件中定义了每个菜单的显示顺序。

/* Sort of main menu. */
$lang->menuOrder[5] = 'my';
$lang->menuOrder[10] = 'product';
$lang->menuOrder[15] = 'project';
$lang->menuOrder[20] = 'qa';
$lang->menuOrder[25] = 'doc';
$lang->menuOrder[30] = 'report';
$lang->menuOrder[35] = 'company';
$lang->menuOrder[40] = 'admin';
/* index menu order. */
$lang->index->menuOrder[5] = 'product';
$lang->index->menuOrder[10] = 'project';

四、如何将自己的页面登记到菜单中

了解了禅道的菜单机制之后,做扩展就非常容易了。我们来说下步骤:


1. 在module/common/ext/lang/zh-cn/下面创建一个文件,比如叫做abc.php(文件名可以任意定义)

2. 在这个文件中加上自己的菜单就好了,比如禅道专业版本中的版本库菜单:

$lang->menu->repo = '版本库|repo|browse';
$lang->menuOrder[21] = 'repo';

$lang->repo->menu->list = '%s' . $lang->arrow;
$lang->repo->menu->browse = array('link' =>'浏览|repo|browse|repoID=%s', 'alias' => 'diff, log, view, revision, showsynccomment');
$lang->repo->menu->settings = '设置|repo|settings|repoID=%s';
$lang->repo->menu->delete = array('link' => '删除|repo|delete|repoID=%s', 'target' => 'hiddenwin');

$lang->repo->menu->create = array('link' => '新增版本库|repo|create|', 'float' => 'right');



五、如何将外部链加到菜单中

假设我们要在禅道顶级菜单挂一个新浪的网址,并且要在新窗口打开这个网址。

1、在module/common/ext/view下新建文件footer.sina.html.hook.php

2、加入 如下内容保存后,打开禅道即可看到顶级菜单出现新增的链接,并且是在新窗口打开的:


<script> 
$(document).ready(function()
{
    $("#navbar ul.nav").append('<li><a id="menusina" href="http://www.sina.com.cn"  target="_blank">新浪</ a><\/li>');
});
</script>



评论列表
ye7785812 2022-03-31 14:17:43
新添加的菜单,出现这样的/index.php?m=execution&f=task&executionID=%s,%s不会替换成对应的id
禅道-阿龙 2022-03-31 17:30:41 回复
新版本的导航栏做了调整,可以自己看下代码,二次开发参考文档:
http://www.zentao.net/book/zentaopmshelp/156.html
http://www.zentao.net/book/zentaopmshelp/225.html
Jeffers 2022-03-07 11:32:32
如何彻底删除建立错误的项目
禅道-阿龙 2022-03-07 11:46:36 回复
目前禅道中所有的删除都为标记删除,如果确定项目未和其他数据关联,可以在数据库zt_project表中删除这条数据。
胖胖 2022-01-10 17:36:07
模块菜单中如何添加第三方链接
cuiping 2022-01-10 17:41:01 回复
可以操作试一下
胖胖 2022-01-10 17:52:45 回复
就是不知道在哪里操作
禅道 - 闫敏 2022-01-10 18:03:03 回复
二次开发目前只能提供文档资料 , 支持成本太高, 建议看下这块的文档
http://www.zentao.net/book/zentaopmshelp/156.html
http://www.zentao.net/book/zentaopmshelp/225.html
https://www.zentao.net/publicclass/secondary-development-80237.html
Genson 2021-12-08 19:01:15
15.7版本登记菜单的方式是不是改变了?
禅道-阿龙 2021-12-09 12:28:01 回复
新版本导航栏页面改动比较大,之前的文档可能不太适用。可以添加页面上方QQ进禅道二次开发群沟通问题。
yangjun 2021-07-02 14:47:22
我使用你们的样例代码后,在顶部菜单上的菜单名显示为乱码,请问如何处理?

<script>
$(document).ready(function()
{
$("#navbar ul.nav").a p p e n d ('<li><a id="menusina" href="http://www.sina.com.cn" target="_blank">新浪</ a><\/li>');
});
</script>
张玉洁 2021-07-02 16:57:58 回复
可以添加网页上方QQ,邀请进如二次开发群,方便截图排查问题。
小林 2020-06-02 19:48:40
请问我在后台里面新增了一个菜单,但是菜单总是显示不出来,是什么原因呢?
在common里面的module/common/ext/lang/zh-cn/下面创建一个文件,内容如下:

$lang->admin->menu->autoenv = array('link' => '自动化环境设置|autoenv|index', 'subModule' => 'autoenv');
$lang->menuOrder[65] = 'autoenv';
$lang->autoenv = new stdclass();
$lang->autoenv->menu = $lang->admin->menu;

/* 菜单分组。*/
$lang->menugroup->autoenv = 'admin';
禅道-Bee 2020-06-03 16:22:29 回复
可以联系下官网顶部的商务QQ,邀请加入二次开发群,群里一起确认下。
zhangjq 2019-10-21 20:19:37
如何传递当前用户id
石洋洋 2019-10-22 11:17:01 回复
试试 $this->app->user->id
我是我 2019-02-13 13:15:48
禅道怎么设置别人看不到动态
石洋洋 2019-02-13 13:21:15 回复
超级管理员登录禅道后 我的地盘-首页 点击 动态右上角的三个点 选择 永久关闭。
小猪 2017-11-14 15:24:16
请问想在例如项目----团队下面 添加功能菜单如何添加?
王林 2017-11-14 17:29:55 回复
这个需要进行二次开发实现。
二次开发可以参考一下文档:http://www.zentao.net/book/zentaopmshelp/225.html
建议二次开发先熟悉一下zentaoPHP框架。
也可以添加页面上方QQ,联系我们进行定制开发。
张栋梁 2017-08-18 11:03:02
1. 在module/common/ext/lang/zh-cn/下面创建一个文件,比如叫做abc.php(文件名可以任意定义)
按照上面的扩展吧,但是不显示
石洋洋 2017-08-18 11:30:00 回复
看一下php日志是否有错误记录?zentao(pro/pms)/config/my.php 中debug的值改成true 重新操作一下 看日志文件 zentao(pms/pro)/tmp/log/php开头的今天的文件有什么报错。
1/2 1 2
发表评论
评论通过审核后显示。