2012-09-06 14 views
6

मैंने एक प्लगइन लिखा है जो नवीनतम मुद्दों को पकड़ता है और उन्हें होम पेज पर प्रदर्शित करता है। सब कुछ अच्छी तरह से काम करता प्रतीत होता है, लेकिन यह केवल पहली बार काम करता है जब मैं इसे चलाने के लिए सर्वर को पुनरारंभ करता हूं - उसके बाद यह उस समय के मुद्दों को कैश करता है, और कोई भी नया नहीं मिलता है।समस्याएं बदलते समय Redmine प्लगइन दृश्य हुक रीफ्रेश करें

मैं इसके बारे में कुछ पढ़ रहा हूं, और ऐसा लगता है कि मुझे अपनी प्लगइन में अतिरिक्त कार्यक्षमता जोड़ने के लिए मुद्दों के लिए एक पैच लिखना चाहिए। क्या यह सच है? यदि हां, तो मुझे after_save कार्रवाई में क्या जोड़ना चाहिए? नवीनतमपोस्ट्ससेट मॉडल के लिए भी ऐसा ही होता है - यदि मैं अधिकतम गणना के लिए मानों को बदलता हूं और जिस पर इसे प्रदर्शित किया जाना चाहिए, तो होम पेज तब तक इसे प्रतिबिंबित नहीं करता जब तक कि मैं सर्वर को पुनरारंभ नहीं करता।

क्षमा करें अगर यह प्रश्न काफी मामूली लगता है, तो मैं रूबी के लिए नया हूं।

module LatestPosts 
    class ViewHookListener < Redmine::Hook::ViewListener 

     require 'plugins/latest_posts/app/models/latest_posts_setup.rb' 
     setup = LatestPostsSetup.find_by_id(1) 

     if setup == nil 
      count = LatestPostsSetup::DEFAULT_COUNT 
      side = LatestPostsSetup::DEFAULT_SIDE 
     else 
      count = setup.max_count 
      side = setup.side 
     end 

     issues = Issue.find(:all, :limit => count, :order => "created_on DESC") 

     if side == 'left' 
      render_side = :view_welcome_index_left 
     else 
      render_side = :view_welcome_index_right 
     end 
     render_on render_side, :locals => {:issues => issues}, :partial => "latest_issues/issues" 
    end end 

संपादित

मैं अब फ्लाई पर एचटीएमएल प्रस्तुत करना दृश्य सहायक बदल गया है, और मैं नए मुद्दों के लिए अपाचे पुनः आरंभ करने की जरूरत नहीं है: कृपया नीचे दृश्य सहायक कोड की खोज प्रदर्शित होने के लिए, मुझे समझ में नहीं आता कि यह HTML टेम्पलेट का उपयोग करने पर क्यों काम करेगा? कृपया नीचे दिए गए कोड:

# lib/latest_posts_hook_listener.rb 
module LatestPosts 
    class ViewHookListener < Redmine::Hook::ViewListener 

     def view_welcome_index_left(context={}) 
      setup = load_setup() 
      if setup[:side] == "left" 
       load_issues(setup[:count]) 
      end 
     end 

     def view_welcome_index_right(context={}) 
      setup = load_setup() 
      if setup[:side] == "right" 
       load_issues(setup[:count]) 
      end 
     end 

     def load_setup() 
      require 'plugins/latest_posts/app/models/latest_posts_setup.rb' 
      setup = LatestPostsSetup.find_by_id(1) 

      if setup == nil 
       count = LatestPostsSetup::DEFAULT_COUNT 
       side = LatestPostsSetup::DEFAULT_SIDE 
      else 
       count = setup.max_count 
       side = setup.side 
      end 

      {:count => count, :side => side} 
     end 

     def load_issues(count) 
      html = '<div class="box" id="statuses">' 
      html += '<h3 class="icon22 icon22-users">Latest Issues</h3><ul>' 
      issues = Issue.find(:all, :limit => count, :order => "created_on DESC") 
      issues.each do |issue| 
       html += <<EOHTML 
        <li> 
         #{link_to h(truncate(issue.subject, :length => 60)), :controller => 'issues', :action => 'show', :id => issue } (#{ format_date(issue.created_on) }) 
        </li> 
EOHTML 
      end 
      html += '</ul></div>' 
      return html 
     end 
    end 
end 

उत्तर

1

देखते हैं अगर यह आपकी मदद करता हैं। मैं अनुभाग Using Hooks पर this tutorial और नीचे पढ़ रहा था वहाँ इस पैरा है:

विचारों में एक या अधिक हुक का उपयोग करने के लिए, आपको लगता है कि Redmine :: हुक :: ViewListener से संभालते हैं और लागू करने के तरीकों नाम के एक वर्ग बनाने की जरूरत आप जिस हुक (ओं) का उपयोग करना चाहते हैं उसके साथ।

आपके कोड में जो काम नहीं करता है, मुझे लगता है कि आपने कक्षा बनाई है, लेकिन मुझे उन हुकों के लिए लागू विधियों को नहीं देखा गया है जिन्हें आप उपयोग करना चाहते हैं।

कि खंड में दिए गए उदाहरण में, मैं चला गया और इस दृश्य http://www.redmine.org/projects/redmine/repository/entry/tags/2.0.0/app/views/issues/show.html.erb (सुनिश्चित करें कि इस दृश्य की जरूरत है) को देखा और यह पता चलता है दो उपलब्ध हुक देखते हैं: एक :view_issues_show_details_bottom नामित और एक :view_issues_show_description_bottom नामित और मैं करूंगा उम्मीद है कि आप अपने कोड विधियों में लागू होंगे जिसका नाम हुक नाम से मेल खाता है। क्या इस दृश्य में ये हुक दिखाएंगे कि आप क्या चाहते हैं ?? यदि नहीं, तो आपको शायद एक अलग दृश्य का उपयोग करने की आवश्यकता है।

संदर्भ के लिए मैं Redmine विचारों यहाँ की सूची को देखा: http://www.redmine.org/projects/redmine/repository/show/tags/2.0.0/app/views

+0

प्रतिक्रिया के लिए धन्यवाद, लेकिन यह यह हो प्रतीत नहीं होता है। मैंने 'render_on: view_welcome_index_right बदल दिया: locals => {: issues => issues},: partial =>" latest_issues/issues "' और परिणाम वही था। जिन मुद्दों को मैं प्रदर्शित करना चाहता हूं उनकी गिनती डेटाबेस में बदलावों से प्रभावित नहीं थी। –

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