Remove SWF conversion

We've already swapped out the backend for this stuff to Impress 2020, so the resque task and the broken image report UI aren't actually relevant anymore. Delete them!

This helps us delete Resque soon too.
This commit is contained in:
Matchu 2023-08-02 12:43:28 -07:00 committed by Matchu
parent 298404208f
commit e121d8bba2
19 changed files with 97 additions and 343 deletions

View file

@ -25,11 +25,8 @@ gem 'addressable', :require => ['addressable/template', 'addressable/uri']
gem 'whenever', '~> 0.7.3', :require => false gem 'whenever', '~> 0.7.3', :require => false
gem 'swf_converter', '~> 0.0.3'
gem 'resque', '~> 1.23.0' gem 'resque', '~> 1.23.0'
gem 'resque-scheduler', '~> 2.0.0.d' gem 'resque-scheduler', '~> 2.0.0.d'
gem 'resque-retry', '~> 0.1.0'
gem 'right_aws', '~> 2.1.0' gem 'right_aws', '~> 2.1.0'

View file

@ -206,9 +206,6 @@ GEM
redis-namespace (~> 1.0) redis-namespace (~> 1.0)
sinatra (>= 0.9.2) sinatra (>= 0.9.2)
vegas (~> 0.1.2) vegas (~> 0.1.2)
resque-retry (0.1.0)
resque (>= 1.8.0)
resque-scheduler (>= 1.8.0)
resque-scheduler (2.0.1) resque-scheduler (2.0.1)
redis (>= 2.0.1) redis (>= 2.0.1)
resque (>= 1.20.0) resque (>= 1.20.0)
@ -256,7 +253,6 @@ GEM
sprockets (>= 2.8, < 4.0) sprockets (>= 2.8, < 4.0)
ssrf_filter (1.0.8) ssrf_filter (1.0.8)
subexec (0.2.3) subexec (0.2.3)
swf_converter (0.0.3)
temple (0.8.2) temple (0.8.2)
thor (1.2.2) thor (1.2.2)
thread_safe (0.3.6) thread_safe (0.3.6)
@ -309,7 +305,6 @@ DEPENDENCIES
rdiscount (~> 1.6.5) rdiscount (~> 1.6.5)
react-rails (~> 2.7, >= 2.7.1) react-rails (~> 2.7, >= 2.7.1)
resque (~> 1.23.0) resque (~> 1.23.0)
resque-retry (~> 0.1.0)
resque-scheduler (~> 2.0.0.d) resque-scheduler (~> 2.0.0.d)
rest-client (~> 1.6.7) rest-client (~> 1.6.7)
right_aws (~> 2.1.0) right_aws (~> 2.1.0)
@ -317,7 +312,6 @@ DEPENDENCIES
rvm-capistrano (~> 1.5.6) rvm-capistrano (~> 1.5.6)
sanitize (~> 2.0.3) sanitize (~> 2.0.3)
sass-rails (~> 5.0, >= 5.0.7) sass-rails (~> 5.0, >= 5.0.7)
swf_converter (~> 0.0.3)
uglifier (~> 4.2) uglifier (~> 4.2)
whenever (~> 0.7.3) whenever (~> 0.7.3)
will_paginate (~> 3.0.pre2) will_paginate (~> 3.0.pre2)

View file

@ -9,7 +9,6 @@
@import partials/jquery.jgrowl @import partials/jquery.jgrowl
@import broken_image_reports/new
@import campaigns/show @import campaigns/show
@import closet_hangers/index @import closet_hangers/index
@import closet_hangers/petpage @import closet_hangers/petpage

View file

@ -1,12 +0,0 @@
@import partials/assets-list
body.broken_image_reports-new
#report-assets
+assets-list
span
font-size: 85%
.manual a
display: block

View file

@ -1,22 +0,0 @@
class BrokenImageReportsController < ApplicationController
def new
@swf_assets = SwfAsset.from_wardrobe_link_params(params[:asset_ids]).where(:has_image => true)
end
def create
swf_asset = SwfAsset.where(:type => params[:swf_asset_type]).
find_by_remote_id(params[:swf_asset_remote_id])
if swf_asset.image_manual?
flash[:warning] = t('broken_image_reports.create.manual')
else
# If the asset is already reported as broken, no need to shout about it.
# Just don't enqueue it, thank the user, and move on.
swf_asset.report_broken
flash[:success] = t('broken_image_reports.create.success')
end
redirect_to :back
end
end

View file

@ -48,7 +48,6 @@ class SwfAssetsController < ApplicationController
end end
if @swf_assets if @swf_assets
@swf_assets = @swf_assets.all unless @swf_assets.is_a? Array @swf_assets = @swf_assets.all unless @swf_assets.is_a? Array
@swf_assets.each(&:request_image_conversion!)
json = @swf_assets unless json json = @swf_assets unless json
else else
json = nil json = nil

View file

@ -1,11 +0,0 @@
module BrokenImageReportsHelper
def format_converted_at(converted_at)
translate 'broken_image_reports.new.converted_at_html',
:converted_at_ago => labeled_time_ago_in_words(converted_at)
end
def format_reported_at(reported_at)
translate 'broken_image_reports.new.reported_at_html',
:reported_at_ago => labeled_time_ago_in_words(reported_at)
end
end

View file

