關于禅道二次開發的分享
轉貼:
CSDN
最后编辑:郑乔尹 于 2019-06-19 09:16:58
2846次查看
本期用戶分享給大家帶來的是:輕易科技知行研發部關于禅道 二次開發的分享,這篇文章是作者在使用禅道後精心寫下的,希望這篇文章能對其他禅道用戶有所幫助。
全文:
爲適應公司內部使用禅道平台,我參與的團隊在現有版本上進行了二次開發。首先,感謝開發禅道平台的原創團隊。因公司需要,本人學習了禅道的框架及使用,有了一些自己的感受,希望這篇博客,對大家以後開發禅道有所幫助。:)
一、學習禅道-個人看法
1.1. 取消了命名空间,使用传统的自动加载
1.2.跨模塊調用$this->loadModel($moduleName)、$this->app->loadClass('pager')、$this->app->loadLang($moduleName);
1.3.大量内部类 stdClass() 的使用
1.4.前端類(可以直接使用禅道內部封裝好的類,特別方便)
1.5.方便的从数据库获取数据。比如: $this->app->user->realname 获取 zt_user 表的realname字段
2.1.大量的配置文件和全局變量
2.2.部分變量的聲明不明確
2.3.跨模塊調用雖然減少了代碼的冗余,將各模塊關聯起來,但是當開發的時候,大量的加載其它模塊使代碼看起來很混亂(真的有點頭疼)
二、學習禅道-重要模塊
此模块下zh_cn.php文件可以配置所有的菜单(頂级菜单、模块菜单)。在menuOrder.php 文件中进行菜单的位置布置。
例如:
1.新增主菜单:$lang->menu->procedure = '流程|procedure|index';` 2.添加副菜单: `$lang->procedure = new stdClass();` 3.$lang->procedure->menu = new stdClass(); 4.$lang->procedure->menu->list = array('link' => '%s', 'fixed' => true); 5.$lang->procedure->menu->story = array('link' => '需求|procedure|story|productID=%s', 'subModule' => 'story');
2.group模塊(權限問題)
2.1.問題描述:
新建的菜單和功能模塊,只在admin下可見,當其他普通用戶登錄時均不可見。
所有的模塊、方法和菜單,都需要在該模塊下進行配置
解決1:禅道頁面組織菜單進行權限操作,並設置可見,退出當前賬號重進,未解決
解決2:http://www.51testing.com/html/11/n-3576111.html
具體操作及注意事項:
例如:在group/lang/resource.php文件中(index、hello均为teprocess 模块下新建的方法,因此需要在group模块下分配权限)
> $lang->resource->teprocess = new stdClass(); > $lang->resource->teprocess->index = 'index'; > $lang->resource->teprocess->hello = 'hello'; > $lang->teprocess->methodOrder[5] = 'index'; > $lang->teprocess->methodOrder[10] = 'hello';說明: 在这里配置之后, admin用户可对 teprocess 的 index、hello 方法设置访问权限,其它方法不能设置访问权限;
注意:配置完成后,在权限配置页不会显示相应方法的名字等信息会显示 [] ,因此还需要在相应模块下的lang/zh-cn.php 下对所有方法配置语言包。
> $lang->teprocess->index = 'teprocess首頁'; > $lang->teprocess->hello = '欢迎页';
3.1block模塊的使用:
①首先,在需要使用block的view页面 添加一下代码 :<?php echo $this->fetch('block', 'dashboard', 'module=teprocess')?>
②区块数据的获取,在block/control.php 中添加:
public function printUserBlock(){ $this->session->set('userList', $this->server->http_referer); $this->view->users = $this->loadModel('teprocess')->getAllUser(); }③在block/lang/zh-cn.php文件裏,配置當前頁面可以創建的區塊:
$lang->block->modules['teprocess'] = new stdClass(); $lang->block->modules['teprocess']->availableBlocks = new stdClass(); $lang->block->modules['teprocess']->availableBlocks->user = '用户列表';
三、學習禅道-重要的便利方法及常用第三方插件
主要是对在common/zh_cn.php文件配置的菜单导航 %s 进行替换,生成正确的 url,此方法可以在任意模块使用,无需进行大的改动。
在view层创建 ajaxgetdropmenu.html.php,可以在任意需要的模块使用该方法, 只需要修改小部分代码。
①view层:textarea($id, $value, $attrib);
例如:<?php echo html::textarea('desc', '', "rows='6' class='form-control'")?>
②框架提供富文本的使用只有 simpleTools、bugTools、fullTools 基本的功能选择,没有对富文本的大小的调节和读写模式的控制,这三种不同的选择,主要是针对富文本框最上面的工具栏功能的多少来自由定义。
例如:在相应模块的 config.php 添加:$config->procedure->editor->requirementreview = array('id'=>'desc', 'tools'=>'simpleTools');
①在首頁引入tablesorter.html.php文件,并在table标签和th标签中,加入特定的类名,即可完成排序的功能。
②加入特定的类名,即可完成正序、倒序功能。 加入特定类名
①在model中調用pager對象
②在control中將page對象賦值給模板
四、遇到的坑
一定要注意框架的命名規則,主要指大小寫的問題,比如,view層的命名只能是小寫字母,小寫字母,小寫字母,重要的事情說三遍!!!

禅道軟件
