otwarchive-symphonyarchive/app/helpers/prompt_restrictions_helper.rb

77 lines
4.1 KiB
Ruby
Raw Permalink Normal View History

2026-03-11 22:22:11 +00:00
module PromptRestrictionsHelper
def prompt_restriction_settings(form, include_description = false, allowany, hasprompts)
result = "<!-- prompt restriction settings helper function -->".html_safe
result += content_tag(:dt, form.label(:optional_tags_allowed, ts("Optional Tags?")) +
link_to_help("challenge-optional-tags"))
result += content_tag(:dd, form.check_box(:optional_tags_allowed, disabled: (hasprompts ? false : true)))
result += content_tag(:dt, form.label(:title_allowed, ts("Title:")))
result += required_and_allowed_boolean(form, "title", hasprompts)
result += content_tag(:dt, form.label(:description_allowed, ts("Details/Description:")))
result += required_and_allowed_boolean(form, "description", hasprompts)
result += content_tag(:dt, form.label(:url_required, ts("URL:")))
result += required_and_allowed_boolean(form, "url", hasprompts)
result += content_tag(:dt, form.label(:fandom_num_required, ts("Fandom(s):")))
result += required_and_allowed(form, "fandom", hasprompts, allowany)
result += content_tag(:dt, form.label(:character_num_required, ts("Character(s):")))
result += required_and_allowed(form, "character", hasprompts, allowany)
result += content_tag(:dt, form.label(:relationship_num_required, ts("Relationship(s):")))
result += required_and_allowed(form, "relationship", hasprompts, allowany)
result += content_tag(:dt, form.label(:rating_num_required, ts("Rating(s):")))
result += required_and_allowed(form, "rating", hasprompts, allowany)
result += content_tag(:dt, form.label(:category_num_required, ts("Categories:")) +
link_to_help("challenge-category-tags"))
result += required_and_allowed(form, "category", hasprompts, allowany)
result += content_tag(:dt, form.label(:freeform_num_required, ts("Additional tag(s):")))
result += required_and_allowed(form, "freeform", hasprompts, allowany)
result += content_tag(:dt, form.label(:archive_warning_num_required, ts("Archive Warning(s):")))
result += required_and_allowed(form, "archive_warning", hasprompts, allowany)
end
def required_and_allowed_boolean(form, fieldname, hasprompts)
content_tag(:dd, ("Required: " + form.check_box( ("#{fieldname}_required").to_sym, disabled: (hasprompts ? false : true)) +
" Allowed: " + form.check_box( ("#{fieldname}_allowed").to_sym, disabled: (hasprompts ? false : true)) ).html_safe )
end
def required_and_allowed(form, tag_type, hasprompts, allowany)
fields = "Required: " + form.text_field( ("#{tag_type}_num_required").to_sym, disabled: (hasprompts ? false : true), class: "number" )
fields += " Allowed: " + form.text_field( ("#{tag_type}_num_allowed").to_sym, disabled: (hasprompts ? false : true), class: "number" )
if TagSet::TAG_TYPES.include?(tag_type)
if allowany
fields += label_tag field_id(form, "allow_any_#{tag_type}") do
h(ts("Allow Any")) + form.check_box("allow_any_#{tag_type}".to_sym, disabled: (hasprompts ? false : true))
end
else
form.hidden_field :"allow_any_#{tag_type}".to_sym, value: false
end
fields += label_tag field_id(form, "require_unique_#{tag_type}") do
h(ts("Must Be Unique?")) + form.check_box("require_unique_#{tag_type}".to_sym, disabled: (hasprompts ? false : true))
end
end
content_tag(:dd, fields.html_safe, class: "complex", title: ts(tag_type_label_name(tag_type).pluralize.downcase.to_s)) + "\n".html_safe
end
# generate the string to use for the labels on sign-up forms
def challenge_signup_label(tag_name, num_allowed, num_required)
if num_required > 0 && (num_allowed > num_required)
"#{((num_allowed > 1) ? tag_name.pluralize : tag_name).titleize} (#{num_required} - #{num_allowed}): *"
elsif num_required > 0 && (num_allowed == num_required)
"#{((num_allowed > 1) ? tag_name.pluralize : tag_name).titleize} (#{num_required}): *"
elsif num_allowed > 0
"#{((num_allowed > 1) ? tag_name.pluralize : tag_name).titleize} (#{num_required} - #{num_allowed}):"
else
"#{tag_name.titleize}:"
end
end
end