module ContributionHelper def contributed_description(contributed, show_image = true) case contributed when Item contributed_item('item', contributed, show_image) when SwfAsset contributed_item('swf_asset', contributed.item, show_image) when PetType contributed_pet_type('pet_type', contributed, show_image) when PetState contributed_pet_type('pet_state', contributed.pet_type, show_image) when AltStyle contributed_alt_style(contributed, show_image) end end def contributed_item(main_key, item, show_image) if item link = link_to(item.name, item, :class => 'contributed-name') description = translate('contributions.contributed_description.parents.item.present_html', :item_link => link) output = translate("contributions.contributed_description.main.#{main_key}_html", :item_description => description) output << image_tag(item.thumbnail_url) if show_image output else translate('contributions.contributed_description.parents.item.blank') end end PET_TYPE_IMAGE_FORMAT = 'https://pets.neopets.com/cp/%s/1/3.png' def contributed_pet_type(main_key, pet_type, show_image) span = content_tag(:span, pet_type.human_name, :class => 'contributed-name') description = translate('contributions.contributed_description.parents.pet_type_html', :pet_type_name => span) output = translate("contributions.contributed_description.main.#{main_key}_html", :pet_type_description => description) output << image_tag(sprintf(PET_TYPE_IMAGE_FORMAT, pet_type.image_hash)) if show_image output end def contributed_alt_style(alt_style, show_image) span = content_tag(:span, alt_style.name, class: 'contributed-name') output = translate("contributions.contributed_description.main.alt_style_html", alt_style_name: span) output << image_tag(alt_style.thumbnail_url) if show_image output end private def output(&block) raw([].tap(&block).join(' ')) end def translate_contributed_suffix(key) translate "contributions.contributed_description.suffix.#{key}" end end