

- 1. 禅道SDK開發手冊
- 1.1 配置使用与常見問題
- 1.2 調用SDK示例
- 1.3. 部門相關接口
- 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. 禅道RESTful API开发手册v1
- 3. 定制開發
- 3.1 二次開發機制
- 3.2 禅道的目錄结构
- 3.3 找到要修改的文件
- 3.4 禅道的數據庫結構
- 3.5 公用模塊--common
- 3.6 12系列菜單登記和權限維護
- 3.7 18系列菜單登記和權限維護
- 3.8 示例:如何修改禅道的語言提示?
- 3.9 示例:創建bug時可以設置優先級字段
- 3.10 使用在線擴展編輯器
- 3.11 二次開發編輯器和翻譯功能限制使用說明
- 3.12 禅道項目管理软件打包规范1.1版本
12系列菜單登記和權限維護 分享鏈接 /book/api/68.html
本篇目錄
擴展禅道遇到的一個問題就是如何將自己增加的功能登記到菜單中以及如何維護權限,本篇文章來講述如何來實現這個功能。
一、如何登記菜單
1、菜單的組成
禅道的導航菜單分爲三個部分,頂部菜單、模塊菜單、功能菜單。
2、菜單的定義
菜單的代碼定義是在zentao/module/common/lang/zh-cn語言文件中。我們來看下主菜單的定義。
2.1 主导航菜单的定义
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 使用数组来定义链接
这行代码对链接进行定义的时候,使用了数组,分别定义了两个元素,link和subModule。其中link多增加了一个参数字段:productID=%s,代表産品视图的“需求”菜单会链接到product模块的browse方法,传递的参数是productID=%s,其中的%s会被替换成当前的産品id。
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 功能菜单的定义
功能菜單是在每一個模塊的視圖文件裏面打印的,其擴展方法和視圖的擴展相同,後面會講到這一點。
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';
4、如何將自己的頁面登記到菜單中
了解了禅道的菜單機制之後,做擴展就非常容易了。我們來說下步驟:
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');
5、如何將外部鏈加到菜單中
假設我們要在禅道頂級菜單挂一個新浪的網址,並且要在新窗口打開這個網址。
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>
二、如何維護權限
感謝網友“擡頭看腳趾”的分享,轉載自:http://blog.sina.com.cn/s/blog_40b223160101geq6.html
本文將介紹如何對新增的module進行權限的設置。
在禅道的開源版中,所有的控制(control)方法的權限都是通過在group/lang/resource.php進行分配控制的,(PS:默認所有的控制方法都是只有管理員可以訪問),通過“組織=>權限”中的分配界面對每個用戶進行訪問權限的設置,如圖。
爲了能夠使自己新增的模塊(module)或在現有模塊的基礎上新增的控制(control)方法能夠在界面中顯示並分配權限,則需要對module/group/lang/resource.php進行擴展,以下以對menudemo模塊的index控制方法爲例介紹具體操作。
1、在module/group/ext/lang/zh-cn/、module/group/ext/lang/zh-tw/、module/group/ext/lang/en/文件夾下分別建立menudemo.php文件
2、在menudemo.php文件中加入以下代码(group/ext/lang/zh-cn/menudemo.php group/ext/lang/zh-tw/menudemo.php group/ext/lang/en/menudemo.php)
<?php $lang->resource->menudemo = new stdclass(); $lang->resource->menudemo->index = 'index';
3、界面顯示名稱聲明
在權限分配界面中,爲了能夠直觀的查看到所分配的是什麽權限,就必須先對顯示名稱進行聲明。其聲明操作一般都是在lang文件中進行。
module/menudemo/lang/zh-cn.php
$lang->menudemo->common = '导航Demo'; $lang->menudemo->index = '首頁'; $lang->menudemo->methodOrder[5] = 'index';
其中 $lang->menudemo->methodOrder[5] = 'index';是为了控制显示的先后排序而定义的。
zh-tw.php en.php分别也加入以上内容,否则当切换界面语言时,分配界面将无法显示信息。
-
禅道産品
禅道開源版 禅道企業版 禅道旗艦版 禅道IPD版 -
核心功能
産品管理 項目管理 質量管理 效能管理 -
使用文檔
基本版手冊 企業版手冊 旗艦版手冊 IPD版手冊 開發中心手冊 -
幫助中心
积分問答 常見問題 論壇交流 使用視頻 Gitee GitHub -
關于我們
關于我們 禅道軟件 最新動態 禅道活動 -
禅道社區
禅道博客 積分排行 積分商城 禅道書院 -
聯系方式
聯系人:高麗亞 電話:17667930330 微信:17667930330 Q Q:3645260865北京、上海、深圳分部