module OutfitsHelper def destination_tag(value) hidden_field_tag 'destination', value, :id => nil end def latest_contribution_description(contribution) user = contribution.user contributed = contribution.contributed t 'outfits.new.latest_contribution.description_html', :user_link => link_to(user.name, user_contributions_path(user)), :contributed_description => contributed_description(contributed, false) end def link_to_edit_outfit(content_or_outfit, outfit_or_options, options={}) if block_given? content = capture_haml(&Proc.new) outfit = content_or_outfit options = outfit_or_options else content = content_or_outfit outfit = outfit_or_options end query = outfit.to_query query << "&outfit=#{outfit.id}" if user_signed_in? && outfit.user_id == current_user.id link_to content, wardrobe_path(:anchor => query), options end def search_helper(filter, standard_key) key = translate("#{filter}.key") default_value = translate("#{filter}.default_value") content_tag :span, default_value, :class => 'search-helper', 'data-search-filter-key' => standard_key, 'data-search-filter-name' => key end def search_query_description(base, standard_key) translate "#{base}.description_html", :default_value => search_helper("#{base}.filter", standard_key) end def search_query_with_helper(base, standard_key) translate "#{base}.query_html", :filter_key => content_tag(:span, translate("#{base}.filter.key")), :filter_value => search_helper("#{base}.filter", standard_key) end def search_query(translation_key, filter_key) base = "outfits.edit.search.examples.#{translation_key}" content_tag(:dt, search_query_with_helper(base, filter_key)) + content_tag(:dd, search_query_description(base, filter_key)) end def remote_load_pet_path "http://#{Rails.configuration.neopia_host}/api/1/pet/customization" end def render_predicted_missing_species_by_color(species_by_color) # Transform the Color => Array map into an Array>>. # TODO: i18n standard = species_by_color.delete(:standard) sorted_pairs = species_by_color.to_a.map { |k, v| [k.human_name, v] }. sort_by { |k, v| k } sorted_pairs.unshift(['', standard]) if standard species_by_color[:standard] = standard # undo parameter mutation first = true contents = sorted_pairs.map { |color_human_name, species| species_sentence = species.map(&:human_name).sort.to_sentence( two_words_connector: ' or ', last_word_connector: ', or ') content = first ? "Have you seen the #{color_human_name} #{species_sentence} wearing this item?" : "Or maybe the #{color_human_name} #{species_sentence}?" first = false content } contents.last << " If so, please model it above! Thanks!" content_tags = contents.map { |c| content_tag(:p, c) } content_tags.join('').html_safe end def outfit_creation_summary(outfit) user = outfit.user user_link = link_to(user.name, user_contributions_path(user)) created_at_ago = content_tag(:abbr, time_ago_in_words(@outfit.created_at), :title => @outfit.created_at) translate 'outfits.show.creation_summary_html', :user_link => user_link, :created_at_ago => created_at_ago end def outfit_li_for(outfit) class_name = outfit.starred? ? 'starred' : nil content_tag :li, :class => class_name, &Proc.new end def pet_attribute_select(name, collection, value=nil) select_tag name, options_from_collection_for_select(collection, :id, :human_name, value) end def pet_name_tag(options={}) options = {:spellcheck => false, :id => nil}.merge(options) text_field_tag 'name', nil, options end end