Emi Matchu
a03ae90697
It was a bit tricky to figure out the right API for this, since I'm looking ahead to the possibility of splitting these across multiple pages with more detail, like we do in DTI 2020. What I like about this API is that the caller gets to apply, or not apply, whatever scopes they want to the underlying hanger set (like `includes` or `order`), without violating the usual syntax by e.g. passing it as a parameter to a method.
90 lines
3.5 KiB
Text
90 lines
3.5 KiB
Text
- title @item.name
|
|
- canonical_path @item
|
|
|
|
%header#item-header
|
|
= image_tag @item.thumbnail_url, :id => 'item-thumbnail'
|
|
%h2#item-name= @item.name
|
|
%nav#item-links
|
|
= nc_icon_for(@item)
|
|
- unless @item.rarity.blank?
|
|
== #{t '.rarity'}: #{@item.rarity_index} (#{@item.rarity})
|
|
= link_to t('.resources.jn_items'), jn_items_url_for(@item)
|
|
- if @item.nc_trade_value
|
|
= link_to t('.resources.owls', value: @item.nc_trade_value.value_text),
|
|
"https://www.neopets.com/~owls",
|
|
title: nc_trade_value_updated_at_text(@item.nc_trade_value)
|
|
- unless @item.nc?
|
|
= link_to t('.resources.shop_wizard'), shop_wizard_url_for(@item)
|
|
= link_to t('.resources.super_shop_wizard'), super_shop_wizard_url_for(@item)
|
|
= link_to t('.resources.trading_post'), trading_post_url_for(@item)
|
|
= link_to t('.resources.auction_genie'), auction_genie_url_for(@item)
|
|
|
|
%section#item-info-section
|
|
#item-info
|
|
%p= @item.description
|
|
|
|
#trade-hangers
|
|
- if Time.now < Date.new(2024, 1, 26)
|
|
%p
|
|
✨⏳️
|
|
%i We now only show recently-updated lists here!
|
|
⏳️✨
|
|
%p
|
|
%strong
|
|
= t '.trading_users.header.owned', count: @trades[:offering].size
|
|
= render_trades(@trades[:offering])
|
|
%span.toggle
|
|
%button.more= t '.trading_users.show_more'
|
|
%button.less= t '.trading_users.show_less'
|
|
%p
|
|
%strong
|
|
= t '.trading_users.header.wanted', count: @trades[:seeking].size
|
|
= render_trades(@trades[:seeking])
|
|
%span.toggle
|
|
%button.more= t '.trading_users.show_more'
|
|
%button.less= t '.trading_users.show_less'
|
|
|
|
- if user_signed_in?
|
|
#your-items-form
|
|
%h3
|
|
= t '.closet_hangers.header_html',
|
|
:user_items_link => link_to(t('your_items'),
|
|
user_closet_hangers_path(current_user))
|
|
= form_tag update_quantities_user_item_closet_hangers_path(:user_id => current_user, :item_id => @item), :method => :put do
|
|
#closet-hangers-ownership-groups
|
|
- @current_user_lists.each do |owned, lists|
|
|
%div
|
|
%h4= closet_lists_group_name(:you, owned)
|
|
%ul
|
|
- lists.each do |list|
|
|
%li
|
|
= number_field_tag "quantity[#{list.id}]",
|
|
@current_user_quantities[list.id], :min => 0
|
|
= label_tag "quantity[#{list.id}]", list.name
|
|
|
|
%li
|
|
= number_field_tag "quantity[#{owned}]",
|
|
@current_user_quantities[owned], :min => 0
|
|
|
|
- unless lists.empty?
|
|
= label_tag "quantity[#{owned}]",
|
|
t('closet_lists.unlisted_name'),
|
|
:class => 'unlisted'
|
|
- else
|
|
= label_tag "quantity[#{owned}]",
|
|
t('.closet_hangers.quantity_label')
|
|
= submit_tag t('.closet_hangers.submit')
|
|
|
|
#outfit-preview-root{'data-item-id': @item.id}
|
|
|
|
- unless @contributors_with_counts.empty?
|
|
#item-contributors
|
|
%header #{t '.contributors.header'}:
|
|
%ul
|
|
- @contributors_with_counts.each do |contributor, count|
|
|
%li= link_to(contributor.name, user_contributions_path(contributor)) + format_contribution_count(count)
|
|
%footer= t '.contributors.footer'
|
|
|
|
- content_for :javascripts do
|
|
= javascript_include_tag 'item-page', defer: true
|
|
|