Issue #1 resolved

トラッカー切換時、デフォルトテンプレートがセットされるようにしてほしい

cou2jpn avatarcou2jpn created an issue

トラッカーのセレクトリストで切換えた時、ダイレクトにそのトラッカーのテンプレートがセットされるようにしてほしいです。

大抵の場合、テンプレートを選び直すという一手間が減り、またチケット記述者に積極的にテンプレートを提示できるためです。

トラッカーとテンプレートが1対多なので、テンプレートには、次のような対応が必要と思われますが。

  1. 順番を設定(1番上がデフォルト)できるようにする。
  2. デフォルトを示すフラグを設定できるようにする。
  3. トラッカー切換時、セット又は記入編集済みの内容を破棄して良いかどうか判断する必要がある。

ちなみに、当方で実装したテンプレート機能(プラグインではなく本体の直改造)では、トラッカー切換時にテンプレートをセットするのに、次のような苦肉の策で対処しました。

チケットのカスタムフィールドのリーロードを利用するため、
app/views/issues/_form.html.erb
にあったdescriptionフィールドの描画を
app/views/issues/_attributes.html.erb
に移した。

ただ、チケット更新画面でも初期表示(続きリンクをクリックせずとも)で、descriptionフィールドが表示されるようになる弊害があります。

また、上記3.への対応としては、かなりトリッキーですが、flash変数を使って対処しました。

・プロジェクトのカスタムフィールドを使って、各テンプレートを定義している前提。
・トラッカーのテンプレートとdescriptionフィールドの内容が同じ(又は空欄)の場合は、descriptionの内容を破棄して、切換後のトラッカーのテンプレートをセットする。
・違う場合は編集されているとみなし、descriptionの内容を保持する。

一応、当方で実装したテンプレート機能の、v.1.3.0との差分を添付します。

動けば良い的にかなり乱暴なコードになっているので、参考にならないかもしれませんが、悪い例として。(Railsの知識がないもので ;)

また、Redmineのv.0.8系のころからいじってた機能なので、抜け漏れあるかもしれません。

行番号は他の様々な修正によってずれているため、無視してください。

