DecoratorPluginを0.10系にポーティングしてみるの巻

Trac月を使うとdue_assignとdue_closeの項目でcalendarを使った入力が出来ます。Trac月が出る前に環境を構築してしまって移行していない現状では、とっても便利でうらやましい機能です。

今まで我慢してきましたが社内で欲しい~の声が徐々に大きくなってきたのでTrac月からtemplateを丸っとコピーして~♪』と思ったら・・・

ぐがっ!TicketDeletePluginが動かない!何か微妙に今までとずれるっ!

っていう状況だったので、取りあえず要望のあったプロジェクト1つにだけに応急手当をして導入。応急処置はprototype.jsを使っている部分があるので、これがTicketDeletePluginのjQueryとバッティングしていたようなので、該当するUserIdの補完部分をばっさりと消しました。

とわいえProject毎に毎回これをやるのも正直しんどいし、shibuya.tracでpluginになっててなぁというのを思いだしたので、無いものは作るってことで三連休だったので調査開始。
当然0.11用なのでそのままでは動くはずもなく・・・と思ってソース眺めてたら比較簡単に対応できそうなので改変開始。

改変のポイントは

  • Genshi対応からSilver・・・対応に変更(一行)
  • 変更あったAPIを0.10へ対応へ(一行)
  • 0.10にはjQueryがないのでjQueryの追加対応

以上の作業で基本的にDecoratorPluginのレポートのアイコン化もカレンダの追加もOK。

ただし問題点が何点か・・・

  • 相変わらずTicketDeletePluginと同居できない(今度はjQuery同士のバッティング)
  • スクリプトのエラーがうるさい(IEの設定の問題だけど)

んで以上の対応をすべく三連休中に一人日(笑)程度頑張ってみました。

んで更なる改変したのは以下の3点

  • TicketDeletePluginと同居を可能にした。
      TicketDeletePlugin有効時、ticket.cs時のscripy追加の挙動を制御
  • スクリプトのエラーが出ないようした。
      templateがreport.cs,newticket.cs,ticket.cs時のみ動作するように変更
  • デフォルトのカレンダフィールドの廃止
      非Trac月環境向け(スクリプトエラー防止)

shibuya.tracでbranch切って作業でも良かったのですが、あまりにも切り刻みすぎで申し訳ないのでtidusさんに送りつけちゃう予定です。
というわけなので、0.10対応版のDecoratorPluginの公開はtidusさん次第ですm(_ _)m

ちなみにCompleteUserもポーティングしようと思ったけど、JSONの対応が面倒なので棚上げというか無かったことに・・・(汗)

取りあえずRev28まで追いついたので固めて送ることにします。