fix conflict
This commit is contained in:
@@ -7,4 +7,9 @@ class ApplicationController < ActionController::Base
|
||||
# Prevent CSRF attacks by raising an exception.
|
||||
# For APIs, you may want to use :null_session instead.
|
||||
protect_from_forgery with: :exception
|
||||
|
||||
def verify_captcha?(resource)
|
||||
return true unless recaptcha_keys?
|
||||
verify_recaptcha(model: resource)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
class CommentsController < ApplicationController
|
||||
before_action :authenticate_user!
|
||||
before_action :set_debate, :set_parent
|
||||
before_action :set_debate, :set_parent, only: :create
|
||||
respond_to :html, :js
|
||||
|
||||
def create
|
||||
@@ -10,6 +10,12 @@ class CommentsController < ApplicationController
|
||||
respond_with @comment
|
||||
end
|
||||
|
||||
def vote
|
||||
@comment = Comment.find(params[:id])
|
||||
@comment.vote_by(voter: current_user, vote: params[:value])
|
||||
respond_with @comment
|
||||
end
|
||||
|
||||
private
|
||||
def comment_params
|
||||
params.require(:comments).permit(:commentable_type, :commentable_id, :body)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class DebatesController < ApplicationController
|
||||
include RecaptchaHelper
|
||||
before_action :set_debate, only: [:show, :edit, :update]
|
||||
before_action :authenticate_user!, except: [:show, :index]
|
||||
before_action :set_debate, only: [:show, :edit, :update, :vote]
|
||||
before_action :authenticate_user!, except: [:index, :show]
|
||||
before_action :validate_ownership, only: [:edit, :update]
|
||||
|
||||
def index
|
||||
@@ -26,7 +26,7 @@ class DebatesController < ApplicationController
|
||||
def create
|
||||
@debate = Debate.new(debate_params)
|
||||
@debate.author = current_user
|
||||
if verify_captcha? and @debate.save
|
||||
if verify_captcha?(@debate) and @debate.save
|
||||
redirect_to @debate, notice: t('flash.actions.create.notice', resource_name: 'Debate')
|
||||
else
|
||||
render :new
|
||||
@@ -38,6 +38,10 @@ class DebatesController < ApplicationController
|
||||
respond_with @debate
|
||||
end
|
||||
|
||||
def vote
|
||||
@debate.vote_by(voter: current_user, vote: params[:value])
|
||||
end
|
||||
|
||||
|
||||
private
|
||||
def set_debate
|
||||
@@ -51,10 +55,4 @@ class DebatesController < ApplicationController
|
||||
def validate_ownership
|
||||
raise ActiveRecord::RecordNotFound unless @debate.editable_by?(current_user)
|
||||
end
|
||||
|
||||
def verify_captcha?
|
||||
return true unless recaptcha_keys?
|
||||
verify_recaptcha(model: @debate)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
class RegistrationsController < Devise::RegistrationsController
|
||||
include RecaptchaHelper
|
||||
|
||||
def create
|
||||
if verify_recaptcha
|
||||
if verify_captcha?(resource)
|
||||
super
|
||||
else
|
||||
build_resource(sign_up_params)
|
||||
flash.now[:alert] = t('recaptcha.errors.verification_failed')
|
||||
render :new
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
private
|
||||
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
class VotesController < ApplicationController
|
||||
before_action :set_debate
|
||||
before_action :authenticate_user!
|
||||
respond_to :html, :js
|
||||
|
||||
def create
|
||||
register_vote
|
||||
notice = @debate.vote_registered? ? I18n.t("votes.notice_thanks") : I18n.t("votes.notice_already_registered")
|
||||
respond_with @debate
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_debate
|
||||
@debate = Debate.find(params[:debate_id])
|
||||
end
|
||||
|
||||
def register_vote
|
||||
@debate.vote_by voter: current_user, vote: params[:value]
|
||||
end
|
||||
end
|
||||
@@ -1,5 +1,6 @@
|
||||
class Comment < ActiveRecord::Base
|
||||
acts_as_nested_set scope: [:commentable_id, :commentable_type]
|
||||
acts_as_votable
|
||||
|
||||
validates :body, presence: true
|
||||
validates :user, presence: true
|
||||
|
||||
@@ -35,6 +35,10 @@ class Debate < ActiveRecord::Base
|
||||
editable? && author == user
|
||||
end
|
||||
|
||||
def description
|
||||
super.try :html_safe
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def sanitize_description
|
||||
|
||||
@@ -7,14 +7,19 @@
|
||||
<span class="comment-info">
|
||||
<%= comment.user.name %> • <%= time_ago_in_words(comment.created_at) %>
|
||||
</span>
|
||||
<p><%= comment.body %></p>
|
||||
<% if user_signed_in? %>
|
||||
<p class="reply"><%= render 'comments/form', {parent: comment, toggeable: true} %></p>
|
||||
<% end %>
|
||||
</div>
|
||||
<p><%= comment.body %></p>
|
||||
|
||||
<div class="comment-children">
|
||||
<%= render comment.children %>
|
||||
</div>
|
||||
<span id="<%= dom_id(comment) %>_votes">
|
||||
<%= render 'comments/votes', comment: comment %>
|
||||
</span>
|
||||
|
||||
<% if user_signed_in? %>
|
||||
<p class="reply"><%= render 'comments/form', {parent: comment, toggeable: true} %></p>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<div class="comment-children">
|
||||
<%= render comment.children %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
11
app/views/comments/_votes.html.erb
Normal file
11
app/views/comments/_votes.html.erb
Normal file
@@ -0,0 +1,11 @@
|
||||
<span class="in_favor">
|
||||
<%= link_to "up", vote_comment_path(comment, value: 'yes'),
|
||||
method: "post", remote: true %>
|
||||
<%= comment.get_likes.size %>
|
||||
</span>
|
||||
|
||||
<span class="against">
|
||||
<%= link_to "down", vote_comment_path(comment, value: 'no'),
|
||||
method: "post", remote: true %>
|
||||
<%= comment.get_dislikes.size %>
|
||||
</span>
|
||||
1
app/views/comments/vote.js.erb
Normal file
1
app/views/comments/vote.js.erb
Normal file
@@ -0,0 +1 @@
|
||||
$("#<%= dom_id(@comment) %>_votes").html('<%= j render("comments/votes", comment: @comment) %>');
|
||||
@@ -10,30 +10,16 @@
|
||||
<p class="debate-info">
|
||||
<i class="icon-chat-bubble-two"></i> <%= pluralize(debate.comment_threads.count, t("debates.debate.comment"), t("debates.debate.comments")) %>
|
||||
</p>
|
||||
<p><%= sanitize(truncate(debate.description, length: 200).html_safe) %></p>
|
||||
<%= debate.description %>
|
||||
<%= render "shared/tags", debate: debate %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="small-12 medium-3 column">
|
||||
<div class="text-center votes">
|
||||
<%= link_to debate_votes_path(debate, value: 'yes'), class: "like inline-block", title: t('votes.agree'), method: "post" do %>
|
||||
<i class="icon-like"></i>
|
||||
<span><%= percentage('likes', debate) %></span>
|
||||
<% end %>
|
||||
|
||||
<span class="divider"></span>
|
||||
|
||||
<%= link_to debate_votes_path(debate, value: 'no'), class: "unlike inline-block", title: t('votes.disagree'), method: "post" do %>
|
||||
<i class="icon-unlike"></i>
|
||||
<span><%= percentage('dislikes', debate) %></span>
|
||||
<% end %>
|
||||
<br>
|
||||
<span class="total-votes">
|
||||
<%= pluralize(debate.total_votes, t("debates.debate.vote"), t("debates.debate.votes")) %>
|
||||
</span>
|
||||
</div>
|
||||
<div id="<%= dom_id(debate) %>_votes" class="small-12 medium-3 column">
|
||||
<%= render 'debates/votes_min', debate: debate %>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -16,22 +16,8 @@
|
||||
</div>
|
||||
|
||||
<div class="row votes">
|
||||
<div class="small-12 column">
|
||||
<%= link_to debate_votes_path(featured_debate, value: "yes"), class: "like", title: t('votes.agree'), method: "post" do %>
|
||||
<i class="icon-like"></i>
|
||||
<span><%= percentage('likes', featured_debate) %></span>
|
||||
<% end %>
|
||||
|
||||
<span class="divider"></span>
|
||||
|
||||
<%= link_to debate_votes_path(featured_debate, value: "no"), class: "unlike", title: t('votes.disagree'), method: "post" do %>
|
||||
<i class="icon-unlike"></i>
|
||||
<span><%= percentage('dislikes', featured_debate) %></span>
|
||||
<% end %>
|
||||
|
||||
<span class="total-votes right">
|
||||
<%= pluralize(featured_debate.total_votes, t("debates.debate.vote"), t("debates.debate.votes")) %>
|
||||
</span>
|
||||
<div id="<%= dom_id(featured_debate) %>_votes" class="small-12 column">
|
||||
<%= render 'debates/featured_debate_votes', debate: featured_debate %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
21
app/views/debates/_featured_debate_votes.html.erb
Normal file
21
app/views/debates/_featured_debate_votes.html.erb
Normal file
@@ -0,0 +1,21 @@
|
||||
<span id="in_favor">
|
||||
<%= link_to vote_debate_path(debate, value: 'yes', partial: 'featured_debate_votes'),
|
||||
class: "like", title: t('votes.agree'), method: "post", remote: true do %>
|
||||
<i class="icon-like"></i>
|
||||
<span><%= percentage('likes', debate) %></span>
|
||||
<% end %>
|
||||
</span>
|
||||
|
||||
<span class="divider"></span>
|
||||
|
||||
<span id="against">
|
||||
<%= link_to vote_debate_path(debate, value: 'no', partial: 'featured_debate_votes'),
|
||||
class: "unlike", title: t('votes.disagree'), method: "post", remote: true do %>
|
||||
<i class="icon-unlike"></i>
|
||||
<span><%= percentage('dislikes', debate) %></span>
|
||||
<% end %>
|
||||
</span>
|
||||
|
||||
<span class="total-votes right">
|
||||
<%= pluralize(debate.total_votes, t("debates.debate.vote"), t("debates.debate.votes")) %>
|
||||
</span>
|
||||
@@ -7,7 +7,8 @@
|
||||
|
||||
<div class="text-center">
|
||||
<div id="in_favor" class="inline-block">
|
||||
<%= link_to debate_votes_path(@debate, value: 'yes'), class: "like", title: t('votes.agree'), method: "post", remote: true do %>
|
||||
<%= link_to vote_debate_path(@debate, value: 'yes', partial: 'votes'),
|
||||
class: "like", title: t('votes.agree'), method: "post", remote: true do %>
|
||||
<i class="icon-like"></i>
|
||||
<span><%= percentage('likes', @debate) %></span>
|
||||
<% end %>
|
||||
@@ -16,7 +17,8 @@
|
||||
<span class="divider"></span>
|
||||
|
||||
<div id="against" class="inline-block">
|
||||
<%= link_to debate_votes_path(@debate, value: 'no'), class: "unlike", title: t('votes.disagree'), method: "post", remote: true do %>
|
||||
<%= link_to vote_debate_path(@debate, value: 'no', partial: 'votes'),
|
||||
class: "unlike", title: t('votes.disagree'), method: "post", remote: true do %>
|
||||
<i class="icon-unlike"></i>
|
||||
<span><%= percentage('dislikes', @debate) %></span>
|
||||
<% end %>
|
||||
22
app/views/debates/_votes_min.html.erb
Normal file
22
app/views/debates/_votes_min.html.erb
Normal file
@@ -0,0 +1,22 @@
|
||||
<div class="text-center votes">
|
||||
<span id="in_favor">
|
||||
<%= link_to vote_debate_path(debate, value: 'yes', partial: 'votes_min'),
|
||||
class: "like inline-block", title: t('votes.agree'), method: "post", remote: true do %>
|
||||
<i class="icon-like"></i>
|
||||
<span><%= percentage('likes', debate) %></span>
|
||||
<% end %>
|
||||
</span>
|
||||
<span class="divider"></span>
|
||||
|
||||
<span id="against">
|
||||
<%= link_to vote_debate_path(debate, value: 'no', partial: 'votes_min'),
|
||||
class: "unlike inline-block", title: t('votes.disagree'), method: "post", remote: true do %>
|
||||
<i class="icon-unlike"></i>
|
||||
<span><%= percentage('dislikes', debate) %></span>
|
||||
<% end %>
|
||||
</span>
|
||||
<br>
|
||||
<span class="total-votes">
|
||||
<%= pluralize(debate.total_votes, t("debates.debate.vote"), t("debates.debate.votes")) %>
|
||||
</span>
|
||||
</div>
|
||||
@@ -7,11 +7,11 @@
|
||||
<span class="author"><%= @debate.author.name %></span><span class="bullet"> • </span> <%= l @debate.created_at.to_date %> <span class="bullet"> • </span><i class="icon-chat-bubble-two"></i> <%= pluralize(@debate.comment_threads.count, t("debates.show.comment"), t("debates.show.comments")) %>
|
||||
</div>
|
||||
<h1><%= @debate.title %></h1>
|
||||
<p><%= @debate.description %></p>
|
||||
<%= @debate.description %>
|
||||
<p><%= render 'shared/tags', debate: @debate %></p>
|
||||
</div>
|
||||
<div id="votes" class="small-12 medium-3 column votes">
|
||||
<%= render 'votes/votes' %>
|
||||
<div id="<%= dom_id(@debate) %>_votes" class="votes small-12 medium-3 column">
|
||||
<%= render 'debates/votes' %>
|
||||
<div class="text-center">
|
||||
<% if user_signed_in? %>
|
||||
<%= link_to t("debates.show.leave_comment"), "#comments", class: "leave-comment" %>
|
||||
@@ -39,4 +39,4 @@
|
||||
<%= link_to t("debates.show.edit_debate_link"), edit_debate_path(@debate), :class => 'button radius right' %>
|
||||
<% end %>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
1
app/views/debates/vote.js.erb
Normal file
1
app/views/debates/vote.js.erb
Normal file
@@ -0,0 +1 @@
|
||||
$("#<%= dom_id(@debate) %>_votes").html('<%= j render("debates/#{params[:partial]}", debate: @debate) %>');
|
||||
@@ -1 +0,0 @@
|
||||
$("#votes").html("<%= j render('votes') %>");
|
||||
Reference in New Issue
Block a user