新しいチケットを作成する際の「説明」欄に入力雛形を表示させる方法:その2

2,228 views
Skip to first unread message

anemone

unread,
Jan 15, 2009, 12:02:02 PM1/15/09
to Redmine Users (japanese)
こんにちは。
かなり前に、新しいチケットを作成する際の「説明」欄に入力雛形を表示させる方法について投稿があり、参考にさせていただきました。

当方では、プロジェクトごとにひな形を変える必要があり、次のようにしてみました。
このMLでも過去に話題のあった、カスタムフィールドからメーリングリストを取得してメールのあて先とするパッチを大いに参考にしています。
当方、rubyの知識は無いので、かなりそのままですが。

・プロジェクトのカスタムフィールドに長いテキストで「Template」を作成する。
・ /app/models/project.rbに次を追加する。

def template
if cv = custom_values.find(:first, :include
=>:custom_field, :conditions => ["custom_fields.name = ?","Template"])
cv.value
end
end

・ /app/controllers/issues_controller.rbのdef new内、@issue= Issue.new
の次で上記を呼び出す。

@issue.description = @project.template

さらに、特定のトラッカーで雛形表示するようにしたいと思っておりますが、それはどのように実現すればよいか解っておりません。

例えば、次のようなことを実現したいと思っています。
・trackerのidが1か2だった場合は、カスタムフィールドのTemplateから値を引っ張ってくる。
・それ以外のtrackerなら、説明欄を空白にする。
・ただし、説明欄がユーザーによって編集されていたら、トラッカーを切り替えてもそのまま説明欄の内容を引き継ぐ。

ご存じの方がいらっしゃれば教えていただけると助かります。

fmkt

unread,
Jan 21, 2009, 1:01:19 AM1/21/09
to Redmine Users (japanese)
こんにちは。

これって
IssueController#new の中で
if @issue.tracker.nil?
...
end
の確認をしてるあとで

if [1,2].include?(@issue.tracker.id)
@issue.description ||= @project.template
end

で、どうでしょう?
細かく確認してませんのでちゃんと動くかどうかわかりませんのでその辺の確認もお願いします(ぉ

では。

anemone

unread,
Jan 22, 2009, 9:48:36 AM1/22/09
to redmine-...@googlegroups.com
fmktさん、ありがとうございます。

チケット新規登録画面を開いたときの挙動として、デフォルトのトラッカーのIDが、
1,2以外だったときに説明欄が空白になることは確認できました。

私の文章の書き方が悪かったのですが、
> ・trackerのidが1か2だった場合は、カスタムフィールドのTemplateから値を引っ張ってくる。
> ・それ以外のtrackerなら、説明欄を空白にする。
> ・ただし、説明欄がユーザーによって編集されていたら、トラッカーを切り替えてもそのまま説明欄の内容を引き継ぐ。
これらは、チケット登録確定前に、新規登録画面でトラッカーのselectリストを
選択し直した時の挙動を書いたつもりでした。

トラッカーの選択による登録フォームの読み直し箇所を探してみましたが、
よくわかりませんでした。



2009/01/21 15:01 fmkt <fmkt....@gmail.com>:

MURAOKA Daisuke

unread,
Jan 22, 2009, 9:29:40 PM1/22/09
to redmine-...@googlegroups.com
村岡です。

横からすみません。

From: anemone <anemon...@gmail.com>
Subject: [Redmine] Re: 新しいチケットを作成する際の「説明」欄に入力雛形を表示させる方法:その2
Date: Thu, 22 Jan 2009 23:48:36 +0900

> これらは、チケット登録確定前に、新規登録画面でトラッカーのselectリストを
> 選択し直した時の挙動を書いたつもりでした。

当方、手元に環境がないので確認していないのですが、以下のような感じでど
うでしょうか。

@issue.attributes = params[:issue]
@issue.author = User.current
if [1,2].include?(@issue.tracker.id)
@issue.description = @project.template if @issue.description.blank?
end

トラッカー変更時にも new アクションが呼ばれるので、フォームのパラメー
タから @issue を再設定したあとに設定することと、「||=」だと ""(空文字)
の場合に設定されないので変えてみました。

外していたらごめんなさい。

fmkt

unread,
Jan 23, 2009, 4:52:43 AM1/23/09
to Redmine Users (japanese)
こんにちは。

On 1月23日, 午前11:29, MURAOKA Daisuke <r...@muj.biglobe.ne.jp> wrote:
> @issue.attributes = params[:issue]
> @issue.author = User.current
> if [1,2].include?(@issue.tracker.id)
>   @issue.description = @project.template if @issue.description.blank?
> end
>
> トラッカー変更時にも new アクションが呼ばれるので、フォームのパラメー
> タから @issue を再設定したあとに設定することと、「||=」だと ""(空文字)
> の場合に設定されないので変えてみました。

ああ、なるほど。

仮に新規登録画面のトラッカーの説明欄が空のまま、テンプレートの存在するトラッカーに変更したときは
たしかに空文字になってテンプレートを読み込みませんね。

ちなみに私の環境(script/server で確認しました)だと @issue を再設定しなくても、
説明欄も含め編集中の設定を引き継いでくれたんですが何か変更してしまってたのかな・・・?

では。

anemone

unread,
Jan 26, 2009, 9:18:24 AM1/26/09
to redmine-...@googlegroups.com
村岡さん、fmktさん、遅くなってすみません。

この都度はありがとうございました。
皆様のおかげで、解決できました。

試行錯誤の結果、下記でなんとか意図するところを実現できました。
(正しい作法か解りませんが…)
(トラッカーidが1,2以外の時で、かつtemplateに手が加わっていない場合は説明欄を空白にする。)
----


@issue.attributes = params[:issue]
@issue.author = User.current
if [1,2].include?(@issue.tracker.id)
@issue.description = @project.template if @issue.description.blank?

elsif @issue.description == @project.template
@issue.description = ""
end
----

ありがとうございました。

Reply all
Reply to author
Forward
0 new messages