Merge pull request #1995 from wairbut-m2c/aperez-edit-poll-question-answers

Allow poll question answers to be editable
This commit is contained in:
Raimond Garcia
2017-10-06 21:08:02 +02:00
committed by GitHub
13 changed files with 146 additions and 25 deletions

View File

@@ -1,5 +1,6 @@
class Admin::Poll::Questions::AnswersController < Admin::Poll::BaseController
before_action :load_answer, only: [:update, :documents]
before_action :load_question, except: [:show, :edit, :update]
before_action :load_answer, only: [:show, :edit, :update, :documents]
load_and_authorize_resource :question, class: "::Poll::Question"
@@ -18,9 +19,16 @@ class Admin::Poll::Questions::AnswersController < Admin::Poll::BaseController
end
end
def show
end
def edit
end
def update
if @answer.update(answer_params)
redirect_to admin_question_path(@answer.question), notice: t("flash.actions.save_changes.notice")
redirect_to admin_answer_path(@answer),
notice: t("flash.actions.save_changes.notice")
else
redirect_to :back
end
@@ -42,4 +50,8 @@ class Admin::Poll::Questions::AnswersController < Admin::Poll::BaseController
@answer = ::Poll::Question::Answer.find(params[:id] || params[:answer_id])
end
def load_question
@question = ::Poll::Question.find(params[:question_id])
end
end

View File

@@ -2,17 +2,14 @@
<%= render 'shared/errors', resource: @answer %>
<%= f.hidden_field :question_id, value: @question.id %>
<%= f.hidden_field :question_id, value: @answer.question_id || @question.id %>
<%= f.label :title, t('admin.questions.new.form.title') %>
<%= f.text_field :title, label: false %>
<%= f.text_field :title %>
<div class="ckeditor">
<%= f.label :description, t('admin.questions.new.form.description') %>
<%= f.cktext_area :description,
maxlength: Poll::Question.description_max_length,
ckeditor: { language: I18n.locale },
label: false %>
ckeditor: { language: I18n.locale } %>
</div>
<div class="small-12 medium-6 large-4 margin-top">

View File

@@ -0,0 +1,14 @@
<%= back_link_to %>
<ul class="breadcrumbs margin-top">
<li><%= @answer.title %></li>
<li><%= t('admin.answers.edit.title') %></li>
</ul>
<h2 class="margin-top">
<%= t("admin.answers.edit.title") %>
</h2>
<div class="poll-question-answer-form">
<%= render "form", form_url: admin_answer_path(@answer) %>
</div>

View File

@@ -0,0 +1,32 @@
<%= back_link_to %>
<%= link_to t('shared.edit'), edit_admin_answer_path(@answer),
class: "button hollow float-right" %>
<ul class="breadcrumbs margin-top">
<li><%= @answer.question.title %></li>
<li><%= @answer.title %></li>
</ul>
<div class="clear"></div>
<div class="small-12 medium-6">
<div class="callout highlight">
<p>
<strong><%= t("admin.answers.show.title") %></strong>
<br>
<%= @answer.title %>
</p>
<p>
<strong><%= t("admin.answers.show.description") %></strong>
<%= @answer.description %>
</p>
<p>
<strong><%= t("admin.answers.show.images") %></strong>
<br>
<%= link_to t("admin.answers.show.images_list"), admin_answer_images_path(@answer) %>
</p>
</div>
</div>

View File

@@ -49,7 +49,7 @@
<% @question.question_answers.each do |answer| %>
<tr id="<%= dom_id(answer) %>" class="poll_question_answer">
<td><%= answer.title %></td>
<td><%= link_to answer.title, admin_answer_path(answer) %></td>
<td><%= answer.description %></td>
<td class="text-center">
(<%= answer.images.count %>)

View File

@@ -214,8 +214,8 @@ en:
title: Title
attachment: Attachment
poll/question/answer:
title: "Answer"
description: "Description"
title: Answer
description: Description
poll/question/answer/video:
title: Title
url: External video

View File

@@ -587,9 +587,6 @@ en:
new:
title: "Create Question"
poll_label: "Poll"
form:
title: Title
description: Description
answers:
images:
add_image: "Add image"
@@ -615,6 +612,13 @@ en:
answers:
new:
title: New answer
show:
title: Title
description: Description
images: Images
images_list: Images list
edit:
title: Edit answer
videos:
index:
title: Videos

View File

@@ -208,8 +208,8 @@ es:
title: Título
attachment: Archivo adjunto
poll/question/answer:
title: "Respuesta"
description: "Descripción"
title: Respuesta
description: Descripción
poll/question/answer/video:
title: Título
url: Vídeo externo

View File

@@ -587,9 +587,6 @@ es:
new:
title: "Crear pregunta ciudadana"
poll_label: "Votación"
form:
title: Título
description: Descripción
answers:
images:
add_image: "Añadir imagen"
@@ -614,9 +611,16 @@ es:
document_actions: Acciones
answers:
new:
title: "Nueva respuesta"
title: Nueva respuesta
video_url: Video externo
documents: Documentos (1)
show:
title: Título
description: Descripción
images: Imágenes
images_list: Lista de imágenes
edit:
title: Editar respuesta
videos:
index:
title: Vídeos

View File

@@ -148,8 +148,8 @@ fr:
locale: Langue
body: Contenu
poll/question/answer:
title: "Réponse"
description: "Description"
title: Réponse
description: Description
poll/question/answer/video:
title: Titre
url: Vidéo externe

View File

@@ -391,8 +391,15 @@ fr:
videos: Vidéos
video_list: Liste des vidéos (%{count})
answers:
show:
title: Titre
description: Description
images: Images
images_list: Liste des images
new:
title: "Nouvelle réponse"
title: Nouvelle réponse
edit:
title: Modifier réponse
videos:
index:
title: Vidéos

View File

@@ -300,8 +300,8 @@ Rails.application.routes.draw do
end
end
resources :questions do
resources :answers, only: [:new, :create, :update], controller: 'questions/answers', shallow: true do
resources :questions, shallow: true do
resources :answers, except: [:index, :destroy], controller: 'questions/answers', shallow: true do
resources :images, controller: 'questions/answers/images'
resources :videos, controller: 'questions/answers/videos'
get :documents, to: 'questions/answers#documents'

View File

@@ -0,0 +1,51 @@
require 'rails_helper'
feature 'Answers' do
background do
admin = create(:administrator)
login_as (admin.user)
end
scenario 'Create' do
question = create(:poll_question)
title = 'Whatever the question may be, the answer is always 42'
description = "The Hitchhiker's Guide To The Universe"
visit admin_question_path(question)
click_link 'Add answer'
fill_in 'poll_question_answer_title', with: title
fill_in 'poll_question_answer_description', with: description
click_button 'Save'
expect(page).to have_content(title)
expect(page).to have_content(description)
end
scenario 'Update' do
question = create(:poll_question)
answer = create(:poll_question_answer, question: question)
visit admin_answer_path(answer)
click_link 'Edit'
old_title = answer.title
new_title = 'Ex Machina'
fill_in 'poll_question_answer_title', with: new_title
click_button 'Save'
expect(page).to have_content('Changes saved')
expect(page).to have_content(new_title)
visit admin_question_path(question)
expect(page).to have_content(new_title)
expect(page).to_not have_content(old_title)
end
end