我将如何将“花费的时间”添加为要在问题列表中显示的列?

有帮助吗?

解决方案

您还可以通过在运行时添加列来完成此操作。这将添加花费的时间列而不修改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和乔尔的答案,这是我需要做的就是一个“耗时”列添加到管理平台1.0.3。如果有更好的方法来获取翻译文本添加不知道。

要为新字段的局部名,加入到299左右配置线/区域设置/ 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

要得到上述实际加载的spent_time_query_patch,创建的配置/初始化/ 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列的名称始终是“t0_r0” ...

PS:你可以找到许多实例中的应用程序/模型/ query.rb线122 ++

<强> 2位数问题: 不幸的是,我不得不破解核心文件之一:应用程序/佣工/ queries_helper.rb

围绕线44,改变该:

when 'Fixnum', 'Float'                              
  if column.name == :done_ratio
    progress_bar(value, :width => '80px')
  else
    value.to_s
  end

成:

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_YOURPLUGIN /应用程序/助手/ 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 插件。你可以花费了时间和你可以说你花了什么这次(发展论坛 - 设计-...)

由于没有人回答,我刚戳源,直到它取得了成果。然后,我开始了一个博客来解释我是如何做到的。

添加花费的时间列默认问题列表管理平台

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top