@ -1,35 +0,0 @@
require 'resque-retry'
require 'timeout'
class AssetImageConversionRequest
TIMEOUT_IN_SECONDS = 30
extend Resque::Plugins::Retry
@retry_limit = 5
@retry_delay = 60
@queue = :requested_asset_images
def self.perform(asset_id)
Timeout::timeout(TIMEOUT_IN_SECONDS) do
asset = SwfAsset.find(asset_id)
asset.convert_swf_if_not_converted!
end
end
class OnCreation < AssetImageConversionRequest
@retry_limit = 5
@retry_delay = 60
@queue = :requested_asset_images_on_creation
end
class OnBrokenImageReport < AssetImageConversionRequest
@retry_limit = 5
@retry_delay = 60
@queue = :reportedly_broken_asset_images
end
end

View file

@ -24,9 +24,6 @@ class SwfAsset < ActiveRecord::Base
:medium => [300, 300], :medium => [300, 300],
:large => [600, 600] :large => [600, 600]
} }
include SwfConverter
converts_swfs :size => IMAGE_SIZES[:large], :output_sizes => IMAGE_SIZES.values
belongs_to :zone belongs_to :zone
has_many :parent_swf_asset_relationships has_many :parent_swf_asset_relationships
@ -105,47 +102,6 @@ class SwfAsset < ActiveRecord::Base
IMAGE_SIZES.values.map { |size| {:size => size, :url => image_url(size)} } IMAGE_SIZES.values.map { |size| {:size => size, :url => image_url(size)} }
end end
def convert_swf_if_not_converted!
if needs_conversion?
convert_swf!
true
else
false
end
end
def request_image_conversion!
if image_requested?
false
else
Resque.enqueue(AssetImageConversionRequest, self.id)
self.image_requested = true
save!
true
end
end
def report_broken
if image_pending_repair?
return false
end
Resque.enqueue(AssetImageConversionRequest::OnBrokenImageReport, self.id)
self.reported_broken_at = Time.now
self.save
end
def needs_conversion?
!has_image? || image_pending_repair?
end
REPAIR_PENDING_EXPIRES = 1.hour
def image_pending_repair?
reported_broken_at &&
(converted_at.nil? || reported_broken_at > converted_at) &&
reported_broken_at > REPAIR_PENDING_EXPIRES.ago
end
attr_accessor :item attr_accessor :item
has_one :contribution, :as => :contributed, :inverse_of => :contributed has_one :contribution, :as => :contributed, :inverse_of => :contributed
@ -307,10 +263,6 @@ class SwfAsset < ActiveRecord::Base
self.body_id = 0 if !@body_id_overridden && (!self.body_specific? || (!self.new_record? && self.body_id_changed?)) self.body_id = 0 if !@body_id_overridden && (!self.body_specific? || (!self.new_record? && self.body_id_changed?))
end end
after_commit :on => :create do
Resque.enqueue(AssetImageConversionRequest::OnCreation, self.id)
end
class DownloadError < Exception;end class DownloadError < Exception;end
private private

View file

@ -1,24 +0,0 @@
- title t('.title')
%p= t '.explanation_html', :contact_link => mail_to(contact_email)
%p= t '.call_to_action'
%ul#report-assets
- @swf_assets.each do |swf_asset|
%li
= link_to image_tag(swf_asset.image_url([150, 150])), swf_asset.url
- if swf_asset.image_manual?
%span.manual
= t '.image_manual.description'
= mail_to contact_email, t('.image_manual.contact')
- elsif swf_asset.image_pending_repair?
%span.reported-broken-at= format_reported_at(swf_asset.reported_broken_at)
- else
= form_tag(action: :create) do
= hidden_field_tag 'swf_asset_remote_id', swf_asset.remote_id
= hidden_field_tag 'swf_asset_type', swf_asset.type
= submit_tag t('.submit')
- if swf_asset.converted_at?
%span.converted-at= format_converted_at(swf_asset.converted_at)

View file

@ -39,8 +39,6 @@
= link_to t('.preview.download'), 'javascript:void(0)', id: 'preview-mode-download' = link_to t('.preview.download'), 'javascript:void(0)', id: 'preview-mode-download'
= link_to t('.preview.swf_links'), 'javascript:void(0)', id: 'swf-links', = link_to t('.preview.swf_links'), 'javascript:void(0)', id: 'swf-links',
target: '_blank', 'data-base-url' => links_swf_assets_path target: '_blank', 'data-base-url' => links_swf_assets_path
= link_to t('.preview.mode.image.report_broken'), 'javascript:void(0)',
:id => 'report-broken-image', :target => '_blank', 'data-base-url' => new_broken_image_report_path
#preview-sidebar #preview-sidebar
%nav#preview-sidebar-navbar %nav#preview-sidebar-navbar
#preview-sidebar-navbar-closet= t '.sidebar.nav.closet' #preview-sidebar-navbar-closet= t '.sidebar.nav.closet'

View file

@ -1,6 +0,0 @@
require 'resque-retry'
require 'resque/failure/redis'
Resque::Failure::MultipleWithRetrySuppression.classes = [Resque::Failure::Redis]
Resque::Failure.backend = Resque::Failure::MultipleWithRetrySuppression

View file

@ -44,15 +44,6 @@ en-MEEP:
items: items:
title_tagline: Neopets customization meep and meepits database title_tagline: Neopets customization meep and meepits database
search: Meep search: Meep
broken_image_reports:
create:
success:
Thanks! This image will be remeeped soon. If it looks the same after
meeping, please consider sending a bug report.
already_reported:
This image is already in line for remeeping. We'll get to it soon,
don't worry.
new: new:
title: Meep broken image title: Meep broken image

View file