Comments (11)

  1. Akiko Takano

    cou2jpnさん、チケット登録ありがとうございます。 また、お返事遅くなりまして、申し訳ありません。

    現在、3点目は考慮していないんですよね。 このあたりの判断が難しいので、トラッカー切り替え時にデフォルトテンプレートが適用されないようにしています。

    ただ、テンプレートのプルダウンを切り替える際に、Ajax通信を行うので、切り替え直前のチケット本文をサーバサイドに送信してあげて、戻りに『直前のデータ』として返してあげることと、Javascriptの併用で、データの復旧みたいなものはできるかもしれません。

    デフォルトのテンプレートを最初からセットするかどうかは、プロジェクト単位で選べるようにしたいなと考えています。 また、どれをデフォルトにするか、といったあたりとか、プルダウンのテンプレートの並びも、良く使うものを上に持ってくるなどの調整はしたいと思っています。

    以下のような感じで、タスクを分けていこうと思います。

    1. テンプレートのプルダウンに表示される順番を調整できるようにする。(いまは登録順でDB任せです...) 2. デフォルトテンプレートとして設定するオプションを付ける。 3. いったん入力したあと、テンプレートを切り替えて中身が変わってしまった場合に、『もとに戻す』ボタンを表示させて、復旧手段を用意する。

    なお、実際のチケット作成、管理は、r-labs側がメインになります。

    なお、テンプレートはチケットの『更新』時は考慮していないのですが、cou2jpnさんの環境では、更新時にもデフォルトテンプレートをロードしている状態でしょうか?(ロードしつつ、内容を比較して適用するかどうかを判断)

  2. cou2jpn

    Takanoさん、ご回答ありがとうございます。

    3.トラッカー切換時、セット又は記入編集済みの内容を破棄して良いかどうか判断する必要がある。
    

    については、次のような前提で実装しております。

    • 「説明」フィールドがテンプレートと同じ、または空白だったら、トラッカー切換時に破棄して新しいテンプレートをセットする。
    • 「説明」フィールドがテンプレートと違っていたら、破棄しない。(編集済みとみなして保持する)

    なお、当方のテンプレート機能は、チケットの「題名」には対応しておりません。

    1. テンプレートのプルダウンに表示される順番を調整できるようにする。(いまは登録順でDB任せです...)
    2. デフォルトテンプレートとして設定するオプションを付ける。
    3. いったん入力したあと、テンプレートを切り替えて中身が変わってしまった場合に、『もとに戻す』ボタンを表示させて、復旧手段を用意する。
    
    なお、実際のチケット作成、管理は、r-labs側がメインになります。
    

    ありがとうございます。 本来なら、フォークして自分で修正すべきなのでしょうが、対応していただけると嬉しいです。

    なお、テンプレートはチケットの『更新』時は考慮していないのですが、cou2jpnさんの環境では、更新時にもデフォルトテンプレートをロードしている状態でしょうか?(ロードしつつ、内容を比較して適用するかどうかを判断)
    

    はい。

    チケットの更新画面を開いたとき(というか「更新」のリンクをクリックしたとき)は、何もしていませんが、

    トラッカーを選択し直した時に、新規登録時と同様に、テンプレートと「説明」フィールドとを比較するようにしています。

  3. Akiko Takano

    こんにちは。 だいぶ時間が空いてしまいましたが、こちらの実装を検討しようと思います。(たいそうなことはできませんが) 入力して下さる方の負担軽減のために有効化と思っています。

    現在、cou2jpnさんの環境ではRedmine1.x系でしょうか?Redmine2.0に移行済みでしょうか? 本来は互換性のあるコードにすべきなのですが、まだそこまでのスキルがないので、何もなければRedmine2.0にフォーカスしていこうと考えています。

    もしくは、今は需要が無くなってしまった、新たな案が出てきた、などのご意見がありましたら、お知らせ下さい。

  4. cou2jpn

    Takanoさん、ご連絡ありがとうございます。

    当方の環境は、1.4系です。 他プラグインや改造機能のポーティングの関係上、2.x系への以降ができていない状況です。 無理にお願いできる立場でもないので、当方の環境を2.x系へ移行していくことも検討しようと思います。

    当機能に関する需要について、変化はありません。

    各プロジェクトにとっては、テンプレートを使うことが前程となっているのですが、デフォルトが決まっていないと、テンプレートを使わない人が続出しそうです。(運用の問題でもあるとは思いますが)

  5. Anonymous

    お返事ありがとうございます。#3にも、同様のリクエストがあがっていて、

    • ユーザさんがテンプレート機能の存在に気がつきにくい
    • 入力の手間がかかる

    というあたりはもっともだな、と感じています。

    自分の環境は、やはりRedmine1.3、1.4なことと、しばらく2.0系に移れない状況なので、少なくともこの機能はRedmine1.x系もブランチを分ける形で対応しようと考えています。

    なお、テンプレートの機能に気がつきにくいという点ですが、こちらでは(手前味噌になりますが)バナープラグインというものを併用して、新規チケット登録時、画面上部にテンプレ機能の案内を出すなどの工夫も試みています。

    Template側の機能としても、デフォルトでロードを有効にする場合は、「デフォルトでロードされてます」とか、テキストエリア下部にメッセージも付加するといいのかなと感じています。

  6. cou2jpn

    こんにちは。 少し時間ができたので、デフォルトテンプレートの機能について試行錯誤してみましたが、やはり私のスキルでは手に負えなそうでした。。。 試行錯誤中のコミットは次の通りです。お願いできる立場ではありませんが、もしアドバイスいただけるならありがたいです。 https://github.com/cou2jpn/redmine_issue_templates/commit/f9880895d0a4d7adc892128e97e8afd7f0fa45b3

    このプロジェクトをフォークすべきでしたが、私はMercurialが解らないのと、既にGithub上にいくつかのリポジトリを持っている都合上、Gitに変換してGithubに置かせていただきました。すみません。 (1.3系の最終コミットからブランチして、2.0系の並べ替えの機能を参考にさせていただき、現在デフォルトテンプレートの試行錯誤中。)

  7. Akiko Takano

    こんばんは。 だいぶ時間が経ってしまい、申し訳ありません。

    Redmineが2.x系に移り、RailsまわりもJavascriptまわりもだいぶ落ち着いてきたので、着手してみようかと思っています。 jQueryを使うのがお手軽なので、どうしても対応はRedmine2.x系になってしまいそうですが、まだ需要はありますでしょうか? (Redmineのviewもレンダリングの順番などがかなり変わっています)

    ひとまず最近のコミットで、デフォルトではテキストエリアに何か記載が入っていたら、その後に付加する(appendする) 形でテンプレートを読み込む様に調整しました。 この方針でなら、デフォルトテンプレートもロード可能かと思います。

    一応トラッカー毎にデフォルトテンプレートをロードするという感じになるかと思います。

    また他にご要望などありましたら、お寄せいただけるとうれしいです。

  8. Akiko Takano

    "feature_1088" ブランチで、デフォルトテンプレートの設定ができるようにしてみました。 デフォルトテンプレの読み込みは、まだ新規チケット作成の時のみです。 また、トラッカーを頻繁に切り替えると、既存のテキストエリアの扱いをどうしたらいいかちょっと悩んでいます。 一応、文章の末尾に追加する形にしていますが、どんどんテンプレが読み込まれてしまうと、今度はユーザさんがいらないテンプレ文を削除するのが大変になりそうです。

    テンプレを切り替えてロードする前に、ポップアップなどでどんな内容が読み込まれるのか確認できるといいのでしょうね。

    先述の通り、Redmine2.1 系をターゲットにしてしまっていますが、対応方法が決まればRedmine1.4系のほうも調整はできるとは思います。

  9. cou2jpn

    Takanoさん

    ご連絡ありがとうございます。 当方の環境は、未だ1.4系で、すぐに動かせる2系の環境もなく、確認できていませんが、前進されているようでありがたいです。

    テンプレを切り替えてロードする前に、ポップアップなどでどんな内容が読み込まれるのか確認できるといいのでしょうね。

    当方で運用中のテンプレート機能( http://redminist.blogspot.jp/2012/10/blog-post.html )では、説明欄の内容とテンプレートにある内容とを比較して、

    • 説明欄が編集されていれば、トラッカーを切り替えてもそのまま

    • 編集されていないか、空欄の場合は、トラッカーに応じたテンプレートを読み込む

    ようにしています。(ただ、一般的な挙動としては判りにくいかもしれませんが。)

    上記の機能はテンプレートがトラッカーに対して一つなので単純ですが、このプラグインの場合は、複数テンプレートがあることが前提なので難しいですね。

    お忙しい中、本当にありがとうございます。

  10. Akiko Takano

    コメントありがとうございます! 私もメインがRedmine1.4系なので、自分の環境でも需要があります。 上記のコードも「あ、こうやるんだー」という気付きがありまして、とても助かります。 うまくできそうならご報告しますね。

  11. Akiko Takano

    こちらの機能は実装済みですので、チケットとしてはCloseさせていただきます。ただし、Redmie2.x系なので、申し訳ありません…。

    なお、現在のRedmineの動作としては、トラッカー切替時と、ステータス変更時にチケットのフォームがAjaxで書き換えられてしまいます。 このため、デフォルトテンプレートの機能を利用すると、せっかく書いた本文がデフォルトテンプレートで上書きされてしまったりする課題があります。

  12. Log in to comment
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.