質問

「使用時間」を追加するにはどうすればよいですか。問題リストに表示される列として?

役に立ちましたか?

解決

これは、実行時に列を追加することでも実行できます。これにより、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;この時間に費やしたことを言うことができます(開発-デザイン-...)

誰も答えなかったので、結果が得られるまでソースを突きました。それから、私はそれをどのようにしたかを説明するためにブログを始めました。

使用時間列を追加Redmineのデフォルトの問題リスト

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top