From 5d91b5dd569359dc48120a4e20023d5aab1575a4 Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Mon, 6 Oct 2014 14:44:12 -0300 Subject: [PATCH] proposals_discussion: added rss link to discussion page --- plugins/proposals_discussion/lib/proposals_discussion_plugin/discussion.rb | 7 +++++++ plugins/proposals_discussion/lib/proposals_discussion_plugin/proposal.rb | 9 +++++++-- plugins/proposals_discussion/test/unit/proposal_test.rb | 22 ++++++++++++++++++++++ plugins/proposals_discussion/views/content_viewer/discussion.html.erb | 2 ++ plugins/proposals_discussion/views/select_topic.html.erb | 2 +- 5 files changed, 39 insertions(+), 3 deletions(-) diff --git a/plugins/proposals_discussion/lib/proposals_discussion_plugin/discussion.rb b/plugins/proposals_discussion/lib/proposals_discussion_plugin/discussion.rb index 3cdf592..e1fd7fb 100644 --- a/plugins/proposals_discussion/lib/proposals_discussion_plugin/discussion.rb +++ b/plugins/proposals_discussion/lib/proposals_discussion_plugin/discussion.rb @@ -1,5 +1,7 @@ class ProposalsDiscussionPlugin::Discussion < Folder + acts_as_having_posts + has_many :topics, :class_name => 'ProposalsDiscussionPlugin::Topic', :foreign_key => 'parent_id' has_many :proposals, :class_name => 'ProposalsDiscussionPlugin::Proposal', :through => :children, :source => :children @@ -26,4 +28,9 @@ class ProposalsDiscussionPlugin::Discussion < Folder end alias_method_chain :cache_key, :person + def posts + #override posts method to list proposals in feed + ProposalsDiscussionPlugin::Proposal.from_discussion(self) + end + end diff --git a/plugins/proposals_discussion/lib/proposals_discussion_plugin/proposal.rb b/plugins/proposals_discussion/lib/proposals_discussion_plugin/proposal.rb index 8b5c8e1..f210470 100644 --- a/plugins/proposals_discussion/lib/proposals_discussion_plugin/proposal.rb +++ b/plugins/proposals_discussion/lib/proposals_discussion_plugin/proposal.rb @@ -1,6 +1,7 @@ class ProposalsDiscussionPlugin::Proposal < TinyMceArticle scope :private, lambda {|user| {:conditions => {:last_changed_by_id => user.id, :published => false}}} + scope :from_discussion, lambda {|discussion| joins(:parent).where(['parents_articles.parent_id = ?', discussion.id])} alias :topic :parent @@ -16,8 +17,12 @@ class ProposalsDiscussionPlugin::Proposal < TinyMceArticle def to_html(options = {}) - proc do - render :file => 'content_viewer/proposal' + unless options[:feed] + proc do + render :file => 'content_viewer/proposal' + end + else + body end end diff --git a/plugins/proposals_discussion/test/unit/proposal_test.rb b/plugins/proposals_discussion/test/unit/proposal_test.rb index 87cf3e7..5813fff 100644 --- a/plugins/proposals_discussion/test/unit/proposal_test.rb +++ b/plugins/proposals_discussion/test/unit/proposal_test.rb @@ -29,4 +29,26 @@ class ProposalTest < ActiveSupport::TestCase assert !proposal.allow_edit?(fast_create(Person)) end + should 'return body when to_html was called with feed=true' do + assert_equal proposal.body, proposal.to_html(:feed => true) + end + + should 'return a proc when to_html was called with feed=false' do + assert proposal.to_html(:feed => false).kind_of?(Proc) + end + + should 'return a proc when to_html was called with no feed parameter' do + assert proposal.to_html.kind_of?(Proc) + end + + should 'return proposals by discussion' do + discussion = fast_create(ProposalsDiscussionPlugin::Discussion) + topic = fast_create(ProposalsDiscussionPlugin::Topic, :parent_id => discussion.id) + proposal1 = fast_create(ProposalsDiscussionPlugin::Proposal, :parent_id => topic.id) + proposal2 = fast_create(ProposalsDiscussionPlugin::Proposal) + proposal3 = fast_create(ProposalsDiscussionPlugin::Proposal, :parent_id => topic.id) + + assert_equivalent [proposal1, proposal3], ProposalsDiscussionPlugin::Proposal.from_discussion(discussion) + end + end diff --git a/plugins/proposals_discussion/views/content_viewer/discussion.html.erb b/plugins/proposals_discussion/views/content_viewer/discussion.html.erb index 924417c..421a4a8 100644 --- a/plugins/proposals_discussion/views/content_viewer/discussion.html.erb +++ b/plugins/proposals_discussion/views/content_viewer/discussion.html.erb @@ -1,5 +1,7 @@ <%= javascript_include_tag 'plugins/proposals_discussion/proposals_list.js' %> +<%= add_rss_feed_to_head(@page.name, @page.feed.url) if @page.feed %> +
<%= @page.body %>
diff --git a/plugins/proposals_discussion/views/select_topic.html.erb b/plugins/proposals_discussion/views/select_topic.html.erb index 9532280..7f28c6a 100644 --- a/plugins/proposals_discussion/views/select_topic.html.erb +++ b/plugins/proposals_discussion/views/select_topic.html.erb @@ -16,7 +16,7 @@

<%= _('Select topic') %>

- <% @discussion.children.each do |topic| %> + <% @discussion.topics.each do |topic| %>

<%= radio_button_tag('discussion[topic]', topic.id) %> <%= topic.title %> -- libgit2 0.21.2