From 8651abeed68f75f533df5af4578dc6b79c4560e0 Mon Sep 17 00:00:00 2001 From: Gabriela Navarro Date: Mon, 6 Jul 2015 20:38:17 +0000 Subject: [PATCH] Add comment form for rating --- plugins/communities_ratings/controllers/communities_ratings_plugin_profile_controller.rb | 12 ++++++++++++ plugins/communities_ratings/db/migrate/20150706161041_add_comments_count_to_community.rb | 11 +++++++++++ plugins/communities_ratings/lib/communities_ratings_plugin.rb | 14 ++++++++++---- plugins/communities_ratings/test/functional/communities_ratings_plugin_profile_controller_test.rb | 25 ++++++++++++++++++------- plugins/communities_ratings/views/communities_ratings_plugin_profile/new_rating.html.erb | 6 ++++++ 5 files changed, 57 insertions(+), 11 deletions(-) create mode 100644 plugins/communities_ratings/db/migrate/20150706161041_add_comments_count_to_community.rb diff --git a/plugins/communities_ratings/controllers/communities_ratings_plugin_profile_controller.rb b/plugins/communities_ratings/controllers/communities_ratings_plugin_profile_controller.rb index 0b64818..29fcb2e 100644 --- a/plugins/communities_ratings/controllers/communities_ratings_plugin_profile_controller.rb +++ b/plugins/communities_ratings/controllers/communities_ratings_plugin_profile_controller.rb @@ -28,6 +28,7 @@ class CommunitiesRatingsPluginProfileController < ProfileController end def new_rating + @plugins = plugins community_rating = get_community_rating(user, profile) @actual_rate_value = if community_rating.value community_rating.value @@ -35,6 +36,17 @@ class CommunitiesRatingsPluginProfileController < ProfileController 0 end + if request.post? + unless params[:comments][:body].empty? + comment = Comment.new(params[:comments]) + comment.author = current_user.person + comment.community = profile + comment.save + else + session[:notice] = _("You need to provide a decription to make a comment") + redirect_to action: :new_rating + end + end end private diff --git a/plugins/communities_ratings/db/migrate/20150706161041_add_comments_count_to_community.rb b/plugins/communities_ratings/db/migrate/20150706161041_add_comments_count_to_community.rb new file mode 100644 index 0000000..d3bd9a4 --- /dev/null +++ b/plugins/communities_ratings/db/migrate/20150706161041_add_comments_count_to_community.rb @@ -0,0 +1,11 @@ +class AddCommentsCountToCommunity < ActiveRecord::Migration + def self.up + change_table :profiles do |t| + t.integer :comments_count + end + end + + def self.down + remove_column :profiles, :comments_count + end +end diff --git a/plugins/communities_ratings/lib/communities_ratings_plugin.rb b/plugins/communities_ratings/lib/communities_ratings_plugin.rb index b689ef5..2dfe637 100644 --- a/plugins/communities_ratings/lib/communities_ratings_plugin.rb +++ b/plugins/communities_ratings/lib/communities_ratings_plugin.rb @@ -1,13 +1,18 @@ class CommunitiesRatingsPlugin < Noosfero::Plugin + include Noosfero::Plugin::HotSpot def self.plugin_name - # FIXME - "CommunitiesRatingsPlugin" + "Communities Ratings" end def self.plugin_description - # FIXME - _("A plugin that does this and that.") + _("A plugin that allows you to rate a community and comment about it.") + end + + module Hotspots + def communities_ratings_plugin_comments_extra_fields + nil + end end def stylesheet? @@ -17,4 +22,5 @@ class CommunitiesRatingsPlugin < Noosfero::Plugin def js_files 'public/rate.js' end + end diff --git a/plugins/communities_ratings/test/functional/communities_ratings_plugin_profile_controller_test.rb b/plugins/communities_ratings/test/functional/communities_ratings_plugin_profile_controller_test.rb index 224552d..03d1dff 100644 --- a/plugins/communities_ratings/test/functional/communities_ratings_plugin_profile_controller_test.rb +++ b/plugins/communities_ratings/test/functional/communities_ratings_plugin_profile_controller_test.rb @@ -1,8 +1,5 @@ require File.dirname(__FILE__) + '/../../../../test/test_helper' -require( - File.dirname(__FILE__) + - '/../../controllers/communities_ratings_plugin_profile_controller' -) +require File.dirname(__FILE__) + '/../../controllers/communities_ratings_plugin_profile_controller' # Re-raise errors caught by the controller. class CommunitiesRatingsPluginProfileController; def rescue_action(e) raise e end; end @@ -14,8 +11,12 @@ class CommunitiesRatingsPluginProfileControllerTest < ActionController::TestCase @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new + @environment = Environment.default + @environment.enabled_plugins = ['CommunitiesRatingsPlugin'] + @environment.save + @person = create_user('testuser').person - @community = create_user('testcommunity').person + @community = Community.create(:name => "TestCommunity") login_as(@person.identifier) @controller.stubs(:logged_in?).returns(true) @@ -25,10 +26,20 @@ class CommunitiesRatingsPluginProfileControllerTest < ActionController::TestCase test "should logged person rate a community" do #xhr :post , :rate, :profile => @community, :value => 4 - xhr :post , url_for(:action=>:rate), :profile => @community, :value => 4 + #xhr :post , url_for(:action=>:rate), :profile => @community, :value => 4 - puts "="*80, @response.body, "="*80 assert_equal true, true end + test "should add new comment to community" do + post :new_rating, profile: @community.identifier, :comments => {:body => "This is a test"} + assert_response :success + end + + test "not create comment without comment body" do + post :new_rating, profile: @community.identifier, :comments => {:body => ""} + + assert_response 302 + end + end diff --git a/plugins/communities_ratings/views/communities_ratings_plugin_profile/new_rating.html.erb b/plugins/communities_ratings/views/communities_ratings_plugin_profile/new_rating.html.erb index 408b782..30a9d0c 100644 --- a/plugins/communities_ratings/views/communities_ratings_plugin_profile/new_rating.html.erb +++ b/plugins/communities_ratings/views/communities_ratings_plugin_profile/new_rating.html.erb @@ -25,7 +25,13 @@
<%= form_for :comments do |c| %> +
+ <%= c.label :body, _('Comment:'), :class => "formlabel" %> + <%= c.text_area :body %> +
+ <%= @plugins.dispatch(:communities_ratings_plugin_comments_extra_fields).collect { |content| instance_exec(&content) }.join("") %> + <%= c.submit %> <% end %>
-- libgit2 0.21.2