Files
nairobi/app/components/proposals/form_component.html.erb
Javi Martín b9518d64e1 Use Rails methods to get map location input IDs
We were manually generating the IDs in order to pass them as data
attributes in the HTML in a component where we don't have access to the
form which has the inputs.

However, these data attributes only make sense when there's a form
present, so we can pass the form as a parameter and use it to get the
IDs.

We can now define a map as editable when there's an associated form,
which makes sense IMHO.
2023-05-04 15:27:15 +02:00

114 lines
3.8 KiB
Plaintext

<%= translatable_form_for(proposal, url: url, html: { class: "proposal-form" }) do |f| %>
<%= render "shared/errors", resource: proposal %>
<fieldset class="required-fields">
<legend><%= t("shared.required") %></legend>
<%= render "shared/globalize_locales", resource: proposal %>
<%= f.translatable_fields do |translations_form| %>
<div>
<%= translations_form.text_field :title,
maxlength: Proposal.title_max_length,
data: suggest_data(proposal) %>
</div>
<div class="js-suggest" data-locale="<%= translations_form.locale %>"></div>
<div>
<%= translations_form.text_area :summary,
rows: 4, maxlength: 200,
hint: t("proposals.form.proposal_summary_note") %>
</div>
<div>
<%= translations_form.text_area :description,
maxlength: Proposal.description_max_length,
class: "html-area" %>
</div>
<% end %>
</fieldset>
<%= f.invisible_captcha :subtitle %>
<fieldset>
<legend><%= t("shared.optional") %></legend>
<div>
<%= f.text_field :video_url, hint: t("proposals.form.proposal_video_url_note") %>
</div>
<% if feature?(:allow_images) %>
<div class="images">
<%= render "images/nested_image", f: f %>
</div>
<% end %>
<% if feature?(:allow_attached_documents) %>
<div class="documents">
<%= render "documents/nested_documents", f: f %>
</div>
<% end %>
<div>
<%= f.select :geozone_id, geozone_select_options,
include_blank: t("geozones.none") %>
</div>
<% if feature?(:map) %>
<div>
<%= render "map_locations/form_fields",
form: f,
map_location: proposal.map_location || MapLocation.new,
label: t("proposals.form.map_location"),
help: t("proposals.form.map_location_instructions"),
remove_marker_label: t("proposals.form.map_remove_marker"),
i18n_namespace: "proposals" %>
</div>
<% end %>
<div>
<%= f.label :tag_list, t("proposals.form.tags_label") %>
<p class="help-text" id="tag-list-help-text"><%= t("proposals.form.tags_instructions") %></p>
<div id="category_tags" class="tags">
<%= f.label :category_tag_list, t("proposals.form.tag_category_label") %>
<% categories.each do |tag| %>
<a class="js-add-tag-link"><%= tag.name %></a>
<% end %>
</div>
<br>
<%= f.text_field :tag_list, value: proposal.tag_list.to_s,
label: false,
placeholder: t("proposals.form.tags_placeholder"),
class: "js-tag-list tag-autocomplete",
aria: { describedby: "tag-list-help-text" },
data: { js_url: suggest_tags_path } %>
</div>
<% if current_user.unverified? %>
<div>
<%= f.text_field :responsible_name,
hint: t("proposals.form.proposal_responsible_name_note") %>
</div>
<% end %>
<%= render SDG::RelatedListSelectorComponent.new(f) %>
</fieldset>
<div class="actions">
<% if proposal.new_record? %>
<div>
<%= f.check_box :terms_of_service,
title: t("form.accept_terms_title"),
label: t("form.accept_terms",
policy: link_to(t("form.policy"), "/privacy", target: "blank"),
conditions: link_to(t("form.conditions"), "/conditions", target: "blank")
) %>
</div>
<% end %>
<%= f.submit(class: "button", value: t("proposals.#{action_name}.form.submit_button")) %>
</div>
<% end %>