<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [Trac 經驗談之(1)雜談篇](http://blog.csdn.net/lanphaday/article/details/6609256) [Trac 經驗談之(2)雜談篇補遺](http://blog.csdn.net/lanphaday/article/details/6658032) [Trac 經驗談之(3)工作流篇](http://blog.csdn.net/lanphaday/article/details/6620098) [Trac 經驗談之(4)報表篇](http://blog.csdn.net/lanphaday/article/details/6641391) [Trac 經驗談之(5)插件篇](http://blog.csdn.net/lanphaday/article/details/6654027) [Trac 經驗談之(6 完)插件篇補遺](http://blog.csdn.net/lanphaday/article/details/7100118) # Trac 經驗談之(5)插件篇 賴勇浩([http://laiyonghao.com](http://laiyonghao.com)) 如果說 ticket 是 Trac 的靈魂,那么把插件(plugins)稱為 Trac 的血肉應不為過。因為這是使用的經驗談,所以 Trac 的插件機制原理什么的,我們就不談了,就介紹一下我都有用哪些插件,這些插件的功能又是什么,解決了什么問題。 不過在這之前,還是需要先知道怎么查找、下載和安裝插件。 Trac 的插件都在 [http://trac-hacks.org/](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](http://trac-hacks.org/wiki/AutocompleteUsersPlugin),我現在使用的是 0.4.1 版本,它的作用是在輸入屬主或抄送的時候,以 Ajax 的風格即時提示用戶名,這樣只記住用戶名的前面一兩個字母就行啦。效果圖: ![](http://trac-hacks.org/attachment/wiki/AutocompleteUsersPlugin/screenshot.png?format=raw) 還有一個可選的類似插件叫 TracAutoCompletePlugin,見:[http://trac-hacks.org/wiki/TracAutoCompletePlugin](http://trac-hacks.org/wiki/TracAutoCompletePlugin) ### CcSelectorPlugin 主頁:[http://trac-hacks.org/wiki/CcSelectorPlugin](http://trac-hacks.org/wiki/CcSelectorPlugin)。雖然通過編輯 trac.ini 把 [ticket] 節加上 restrict_owner = true,可以實現屬主的列表選擇,但是對于中國人來說,要記住別人的用戶名實在是太困難了,因為有些人是用英文名、有些人用拼音名、有些人姓在前面,有些人姓在后面,最后的方式莫過于能夠通過真實姓名來選擇。這個插件就是解決了這個問題,效果圖: ![](http://trac-hacks.org/attachment/wiki/CcSelectorPlugin/cc_selector.png?format=raw) 我對 CcSelectorPlugin 進行了硬編碼式地 hack,實現了對 owner 的選擇,算是 Trac 在用戶選擇方面最完美的解決方案了,等我整理代碼后,擇日開源給大家使用。 ### BreadCrumbsNavPlugin 主頁:[http://trac-hacks.org/wiki/BreadCrumbsNavPlugin](http://trac-hacks.org/wiki/BreadCrumbsNavPlugin),顧名思義,它的作用是解決用戶想回到之前的頁面卻操作起來很麻煩的問題。啟用這個插件后,在頁面的右上角,就是登陸、設置等鏈接的那個地方,會多出一行鏈接,記錄了你之前訪問過的若干個頁面,就像面包屑一樣,找到“回家的路”。 ### DateFieldPlugin 主頁:[http://trac-hacks.org/wiki/DateFieldPlugin](http://trac-hacks.org/wiki/DateFieldPlugin),通過一些設置,這個插件能夠實現日期的可視化輸入和校驗,效果圖: ![](image/56a5c4636312e.jpg) ### CustomFieldAdminPlugin 主頁:[http://trac-hacks.org/wiki/CustomFieldAdminPlugin](http://trac-hacks.org/wiki/CustomFieldAdminPlugin)。自定義字段(custom fields)異常重要,很多體驗提升的插件都是基于它的,如果你有興趣去查看一下 Trac 的源代碼,你會發現其實 Trac 在相當多的地方專門處理了 Custom Fields。這個插件提供了 Web 界面來管理自定義字段,比如增加、改變和刪除等,而之前你需要直接編輯 trac.ini(這是一種危險的、容易出錯的方式)。 ### 功能 ### TicketExtPlugin 主頁:[http://trac-hacks.org/wiki/TicketExtPlugin](http://trac-hacks.org/wiki/TicketExtPlugin),通過這個插件,可以實現:1)根據 ticket 的類型使用不同的描述模板;2)能夠通過 TracAdmin 頁面可視化地定位模板;3)根據 ticket 的類型可以使能或禁用自定義字段。我們通過這個插件,定制了自己的 ticket 描述模板,很好地引導了初次接觸 Trac 的用戶,解決了他們“不知道怎么用”的問題。 ### TracWysiwygPlugin 主頁:[http://trac-hacks.org/wiki/TracWysiwygPlugin](http://trac-hacks.org/wiki/TracWysiwygPlugin)。Trac 不被團隊中的非程序員成員拒絕使用,很大的一個原因莫過于他們覺得 Wiki 語法需要學習,太難。這個插件可以在一定程度上緩解問題,達到了部分的“所見即所得”效果,基本上所有用戶都安裝了這個插件。 ### GraphvizPlugin 主頁:[http://trac-hacks.org/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 } }}} ~~~ 效果圖: ![](https://box.kancloud.cn/2016-04-28_5721b38570384.png) 需要注意的是使用這個插件需要在機器上安裝 graphviz 程序。 ### ChildTicketsPlugin 主頁:[http://trac-hacks.org/wiki/ChildTicketsPlugin](http://trac-hacks.org/wiki/ChildTicketsPlugin)。這個插件功能強大,不過簡單來說就是給 Trac 帶入子任務單的概念。可以設置某個類型的任務單是否能夠擁有子任務單,也可以限制它子任務單的類型,以及子任務單從父級繼承的字段等。你即可以直接在某個任務單頁面直接創建子任務單,也可以查看到當前所有子任務單的信息(字段是可以設置的),如下圖: ![](http://trac-hacks.org/attachment/wiki/ChildTicketsPlugin/MultipleChildType.png?format=raw) 還有一個SubticketsPlugin(見:[http://trac-hacks.org/wiki/SubticketsPlugin](http://trac-hacks.org/wiki/SubticketsPlugin))提供類似的功能,但是我不喜歡這個插件,因為當增加子任務單時需要修改父任務單,這太操蛋了,而且定制性也弱很多。 ### TracTicketValidatorPlugin 主頁:[http://trac-hacks.org/wiki/TracTicketValidatorPlugin](http://trac-hacks.org/wiki/TracTicketValidatorPlugin)。這是金山珠海的員工 Richard Liao 貢獻的插件,提供了基于正則表達式的字段合法性校驗,非常贊。還有一個很類似的插件叫 TicketValidatorPlugin(見:[http://trac-hacks.org/wiki/TicketValidatorPlugin](http://trac-hacks.org/wiki/TicketValidatorPlugin)),但我不喜歡,因為它是基于 ticket 的狀態來驗證的字段的合法性的,而且只提供弱爆了的 required 驗證。 ### XmlRpcPlugin 主頁:[http://trac-hacks.org/wiki/XmlRpcPlugin](http://trac-hacks.org/wiki/XmlRpcPlugin),顧名思義,這個插件給 Trac 提供了 XML-RPC 機制,這樣類似 TaskTrayTask 的客戶端軟件就可以通過 XML-RPC 定期查詢 Trac,獲得新的信息,并提供用戶。除此之外,還有不少應用也依賴于它。使用時的注意事項就是需要給用戶開通 XML-RPC 權限。 ### TracSqlPlugin 主頁:[http://trac-hacks.org/wiki/TracSqlPlugin](http://trac-hacks.org/wiki/TracSqlPlugin)。這個插件應該很少人用,但是真的贊爆了!這個插件在你想 hack Trac 的時候非常有用。啟用后,它在頁面上增加了一個“SQL”的選項卡(右上角)。通過它可以:1)使用 SQL 語句查詢數據庫,2)查詢格式化或未格式化的數據,3,導出數據為CSV,4)瀏覽數據庫數據表結構。無論你使用提 SQLite、MySQL 還是 PostgreSQL 都可以使用這個插件。效果圖: ![](http://trac-hacks.org/attachment/wiki/TracSqlPlugin/sql-query.png?format=raw) to be continued...
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看