<%= f.label :title, t("proposals.form.proposal_title") %>
- <%= f.text_field :title, maxlength: Proposal.title_max_length, placeholder: t("proposals.form.proposal_title"), label: false %>
+ <%= f.text_field :title, maxlength: Proposal.title_max_length, placeholder: t("proposals.form.proposal_title"), label: false, data: {ajax_target: "ajax_suggest", ajax_show: "#ajax_suggest_show", ajax_url: suggest_proposals_path}%>
<%= f.label :question, t("proposals.form.proposal_question") %>
diff --git a/app/views/proposals/suggest.html.erb b/app/views/proposals/suggest.html.erb
new file mode 100644
index 000000000..4d66be41f
--- /dev/null
+++ b/app/views/proposals/suggest.html.erb
@@ -0,0 +1,25 @@
+
+ <% if @search_terms && @proposals.count >0 %>
+ <% proposals_count = @proposals.count %>
+ <% query = @search_terms %>
+ <% limit = 5 %>
+
+
+ <%= t("proposals.new.suggestions.found", count: proposals_count, query: query)%>
+
+
+ <% @proposals.take(limit).each do |proposal| %>
+ - <%= link_to proposal.title, proposal %>
+ <% end %>
+
+ <% if proposals_count > limit %>
+
+ <%= t("proposals.new.suggestions.message", count: proposals_count,
+ query: query,
+ limit: limit)%>
+ <%= link_to t("proposals.new.suggestions.see_all"), proposals_path(:search => query)%>
+
+ <% end %>
+
+ <% end %>
+
\ No newline at end of file
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 555b47413..d0bd253ca 100755
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -121,6 +121,12 @@ en:
recommendation_two: Any debate or comment suggesting illegal action will be deleted, as well as those intending to sabotage the debate spaces. Anything else is allowed.
recommendations_title: Recommendations for creating a debate
start_new: Start a debate
+ suggestions:
+ found:
+ one: "There is a debate with the term '%{query}', you can participate in it instead of opening a new one."
+ other: "There are debates with the term '%{query}', you can participate in them instead of opening a new one."
+ message: "You are seeing %{limit} of %{count} debates containing the term %{query}"
+ see_all: "See all"
show:
author_deleted: User deleted
back_link: Go back
@@ -300,6 +306,12 @@ en:
recommendation_two: Any proposal or comment suggesting illegal action will be deleted, as well as those intending to sabotage the debate spaces. Anything else is allowed.
recommendations_title: Recommendations for creating a proposal
start_new: Create new proposal
+ suggestions:
+ found:
+ one: "There is a proposal by the term '%{query}', you can contribute to it instead of creating a new"
+ other: "There are proposals by the term '%{query}', you can contribute to them instead of creating a new"
+ message: "You are seeing %{limit} of %{count} proposals containing the term %{query}"
+ see_all: "See all"
proposal:
already_supported: You have already supported this proposal. Share it!
comments:
diff --git a/config/locales/es.yml b/config/locales/es.yml
old mode 100644
new mode 100755
index 87de46def..e810365fc
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -26,7 +26,8 @@ es:
user_permission_votes: Participar en las votaciones finales*
username_label: Nombre de usuario
verified_account: Cuenta verificada
- verify_my_account: Verificar mi cuenta
+ verify_my_account: Verificar mi cuentaquer
+
application:
close: Cerrar
menu: Menú
@@ -121,6 +122,12 @@ es:
recommendation_two: Cualquier debate o comentario que implique una acción ilegal será eliminado, también los que tengan la intención de sabotear los espacios de debate, todo lo demás está permitido.
recommendations_title: Recomendaciones para crear un debate
start_new: Empezar un debate
+ suggestions:
+ found:
+ one: "Existe un debate con el término '%{query}', puedes participar en él en vez de abrir uno nuevo."
+ other: "Existen debates con el término '%{query}', puedes participar en ellos en vez de abrir uno nuevo."
+ message: "Estás viendo %{limit} de %{count} debates que contienen el término %{query}"
+ see_all: "Ver todos"
show:
author_deleted: Usuario eliminado
back_link: Volver
@@ -300,6 +307,12 @@ es:
recommendation_two: Cualquier propuesta o comentario que implique una acción ilegal será eliminada, también las que tengan la intención de sabotear los espacios de propuesta, todo lo demás está permitido.
recommendations_title: Recomendaciones para crear una propuesta
start_new: Crear una propuesta
+ suggestions:
+ found:
+ one: "Existe un debate con el término '%{query}', puedes participar en él en vez de abrir uno nuevo."
+ other: "Existen debates con el término '%{query}', puedes participar en ellos en vez de abrir uno nuevo."
+ message: "Estás viendo %{limit} de %{count} debates que contienen el término %{query}"
+ see_all: "Ver todos"
proposal:
already_supported: "¡Ya has apoyado esta propuesta, compártela!"
comments:
diff --git a/config/routes.rb b/config/routes.rb
index 37578ed20..b48b4628f 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -38,9 +38,9 @@ Rails.application.routes.draw do
put :flag
put :unflag
end
-
collection do
get :map
+ get :suggest
end
end
@@ -51,9 +51,9 @@ Rails.application.routes.draw do
put :flag
put :unflag
end
-
collection do
get :map
+ get :suggest
end
end
@@ -242,4 +242,4 @@ Rails.application.routes.draw do
# static pages
get '/blog' => redirect("http://diario.madrid.es/participa/")
resources :pages, path: '/', only: [:show]
-end
\ No newline at end of file
+end
diff --git a/db/schema.rb b/db/query
similarity index 98%
rename from db/schema.rb
rename to db/query
index a9cce3582..fea940496 100644
--- a/db/schema.rb
+++ b/db/query
@@ -103,16 +103,16 @@ ActiveRecord::Schema.define(version: 20160126090634) do
t.string "title", limit: 80
t.text "description"
t.integer "author_id"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
t.string "visit_id"
t.datetime "hidden_at"
- t.integer "flags_count", default: 0
+ t.integer "flags_count", default: 0
+ t.integer "cached_votes_total", default: 0
+ t.integer "cached_votes_up", default: 0
+ t.integer "cached_votes_down", default: 0
t.datetime "ignored_flag_at"
- t.integer "cached_votes_total", default: 0
- t.integer "cached_votes_up", default: 0
- t.integer "cached_votes_down", default: 0
- t.integer "comments_count", default: 0
+ t.integer "comments_count", default: 0
t.datetime "confirmed_hide_at"
t.integer "cached_anonymous_votes_total", default: 0
t.integer "cached_votes_score", default: 0
diff --git a/spec/features/debates_spec.rb b/spec/features/debates_spec.rb
index 44955bb29..0945056b6 100644
--- a/spec/features/debates_spec.rb
+++ b/spec/features/debates_spec.rb
@@ -865,6 +865,7 @@ feature 'Debates' do
expect(page).to have_content('User deleted')
end
+<<<<<<< HEAD
context "Filter" do
pending "By category" do
@@ -947,4 +948,43 @@ feature 'Debates' do
end
end
+ context 'Suggesting debates' do
+
+ scenario 'Shows up to 5 suggestions per debate', :js do
+ author = create(:user)
+ login_as(author)
+
+ debate1 = create(:debate, title: "1 - El Quijote: En un lugar de la Mancha", cached_votes_up: 1)
+ debate2 = create(:debate, title: "2 - El Quijote: de cuyo nombre no quiero acordarme", cached_votes_up: 2)
+ debate3 = create(:debate, title: "3 - El Quijote: no ha mucho tiempo que vivía ", cached_votes_up: 3)
+ debate4 = create(:debate, title: "4 - un hidalgo de los de lanza en astillero", description: "El Quijote un hidalgo de los de lanza en astillero", cached_votes_up: 4)
+ debate5 = create(:debate, title: "5 - El Quijote: adarga antigua, rocín flaco y galgo corredor", cached_votes_up: 5)
+ debate6 = create(:debate, title: "6 - Una olla de algo más vaca que carnero", description: 'El Quijote', cached_votes_up: 6)
+ debate7 = create(:debate, title: "7 - No se sugiere", cached_votes_up: 7)
+
+ visit new_debate_path
+ fill_in 'debate_title', with: 'Quijote'
+ page.find("body").click
+
+ within('div#ajax_suggest_show') do
+ expect(page.html).to have_content ("You are seeing 5 of 6 debates containing the term Quijote")
+ end
+ end
+
+ scenario 'No found suggestions for debate', :js do
+ author = create(:user)
+ login_as(author)
+
+ debate1 = create(:debate, title: "El Quijote: En un lugar de la Mancha", cached_votes_up: 10)
+ debate2 = create(:debate, title: "El Quijote: de cuyo nombre no quiero acordarme")
+
+ visit new_debate_path
+ fill_in 'debate_title', with: 'La Celestina'
+ page.find("body").click
+
+ within('div#ajax_suggest_show') do
+ expect(page.html).to_not have_content ('You are seeing')
+ end
+ end
+ end
end
\ No newline at end of file
diff --git a/spec/features/proposals_spec.rb b/spec/features/proposals_spec.rb
index 08b99463c..e807dfaa3 100644
--- a/spec/features/proposals_spec.rb
+++ b/spec/features/proposals_spec.rb
@@ -1023,6 +1023,7 @@ feature 'Proposals' do
expect(page).to have_content('User deleted')
end
+<<<<<<< HEAD
context "Filter" do
scenario "By category" do
@@ -1105,4 +1106,42 @@ feature 'Proposals' do
end
end
+ context 'Suggesting proposals' do
+
+ scenario 'Shows up to 5 suggestions per proposal', :js do
+ author = create(:user)
+ login_as(author)
+
+ create(:proposal, title: 'First proposal').update_column(:confidence_score, 10)
+ create(:proposal, title: 'Second proposal').update_column(:confidence_score, 8)
+ create(:proposal, title: 'Third proposal').update_column(:confidence_score, 6)
+ create(:proposal, title: 'Fourth proposal').update_column(:confidence_score, 4)
+ create(:proposal, title: 'Fifth proposal').update_column(:confidence_score, 3)
+ create(:proposal, title: 'Sixth proposal').update_column(:confidence_score, 1)
+
+ visit new_proposal_path
+ fill_in 'proposal_title', with: 'proposal'
+ page.find("body").click
+
+ within('div#ajax_suggest_show') do
+ expect(page.html).to have_content ("You are seeing 5 of 6 proposals containing the term proposal")
+ end
+ end
+
+ scenario 'No found suggestions for debate', :js do
+ author = create(:user)
+ login_as(author)
+
+ create(:proposal, title: 'First proposal').update_column(:confidence_score, 10)
+ create(:proposal, title: 'Second proposal').update_column(:confidence_score, 8)
+
+ visit new_proposal_path
+ fill_in 'proposal_title', with: 'debate'
+ page.find("body").click
+
+ within('div#ajax_suggest_show') do
+ expect(page.html).to_not have_content ('You are seeing')
+ end
+ end
+ end
end