Redmine - إضافة "قضى وقتا" مجال قضايا العرض
-
11-07-2019 - |
سؤال
كيف يمكنني إضافة "قضى" على أنها عمود ليتم عرضها في القضايا القائمة ؟
المحلول
يمكنك أيضا القيام بذلك عن طريق إضافة عمود في وقت التشغيل.وهذا إضافة أمضى ساعات عمود دون تعديل 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
نصائح أخرى
وتوحيد اريك والأجوبة جويل، وهذا هو ما كنت بحاجة إلى القيام به للحصول عمود "قضى الوقت" إضافة إلى Redmine 1.0.3. لست متأكدا ما إذا كان هناك طريقة أفضل للحصول على إضافة النص الترجمة.
لإعطاء الحقل الجديد اسم محلية، إضافة إلى التكوين / لغات / en.yml حول خط 299 في نهاية التعاريف الملعب:
field_spent_hours: Spent time
لإضافة عمود جديد، خلق ليب / 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:يمكنك أن تجد الكثير من الأمثلة في التطبيق/نماذج/الاستعلام.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 النظام ، لذلك المذكورة أعلاه إصلاح أيضا تم إزالتها.هذه المرة قررنا تنفيذ هذا التصحيح.
فتح أي المساعد (أنشأنا البرنامج المساعد لدينا قرد-تصحيح التغييرات الأساسية).فتح بائع/الإضافات/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 المساعد. هل يمكن أن يكون أمضى بعض الوقت وتستطيع أن تقول ما قضيت هذا الوقت (التطوير - تصميم -...)
ومنذ لا أحد أجاب، أنا فقط مطعون المصدر حتى انها اسفرت عن النتائج. بعد ذلك بدأت بلوق لشرح كيف فعلت ذلك.
اضافة عمود الوقت الذي يقضيه ل قائمة القضايا الافتراضي في Redmine