最新の問題を把握してホームページに表示するプラグインを作成しました。すべてはうまくいくようですが、初めてサーバーを起動して起動すると動作します。そのあとで問題がキャッシュされ、新しいものは取得されません。Redmineプラグインビューのフックが更新されたときに更新する
私はこれについて少しお読みになりました。プラグインに特別な機能を追加するためのパッチを作成する必要があるようです。本当?もしそうなら、私はafter_save
アクションに何を追加すればよいですか? LatestPostsSetupモデルでも同じことが起こります - 表示する必要がある最大カウントと側の値を変更すると、サーバーを再起動するまでホームページに反映されません。
申し訳ありませんが、この質問はかなり些細なように見えますが、私はルビーが初めてです。以下のビューヘルパーのコード見つけてください:
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
EDIT
を私は今、その場でHTMLをレンダリングするためにビューヘルパーを変更している、と私は新たな問題のためにApacheを再起動する必要はありません表示するには、私はなぜそれが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
は、応答をありがとうございましたが、これはそれではないようです。私は 'render_on:view_welcome_index_right、:locals => {:issues => issues}、:partial =>" latest_issues/issues "を変更し、結果は同じでした。表示したい問題の数は、データベースの変更の影響を受けませんでした。 –