1
0
Fork 0
forked from OpenNeo/impress
impress/app/helpers/items_helper.rb

149 lines
4.3 KiB
Ruby
Raw Normal View History

require "addressable/template"
2010-05-15 10:47:46 -07:00
module ItemsHelper
2017-06-17 12:28:07 -07:00
JNItemsURLFormat = 'https://items.jellyneo.net/search/?name=%s&name_type=3'
2010-06-08 07:39:23 -07:00
module PetTypeImage
Format = 'https://pets.neopets.com/cp/%s/%i/%i.png'
2010-06-08 07:39:23 -07:00
Emotions = {
:happy => 1,
:sad => 2,
:angry => 3,
:ill => 4
}
2010-06-08 07:39:23 -07:00
Sizes = {
:face => 1,
:thumb => 2,
:zoom => 3,
:full => 4
}
end
2010-06-08 07:39:23 -07:00
def standard_species_search_links
2013-01-21 12:55:48 -08:00
build_on_pet_types(Species.alphabetical) do |pet_type|
2010-06-08 07:39:23 -07:00
image = pet_type_image(pet_type, :happy, :zoom)
query = "species:#{pet_type.species.name}"
link_to(image, items_path(:q => query))
end
end
def closet_list_verb(owned)
ClosetHanger.verb(:you, owned)
end
2012-08-06 18:15:31 -07:00
def owned_icon
2013-01-01 19:15:17 -08:00
image_tag 'owned.png', :title => t('items.item.owned.description'),
:alt => t('items.item.owned.abbr')
2012-08-06 18:15:31 -07:00
end
def wanted_icon
2013-01-01 19:15:17 -08:00
image_tag 'wanted.png', :title => t('items.item.wanted.description'),
:alt => t('items.item.wanted.abbr')
2012-08-06 18:15:31 -07:00
end
2011-07-12 22:21:48 -07:00
def closeted_icons_for(item)
content = ''.html_safe
2012-08-06 18:15:31 -07:00
content << owned_icon if item.owned?
content << wanted_icon if item.wanted?
content_tag :div, content, :class => 'closeted-icons'
2011-07-12 22:21:48 -07:00
end
2012-08-06 18:15:31 -07:00
def nc_icon
image_tag 'nc.png', :title => t('items.item.nc.description'),
:alt => t('items.item.nc.abbr'), :class => 'nc-icon'
2012-08-06 18:15:31 -07:00
end
2010-09-08 19:49:39 -07:00
def nc_icon_for(item)
2012-08-06 18:15:31 -07:00
nc_icon if item.nc?
2010-09-08 19:49:39 -07:00
end
def time_with_only_month_if_old(first_seen_at)
# For this month and the previous month, show the full date, so people can
# understand *exactly* how recent it was.
beginning_of_prev_month = Date.today.beginning_of_month - 1.month
if first_seen_at >= beginning_of_prev_month
return first_seen_at.strftime("%b %e, %Y")
end
# Otherwise, show just the month and the year, to be concise. (We'll offer
# the full date as a tooltip, too.)
first_seen_at.strftime("%b %Y")
end
def jn_items_url_for(item)
sprintf(JNItemsURLFormat, CGI::escape(item.name))
2010-09-08 19:49:39 -07:00
end
IMPRESS_2020_ITEM_URL_TEMPLATE = Addressable::Template.new(
"#{Rails.configuration.impress_2020_origin}/items/{id}"
)
def impress_2020_url_for(item)
IMPRESS_2020_ITEM_URL_TEMPLATE.expand(id: item.id).to_s
end
def shop_wizard_url_for(item)
"https://www.neopets.com/market.phtml?type=wizard&string=#{CGI::escape item.name}"
end
def super_shop_wizard_url_for(item)
"https://www.neopets.com/portal/supershopwiz.phtml?string=#{CGI::escape item.name}"
end
def trading_post_url_for(item)
"https://www.neopets.com/island/tradingpost.phtml?type=browse&criteria=item_exact&search_string=#{CGI::escape item.name}"
end
def auction_genie_url_for(item)
"https://www.neopets.com/genie.phtml?type=process_genie&criteria=exact&auctiongenie=#{CGI::escape item.name}"
end
def format_contribution_count(count)
" (&times;#{count})".html_safe if count > 1
end
2011-07-30 21:19:28 -07:00
def render_item_link(item)
render(partial: 'items/item_link', locals: {item: item})
end
def nc_trade_value_updated_at_text(nc_trade_value)
return nil if nc_trade_value.updated_at.nil?
# Render both "[X] [days] ago", and also the exact date, only including the
# year if it's not this same year.
time_ago_str = time_ago_in_words nc_trade_value.updated_at
date_str = nc_trade_value.updated_at.year != Date.today.year ?
nc_trade_value.updated_at.strftime("%b %-d") :
nc_trade_value.updated_at.strftime("%b %-d, %Y")
"Last updated: #{date_str} (#{time_ago_str} ago)"
end
2010-06-08 07:39:23 -07:00
private
def build_on_pet_types(species, special_color=nil, &block)
species_ids = species.map(&:id)
pet_types = special_color ?
2013-01-21 17:34:39 -08:00
PetType.where(:color_id => special_color.id, :species_id => species_ids).
order(:species_id) :
PetType.random_basic_per_species(species.map(&:id))
pet_types.map(&block).join.html_safe
2010-06-08 07:39:23 -07:00
end
2010-06-08 07:39:23 -07:00
def pet_type_image(pet_type, emotion, size)
emotion_id = PetTypeImage::Emotions[emotion]
size_id = PetTypeImage::Sizes[size]
2010-11-14 20:14:04 -08:00
src = sprintf(PetTypeImage::Format, pet_type.basic_image_hash, emotion_id, size_id)
2010-06-08 07:39:23 -07:00
human_name = pet_type.species.name.humanize
image_tag(src, :alt => human_name, :title => human_name)
end
def item_header_user_lists_form_state
cookies.fetch("DTIItemPageUserListsFormState", "closed")
end
2010-05-15 10:47:46 -07:00
end