質問
「使用時間」を追加するにはどうすればよいですか。問題リストに表示される列として?
解決
これは、実行時に列を追加することでも実行できます。これにより、Redmineコアを変更せずに過ごした時間の列が追加されます。次のコードをlib /
のファイルにドロップするだけです適応元:
require_dependency 'query' module QueryPatch def self.included(base) # :nodoc: base.extend(ClassMethods) # Same as typing in the class base.class_eval do unloadable # Send unloadable so it will not be unloaded in development base.add_available_column(QueryColumn.new(:spent_hours)) end end module ClassMethods unless Query.respond_to?(:available_columns=) # Setter for +available_columns+ that isn't provided by the core. def available_columns=(v) self.available_columns = (v) end end unless Query.respond_to?(:add_available_column) # Method to add a column to the +available_columns+ that isn't provided by the core. def add_available_column(column) self.available_columns
他のヒント
EricとJoelの回答をまとめると、これはRedmine 1.0.3に「Spent time」カラムを追加するために必要なことです。翻訳テキストを追加するより良い方法があるかどうかはわかりません。
新しいフィールドにローカライズされた名前を付けるには、フィールド定義の最後の299行目あたりのconfig / locales / en.ymlに追加します:
field_spent_hours: Spent time
新しい列を追加するには、コンテンツでlib / spent_time_query_patch.rbを作成しました:
# Based on http://github.com/edavis10/question_plugin/blob/master/lib/question_query_patch.rb
require_dependency 'query'
module QueryPatch
def self.included(base) # :nodoc:
base.extend(ClassMethods)
# Same as typing in the class
base.class_eval do
unloadable # Send unloadable so it will not be unloaded in development
base.add_available_column(QueryColumn.new(:spent_hours))
end
end
module ClassMethods
unless Query.respond_to?(:available_columns=)
# Setter for +available_columns+ that isn't provided by the core.
def available_columns=(v)
self.available_columns = (v)
end
end
unless Query.respond_to?(:add_available_column)
# Method to add a column to the +available_columns+ that isn't provided by the core.
def add_available_column(column)
self.available_columns << (column)
end
end
end
end
上記の過ごした_time_query_patchを実際にロードするために、config / initializers / spent_time_query_patch.rbをコンテンツとともに作成しました:
require 'spent_time_query_patch'
Query.class_eval do
include QueryPatch
end
また、「使用時間」列が表示されていればクールです。ソート可能でした。
生成されたSQLを検索した後、この方法でソート可能な機能を実装しました。
base.add_available_column(QueryColumn.new(:spent_hours,
:sortable => "(select sum(hours) from time_entries where time_entries.issue_id = t0_r0)")
)
それぞれの行を置き換えます。 issue_id列の名前が常に&quot; t0_r0&quot;であることを願っています。 ...
PS:app / models / query.rbの122 ++行で多くの例を見つけることができます
2桁の問題: 残念ながら、コアファイルの1つであるapp / helpers / queries_helper.rbをハッキングする必要がありました
44行目付近でこれを変更します:
when 'Fixnum', 'Float'
if column.name == :done_ratio
progress_bar(value, :width => '80px')
else
value.to_s
end
into:
when 'Fixnum', 'Float'
if column.name == :done_ratio
progress_bar(value, :width => '80px')
elsif column.name == :spent_hours
sprintf "%.2f", value
else
value.to_s
end
編集:ソースを操作する代わりにパッチを使用する最近、redmineシステムの更新を行ったため、上記の修正も削除されました。 今回は、それをパッチとして実装することにしました。
任意のプラグインを開きます(コアでモンキーパッチの変更用のプラグインを作成しました)。 vendor / plugins / redmine_YOURPLUGIN / app / helpers / queries_helper.rbを開きます
module QueriesHelper
def new_column_content(column, issue)
value = column.value(issue)
if value.class.name == "Float" and column.name == :spent_hours
sprintf "%.2f", value
else
__column_content(column, issue)
end
end
alias_method :__column_content, :column_content
alias_method :column_content, :new_column_content
end
この機能は、1.4.0バージョンからビルド
AgileDwarf プラグインを使用して。時間を費やしたことがあります&amp;この時間に費やしたことを言うことができます(開発-デザイン-...)
誰も答えなかったので、結果が得られるまでソースを突きました。それから、私はそれをどのようにしたかを説明するためにブログを始めました。