zoukankan      html  css  js  c++  java
  • Trac 经验谈之(5)插件篇

    Trac 经验谈之(1)杂谈篇
    Trac 经验谈之(2)杂谈篇补遗
    Trac 经验谈之(3)工作流篇
    Trac 经验谈之(4)报表篇
    Trac 经验谈之(5)插件篇
    Trac 经验谈之(6 完)插件篇补遗
    =================

    Trac 经验谈之(5)插件篇

    赖勇浩(http://laiyonghao.com
    如果说 ticket 是 Trac 的灵魂,那么把插件(plugins)称为 Trac 的血肉应不为过。因为这是使用的经验谈,所以 Trac 的插件机制原理什么的,我们就不谈了,就介绍一下我都有用哪些插件,这些插件的功能又是什么,解决了什么问题。
    不过在这之前,还是需要先知道怎么查找、下载和安装插件。
    Trac 的插件都在 http://trac-hacks.org/ 网站上安家,所以去这里找插件就对了!里面的每个项目都有一个自己的页面,基本上下载、安装和配置都在上面写写清清楚楚的。一般可以选择下载 zip 格式的发布包,然后解压到某个目录下执行一下 python setup.py bdist_egg 把代码编译成 egg。再用管理员账号登陆 Trac,点击右上角的“管理(admin)”,在新页面选择左侧栏“一般(general)”下的“插件(Plugins)”链接,这“管理插件”页面右上角可以把之前编译好的 python egg 上传安装,然后编辑 trac.ini 文件进行配置即可。
    接下来正式开始介绍插件,按体验和功能进行简单分类。

    体验

    AutocompleteUsers

    主页:http://trac-hacks.org/wiki/AutocompleteUsersPlugin,我现在使用的是 0.4.1 版本,它的作用是在输入属主或抄送的时候,以 Ajax 的风格即时提示用户名,这样只记住用户名的前面一两个字母就行啦。效果图:

    还有一个可选的类似插件叫 TracAutoCompletePlugin,见:http://trac-hacks.org/wiki/TracAutoCompletePlugin

    CcSelectorPlugin

    主页:http://trac-hacks.org/wiki/CcSelectorPlugin。虽然通过编辑 trac.ini 把 [ticket] 节加上 restrict_owner = true,可以实现属主的列表选择,但是对于中国人来说,要记住别人的用户名实在是太困难了,因为有些人是用英文名、有些人用拼音名、有些人姓在前面,有些人姓在后面,最后的方式莫过于能够通过真实姓名来选择。这个插件就是解决了这个问题,效果图:


    我对 CcSelectorPlugin 进行了硬编码式地 hack,实现了对 owner 的选择,算是 Trac 在用户选择方面最完美的解决方案了,等我整理代码后,择日开源给大家使用。

    BreadCrumbsNavPlugin

    主页:http://trac-hacks.org/wiki/BreadCrumbsNavPlugin,顾名思义,它的作用是解决用户想回到之前的页面却操作起来很麻烦的问题。启用这个插件后,在页面的右上角,就是登陆、设置等链接的那个地方,会多出一行链接,记录了你之前访问过的若干个页面,就像面包屑一样,找到“回家的路”。

    DateFieldPlugin

    主页:http://trac-hacks.org/wiki/DateFieldPlugin,通过一些设置,这个插件能够实现日期的可视化输入和校验,效果图:


    CustomFieldAdminPlugin

    主页:http://trac-hacks.org/wiki/CustomFieldAdminPlugin。自定义字段(custom fields)异常重要,很多体验提升的插件都是基于它的,如果你有兴趣去查看一下 Trac 的源代码,你会发现其实 Trac 在相当多的地方专门处理了 Custom Fields。这个插件提供了 Web 界面来管理自定义字段,比如增加、改变和删除等,而之前你需要直接编辑 trac.ini(这是一种危险的、容易出错的方式)。

    功能

    TicketExtPlugin

    主页:http://trac-hacks.org/wiki/TicketExtPlugin,通过这个插件,可以实现:1)根据 ticket 的类型使用不同的描述模板;2)能够通过 TracAdmin 页面可视化地定位模板;3)根据 ticket 的类型可以使能或禁用自定义字段。我们通过这个插件,定制了自己的 ticket 描述模板,很好地引导了初次接触 Trac 的用户,解决了他们“不知道怎么用”的问题。

    TracWysiwygPlugin

    主页:http://trac-hacks.org/wiki/TracWysiwygPlugin。Trac 不被团队中的非程序员成员拒绝使用,很大的一个原因莫过于他们觉得 Wiki 语法需要学习,太难。这个插件可以在一定程度上缓解问题,达到了部分的“所见即所得”效果,基本上所有用户都安装了这个插件。

    GraphvizPlugin

    主页:http://trac-hacks.org/wiki/GraphvizPlugin。所有 Unix 粉丝都对 Graphviz 如雷贯耳吧?这个插件实现了对 wiki 中 graphviz 程序的解释,让大家能够写文本的 Wiki,看图形的效果。例子:

    {{{
    #!graphviz
      digraph G {
        rankdir = "LR"
        GraphvizPlugin [ URL=GraphvizPlugin ]
        Trac [
          URL="http://trac.edgewall.org/"   
          fontcolor=red
        ]
        GraphvizPlugin -> Trac
        }
    }}}
    效果图:

    需要注意的是使用这个插件需要在机器上安装 graphviz 程序。

    ChildTicketsPlugin

    主页:http://trac-hacks.org/wiki/ChildTicketsPlugin。这个插件功能强大,不过简单来说就是给 Trac 带入子任务单的概念。可以设置某个类型的任务单是否能够拥有子任务单,也可以限制它子任务单的类型,以及子任务单从父级继承的字段等。你即可以直接在某个任务单页面直接创建子任务单,也可以查看到当前所有子任务单的信息(字段是可以设置的),如下图:

    还有一个SubticketsPlugin(见:http://trac-hacks.org/wiki/SubticketsPlugin)提供类似的功能,但是我不喜欢这个插件,因为当增加子任务单时需要修改父任务单,这太操蛋了,而且定制性也弱很多。

    TracTicketValidatorPlugin

    主页:http://trac-hacks.org/wiki/TracTicketValidatorPlugin。这是金山珠海的员工 Richard Liao 贡献的插件,提供了基于正则表达式的字段合法性校验,非常赞。还有一个很类似的插件叫 TicketValidatorPlugin(见:http://trac-hacks.org/wiki/TicketValidatorPlugin),但我不喜欢,因为它是基于 ticket 的状态来验证的字段的合法性的,而且只提供弱爆了的 required 验证。

    XmlRpcPlugin

    主页:http://trac-hacks.org/wiki/XmlRpcPlugin,顾名思义,这个插件给 Trac 提供了 XML-RPC 机制,这样类似 TaskTrayTask 的客户端软件就可以通过 XML-RPC 定期查询 Trac,获得新的信息,并提供用户。除此之外,还有不少应用也依赖于它。使用时的注意事项就是需要给用户开通 XML-RPC 权限。

    TracSqlPlugin

    主页:http://trac-hacks.org/wiki/TracSqlPlugin。这个插件应该很少人用,但是真的赞爆了!这个插件在你想 hack Trac 的时候非常有用。启用后,它在页面上增加了一个“SQL”的选项卡(右上角)。通过它可以:1)使用 SQL 语句查询数据库,2)查询格式化或未格式化的数据,3,导出数据为CSV,4)浏览数据库数据表结构。无论你使用提 SQLite、MySQL 还是 PostgreSQL 都可以使用这个插件。效果图:


    to be continued...


  • 相关阅读:
    UVA 11174 Stand in a Line,UVA 1436 Counting heaps —— (组合数的好题)
    UVA 1393 Highways,UVA 12075 Counting Triangles —— (组合数,dp)
    【Same Tree】cpp
    【Recover Binary Search Tree】cpp
    【Binary Tree Zigzag Level Order Traversal】cpp
    【Binary Tree Level Order Traversal II 】cpp
    【Binary Tree Level Order Traversal】cpp
    【Binary Tree Post order Traversal】cpp
    【Binary Tree Inorder Traversal】cpp
    【Binary Tree Preorder Traversal】cpp
  • 原文地址:https://www.cnblogs.com/aiwz/p/6154333.html
Copyright © 2011-2022 走看看