docbrown/app/views/admin/billboards/_form.html.erb
PJ cee84b49ef
Exclude manual segments from dropdown in billboard admin form (#19677)
* exclude manual segments from audience segments dropdown

* specs 🎉

* fix deleteDisplayAds specs

* add seed for display ad with manually managed segment

* moar specs
2023-07-12 20:23:50 +01:00

138 lines
6.7 KiB
Text

<div class="grid l:grid-cols-2 gap-6 mb-4">
<div class="flex flex-col gap-4">
<% if @display_ad.creator.present? %>
<div class="crayons-field">
<%= label_tag :creator, "Created by:", class: "crayons-field__label" %>
<%= text_field_tag :creator, @display_ad.creator.name, class: "crayons-textfield", disabled: true, autocomplete: "off" %>
</div>
<% end %>
<div class="crayons-field">
<%= label_tag :name, "Name:", class: "crayons-field__label" %>
<%= text_field_tag :name, @display_ad.name, class: "crayons-textfield", autocomplete: "off" %>
</div>
<div class="crayons-field">
<%= label_tag :organization_id, "Organization ID:", class: "crayons-field__label" %>
<%= text_field_tag :organization_id, @display_ad.organization_id, class: "crayons-textfield", placeholder: "1234", autocomplete: "off" %>
</div>
<div class="crayons-field">
<%= label_tag :body_markdown, "Body Markdown:", class: "crayons-field__label" %>
<%= text_area_tag :body_markdown, @display_ad.body_markdown, size: "100x5", class: "crayons-textfield" %>
</div>
<div class="crayons-field">
<%= label_tag :placement_area, "Placement Area:", class: "crayons-field__label" %>
<%= select_tag :placement_area, options_for_select(display_ads_placement_area_options_array, selected: @display_ad.placement_area), include_blank: "Select...", class: "crayons-select js-placement-area" %>
</div>
<div class="crayons-field">
<div id="display-ad-targeted-tags"></div>
</div>
<div class="crayons-field hidden">
<%= label_tag :tag_list, "Tag List:", class: "crayons-field__label" %>
<%= text_field_tag :tag_list, @display_ad.tag_list.to_s, class: "crayons-textfield js-tags-textfield", autocomplete: "off" %>
</div>
<div class="crayons-field hidden">
<%= label_tag :exclude_article_ids, "Exclude Article IDs:", class: "crayons-field__label" %>
<%= text_field_tag :exclude_article_ids, @display_ad.exclude_article_ids.join(", "), class: "crayons-textfield js-exclude-ids-textfield", autocomplete: "off" %>
</div>
<div class="crayons-field">
<fieldset aria-describedby="section-description" aria-describedby="display-to-description">
<legend class="crayons-field crayons-field__label pl-0">Display to user group</legend>
<p id="display-to-description" class="crayons-field__description mb-2">Determines which user group will be able to see the Display Ad</p>
<label class="crayons-field crayons-field--radio mb-2">
<%= radio_button_tag :display_to, "all", @display_ad.display_to_all?, class: "crayons-radio" %>
<div class="crayons-field__label">All users</div>
</label>
<label class="crayons-field crayons-field--radio mb-2">
<%= radio_button_tag :display_to, "logged_in", @display_ad.display_to_logged_in?, class: "crayons-radio" %>
<div class="crayons-field__label">Only logged in users</div>
</label>
<label class="crayons-field crayons-field--radio mb-2">
<%= radio_button_tag :display_to, "logged_out", @display_ad.display_to_logged_out?, class: "crayons-radio" %>
<div class="crayons-field__label">Only logged out users</div>
</label>
</fieldset>
</div>
<div class="crayons-field <%= "hidden" if @display_ad.audience_segment.blank? %>">
<%= label_tag :audience_segment_id, "Users who:", class: "crayons-field__label" %>
<% if @display_ad.audience_segment&.manual? %>
<%= select_tag :audience_segment_id,
options_for_select(single_audience_segment_option(@display_ad), selected: @display_ad.audience_segment_id),
disabled: true,
class: "crayons-select js-audience-segment" %>
<% else %>
<%= select_tag :audience_segment_id,
options_for_select(automatic_audience_segments_options_array, selected: @display_ad.audience_segment_id),
include_blank: "All users",
class: "crayons-select js-audience-segment" %>
<% end %>
</div>
<div class="crayons-field">
<fieldset aria-describedby="section-description" aria-describedby="type-of-description">
<legend class="crayons-field crayons-field__label pl-0">Type</legend>
<label class="crayons-field crayons-field--radio mb-2">
<%= radio_button_tag :type_of, "in_house", @display_ad.in_house?, class: "crayons-radio" %>
<div class="crayons-field__label">In-House Ad</div>
</label>
<label class="crayons-field crayons-field--radio mb-2">
<%= radio_button_tag :type_of, "community", @display_ad.community?, class: "crayons-radio" %>
<div class="crayons-field__label">Community</div>
</label>
<label class="crayons-field crayons-field--radio mb-2">
<%= radio_button_tag :type_of, "external", @display_ad.external?, class: "crayons-radio" %>
<div class="crayons-field__label">External</div>
</label>
</fieldset>
</div>
<div class="crayons-field">
<%= label_tag :published, "Published:", class: "crayons-field__label" %>
<%= select_tag :published, options_for_select([false, true], selected: @display_ad.published), class: "crayons-select" %>
</div>
<div class="crayons-field">
<%= label_tag :approved, "Approved:", class: "crayons-field__label" %>
<%= select_tag :approved, options_for_select([false, true], selected: @display_ad.approved), class: "crayons-select" %>
</div>
<div class="crayons-field">
<%= label_tag :priority, "Prioritized:", class: "crayons-field__label" %>
<%= select_tag :priority, options_for_select([false, true], selected: @display_ad.priority), class: "crayons-select" %>
</div>
</div>
<div>
<div class="crayons-card crayons-card--secondary crayons-sponsorship text-styles text-styles--display-ad">
<% if @display_ad.persisted? %>
<%= @display_ad.processed_html.html_safe %>
<% else %>
<div class="flex flex-col gap-3">
<p>
Display ads will show up in the designated placement area <strong>once published and approved</strong>. You can safely preview them here before publishing.
</p>
<p>
Multiple ads that share the same placement area will be swapped every few minutes. <strong>The units with the most engagement will show up the most often</strong>.
</p>
<p>
Organization ID is optional. Use it if you want to attribute an ad to a specific organization.
</p>
</div>
<% end %>
</div>
</div>
</div>
<%= javascript_packs_with_chunks_tag "admin/displayAds", defer: true %>