@ -5,20 +5,20 @@ en:
infinite_closet: Infinite Closet infinite_closet: Infinite Closet
modeling_hub: Modeling Hub modeling_hub: Modeling Hub
locale_name: English locale_name: English
activerecord: activerecord:
attributes: attributes:
closet_list: closet_list:
name: Name name: Name
description: Description description: Description
user: user:
contact_neopets_connection_id: Send Neomail to contact_neopets_connection_id: Send Neomail to
layouts: layouts:
application: application:
title_tagline: Preview customized Neopets' clothing and wearables title_tagline: Preview customized Neopets' clothing and wearables
userbar: userbar:
greeting: Hey, %{user_name}! greeting: Hey, %{user_name}!
contributions_summary: contributions_summary:
@ -29,7 +29,7 @@ en:
settings: Settings settings: Settings
logout: Log out logout: Log out
login: Log in login: Log in
footer: footer:
blog: Blog blog: Blog
source_code: Source Code source_code: Source Code
@ -37,24 +37,13 @@ en:
contact: Contact contact: Contact
suggestions: Suggestions suggestions: Suggestions
email: Questions, comments, bugs email: Questions, comments, bugs
copyright: copyright: Images © 2000%{year} Neopets, Inc. All Rights Reserved.
Images © 2000%{year} Neopets, Inc. All Rights Reserved.
Used With Permission Used With Permission
items: items:
title_tagline: Neopets customization clothing and wearables database title_tagline: Neopets customization clothing and wearables database
search: Search search: Search
broken_image_reports:
create:
success:
Thanks! This image will be reconverted soon. If it looks the same after
conversion, please consider sending a bug report.
manual:
This image was uploaded manually, so we don't want to run the
automatic converters on it. If this manual version is broken, let us
know at webmaster@openneo.net. Thanks!
new: new:
title: Report broken image title: Report broken image
explanation_html: explanation_html:
@ -62,8 +51,7 @@ en:
don't get things quite right, and sometimes that can be fixed by just don't get things quite right, and sometimes that can be fixed by just
trying the conversion again. If reconversion doesn't seem to solve the trying the conversion again. If reconversion doesn't seem to solve the
issue, consider sending us a bug report at %{contact_link}. Thanks! issue, consider sending us a bug report at %{contact_link}. Thanks!
call_to_action: call_to_action: Which of these images looked broken?
Which of these images looked broken?
We'll put it in line for reconversion. We'll put it in line for reconversion.
submit: Report as broken submit: Report as broken
converted_at_html: Converted %{converted_at_ago} ago converted_at_html: Converted %{converted_at_ago} ago
@ -71,26 +59,24 @@ en:
image_manual: image_manual:
description: Uploaded manually. description: Uploaded manually.
contact: Send a bug report? contact: Send a bug report?
closet_hangers: closet_hangers:
closet_hanger: closet_hanger:
submit: Save submit: Save
delete: Remove delete: Remove
create: create:
success: success:
owned: owned:
in_list: in_list: Success! You own %{count} of the %{item_name} in the %{list_name} list.
Success! You own %{count} of the %{item_name} in the %{list_name} list.
unlisted: Success! You own %{count} of the %{item_name}. unlisted: Success! You own %{count} of the %{item_name}.
wanted: wanted:
in_list: in_list: Success! You want %{count} of the %{item_name} in the %{list_name} list.
Success! You want %{count} of the %{item_name} in the %{list_name} list.
unlisted: Success! You want %{count} of the %{item_name}. unlisted: Success! You want %{count} of the %{item_name}.
invalid: invalid:
owned: "We couldn't save how many %{item_name} you own: %{errors}" owned: "We couldn't save how many %{item_name} you own: %{errors}"
wanted: "We couldn't save how many %{item_name} you want: %{errors}" wanted: "We couldn't save how many %{item_name} you want: %{errors}"
destroy: destroy:
success: success:
owned: Success! You do not own the %{item_name}. owned: Success! You do not own the %{item_name}.
@ -98,7 +84,7 @@ en:
destroy_all: destroy_all:
success: Success! Removed all items from the list. success: Success! Removed all items from the list.
index: index:
title_for: title_for:
you: Your Items you: Your Items
@ -109,8 +95,8 @@ en:
send_neomail: Neomail %{neopets_username} send_neomail: Neomail %{neopets_username}
lookup: "%{neopets_username}'s lookup" lookup: "%{neopets_username}'s lookup"
neopets_username: neopets_username:
new: 'Add username…' new: "Add username…"
prompt: 'What Neopets username should we add?' prompt: "What Neopets username should we add?"
submit: Save submit: Save
public_url_label: "Public URL:" public_url_label: "Public URL:"
import_from: import_from:
@ -129,16 +115,15 @@ en:
header: (Not in a list) header: (Not in a list)
empty: There aren't any items here. empty: There aren't any items here.
remove_all: remove_all:
confirm: 'Remove all items from this list?' confirm: "Remove all items from this list?"
submit: Remove all submit: Remove all
select_all: Select all select_all: Select all
autocomplete: autocomplete:
add_item_html: Add <strong>%{item_name}</strong> add_item_html: Add <strong>%{item_name}</strong>
add_to_list_html: Add to <strong>%{list_name}</strong> add_to_list_html: Add to <strong>%{list_name}</strong>
add_to_group_html: Add to <strong>%{group_name}</strong>, no list add_to_group_html: Add to <strong>%{group_name}</strong>, no list
already_in_collection_html: already_in_collection_html: It's already in <strong>%{collection_name}</strong>
It's already in <strong>%{collection_name}</strong>
petpage: petpage:
title: Export to petpage title: Export to petpage
your_items_link: Back to Your Items your_items_link: Back to Your Items
@ -149,16 +134,15 @@ en:
have to be. The HTML is flexible, so, if you're the artsy type, you're have to be. The HTML is flexible, so, if you're the artsy type, you're
free to mess with the styles all you want! free to mess with the styles all you want!
instructions: instructions:
main_html: main_html: Copy the HTML from the box below, then paste it into
Copy the HTML from the box below, then paste it into
%{edit_petpage_link}. Then head to the Neoboards to show off! Have %{edit_petpage_link}. Then head to the Neoboards to show off! Have
fun! fun!
edit_petpage_link_content: your pet's page edit_petpage_link_content: your pet's page
petpage_content: petpage_content:
unlisted_header: (Not in a list) unlisted_header: (Not in a list)
footer: I made this list on Dress to Impress. You can, too! footer: I made this list on Dress to Impress. You can, too!
visibility: visibility:
private: private:
name: Private name: Private
@ -175,25 +159,23 @@ en:
description: description:
items: These items will be publicly listed for trades items: These items will be publicly listed for trades
list: Items in this list will be publicly listed for trades list: Items in this list will be publicly listed for trades
update_quantities: update_quantities:
success: Successfully saved how many of the %{item_name} you own and want. success: Successfully saved how many of the %{item_name} you own and want.
invalid: "We couldn't save those quantities: %{errors}" invalid: "We couldn't save those quantities: %{errors}"
closet_lists: closet_lists:
closet_list: closet_list:
submit: Save submit: Save
edit: Edit edit: Edit
delete: Delete delete: Delete
delete_confirmation: delete_confirmation:
owned: owned: Are you sure you want to delete "%{list_name}"?
Are you sure you want to delete "%{list_name}"?
If you do, we'll move these items into Items You Own, not in a list. If you do, we'll move these items into Items You Own, not in a list.
wanted: wanted: Are you sure you want to delete "%{list_name}"?
Are you sure you want to delete "%{list_name}"?
If you do, we'll move these items into Items You Want, not in a list. If you do, we'll move these items into Items You Want, not in a list.
remove_all: remove_all:
confirm: 'Remove all items from this list?' confirm: "Remove all items from this list?"
submit: Remove all submit: Remove all
select_all: Select all select_all: Select all
empty: This list is empty. empty: This list is empty.
@ -203,10 +185,10 @@ en:
to hear from those people, <strong>set a Neomail address at the top of to hear from those people, <strong>set a Neomail address at the top of
the page</strong>. the page</strong>.
(If not, maybe you want a Public list instead of Trading.) (If not, maybe you want a Public list instead of Trading.)
edit: edit:
title: Editing list "%{list_name}" title: Editing list "%{list_name}"
form: form:
your_items_link: Back to Your Items your_items_link: Back to Your Items
name: name:
@ -219,23 +201,22 @@ en:
hint: hint:
Why are these items in the same list? What are your terms for trading? Why are these items in the same list? What are your terms for trading?
Or you can leave this blank. Or you can leave this blank.
markup_hint_html: markup_hint_html: We _<em>support</em>_ **<strong>Markdown</strong>** and some HTML.
We _<em>support</em>_ **<strong>Markdown</strong>** and some HTML.
submit: Save list submit: Save list
groups: groups:
owned_by: owned_by:
you: Items you own you: Items you own
another_user: Items %{user_name} owns another_user: Items %{user_name} owns
wanted_by: wanted_by:
you: Items you want you: Items you want
another_user: Items %{user_name} wants another_user: Items %{user_name} wants
new: new:
title: Create an items list title: Create an items list
unlisted_name: Not in a list unlisted_name: Not in a list
colors: colors:
default_human_name: (a new color) default_human_name: (a new color)
prank_suffix: (fake) prank_suffix: (fake)
@ -261,16 +242,16 @@ en:
swf_asset_html: "%{item_description} on a new body type" swf_asset_html: "%{item_description} on a new body type"
pet_type_html: "%{pet_type_description} for the first time" pet_type_html: "%{pet_type_description} for the first time"
pet_state_html: "a new pose for %{pet_type_description}" pet_state_html: "a new pose for %{pet_type_description}"
contribution: contribution:
description_html: "%{user_link} showed us %{contributed_description}" description_html: "%{user_link} showed us %{contributed_description}"
created_at_html: "%{created_at_ago} ago" created_at_html: "%{created_at_ago} ago"
index: index:
title: Recent Contributions title: Recent Contributions
user_summary: "%{user_name} currently has %{user_points} points" user_summary: "%{user_name} currently has %{user_points} points"
no_contributions: There are no contributions here. no_contributions: There are no contributions here.
items: items:
index: index:
title_with_query: Searching Infinite Closet for "%{query}" title_with_query: Searching Infinite Closet for "%{query}"
@ -297,7 +278,7 @@ en:
nc: nc:
query: blue is:nc query: blue is:nc
description: returns any NC Mall item with the word "blue" in it description: returns any NC Mall item with the word "blue" in it
pb: pb:
query: collar -is:pb query: collar -is:pb
description: description:
returns any item with the word "collar" in it that isn't from a returns any item with the word "collar" in it that isn't from a
@ -314,7 +295,7 @@ en:
header: Newest items header: Newest items
species_search: species_search:
header: Can't decide? Search by species header: Can't decide? Search by species
item: item:
nc: nc:
abbr: NC abbr: NC
@ -325,7 +306,7 @@ en:
wanted: wanted:
abbr: Wanted abbr: Wanted
description: You want this item description: You want this item
show: show:
rarity: Rarity rarity: Rarity
resources: resources:
@ -357,18 +338,16 @@ en:
preview: preview:
header: Preview header: Preview
customize_more: Customize more customize_more: Customize more
requirements_not_met: requirements_not_met: Javascript and Flash are required to preview wearables.
Javascript and Flash are required to preview wearables.
not_found: not_found:
main_html: main_html: We've never seen the %{item_name} on the %{color_name}
We've never seen the %{item_name} on the %{color_name}
%{species_name} before. Have you? If so, please %{modeling_link} and %{species_name} before. Have you? If so, please %{modeling_link} and
we'll update our database instantly. Thanks! we'll update our database instantly. Thanks!
modeling_link_content: model it for us modeling_link_content: model it for us
contributors: contributors:
header: Brought to you by header: Brought to you by
footer: Thanks! footer: Thanks!
search: search:
errors: errors:
user_filters_disabled: user_filters_disabled:
@ -376,8 +355,7 @@ en:
tough on the server. They'll be back soon. Thanks for understanding. tough on the server. They'll be back soon. Thanks for understanding.
not_found: not_found:
label: Filter "%{label}" does not exist. Is it spelled correctly? label: Filter "%{label}" does not exist. Is it spelled correctly?
species: species: Species "%{species_name}" does not exist. Is it spelled correctly?
Species "%{species_name}" does not exist. Is it spelled correctly?
zone: Zone "%{zone_name}" does not exist. Is it spelled correctly? zone: Zone "%{zone_name}" does not exist. Is it spelled correctly?
ownership: ownership:
I don't know what user:%{keyword} means. Did you mean user:owns or I don't know what user:%{keyword} means. Did you mean user:owns or
@ -385,8 +363,7 @@ en:
pet_type: We have no record of the %{name1} %{name2}. pet_type: We have no record of the %{name1} %{name2}.
It is spelled correctly? It is spelled correctly?
pet_type_id: We have no record of pet type %{id}. Weird. pet_type_id: We have no record of pet type %{id}. Weird.
not_logged_in: not_logged_in: The "user" filters are only available if you're logged in.
The "user" filters are only available if you're logged in.
flag_keywords: flag_keywords:
is: is is: is
labels: labels:
@ -400,7 +377,7 @@ en:
user_owns: owns user_owns: owns
user_wants: wants user_wants: wants
fits_pet_type: fits fits_pet_type: fits
neopets_page_import_tasks: neopets_page_import_tasks:
create: create:
success: Page %{index} saved! success: Page %{index} saved!
@ -418,31 +395,27 @@ en:
updated_hangers: updated_hangers:
one: We updated the quantity for 1 of your items. one: We updated the quantity for 1 of your items.
other: We updated the quantity for %{count} of your items. other: We updated the quantity for %{count} of your items.
no_changes: no_changes: We already had this data recorded to your account, so we didn't make any changes.
We already had this data recorded to your account, so we didn't make any changes.
no_data: We didn't see any wearables, so we didn't make any changes. no_data: We didn't see any wearables, so we didn't make any changes.
unknown_items: unknown_items:
one: one: "We also found an item we didn't recognize: %{item_names}. Please
"We also found an item we didn't recognize: %{item_names}. Please
model it for us and we'll update our database instantly. Thanks!" model it for us and we'll update our database instantly. Thanks!"
other: other: "We also found %{count} items we didn't recognize: %{item_names}.
"We also found %{count} items we didn't recognize: %{item_names}.
Please model them for us and we'll update our database instantly. Please model them for us and we'll update our database instantly.
Thanks!" Thanks!"
next_page: next_page: Now the frame should contain page %{next_index}.
Now the frame should contain page %{next_index}.
Paste that source code over, too. Paste that source code over, too.
done: That was the last page of your Neopets %{name}. done: That was the last page of your Neopets %{name}.
parse_error: parse_error:
We had trouble reading your source code. Is it a valid HTML document? We had trouble reading your source code. Is it a valid HTML document?
Make sure you pasted the computery-looking result of clicking View Make sure you pasted the computery-looking result of clicking View
Frame Source, and not the pretty-looking page itself. Frame Source, and not the pretty-looking page itself.
names: names:
closet: closet closet: closet
safety_deposit: safety deposit safety_deposit: safety deposit
gallery: gallery gallery: gallery
new: new:
title: Import from %{name}, Page %{index} title: Import from %{name}, Page %{index}
your_items_link: Back to Your Items your_items_link: Back to Your Items
@ -457,8 +430,7 @@ en:
works. works.
check_frame: check_frame:
header: header:
main_html: main_html: Check the framed Neopets.com window on the left,
Check the framed Neopets.com window on the left,
pointing to %{page_link}. pointing to %{page_link}.
page_link_content: page %{index} of your %{name} page_link_content: page %{index} of your %{name}
check_login: check_login:
@ -476,8 +448,7 @@ en:
It's never a good idea to log in inside of a frame, unless It's never a good idea to log in inside of a frame, unless
you're a web programmer pro who can check that the frame does, you're a web programmer pro who can check that the frame does,
in fact, point to Neopets.com. To be safe, %{login_link}. in fact, point to Neopets.com. To be safe, %{login_link}.
login_link_content: login_link_content: pull up another window, check the URL, and log in safely
pull up another window, check the URL, and log in safely
check_content: check_content:
summary: Confirm that the page is, in fact, your %{name}. summary: Confirm that the page is, in fact, your %{name}.
details: details:
@ -493,16 +464,14 @@ en:
<strong>In Firefox</strong>, right-click the frame, choose <strong>In Firefox</strong>, right-click the frame, choose
<strong>This Frame</strong>, then <strong>View Frame <strong>This Frame</strong>, then <strong>View Frame
Source</strong>. Source</strong>.
other: other: In other browsers, right-click and look for something similar.
In other browsers, right-click and look for something similar.
troubleshooting: troubleshooting:
main_html: main_html:
If you're still having trouble, try %{page_link}, right-clicking, If you're still having trouble, try %{page_link}, right-clicking,
and choosing View Source. and choosing View Source.
page_link_content: opening the page in a new window page_link_content: opening the page in a new window
copy_source: copy_source:
header: header: Highlight the entire source code,
Highlight the entire source code,
and copy-paste it into the box on the right. and copy-paste it into the box on the right.
shortcuts: shortcuts:
"Some nifty shortcuts: Ctrl-A to select all the text, Ctrl-C to "Some nifty shortcuts: Ctrl-A to select all the text, Ctrl-C to
@ -515,19 +484,16 @@ en:
to Impress items list. I promise it's all safe, but, if you're to Impress items list. I promise it's all safe, but, if you're
concerned, find a programmer buddy and check out the source code to concerned, find a programmer buddy and check out the source code to
be sure. be sure.
neopets_users: neopets_users:
create: create:
success: success:
zero: zero: Okay. We loaded %{user_name}'s pets, but already had these items
Okay. We loaded %{user_name}'s pets, but already had these items
recorded to your account. recorded to your account.
one: one: Success! We loaded %{user_name}'s pets, and added 1 item.
Success! We loaded %{user_name}'s pets, and added 1 item. other: Success! We loaded %{user_name}'s pets, and added %{count} items.
other:
Success! We loaded %{user_name}'s pets, and added %{count} items.
not_found: Could not find user %{user_name}. Is it spelled correctly? not_found: Could not find user %{user_name}. Is it spelled correctly?
new: new:
title: Import from pets title: Import from pets
your_items_link: Back to Your Items your_items_link: Back to Your Items
@ -536,11 +502,11 @@ en:
from all your pets. It's easy! from all your pets. It's easy!
username_label: Neopets Username username_label: Neopets Username
submit: Import all pets submit: Import all pets
outfits: outfits:
destroy: destroy:
success: Outfit "%{outfit_name}" successfully deleted. success: Outfit "%{outfit_name}" successfully deleted.
edit: edit:
item: item:
controls: controls:
@ -551,8 +517,7 @@ en:
add: Closet add: Closet
remove: Uncloset remove: Uncloset
pet_type: pet_type:
not_found: not_found: We haven't seen that combination before. Have you?
We haven't seen that combination before. Have you?
Submit the pet's name if you have! Submit the pet's name if you have!
form: form:
submit: Go submit: Go
@ -573,8 +538,7 @@ en:
submit: Save submit: Save
cancel: Cancel cancel: Cancel
preview: preview:
requirements: requirements: Flash and Javascript (but not Java!) are required to preview outfits.
Flash and Javascript (but not Java!) are required to preview outfits.
big_picture: Big Picture big_picture: Big Picture
download: Download download: Download
swf_links: SWF Links swf_links: SWF Links
@ -608,11 +572,11 @@ en:
We know how hard it can be to keep track of your ideas, We know how hard it can be to keep track of your ideas,
especially if you end up having a lot of them. especially if you end up having a lot of them.
**But Dress to Impress makes it easy.** **But Dress to Impress makes it easy.**
Once you have an idea for an outfit, you can **build it, save it, Once you have an idea for an outfit, you can **build it, save it,
and view it again later**, either to update your design or and view it again later**, either to update your design or
finally make your dream a reality. finally make your dream a reality.
**Thousands of users have already saved hundreds of thousands of **Thousands of users have already saved hundreds of thousands of
outfits. Will you be next?** outfits. Will you be next?**
sign_in: Log in to save this outfit sign_in: Log in to save this outfit
@ -670,11 +634,9 @@ en:
login: Log in to use these filters. login: Log in to use these filters.
userbar: userbar:
session_message: session_message:
signed_in: signed_in: You will be logged out, then brought back to this exact outfit.
You will be logged out, then brought back to this exact outfit. not_signed_in: You will be logged in, then brought back to this exact outfit.
not_signed_in:
You will be logged in, then brought back to this exact outfit.
index: index:
title: Your Outfits title: Your Outfits
intro: intro:
@ -692,12 +654,11 @@ en:
click "Save Outfit" in the top right corner. It'll be great, I click "Save Outfit" in the top right corner. It'll be great, I
promise. promise.
start_link_content: Start at the home page start_link_content: Start at the home page
new: new:
tagline: Neopets wearables made easy! tagline: Neopets wearables made easy!
preview: preview:
pet_type_not_found: pet_type_not_found: We haven't seen a %{color_name} %{species_name}. Have you?
We haven't seen a %{color_name} %{species_name}. Have you?
pet_not_found: Pet not found. pet_not_found: Pet not found.
submit: submit:
primary: Plan my outfit! primary: Plan my outfit!
@ -718,8 +679,7 @@ en:
submit: Go submit: Go
your_items: your_items:
tagline: Track and trade! tagline: Track and trade!
description: description: Make lists of the items you own and want,
Make lists of the items you own and want,
and share them with the world. and share them with the world.
user_search: user_search:
placeholder: find a user… placeholder: find a user…
@ -740,8 +700,7 @@ en:
submit: submit submit: submit
latest_contribution: latest_contribution:
header: Contributions header: Contributions
description_html: description_html: "%{user_link} showed us %{contributed_description}.
"%{user_link} showed us %{contributed_description}.
Thanks, %{user_link}!" Thanks, %{user_link}!"
blog: blog:
link: OpenNeo Blog link: OpenNeo Blog
@ -754,9 +713,9 @@ en:
other: Or maybe the %{color} %{species_list}? other: Or maybe the %{color} %{species_list}?
call_to_action: If so, please model it above! Thanks! call_to_action: If so, please model it above! Thanks!
species_list: species_list:
words_connector: ', ' words_connector: ", "
two_words_connector: ' or ' two_words_connector: " or "
last_word_connector: ', or ' last_word_connector: ", or "
modeled: modeled:
header: These items have already been modeled—thanks for your help! header: These items have already been modeled—thanks for your help!
body_title: You just finished modeling this—thanks so much! body_title: You just finished modeling this—thanks so much!
@ -770,22 +729,20 @@ en:
error: Couldn't load. Try again? error: Couldn't load. Try again?
title: Submit %{pet} as a model, especially if they're wearing the %{item}! title: Submit %{pet} as a model, especially if they're wearing the %{item}!
pet_query: pet_query:
notice_html: notice_html: Thanks for showing us <strong>%{pet_name}</strong>.
Thanks for showing us <strong>%{pet_name}</strong>.
Keep up the good work! Keep up the good work!
outfit: outfit:
edit: edit edit: edit
delete: delete delete: delete
delete_confirmation: delete_confirmation: Are you sure you want to delete the outfit %{outfit_name}?
Are you sure you want to delete the outfit %{outfit_name}?
show: show:
default_outfit_name: Shared outfit default_outfit_name: Shared outfit
edit: Edit edit: Edit
clone: Edit a copy clone: Edit a copy
creation_summary_html: Created by %{user_link}, %{created_at_ago} ago creation_summary_html: Created by %{user_link}, %{created_at_ago} ago
pet_states: pet_states:
description: description:
main: "%{mood} %{gender}" main: "%{mood} %{gender}"
@ -800,7 +757,7 @@ en:
unconverted: Unconverted unconverted: Unconverted
unlabeled: Unlabeled unlabeled: Unlabeled
default_artist_name: the OpenNeo team default_artist_name: the OpenNeo team
pet_types: pet_types:
human_name: "%{color_human_name} %{species_human_name}" human_name: "%{color_human_name} %{species_human_name}"
@ -831,7 +788,7 @@ en:
waiting: Waiting… waiting: Waiting…
loading: Loading… loading: Loading…
submission_success: "%{points} points" submission_success: "%{points} points"
load: load:
not_found: We couldn't find a pet by that name. Is it spelled correctly? not_found: We couldn't find a pet by that name. Is it spelled correctly?
asset_download_error: asset_download_error:
@ -840,8 +797,8 @@ en:
pet_download_error: pet_download_error:
We couldn't connect to Neopets to look up the pet. Maybe they're down. We couldn't connect to Neopets to look up the pet. Maybe they're down.
Please try again later! Please try again later!
neopia_error: "We couldn't load that pet: \"%{message}\". Try again later?" neopia_error: 'We couldn''t load that pet: "%{message}". Try again later?'
swf_assets: swf_assets:
links: links:
title: Links to SWFs title: Links to SWFs
@ -849,13 +806,13 @@ en:
users: users:
index: index:
not_found: We don't have a user named %{name}. Is it spelled correctly? not_found: We don't have a user named %{name}. Is it spelled correctly?
top_contributors: top_contributors:
title: Top Contributors title: Top Contributors
rank: Rank rank: Rank
user: User user: User
points: Points points: Points
update: update:
success: Settings successfully saved. success: Settings successfully saved.
invalid: "Could not save settings: %{errors}" invalid: "Could not save settings: %{errors}"

