关于禅道二次开发的分享
关于禅道二次开发的分享
作者:轻易科技知行研发部 - 王想
为适应公司内部使用禅道平台,我参与的团队在现有版本上进行了二次开发。
首先,感谢开发禅道平台的原创团队。
因公司需要,本人学习了禅道的框架及使用,有了一些自己的感受,希望这篇博客,对大家以后开发禅道有所帮助。:)
一、学习禅道-个人看法
- 好的地方
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.跨模块调用虽然减少了代码的冗余,将各模块关联起来,但是当开发的时候,大量的加载其它模块使代码看起来很混乱(真的有点头疼)
二、学习禅道-重要模块
1.common 模块
此 模块下zh_cn.php文件可以配置所有的菜单(顶级菜单、模块菜单)。在menuOrder.php 文件中进行菜单的位置布置。
例如:
新增主菜单:$lang->menu->procedure = '流程|procedure|index';`添加副菜单: `$lang->procedure = new stdClass();`$lang->procedure->menu = new stdClass();$lang->procedure->menu->list = array('link' => '%s', 'fixed' => true);$lang->procedure->menu->story = array('link' => '需求|procedure|story|productID=%s', 'subModule' => 'story');
2.group模块(权限问题)
2.1.问题描述:
新建的菜单和功能模块,只在admin下可见,当其他普通用户登录时均不可见。
2.2.解决方案:
所有的模块、方法和菜单,都需要在该模块下进行配置
解决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.block模块
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 = '用户列表';
三、学习禅道-重要的便利方法及常用第三方插件
1.setMenu($values,$key);
// 设置菜单栏的 url
主要是对在common/zh_cn.php文件配置的菜单导航 %s 进行替换,生成正确的 url,此方法可以在任意模块使用,无需进行大的改动。
2.ajaxGetDropMenu($id, $module, $method, $extra);
// 设置生成下拉菜单
在view层创建 ajaxgetdropmenu.html.php
可以在任意需要的模块使用该方法, 只需要修改小部分代码
3.富文本框的使用:
①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');
4.tablesorter插件
①在首页引入tablesorter.html.php文件,并在table标签和th标签中,加入特定的类名,即可完成排序的功能。
②加入特定的类名,即可完成正序、倒序功能。
5.分页
①在model中调用pager对象
②在control中将page对象赋值给模板
③view层,index.html.php中显示分页,调用框架自带的show()方法,其中show()方法有两个参数,$align: left, center, right,
默认是居右对齐。$type: full|short|shortest
,默认是full,可以省略不写。
四、遇到的坑
一定要注意框架的命名规则,主要指大小写的问题,比如,view层的命名只能是小写字母,小写字母,小写字母,重要的事情说三遍!!!
关于禅道二次开发的分享相关推荐
- 禅道二次开发发送邮件功能
2019独角兽企业重金招聘Python工程师标准>>> 禅道默认在BUG和任务 修改,指派 的时候会发送邮件给默认的接收人 但是其他模块就没有对应的开发配置.如果有发信的需求,就要手 ...
- 全面使用禅道做敏捷开发的规范化管理分享
http://www.zentao.net/dynamic/80027.html 作者:李士心 来源:https://www.zhihu.com/question/21518108/answer/96 ...
- Workbench二次开发技术分享
之前我发过的关于Workbech二次开发的技术ACT,ACT主要是用来对workbench进行一些横向的开发(诸如workbench现有的载荷类型已经满足不了你的需求,你可以利用ACT技术扩展载荷类型 ...
- 禅道 php api,禅道 Rest API 开发
在老的 PHP 系统中使用 PHP 5.3以后的库 所谓老的系统,是指没有使用PHP 5.3以上命名空间(namespace)特性编码的系统. 但是,只要你的系统运行在 PHP 5.3及以上的环境,在 ...
- 禅道 Rest API 开发
在老的 PHP 系统中使用 PHP 5.3以后的库 所谓老的系统,是指没有使用PHP 5.3以上命名空间(namespace)特性编码的系统. 但是,只要你的系统运行在 PHP 5.3及以上的环境,在 ...
- Revit 二次开发实例分享
叶雄进 Joe Ye Autodesk 2010/9/1 Autode ...
- 蝉道二次开发与钉钉机器人对接
一.需求及分析过程 痛点:蝉道中单据(如:bug)填写不规范,需要筛选数据后再大量时间与当时人沟通,费时费力,如果设置为必填字段,会对其他业务线造成阻碍,只能单独拉取并通知相关人员. 需求:将特定项目 ...
- Revit二次开发知识分享(十四) 选择轴网快速生成标注
这次分享的是一个小功能.选择几根相互平行的轴网,然后快速生成标注,内容仅提供学习和参考,延展性很大,可自行开发.上代码Just Do It~~ UIDocument uidoc = commandDa ...
- Revit二次开发知识分享(十七)梁板柱开洞的使用
下面使用的API全是2019版本的API噢~~ 开洞的方法是RevitAPI中直接提供的(如下图),里面一共有四个创建的重载方法. 1.给梁,柱子和撑杆来开洞的,现在也仅支持XYZ三个方向上的开洞. ...
最新文章
- 医 系统 springboot搜索到的spring boot 的javaweb项目
- mv命令(移动和重命名)
- Linux中的用户和组
- python3怎样交换数字顺序_python中怎么交换列的顺序
- 用vscode编写静态页面_开发中实用的VSCode插件推荐
- js父元素获取子元素img_css,前端_父标签div中包含一个子元素img标签,子元素div标签,为什么img要加上浮动,子元素div才会处于正常位置?,css,前端 - phpStudy...
- ruby on rails 之图片压缩
- rust怎么用items刷东西_rust服主怎么刷东西 | 手游网游页游攻略大全
- Facebook反垃圾实践:人工治理与机器算法齐飞
- mysql passwor authen_Navicat连接虚拟机的MySQL时 提示“Password authentication failed”
- c 怎么更改计算机的默认打印机,C#Winfrom系统打印机调用/设置默认打印机
- python selenium清除缓存_SeleniumPython:无法清除chrome浏览器缓存
- vbs打开网页并全屏
- 自制homekit开关
- 如何快速构建千人规模的数字化研发管理系统
- 程序员编程艺术第一~三十八章集锦与总结,及Github地址、PDF下载
- [论文分享] SoK: A Survey Of Indirect Network-level Covert Channels
- 游戏运营全过程剖析,游戏开发,游戏运营,游戏推广问题分析
- 《自然语言处理学习之路》05 新闻分类任务实战
- MFC实战篇——分页功能
热门文章
- 关于编辑器EditPlus
- 码云团队如何使用码云?
- 数据页和数据行(翻译)
- 数据交换格式与SpringIOC底层实现
- 生产进度管理系统为制造管理提供较完善的解决方案
- 可升级鸿蒙的设备,华为鸿蒙即将到来,华为终于“出手”了!哪些机型可升级? - 王石头...
- “华为杯”研究生数学建模竞赛2005年-【华为杯】D题:仓库容量有限条件下的随机存贮管理问题(附获奖论文和matlab代码)
- 项目质量管理全部精华看这篇就够了
- H3C交换机DHCP Snooping抑制局域网内非法dhcp
- 在Linux Mint上玩转蓝牙机械键盘