注:本文参考禅道官网的使用手册;
5.禅道定制开发
5.1.二次开发机制
禅道项目管理软件是使用我们自主开发的zentaoPHP框架开发的。zentaoPHP框架实现了功能强大的扩展机制、API调用机制和命令行机制。您可以使用不同的机制来实现对禅道功能的修改、扩展。也可以和其他的系统进行集成,也可以部署各种自动化脚本对禅道进行各种操作。
因此请您仔细阅读下面的文档,以充分了解zentaoPHP框架的二次开发机制:
1. zentaoPHP框架基本使用手册:http://devel.cnezsoft.com/book/zentaophphelp.html
2. zentaoPHP框架二次开发机制:http://devel.cnezsoft.com/book/extension.html
5.2.禅道的目录结构
了解了zentaoPHP框架的基本原理和二次开发机制之后,您对禅道项目管理软件的目录结构应该也比较熟悉了。
- 顶级目录结构
- www目录
- module目录
module目录下面总共有30多个模块,分别对应了禅道里面的某一个功能模块。整个禅道的功能,就是由这些模块组合而成。让我们来看一个具体的模块。
5.3.找到要修改的文件
要想对禅道进行修改,就必须知道对应的代码在什么地方。在了解了禅道的目录结构之后,我们来看下禅道的请求是如何对应到代码的。
1. control方法的定位
control方法是每一个页面的入口,顺藤摸瓜,让我们先来看个例子:bug-browse-1.html 或者是/?m=bug&f=browse&productID=1&t=html。这里面有什么玄机呢?让我们来揭晓。
bug-browse-1.html,表示是访问bug这个模块的browse方法,传递的第一个参数为1,访问的页面类型是html。
同样,/?m=bug&f=browse&productID=1&t=html,m代表了模块名称,f代表了方法名称,后面的则是参数列表。
那么我们就可以对应到禅道的源代码,module/bug/control.php中的browse方法:
2. control方法里面的调用
ok,我们现在已经知道了入口的函数在什么地方,我们来跟到里面看看吧。
$this->bug,表示的是调用bug模块的model对象,那么它对应的文件在什么地方呢?聪明的你,应该已经猜到了吧。在module/bug/model.php
this->loadmoel('tree')->xxx,表示加载tree模块的model对象,它对应的文件在module/tree/model.php
$this->app->loadClass('pager'),表示加载一个lib类,它对应的文件则在lib/pager/pager.class.php
$this->lang->bug->xxx,它的定义在module/bug/lang/zh-cn.php。后面的zh-cn根据当前用户的语言而定。
后来看模块文件。$this->display()之后,调用的是view目录下面和当前方法同名的模板文件。比如bug的browse方法,它对应的模板文件是module/bug/view/browse.html.php
5.4.禅道的数据库结构
禅道的数据库命名都比较简明扼要,从字面意思应该都可以猜出来表的用途。如果还不是很清楚的话,可以到每个表对应的模块下面的语言文件里面查找。
1. 产品相关的表
- zt_product,则记录了产品相关的信息。
- zt_productPlan,则记录了产品的计划信息。
- zt_story,是非常重要的一张表,记录了系统中所有的需求记录。zt_storySpec表是记录了story的历史信息。
- zt_release,记录了产品的发布信息。这张表同时也和zt_build互相关联。
2. 项目相关的表
- zt_project,项目表。
- zt_projectProduct,记录了项目和产品之间的关联关系。
- zt_proejctStory,