View file

@ -33,17 +33,6 @@ es:
items: items:
title_tagline: Base de datos de Neopets personalizados y ropa Apta Para Usar title_tagline: Base de datos de Neopets personalizados y ropa Apta Para Usar
search: Buscar search: Buscar
broken_image_reports:
create:
success: ¡Muchas gracias! Esta imagen será transformada pronto. Si ves la misma imagen tras la transformación, por favor notifícanos con un reporte de error.
already_reported: Está imagen ya está siendo transformada. Pronto se pondrá bien, no te preocupes.
new:
title: Reportar el error de una imagen
explanation_html: ¡Gracias por ayudarnos a encontrar errores en las imágenes! Algunas veces las transformaciones no funcionan correctamente y otras muchas el error se puede arreglar transformando la imagen de nuevo. Si vuelves a transformar la imagen y no se arregla, por favor envíanos un reporte de error a %{contact_link}. ¡Muchas gracias!
call_to_action: ¿Cuál de estas imágenes tiene algún tipo de error?
submit: Reportar como dañada
converted_at_html: Transformada hace %{converted_at_ago}
reported_at_html: Reportada hace %{reported_at_ago}
closet_hangers: closet_hangers:
closet_hanger: closet_hanger:
submit: Guardar submit: Guardar
@ -92,7 +81,7 @@ es:
add_item_html: Añadir <strong>%{item_name}</strong> add_item_html: Añadir <strong>%{item_name}</strong>
add_to_list_html: Añadir a <strong>%{list_name}</strong> add_to_list_html: Añadir a <strong>%{list_name}</strong>
add_to_group_html: Añadir a <strong>%{group_name}</strong>, no listado add_to_group_html: Añadir a <strong>%{group_name}</strong>, no listado
already_in_collection_html: 'Ya tienes este objeto en <strong>%{collection_name}</strong> ' already_in_collection_html: "Ya tienes este objeto en <strong>%{collection_name}</strong> "
petpage: petpage:
title: Exportar para petpage title: Exportar para petpage
your_items_link: Volver a Tus Objetos your_items_link: Volver a Tus Objetos
@ -315,7 +304,7 @@ es:
submit: Importar objetos submit: Importar objetos
help: help:
welcome: ¡Bienvenido al importador de tu %{name} ! welcome: ¡Bienvenido al importador de tu %{name} !
intro: 'Vamos a hacer de la forma más fácil posible el poder importar los datos de tu %{name} en Neopets.com hacia tu lista de objetos en Dress to Impress. Así es cómo funciona:' intro: "Vamos a hacer de la forma más fácil posible el poder importar los datos de tu %{name} en Neopets.com hacia tu lista de objetos en Dress to Impress. Así es cómo funciona:"
check_frame: check_frame:
header: header:
main_html: Mira arriba a la izquierda la ventanita que muestra la página de Neopets.com, verás que está en la %{page_link}. main_html: Mira arriba a la izquierda la ventanita que muestra la página de Neopets.com, verás que está en la %{page_link}.
@ -543,9 +532,9 @@ es:
item_owned: Tú tienes este objeto item_owned: Tú tienes este objeto
bulk_pets: bulk_pets:
header: Hacer que desfilen varios pets a la vez header: Hacer que desfilen varios pets a la vez
explanation: '¿Tienes muchos pets para que desfilen? explanation: "¿Tienes muchos pets para que desfilen?
Escribe o pega una lista de pets, recuerda añadir un nombre por línea :P ¡Muchas gracias por tu ayuda!' Escribe o pega una lista de pets, recuerda añadir un nombre por línea :P ¡Muchas gracias por tu ayuda!"
submit: Cargar pet submit: Cargar pet
add: Añadir add: Añadir
clear: Limpiar clear: Limpiar

