fixing conflicts

This commit is contained in:
rgarcia
2015-07-27 23:29:32 +02:00
18 changed files with 115 additions and 23 deletions

1
.gitignore vendored
View File

@@ -18,3 +18,4 @@
/spec/examples.txt
/config/database.yml
/config/secrets.yml

View File

@@ -35,6 +35,7 @@ gem 'acts-as-taggable-on'
gem "responders"
gem 'foundation-rails'
gem 'acts_as_votable'
gem "recaptcha", :require => "recaptcha/rails"
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console

View File

@@ -137,6 +137,7 @@ GEM
thor (>= 0.18.1, < 2.0)
rake (10.4.2)
rdoc (4.2.0)
recaptcha (0.4.0)
responders (2.1.0)
railties (>= 4.2.0, < 5)
rspec-core (3.3.1)
@@ -210,6 +211,7 @@ DEPENDENCIES
jquery-rails
pg
rails (= 4.2.3)
recaptcha
responders
rspec-rails (~> 3.0)
sass-rails (~> 5.0)

View File

@@ -0,0 +1,9 @@
jQuery ->
toggle_comment = (id) ->
$("#js-comment-form-#{id}").toggle()
$('.js-add-comment-link').click ->
id = $(this).data().id
toggle_comment(id)
false

View File

@@ -1,4 +1,5 @@
class DebatesController < ApplicationController
include RecaptchaHelper
before_action :set_debate, only: [:show, :edit, :update]
before_action :authenticate_user!, except: [:show, :index]
before_action :validate_ownership, only: [:edit, :update]
@@ -24,8 +25,11 @@ class DebatesController < ApplicationController
def create
@debate = Debate.new(debate_params)
@debate.author = current_user
@debate.save
respond_with @debate
if verify_captcha? and @debate.save
redirect_to @debate, notice: t('flash.actions.create.notice', resource_name: 'Debate')
else
render :new
end
end
def update
@@ -47,4 +51,9 @@ class DebatesController < ApplicationController
raise ActiveRecord::RecordNotFound unless @debate.editable_by?(current_user)
end
def verify_captcha?
return true unless recaptcha_keys?
verify_recaptcha(model: @debate)
end
end

View File

@@ -0,0 +1,11 @@
module CommentsHelper
def comment_link_text(parent)
parent.class == Debate ? "Comentar" : "Responder"
end
def comment_button_text(parent)
parent.class == Debate ? "Publicar comentario" : "Publicar respuesta"
end
end

View File

@@ -0,0 +1,8 @@
module RecaptchaHelper
def recaptcha_keys?
Recaptcha.configuration.public_key.present? &&
Recaptcha.configuration.private_key.present?
end
end

View File

@@ -1,7 +1,11 @@
<%= form_for [@debate, Comment.new] do |f| %>
<%= f.text_area :body %>
<%= f.hidden_field :commentable_type, value: parent.class %>
<%= f.hidden_field :commentable_id, value: parent.id %>
<%= link_to comment_link_text(parent), "", class: "js-add-comment-link", data: {'id': parent.id} %>
<%= f.submit 'Publicar comentario', :class => "button radius" %>
<% end %>
<div id="js-comment-form-<%= parent.id %>" style="display:none">
<%= form_for [@debate, Comment.new] do |f| %>
<%= f.text_area :body %>
<%= f.hidden_field :commentable_type, value: parent.class %>
<%= f.hidden_field :commentable_id, value: parent.id %>
<%= f.submit comment_button_text(parent), :class => "button radius" %>
<% end %>
</div>

View File

@@ -30,6 +30,8 @@
Acepto la política de privacidad y el aviso legal
<% end %>
<%= render 'shared/captcha' %>
<div class="actions">
<%= f.submit %>
</div>

View File

@@ -5,13 +5,13 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title><%= content_for?(:title) ? yield(:title) : "Participación" %></title>
<%= stylesheet_link_tag "application" %>
<%= javascript_include_tag "vendor/modernizr" %>
<%= javascript_include_tag "application", 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
<script src="https://www.google.com/recaptcha/api.js?hl=<%= I18n.locale %>"></script>
</head>
<body>
<body>
<%= render 'layouts/header' %>
@@ -28,5 +28,5 @@
<%= yield %>
</div>
</div>
</body>
</body>
</html>

View File

@@ -0,0 +1,3 @@
<% if recaptcha_keys? %>
<%= recaptcha_tags ajax: true, hl: I18n.locale %>
<% end %>

View File

@@ -1,3 +1,3 @@
<% if debate.tags.any? %>
<i class="fi-price-tag"></i> <%= tags(debate) %>
<i class="fi-price-tag"></i> <span class='tags'><%= tags(debate) %></span>
<% end %>

View File

@@ -0,0 +1,5 @@
Recaptcha.configure do |config|
config.public_key = Rails.application.secrets.recaptcha_public_key
config.private_key = Rails.application.secrets.recaptcha_private_key
config.api_version = 'v2'
end

View File

@@ -20,4 +20,7 @@
# available at http://guides.rubyonrails.org/i18n.html.
en:
hello: "Hello world"
recaptcha:
errors:
verification_failed: "Incorrect Captcha"
recaptcha_unreachable: "Internet connecion error. Could not load Captcha"

View File

@@ -196,3 +196,7 @@ es:
long: "%d de %B de %Y %H:%M"
short: "%d de %b %H:%M"
pm: pm
recaptcha:
errors:
verification_failed: "El Captcha no es correcto"
recaptcha_unreachable: "Fallo de conexión a Internet. No se ha podido cargar el Captcha"

View File

@@ -10,13 +10,18 @@
# Make sure the secrets in this file are kept private
# if you're sharing your code publicly.
default: &default
recaptcha_public_key: <%= ENV["MADRID_RECAPTCHA_PUBLIC_KEY"] %>
recaptcha_private_key: <%= ENV["MADRID_RECAPTCHA_PRIVATE_KEY"] %>
development:
secret_key_base: 56792feef405a59b18ea7db57b4777e855103882b926413d4afdfb8c0ea8aa86ea6649da4e729c5f5ae324c0ab9338f789174cf48c544173bc18fdc3b14262e4
<<: *default
test:
secret_key_base: 4d5adf961ddd27aef19622d6c0b3234d555f9ee003f022b1f829c92bbe33aaee907be7feb67bd54c14a1a32512fa968565ad405971fbc41bd0797af73c26a796
<<: *default
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
<<: *default

View File

@@ -82,7 +82,10 @@ feature 'Tags' do
click_button 'Actualizar Debate'
expect(page).to have_content 'Debate actualizado correctamente'
expect(page).to have_content 'Economía, Hacienda'
within('.tags') do
expect(page).to have_css('a', text: 'Economía')
expect(page).to have_css('a', text: 'Hacienda')
end
end
scenario 'Delete' do

View File

@@ -0,0 +1,22 @@
require 'rails_helper'
describe RecaptchaHelper do
describe "#recaptcha_keys?" do
it "should be true if Recaptcha keys are configured" do
allow(Recaptcha.configuration).to receive(:public_key).and_return("akjasf")
allow(Recaptcha.configuration).to receive(:private_key).and_return("akjasf4532")
expect(helper.recaptcha_keys?).to be true
end
it "should be false if Recaptcha keys are not configured" do
allow(Recaptcha.configuration).to receive(:public_key).and_return(nil)
allow(Recaptcha.configuration).to receive(:private_key).and_return(nil)
expect(helper.recaptcha_keys?).to be false
end
end
end