Add proposals translation interface
* Convert proposal form into translatable one. * Adapt translatable shared spec to define an owner when running at frontend feature specs. * Remove old attributes from strong parameters.
This commit is contained in:
committed by
voodoorai2000
parent
4ce006ec96
commit
bd3bb72370
@@ -1,6 +1,7 @@
|
||||
class Management::ProposalsController < Management::BaseController
|
||||
include HasOrders
|
||||
include CommentableActions
|
||||
include Translatable
|
||||
|
||||
before_action :only_verified_users, except: :print
|
||||
before_action :set_proposal, only: [:vote, :show]
|
||||
@@ -52,10 +53,10 @@ class Management::ProposalsController < Management::BaseController
|
||||
end
|
||||
|
||||
def proposal_params
|
||||
params.require(:proposal).permit(:title, :summary, :description, :video_url,
|
||||
:responsible_name, :tag_list, :terms_of_service, :geozone_id,
|
||||
:skip_map,
|
||||
map_location_attributes: [:latitude, :longitude, :zoom])
|
||||
attributes = [:video_url, :responsible_name, :tag_list,
|
||||
:terms_of_service, :geozone_id,
|
||||
:skip_map, map_location_attributes: [:latitude, :longitude, :zoom]]
|
||||
params.require(:proposal).permit(attributes, translation_params(Proposal))
|
||||
end
|
||||
|
||||
def resource_model
|
||||
|
||||
@@ -3,6 +3,7 @@ class ProposalsController < ApplicationController
|
||||
include CommentableActions
|
||||
include FlagActions
|
||||
include ImageAttributes
|
||||
include Translatable
|
||||
|
||||
before_action :parse_tag_filter, only: :index
|
||||
before_action :load_categories, only: [:index, :new, :create, :edit, :map, :summary]
|
||||
@@ -37,7 +38,6 @@ class ProposalsController < ApplicationController
|
||||
|
||||
def create
|
||||
@proposal = Proposal.new(proposal_params.merge(author: current_user))
|
||||
|
||||
if @proposal.save
|
||||
redirect_to created_proposal_path(@proposal), notice: I18n.t("flash.actions.create.proposal")
|
||||
else
|
||||
@@ -98,12 +98,13 @@ class ProposalsController < ApplicationController
|
||||
private
|
||||
|
||||
def proposal_params
|
||||
params.require(:proposal).permit(:title, :summary, :description, :video_url,
|
||||
:responsible_name, :tag_list, :terms_of_service,
|
||||
:geozone_id, :skip_map, image_attributes: image_attributes,
|
||||
documents_attributes: [:id, :title, :attachment,
|
||||
:cached_attachment, :user_id, :_destroy],
|
||||
map_location_attributes: [:latitude, :longitude, :zoom])
|
||||
attributes = [:video_url,:responsible_name, :tag_list,
|
||||
:terms_of_service, :geozone_id, :skip_map,
|
||||
image_attributes: image_attributes,
|
||||
documents_attributes: [:id, :title, :attachment, :cached_attachment,
|
||||
:user_id, :_destroy],
|
||||
map_location_attributes: [:latitude, :longitude, :zoom]]
|
||||
params.require(:proposal).permit(attributes, translation_params(Proposal))
|
||||
end
|
||||
|
||||
def retired_params
|
||||
|
||||
@@ -64,6 +64,10 @@ module ProposalsHelper
|
||||
proposals_current_view == "default" ? "minimal" : "default"
|
||||
end
|
||||
|
||||
def summary_help_text_id(translations_form)
|
||||
"summary-help-text-#{translations_form.locale}"
|
||||
end
|
||||
|
||||
def link_to_toggle_proposal_selection(proposal)
|
||||
if proposal.selected?
|
||||
button_text = t("admin.proposals.index.selected")
|
||||
|
||||
@@ -1,32 +1,50 @@
|
||||
<%= form_for(@proposal, url: form_url) do |f| %>
|
||||
<%= render "admin/shared/globalize_locales", resource: @proposal %>
|
||||
|
||||
<%= translatable_form_for(@proposal, url: form_url) do |f| %>
|
||||
|
||||
<%= render "shared/errors", resource: @proposal %>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<%= f.translatable_fields do |translations_form| %>
|
||||
<div class="small-12 column">
|
||||
<%= 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, data: {js_suggest_result: "js_suggest_result", js_suggest: "#js-suggest", js_url: suggest_proposals_path}%>
|
||||
<%= translations_form.text_field :title,
|
||||
maxlength: Proposal.title_max_length,
|
||||
placeholder: t("proposals.form.proposal_title"),
|
||||
label: t("proposals.form.proposal_title"),
|
||||
data: { js_suggest_result: "js_suggest_result",
|
||||
js_suggest: "#js-suggest",
|
||||
js_url: suggest_proposals_path } %>
|
||||
</div>
|
||||
<div id="js-suggest"></div>
|
||||
|
||||
<div class="small-12 column">
|
||||
<%= translations_form.label :summary %>
|
||||
<p class="help-text" id=<%= summary_help_text_id(translations_form) %>>
|
||||
<%= t("proposals.form.proposal_summary_note") %>
|
||||
</p>
|
||||
<%= translations_form.text_area :summary,
|
||||
rows: 4, maxlength: 200,
|
||||
label: false,
|
||||
placeholder: t("proposals.form.proposal_summary"),
|
||||
aria: {describedby: summary_help_text_id(translations_form)} %>
|
||||
</div>
|
||||
|
||||
<div class="ckeditor small-12 column">
|
||||
<%= translations_form.cktext_area :description,
|
||||
maxlength: Proposal.description_max_length,
|
||||
ckeditor: { language: I18n.locale },
|
||||
label: t("proposals.form.proposal_text") %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= f.invisible_captcha :subtitle %>
|
||||
|
||||
<div class="small-12 column">
|
||||
<%= f.label :summary, t("proposals.form.proposal_summary") %>
|
||||
<p class="help-text" id="summary-help-text"><%= t("proposals.form.proposal_summary_note") %></p>
|
||||
<%= f.text_area :summary, rows: 4, maxlength: 200, label: false,
|
||||
placeholder: t("proposals.form.proposal_summary"),
|
||||
aria: {describedby: "summary-help-text"} %>
|
||||
</div>
|
||||
|
||||
<div class="ckeditor small-12 column">
|
||||
<%= f.label :description, t("proposals.form.proposal_text") %>
|
||||
<%= f.cktext_area :description, maxlength: Proposal.description_max_length, ckeditor: { language: I18n.locale }, label: false %>
|
||||
</div>
|
||||
|
||||
<div class="small-12 column">
|
||||
<%= f.label :video_url, t("proposals.form.proposal_video_url") %>
|
||||
<p class="help-text" id="video-url-help-text"><%= t("proposals.form.proposal_video_url_note") %></p>
|
||||
<%= f.text_field :video_url, placeholder: t("proposals.form.proposal_video_url"), label: false,
|
||||
<%= f.text_field :video_url, placeholder: t("proposals.form.proposal_video_url"),
|
||||
label: false,
|
||||
aria: {describedby: "video-url-help-text"} %>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -15,6 +15,11 @@ describe "Proposals" do
|
||||
context "Concerns" do
|
||||
it_behaves_like "notifiable in-app", Proposal
|
||||
it_behaves_like "relationable", Proposal
|
||||
it_behaves_like "translatable",
|
||||
"proposal",
|
||||
"edit_proposal_path",
|
||||
%w[title summary],
|
||||
{ "description" => :ckeditor }
|
||||
end
|
||||
|
||||
context "Index" do
|
||||
|
||||
Reference in New Issue
Block a user