View file

@ -33,17 +33,6 @@ pt:
items: items:
title_tagline: Banco de dados de roupas e artigos aplicáveis de Neopets title_tagline: Banco de dados de roupas e artigos aplicáveis de Neopets
search: Pesquisa search: Pesquisa
broken_image_reports:
create:
success: Obrigado! Esta imagem será reconvertida em breve. Se parecer o mesmo após a conversão, por favor, considere o envio de um relatório de bug.
already_reported: Esta imagem já na nossa lista de reconversão. Nós vamos reconverte-la em breve, não se preocupe.
new:
title: Reportar imagem quebrada
explanation_html: Obrigado por nos ajudar a encontrar imagens quebradas! Às vezes, os conversores não fazem as coisas muito bem e, às vezes, isso pode ser corrigido apenas tentando a conversão novamente. Se a reconversão não resolver o problema, considere enviar-nos um relatório de bug em %{contact_link}. Obrigado!
call_to_action: 'Algumas dessas imagens parecem quebradas? Nós vamos coloca-la na nossa linha de reconversão. '
submit: Reportar imagem
converted_at_html: Convertido %{converted_at_ago} atrás
reported_at_html: Reportado %{reported_at_ago} atrás
closet_hangers: closet_hangers:
closet_hanger: closet_hanger:
submit: Salvar submit: Salvar
@ -143,7 +132,7 @@ pt:
visibility: visibility:
label: Quem pode ver essa lista? label: Quem pode ver essa lista?
description: description:
hint: 'Por que esses itens estão nessa lista? Quais são seus termos para troca? Ou você pode deixar isso em branco ' hint: "Por que esses itens estão nessa lista? Quais são seus termos para troca? Ou você pode deixar isso em branco "
markup_hint_html: We _<em>support</em>_ **<strong>Markdown</strong>** and some HTML. markup_hint_html: We _<em>support</em>_ **<strong>Markdown</strong>** and some HTML.
submit: Salvar Lista submit: Salvar Lista
groups: groups:
@ -355,9 +344,9 @@ pt:
other: Sucesso! Nós carregamos o pet de %{user_name} e adicionamos %{count} itens. other: Sucesso! Nós carregamos o pet de %{user_name} e adicionamos %{count} itens.
not_found: Não encontramos o usuário %{user_name}. Está escrito corretamente? not_found: Não encontramos o usuário %{user_name}. Está escrito corretamente?
new: new:
title: 'Importar dos pets ' title: "Importar dos pets "
your_items_link: Voltar para "Seus Items" your_items_link: Voltar para "Seus Items"
explanation: 'Digite seu nome de usuário de Neopets abaixo e nós importaremos todos os aplicáveis de todos seus pets. É fácil! ' explanation: "Digite seu nome de usuário de Neopets abaixo e nós importaremos todos os aplicáveis de todos seus pets. É fácil! "
username_label: Nome de Usuário de Neopets username_label: Nome de Usuário de Neopets
submit: Importar todos os Pets submit: Importar todos os Pets
outfits: outfits:

View file

@ -23,7 +23,6 @@ OpenneoImpressItems::Application.routes.draw do
get '/roulette' => 'roulettes#new', :as => :roulette get '/roulette' => 'roulettes#new', :as => :roulette
resources :broken_image_reports, :only => [:new, :create]
resources :contributions, :only => [:index] resources :contributions, :only => [:index]
resources :items, :only => [:index, :show] do resources :items, :only => [:index, :show] do
collection do collection do

Binary file not shown.

Binary file not shown.