2008-11-26 6 views

उत्तर

9

तुम भी कार्यावधि में स्तंभ जोड़ कर ऐसा कर सकते हैं। यह 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
+1

मैंने यह सुनिश्चित करने के लिए कि कल परियोजना एक क्रमबद्ध कॉलम के रूप में दिखाई दे, सफलतापूर्वक इस विधि का उपयोग किया। पूर्ण स्रोत कोड इस उत्तर में नहीं है, बस यहां जाएं: http://github.com/edavis10/redmine-question-plugin/tree/master/lib/question_query_patch.rb धन्यवाद एरिक और जोएल। क्या आप जानते हैं कि अगर यह Redmine 0.9.3 के साथ काम करता है: – banderson623

+2

इस जवाब के बाद से वर्ष मैंने सोचा कि मैं प्रयास करने से पहले पूछना चाहिए बढ़ रहा है? – Oskar

+0

@ ऑस्कर: यह नहीं होना चाहिए, मुझे नहीं लगता कि एपीआई बहुत बदल गया है। –

1

चूंकि किसी ने उत्तर नहीं दिया, मैंने परिणाम प्राप्त किए जाने तक स्रोत को दबाया। तब मैंने यह बताने के लिए एक ब्लॉग शुरू किया कि मैंने यह कैसे किया।

Add spent time column to default issues list in Redmine

11

एरिक और जोएल के जवाब समेकन, यह क्या मैं करने के लिए आवश्यक है Redmine 1.0.3 में जोड़ा गया 'स्पेंट टाइम' कॉलम प्राप्त करने के लिए करें। सुनिश्चित नहीं है कि अनुवाद पाठ जोड़ने के लिए एक बेहतर तरीका है या नहीं।

नए क्षेत्र एक स्थानीय नाम देने के लिए, क्षेत्र परिभाषाओं के अंत में config/स्थानों/लाइन 299 के आसपास en.yml को जोड़ा गया:, बनाया lib/spent_time_query_patch

field_spent_hours: Spent time 

नया स्तंभ जोड़ने के लिए सामग्री के साथ .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 

सामग्री के साथ वास्तव में लोड करते हैं, config/initializers/spent_time_query_patch.rb बनाया करने के लिए ऊपर spent_time_query_patch प्राप्त करने के लिए

+1

दूसरों के लिए इसे लिखने के लिए धन्यवाद। :) –

+0

यह मेरे लिए काम करने के लिए नहीं लगता था - वहाँ redmine प्राप्त करने के लिए परिवर्तन देखने के लिए चलाने के लिए है किसी भी आदेशों? – Toby

+0

मुझे अपने वेब-सर्वर को रोकने और पुनरारंभ करने की आवश्यकता है। (मैं एक रेल/रूबी विशेषज्ञ नहीं हूँ, लेकिन अगर किसी कारण से आपका सेटअप config में autoload .rb फ़ाइलों के लिए कॉन्फ़िगर नहीं है/initializers/तो कोड की Query.class_eval हिस्सा कभी नहीं चलाने जाएगा और पैच नहीं है । हो सकता है कि दोहरी जांच सब पर भरी हुई है कि आप मिल गया है फ़ाइल मालिक/नई सही तरीके से सेट तो वेब सर्वर उन्हें पढ़ सकते हैं फाइलों पर अनुमतियाँ। शायद अधिक रूबी विशेषज्ञता के साथ किसी को कैसे क्या रास्तों 'autoload' का परीक्षण करने पर टिप्पणी कर सकता है सक्रिय है ... के लिए) – user2067021

2

इसके अलावा, यह अच्छा होगा, अगर कॉलम "स्पेंट टाइम" क्रमबद्ध था।

उत्पादित एसक्यूएल ऊपर देखने के बाद, मैं सिर्फ sortable सुविधा इस इस तरह से लागू किया:

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" है ...

पुनश्च: आप ऐप्लिकेशन/मॉडल/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 प्रणाली का एक अद्यतन था, इसलिए कि ऊपर उल्लेख किया फिक्स भी हटा दिया गया था। इस बार, हमने इसे पैच के रूप में लागू करने का निर्णय लिया।

किसी भी प्लगइन खोलें (हम कोर पर हमारे बंदर-पैच परिवर्तन के लिए एक प्लगइन बनाया)।/Plugins/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

से यह सुविधा build in विक्रेता को खोलने के। आप समय व्यतीत कर सकते हैं & आप इस समय क्या खर्च कर सकते हैं (विकास - डिजाइन -...)

संबंधित मुद्दे