2008-11-26 20 views

cevap

9

Ayrıca zamanında sütun ekleyerek bunu yapabilirsiniz. Bu, Redmine çekirdeğini değiştirmeden harcanan saatler sütununu ekleyecektir.

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
+1

Bu projeyi, dün gece, kendi başına bir sıralanabilir sütun olarak gösterdiğinden emin olmak için bu yöntemi başarıyla kullandım. Tam kaynak kod bu cevapta yer almıyor, sadece şu adrese git: http://github.com/edavis10/redmine-question-plugin/tree/master/lib/question_query_patch.rb Teşekkürler Eric ve Joel. – banderson623

+2

Bu cevap büyüdüğünden beri denemeden önce sormam gerektiğini düşündüm: Bunun Redmine 0.9.3 ile çalışıp çalışmadığını biliyor musunuz? – Oskar

+0

@Osker: Bu, API'nin çok değiştiğini düşünmüyorum. –

11

Eric ve Joel cevapları birleştirmek, bu şimdiye kadar gerekli şudur: Sadece/lib bir dosyaya aşağıdaki kodu damla

uyarlanmıştır Redmine 1.0.3'e bir 'Harcanan zaman' sütunu eklenir. Çeviri metnini eklemenin daha iyi bir yolu olup olmadığından emin değil.

field_spent_hours: Spent time 

yeni bir sütun eklemek için oluşturulan lib/spent_time_query_patch:

alan tanımların sonunda hattı 299 civarında config/yerel/en.yml eklenen yeni field yerelleştirilmiş ismini vermek içerikle .rb:

require 'spent_time_query_patch' 

Query.class_eval do 
    include QueryPatch 
end 
012:

# 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 

içerikli aslında yük yarattı config/başlatıcıları/spent_time_query_patch.rb için yukarıdaki spent_time_query_patch almak için

+1

Bunu başkaları için yazdığınız için teşekkürler. :) –

+0

Bu benim için işe yaramadı - değişiklikleri görmek için redmine almak için çalıştırmak için herhangi bir komut var mı? – Toby

+0

Web sunucumu durdurup yeniden başlatmam gerekiyordu. (Ben Rails/Ruby uzmanı değilim, ama eğer herhangi bir nedenden dolayı kurulumunuz config/initializers/dizinlerinde .rb dosyalarını otomatik olarak yükleyecek şekilde yapılandırılmamışsa/o zaman Query.class_eval kodunun kodu hiçbir zaman çalışmaz ve yama Belki de yeni sunucudaki dosya sahibi/izinleri doğru bir şekilde kontrol edip, web sunucusunun bunları okuyabilmesini sağlayın, belki de daha fazla Ruby uzmanlığı olan bir kişi, 'autoload' yolunun nasıl aktif olduğunu test edebilir. ...) – user2067021

2

Ayrıca, "Harcanan zaman" sütunu sıralanabilirse, harika olurdu.

üretilen SQL aradıktan sonra, ben sadece bu şekilde sıralanabilir özelliği bu uygulamaya:

base.add_available_column(QueryColumn.new(:spent_hours, 
:sortable => "(select sum(hours) from time_entries where time_entries.issue_id = t0_r0)") 
) 

ilgili hattını değiştirin. Sadece

PS ... ISSUE_ID sütunun ismi "t0_r0" her zaman umut: Sen app/modeller/query.rb hatlarında çokça örnek bulabilirsiniz 122 ++

2-Rakamlar Sorun: Ne yazık ki, ben çekirdek dosyalardan biri kesmek zorunda kaldı: app/yardımcıları/queries_helper.rb

hattı 44 civarında

, bunu değiştirmek:

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

içine:

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 

DÜZENLEME: en son kaynak manipüle yerine bir yama kullanılarak, redmine sisteminin bir güncelleme yaptı, bu nedenle yukarıda sözü edilen Fix de çıkarıldı. Bu sefer bir yama olarak uygulamaya karar verdik.

Herhangi bir eklentiyi açın (Çekirdeğindeki maymun yama değişikliklerimiz için bir eklenti oluşturduk)./Plugins/redmine_YOURPLUGIN/app/yardımcıları/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

gelen bu özellik build in satıcı açın. & zamanını harcayabildiğin zaman için bu kadar zaman harcayabilirsin (geliştirme - tasarım -...)

İlgili konular