Commit 218b4f558bda57f3424ca5a997f3be31b53c3504
1 parent
a6e2e87e
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
proposals_discussion: adds a button to export comments
Showing
5 changed files
with
67 additions
and
1 deletions
Show diff stats
plugins/proposals_discussion/controllers/profile/proposals_discussion_plugin_profile_controller.rb
0 → 100644
plugins/proposals_discussion/lib/proposals_discussion_plugin/discussion.rb
... | ... | @@ -4,6 +4,7 @@ class ProposalsDiscussionPlugin::Discussion < Folder |
4 | 4 | |
5 | 5 | has_many :topics, :class_name => 'ProposalsDiscussionPlugin::Topic', :foreign_key => 'parent_id' |
6 | 6 | has_many :proposals, :class_name => 'ProposalsDiscussionPlugin::Proposal', :through => :children, :source => :children |
7 | + has_many :proposals_comments, :class_name => 'Comment', :through => :proposals, :source => :comments | |
7 | 8 | |
8 | 9 | settings_items :custom_body_label, :type => :string, :default => _('Body') |
9 | 10 | ... | ... |
plugins/proposals_discussion/test/functional/proposals_discussion_plugin_profile_controller_test.rb
0 → 100644
... | ... | @@ -0,0 +1,25 @@ |
1 | +require File.dirname(__FILE__) + '/../test_helper' | |
2 | + | |
3 | +class ProposalsDiscussionPluginProfileControllerTest < ActionController::TestCase | |
4 | + | |
5 | + def setup | |
6 | + @profile = fast_create(Community) | |
7 | + @discussion = fast_create(ProposalsDiscussionPlugin::Discussion, :profile_id => @profile.id) | |
8 | + @topic = fast_create(ProposalsDiscussionPlugin::Topic, :parent_id => @discussion.id, :profile_id => @profile.id) | |
9 | + @person = create_user_with_permission('testinguser', 'post_content') | |
10 | + login_as :testinguser | |
11 | + end | |
12 | + | |
13 | + attr_reader :profile, :discussion, :topic, :person | |
14 | + | |
15 | + should 'assigns comments of all proposals' do | |
16 | + proposal1 = fast_create(ProposalsDiscussionPlugin::Proposal, :profile_id => profile.id, :parent_id => topic.id) | |
17 | + proposal2 = fast_create(ProposalsDiscussionPlugin::Proposal, :profile_id => profile.id, :parent_id => topic.id) | |
18 | + comment1 = fast_create(Comment, :source_id => proposal1.id) | |
19 | + comment2 = fast_create(Comment, :source_id => proposal1.id) | |
20 | + comment3 = fast_create(Comment, :source_id => proposal2.id) | |
21 | + get :export, :format => :csv, :article_id => discussion.id, :profile => profile.identifier | |
22 | + assert_equivalent [comment1, comment2, comment3], assigns(:comments) | |
23 | + end | |
24 | + | |
25 | +end | ... | ... |
plugins/proposals_discussion/views/content_viewer/discussion.html.erb
... | ... | @@ -8,9 +8,12 @@ |
8 | 8 | |
9 | 9 | <% if discussion.allow_create?(user) %> |
10 | 10 | <div class="actions"> |
11 | - <%= link_to url_for({:controller => 'cms', :action => 'new', :type => "ProposalsDiscussionPlugin::Topic", :parent_id => discussion.id}), :class => 'button with-text icon-add' do %> | |
11 | + <%= link_to({:controller => 'cms', :action => 'new', :type => "ProposalsDiscussionPlugin::Topic", :parent_id => discussion.id}, :class => 'button with-text icon-add') do %> | |
12 | 12 | <strong><%= _("New Topic") %></strong> |
13 | 13 | <% end %> |
14 | + <%= link_to({:controller => :proposals_discussion_plugin_profile, :action => :export, :format => :csv, :article_id => discussion.id}, :class => 'button with-text icon-spread') do %> | |
15 | + <strong><%= _('Export') %></strong> | |
16 | + <% end %> | |
14 | 17 | </div> |
15 | 18 | <% end %> |
16 | 19 | ... | ... |
plugins/proposals_discussion/views/proposals_discussion_plugin_profile/export.csv.erb
0 → 100644
... | ... | @@ -0,0 +1,30 @@ |
1 | +<% require 'csv' %> | |
2 | + | |
3 | +<% header = [ | |
4 | + _('Topic'), | |
5 | + _('Proposal'), | |
6 | + _('Author'), | |
7 | + _('Author Email'), | |
8 | + _('Title'), | |
9 | + _('Body'), | |
10 | + _('Date') | |
11 | +] %> | |
12 | +<% header << _('Likes') if environment.plugin_enabled?('VotePlugin') %> | |
13 | +<% header << _('Dislikes') if environment.plugin_enabled?('VotePlugin') %> | |
14 | + | |
15 | +<%= CSV.generate_line(header, :row_sep => ?\t, :quote_char => ?\ ) %> | |
16 | + | |
17 | +<% @comments.each do |comment| %> | |
18 | + <% line = [ | |
19 | + comment.source.parent ? comment.source.parent.name : '', | |
20 | + comment.source.name, | |
21 | + comment.author_name, | |
22 | + comment.author_email, | |
23 | + comment.title, | |
24 | + comment.body, | |
25 | + comment.created_at, | |
26 | + ] %> | |
27 | + <% line << comment.votes_for if environment.plugin_enabled?('VotePlugin') %> | |
28 | + <% line << comment.votes_against if environment.plugin_enabled?('VotePlugin') %> | |
29 | + <%= CSV.generate_line(line, :row_sep => ?\t, :quote_char => ?\ ) %> | |
30 | +<% end %> | ... | ... |