ZenTaoPMS/扩展机制简介

来自站长百科
跳转至: 导航、​ 搜索

ZenTaoPMS | 安装 | 禅道结构 | 配置禅道 | 使用 | 扩展禅道 | 禅道FAQ

禅道项目管理软件的框架是采用了自主研发的ZenTaoPHP框架。通过该框架,我们实现了禅道项目管理软件灵活多变的扩展机制,通过这个扩展机制,你可以开发自己完全独立的模块,也可以对现有模块功能进行覆盖,追加。通过扩展机制,你拥有了对禅道完全的控制权。

扩展的类型[ ]

从总体来讲,插件可以分为独立的模块、模块的扩展,类库的扩展

独立的模块[ ]

独立的模块和禅道核心的模块没有什么区别,目录部署在禅道的module目录下面,里面按照mvc进行划分。

对现有模块的扩展[ ]

1. 目录结构

某一个模块所有的扩展都部署在该模块的ext目录下面,并且按照目录分开,control, model, view, config, lang,分别存储control的扩展,model的扩展, view的扩展,config的扩展和lang的扩展。

2. control的扩展

对现有模块的control层的扩展有两种,一种是覆盖现有的方法,一种是增加新的方法。无论是覆盖现有的方法,还是新增方法,扩展文件都是以方法名为名(小写)。比如以misc模块为例,我们来新增一个getsid的方法,用来获取session的id。那么只需要建立misc/ext/control/getsid.php,代码为:

class misc extends control
{
      public function getsid()
     {
         $this->view->header->title = 'getsid';
         $this->view->sid = session_id();
         $this->view->test = $this->misc->test();
        $this->display();
      }
}

然后就可以了。需要说明的是,这个地方的类,可以直接继承自control类,也可以继承自misc类。如果是后者,则需要这么写:

include '../../control.php'; misc的contro类文件需要手工包含。 class myMisc extends misc {

   public function getsid()
   {
   }

}

通过第二种方式,可以调用misc类的其他方法,实现代码的重用。

3. model的扩展。

model的扩展文件命名与control类似,在ext/model/目录下面建立相应的以方法为名的文件,里面实现对应的查询功能。比如,我们打算对misc的model新增一个方法,叫做foo,那么只需要在misc/ext/model/下面建立foo.php,代码如下:

public function foo()
{
      return 'foo';
 } 

需要说明的是,这里面不不包含的起止符号,也不包含类的声明。就只是一个方法的声明。禅道框架在执行的时候,会自动将扩展目录下面的foo.php里面的代码,替换misc/model.php中的foo方法的代码。如果是新增的方法,则会追加到misc/model.php的代码中,最终生成一个合并之后的model类文件。

4. view的扩展

  • 视图的扩展也是同样的命名,以当前访问的control的方法为名。视图文件的扩展分为两种,一种是完全覆盖原来的视图文件,文件名为xxx.html.php。xxx为当前访问的方法名。还有一种是钩子文件,为xxx.html.hook.php。该钩子文件会在整个模板加载完之后加载,在里面可以执行相应的php代码,或者js代码。这样就提供了一种通过js来动态修改页面元素的机制,从而达到对页面元素的完全控制。
  • 比如misc/ext/view/getsid.html.hook.php
  • 通过上面这段js代码,实现了对顶部导航条的加红显示。

5. 配置的扩展

配置文件存放在ext/config/目录下面,可以由多个文件,禅道框架会自动加载该目录下面以config开头的.php文件。这样不同的扩展可以有自己的配置项,彼此之间不会冲突。

6. 语言的扩展

  • 语言的扩展文件存放在ext/lang/目录下面。按照不同的语言建立相应的目录,比如zh-cn下面,可以有多个文件,禅道框架会自动加载该目录下面所有以.php结尾的文件。
  • 比如扩展bug模块的语言文件,可以建立module/bug/ext/lang/zh-cn/1.php。

独立的类库[ ]

  • 独立的类库文件和通常的php class没有任何区别,只要将其存放在lib目录下面,文件名为小写的类名,或者建立一个目录。比如,新增一个image的类,可以存放在lib/image.class.php,也可以存放在lib/image/image.class.php
  • 这样,通过上面的扩展机制,无论是企业内部的修改(配置文件的修改,语言文件的修改,或者自己对现有逻辑的修改),还是第三方的扩展,都可以完美的并存。并且不用担心禅道核心代码升级的问题。

参考来源[ ]

ZenTaoPMS使用手册导航

安装

安装帮助|注册帐号和应用申请|初始化应用|创建代码版本下载SDK|通过SDK下载代码|上传禅道代码|执行禅道安装程序|从BugFree升级到禅道|升级禅道

禅道结构

禅道的目录结构|通过禅道的请求代码位置|禅道的数据库结构和common

配置禅道

备份禅道|更新燃尽图|配置email发信及超级管理员|修改禅道的语言提示|配置为静态访问|去掉访问地址的zentao

使用

个人管理

产品经理:

维护产品及其模块|建立计划|需求管理|建立发布|路线图|产品其他相关功能
项目经理: 建立项目|组建团队|确定需求|分解任务|项目进度|项目其他相关功能
开发团队: 领取更新任务|创建build|提交测试任务|bug处理|开发团队其他功能
测试团队: 提交bug|验证和维护bug|创建测试用例|管理测试任务|执行用例并提交bug|查看报表统计|bug其他问题
管理员: 建立部门结构|设置分组建立权限体系|维护公司信息|管理员其他使用

扩展禅道

扩展机制简介|命令行入口|API机制介绍|打包规范1.0版|在线扩展编辑帮助文档|禅道插件实例

禅道FAQ