QA #286
未完了チケット一覧のフィルターで担当者の表示を"チケット割り当て可能な担当者"だけにしたい
0%
奈良 裕記 さんが7年以上前に更新
類似チケットありました。
下記プラグインで対応可能でしょうか?
http://www.redmine.org/issues/2937#note-26
https://github.com/luisr9/redmine_filter_assignable
# 探し方 #280 から filterで検索しました。
Tamura Shinji さんが7年以上前に更新
ありがとうございます。
このプラグインは自分でも見つけていたのですが"on workflow"とあったので違うと思っていました。
試してみたところ、設定をいじってもどこに影響があるのかさっぱりわからずじまいでした。
このプラグインのソースでIssue_Controllerのパッチがあるので見て見ましたが、チケット一覧には影響がないような気がします。
奈良 裕記 さんが7年以上前に更新
数十人いると、Query選択肢もRole単位に限定したいのは理解できます。
人員追加変更を考慮すると、過去人員分も考える必要がありそうです。(PJに現在所属していなくとも)
Issueではなく、IssueQueryの方ですね
app/models/issue_query.rb
app/models/query.rb
関連部分の3.3の関連コード引っ張ってきました。
現行3.3
app/models/issue_query.rb
def initialize_available_filters
..
role_values = Role.givable.collect {|r| [r.name, r.id.to_s] }
add_available_filter("assigned_to_role",
:type => :list_optional, :values => role_values
) unless role_values.empty?
..
add_custom_fields_filters(issue_custom_fields)
..
end
def sql_for_assigned_to_role_field(field, operator, value)
case operator
when "*", "!*" # Member / Not member
sw = operator == "!*" ? 'NOT' : ''
nl = operator == "!*" ? "#{Issue.table_name}.assigned_to_id IS NULL OR" : ''
"(#{nl} #{Issue.table_name}.assigned_to_id #{sw} IN (SELECT DISTINCT #{Member.table_name}.user_id FROM #{Member.table_name}" +
" WHERE #{Member.table_name}.project_id = #{Issue.table_name}.project_id))"
when "=", "!"
role_cond = value.any? ?
"#{MemberRole.table_name}.role_id IN (" + value.collect{|val| "'#{self.class.connection.quote_string(val)}'"}.join(",") + ")" :
"1=0"
sw = operator == "!" ? 'NOT' : ''
nl = operator == "!" ? "#{Issue.table_name}.assigned_to_id IS NULL OR" : ''
"(#{nl} #{Issue.table_name}.assigned_to_id #{sw} IN (SELECT DISTINCT #{Member.table_name}.user_id FROM #{Member.table_name}, #{MemberRole.table_name}" +
" WHERE #{Member.table_name}.project_id = #{Issue.table_name}.project_id AND #{Member.table_name}.id = #{MemberRole.table_name}.member_id AND #{role_cond}))"
end
end
app/models/query.rb
# Adds filters for the given custom fields scope
def add_custom_fields_filters(scope, assoc=nil)
scope.visible.where(:is_filter => true).sorted.each do |field|
add_custom_field_filter(field, assoc)
end
end
# Adds a filter for the given custom field
def add_custom_field_filter(field, assoc=nil)
options = field.query_filter_options(self)
if field.format.target_class && field.format.target_class <= User
if options[:values].is_a?(Array) && User.current.logged?
options[:values].unshift ["<< #{l(:label_me)} >>", "me"]
end
end
filter_id = "cf_#{field.id}"
filter_name = field.name
if assoc.present?
filter_id = "#{assoc}.#{filter_id}"
filter_name = l("label_attribute_of_#{assoc}", :name => filter_name)
end
add_available_filter filter_id, options.merge({
:name => filter_name,
:field => field
})
end
Tamura Shinji さんが7年以上前に更新
add_available_filter("assigned_to_role",
とあるので、割り当て可能なロールに絞られているような気がするんですが、これが効いていない!?
Tamura Shinji さんが7年以上前に更新
どこかに、app/models/issues.rbにある
def assignable_users users = project.assignable_users users << author if author users << assigned_to if assigned_to users.uniq.sort end
が必要なんですよねぇ。。。
Takano Akiko さんがほぼ7年前に更新
こんにちは。
だいぶ前のバージョンの時ですが、現場でも「メンバーの中でも実際にアサイン可能(ユーザが有効)になっているユーザだけプルダウンに出て欲しい」という要望をいただいてて、ちょっと考えたことがありました。
また、プルダウンの中にチケットの作成者がいたら、表示をちょっと変えて欲しいといった要望もいただきました。
当時作ってみて保留にしてたのがあります。
https://github.com/akiko-pusu/redmine_assign_addon
1.4系の時に作ったので、今動かせる環境がないのですが、動作としては
- プラグインを有効にすると、アサイン可能かつ有効なユーザだけ選択できるようになる
- もしくはオプションで有効でないユーザも表示するけどグレー表示する
- 作成者はプルダウンでもちょっと表示を変えてあげる(最後にチケットを作成者に返しやすいように)
というものだったと思います。
また、プルダウンはViewのテンプレートを上書きするのではなくて、ajaxでプルダウンを差し替える形でした。
実装はいろいろ方法があるにしても、本家に実装されるといいと思っていて、わたしも + してた気がします。
Takano Akiko さんがほぼ7年前に更新
こんにちは!コメントありがとうございます。
プラグイン絶滅期以前のバージョンですからね...。
この当時よりは少しは私もRedmine / フロント側の知識が増えたので、作り直してみようかなとも思ってます。
Tamura Shinji さんがほぼ7年前に更新
是非是非おねがいします!
自分も昔は1.4系使ってました。。。
現在は、大半が2.6系で一部3.2に移行しているところです。
(社内で運用しているRedmineが30サイトあるのでいろいろ面倒でして。。。)