From a14c4fca488deab4bb49edb72d4773f94775f449 Mon Sep 17 00:00:00 2001 From: Emi Matchu Date: Mon, 9 Sep 2024 18:56:39 -0700 Subject: [PATCH] Remove needed items form on Modeling Hub I think this has just been broken for a long time? And I don't think it's very useful in a world 15 years later, where our problem *used* to be giant gaps in our library, which isn't really our data problem anymore. --- app/assets/javascripts/pets/bulk.js | 120 ++----------------------- app/assets/stylesheets/pets/_bulk.sass | 64 +------------ app/controllers/items_controller.rb | 21 ----- app/controllers/pets_controller.rb | 1 - app/models/pet_type.rb | 21 ----- app/views/items/needed.html.haml | 19 ---- app/views/pets/bulk.html.haml | 38 ++------ config/locales/en-MEEP.yml | 32 +++---- config/locales/en.yml | 34 +++---- config/locales/es.yml | 26 ++---- config/locales/pt.yml | 24 ++--- config/routes.rb | 3 +- 12 files changed, 59 insertions(+), 344 deletions(-) delete mode 100644 app/views/items/needed.html.haml diff --git a/app/assets/javascripts/pets/bulk.js b/app/assets/javascripts/pets/bulk.js index 82cd0044..1ecacbf5 100644 --- a/app/assets/javascripts/pets/bulk.js +++ b/app/assets/javascripts/pets/bulk.js @@ -1,116 +1,5 @@ var DEBUG = document.location.search.substr(0, 6) == "?debug"; -function petThumbnailUrl(pet_name) { - // if first character is "@", use the hash url - if (pet_name[0] == "@") { - return "https://pets.neopets.com/cp/" + pet_name.substr(1) + "/1/1.png"; - } - - return "https://pets.neopets.com/cpn/" + pet_name + "/1/1.png"; -} - -/* Needed items form */ -(function () { - var UI = {}; - UI.form = $("#needed-items-form"); - UI.alert = $("#needed-items-alert"); - UI.pet_name_field = $("#needed-items-pet-name-field"); - UI.pet_thumbnail = $("#needed-items-pet-thumbnail"); - UI.pet_header = $("#needed-items-pet-header"); - UI.reload = $("#needed-items-reload"); - UI.pet_items = $("#needed-items-pet-items"); - UI.item_template = $("#item-template"); - - var current_request = { abort: function () {} }; - function sendRequest(options) { - current_request = $.ajax(options); - } - - function cancelRequest() { - if (DEBUG) console.log("Canceling request", current_request); - current_request.abort(); - } - - /* Pet */ - - var last_successful_pet_name = null; - - function loadPet(pet_name) { - // If there is a request in progress, kill it. Our new pet request takes - // priority, and, if I submit a name while the previous name is loading, I - // don't want to process both responses. - cancelRequest(); - - sendRequest({ - url: UI.form.attr("action") + ".json", - dataType: "json", - data: { name: pet_name }, - error: petError, - success: function (data) { - petSuccess(data, pet_name); - }, - complete: petComplete, - }); - - UI.form.removeClass("failed").addClass("loading-pet"); - } - - function petComplete() { - UI.form.removeClass("loading-pet"); - } - - function petError(xhr) { - UI.alert.text(xhr.responseText); - UI.form.addClass("failed"); - } - - function petSuccess(data, pet_name) { - last_successful_pet_name = pet_name; - UI.pet_thumbnail.attr("src", petThumbnailUrl(pet_name)); - UI.pet_header.empty(); - $("#needed-items-pet-header-template") - .tmpl({ pet_name: pet_name }) - .appendTo(UI.pet_header); - loadItems(data.query); - } - - /* Items */ - - function loadItems(query) { - UI.form.addClass("loading-items"); - sendRequest({ - url: "/items/needed.json", - dataType: "json", - data: query, - success: itemsSuccess, - }); - } - - function itemsSuccess(items) { - if (DEBUG) { - // The dev server is missing lots of data, so sends me 2000+ needed - // items. We don't need that many for styling, so limit it to 100 to make - // my browser happier. - items = items.slice(0, 100); - } - - UI.pet_items.empty(); - UI.item_template.tmpl(items).appendTo(UI.pet_items); - - UI.form.removeClass("loading-items").addClass("loaded"); - } - - UI.form.submit(function (e) { - e.preventDefault(); - loadPet(UI.pet_name_field.val()); - }); - - UI.reload.click(function (e) { - e.preventDefault(); - loadPet(last_successful_pet_name); - }); -})(); - /* Bulk pets form */ (function () { var form = $("#bulk-pets-form"), @@ -122,6 +11,15 @@ function petThumbnailUrl(pet_name) { $(document.body).addClass("js"); + function petThumbnailUrl(pet_name) { + // if first character is "@", use the hash url + if (pet_name[0] == "@") { + return "https://pets.neopets.com/cp/" + pet_name.substr(1) + "/1/1.png"; + } + + return "https://pets.neopets.com/cpn/" + pet_name + "/1/1.png"; + } + bulk_load_queue = new (function BulkLoadQueue() { var RECENTLY_SENT_INTERVAL_IN_SECONDS = 30; var RECENTLY_SENT_MAX = 3; diff --git a/app/assets/stylesheets/pets/_bulk.sass b/app/assets/stylesheets/pets/_bulk.sass index d665d189..1e7d679a 100644 --- a/app/assets/stylesheets/pets/_bulk.sass +++ b/app/assets/stylesheets/pets/_bulk.sass @@ -2,70 +2,8 @@ @import "../partials/clean/mixins" body.pets-bulk - #needed-items-form, #bulk-pets-form - text-align: center - - #needed-items-form - #needed-items-pet - border-top: 1px solid $soft-border-color - display: none - margin-top: 1em - padding-top: 1em - - h4 - font-size: 150% - margin-bottom: .5em - - #needed-items-reload - +inline-block - font-size: 12px - margin-left: 1em - vertical-align: middle - - #needed-items-alert - display: none - margin-top: .5em - - #needed-items-pet-thumbnail - height: 50px - width: 50px - - #needed-items-pet-items - li.owned - background: $module-bg-color - border: 1px solid $module-border-color - - .object-owned - color: $soft-text-color - display: block - font-size: 75% - font-style: italic - padding-bottom: .25em - - &.loading-pet, &.loading-items - #needed-items-pet-name-field - background: - image: image-url("loading.gif") - position: center right - repeat: no-repeat - - #needed-items-pet-items - +opacity(.50) - - &.loading-pet - #needed-items-pet h4 - +opacity(.50) - - &.loaded - #needed-items-pet - display: block - - &.failed - #needed-items-alert - display: block - #bulk-pets-form - border-top: 1px solid $module-border-color + text-align: center margin-top: 12px padding-top: 12px diff --git a/app/controllers/items_controller.rb b/app/controllers/items_controller.rb index 3c59e4e3..cf56452b 100644 --- a/app/controllers/items_controller.rb +++ b/app/controllers/items_controller.rb @@ -112,27 +112,6 @@ class ItemsController < ApplicationController end end - def needed - if params[:color] && params[:species] - @pet_type = PetType.find_by_color_id_and_species_id( - params[:color], - params[:species] - ) - end - - unless @pet_type - raise ActiveRecord::RecordNotFound, 'Pet type not found' - end - - @items = @pet_type.needed_items.order(:name) - assign_closeted!(@items) - - respond_to do |format| - format.html { @pet_name = params[:name] ; render :layout => 'application' } - format.json { render :json => @items } - end - end - def sources # Load all the items, then group them by source. item_ids = params[:ids].split(",") diff --git a/app/controllers/pets_controller.rb b/app/controllers/pets_controller.rb index 61c44f41..f23b1130 100644 --- a/app/controllers/pets_controller.rb +++ b/app/controllers/pets_controller.rb @@ -39,7 +39,6 @@ class PetsController < ApplicationController def destination case (params[:destination] || params[:origin]) when 'wardrobe' then wardrobe_path - when 'needed_items' then needed_items_path else root_path end end diff --git a/app/models/pet_type.rb b/app/models/pet_type.rb index b1d72b89..2a45ce72 100644 --- a/app/models/pet_type.rb +++ b/app/models/pet_type.rb @@ -79,27 +79,6 @@ class PetType < ApplicationRecord species_human_name: possibly_new_species.human_name) end - def needed_items - # If I need this item on a pet type, that means that we've already seen it - # and it's body-specific. So, there's a body-specific asset for the item, - # but no asset that fits this pet type. - i = Item.arel_table - psa = ParentSwfAssetRelationship.arel_table - sa = SwfAsset.arel_table - - Item.where('(' + ParentSwfAssetRelationship.select('count(DISTINCT body_id)').joins(:swf_asset). - where( - psa[:parent_id].eq(i[:id]).and( - psa[:parent_type].eq('Item').and( - sa[:body_id].not_eq(self.body_id))) - ).to_sql + ') > 1'). - where(ParentSwfAssetRelationship.joins(:swf_asset).where( - psa[:parent_id].eq(i[:id]).and( - psa[:parent_type].eq('Item').and( - sa[:body_id].in([self.body_id, 0]))) - ).exists.not) - end - def add_pet_state_from_biology!(biology) pet_state = PetState.from_pet_type_and_biology_info(self, biology) pet_state diff --git a/app/views/items/needed.html.haml b/app/views/items/needed.html.haml deleted file mode 100644 index c01fba78..00000000 --- a/app/views/items/needed.html.haml +++ /dev/null @@ -1,19 +0,0 @@ -- title "Needed items for #{@pet_type.human_name}" -%h2 - = image_tag "https://pets.neopets.com/cpn/#{@pet_name}/1/1.png", - :class => 'inline-image' - %span.pet-name= @pet_name - can model… -%ul.buttons - %li - = form_tag load_pet_path do - = origin_tag 'needed_items' - = hidden_field_tag 'name', @pet_name - = submit_tag "I'm wearing one now!", :class => 'loud' - %li - = link_to 'What do I own?', 'https://www.neopets.com/closet.phtml', - :class => 'button', :target => '_blank' -= render @items - -- content_for :stylesheets do - = page_stylesheet_link_tag "layouts/items" diff --git a/app/views/pets/bulk.html.haml b/app/views/pets/bulk.html.haml index a2d0e5fa..65ad4c42 100644 --- a/app/views/pets/bulk.html.haml +++ b/app/views/pets/bulk.html.haml @@ -1,42 +1,20 @@ - title t('modeling_hub') -= form_tag load_pet_path, :id => 'needed-items-form' do - - localized_cache :action_suffix => 'needed_items_content' do - %h3= t '.needed_items.header' - - %p= t '.needed_items.explanation' - - = origin_tag bulk_pets_path - = destination_tag 'needed_items' - - %input#needed-items-pet-name-field{:type => "text", :name => "name"}/ - %input{:type => "submit", :value => t('.needed_items.submit')}/ - - #needed-items-alert.alert - - #needed-items-pet.script-only - %h4 - %img#needed-items-pet-thumbnail.inline-image - %span#needed-items-pet-header - %button#needed-items-reload= t '.needed_items.reload' - - %ul#needed-items-pet-items - = form_tag load_pet_path, :id => 'bulk-pets-form' do - localized_cache :action_suffix => 'bulk_pets_content' do - %h3= t '.bulk_pets.header' + %h3= t '.header' - %p= t '.bulk_pets.explanation' + %p= t '.explanation' = origin_tag bulk_pets_path %div.noscript %input{:name => "name", :type => "text"}/ - %input{:type => "submit", :value => t('.bulk_pets.submit')}/ + %input{:type => "submit", :value => t('.submit')}/ %div.script-only %textarea - %button#bulk-pets-form-add{:type => "button"}= t '.bulk_pets.add' - %button#bulk-pets-form-clear{:type => "button"}= t '.bulk_pets.clear' + %button#bulk-pets-form-add{:type => "button"}= t '.add' + %button#bulk-pets-form-clear{:type => "button"}= t '.clear' %ul - localized_cache :action_suffix => 'templates' do @@ -70,12 +48,12 @@ %li.waiting %img{:src => '${pet_thumbnail}'} %span.name ${pet_name} - %span.waiting-message= t '.bulk_pets.waiting' - %span.loading-message= t '.bulk_pets.loading' + %span.waiting-message= t '.waiting' + %span.loading-message= t '.loading' %span.response %script#bulk-pets-submission-success-template{:type => 'text/x-jquery/tmpl'} - = t '.bulk_pets.submission_success', :points => '${points}' + = t '.submission_success', :points => '${points}' - content_for :javascripts do = include_javascript_libraries :jquery, :jquery_tmpl diff --git a/config/locales/en-MEEP.yml b/config/locales/en-MEEP.yml index 378403f6..6cdc3846 100644 --- a/config/locales/en-MEEP.yml +++ b/config/locales/en-MEEP.yml @@ -630,27 +630,17 @@ en-MEEP: pets: bulk: - needed_items: - header: Looking for ways to contreepute? - explanation: - Meep your pet's name below and we'll tell you what items you can - meep. Thanks for your meep! - submit: Meep - pet_header: Items %{pet_name} can meep - reload: Remeep - item_owned: You own this meepit - bulk_pets: - header: Meep pets in bulk - explanation: - Got a lot of pets to meep? Just keep meeping them into the box below, - or even meep in a whole list of names, one name per line. Thanks for - your meep! - submit: Meep pet - add: Meep - clear: Cleer - waiting: Weeting… - loading: Leeding… - submission_success: "%{points} peeps" + header: Meep pets in bulk + explanation: + Got a lot of pets to meep? Just keep meeping them into the box below, + or even meep in a whole list of names, one name per line. Thanks for + your meep! + submit: Meep pet + add: Meep + clear: Cleer + waiting: Weeting… + loading: Leeding… + submission_success: "%{points} peeps" load: not_found: We couldn't meep a pet by that name. Is it meeped correctly? diff --git a/config/locales/en.yml b/config/locales/en.yml index b10bc8c5..23e141b5 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -751,28 +751,18 @@ en: pets: bulk: - needed_items: - header: Looking for ways to contribute? - explanation: - Enter your pet's name below and we'll tell you what items you can - model. Thanks for your help! - submit: Submit - pet_header: Items %{pet_name} can model - reload: Reload - item_owned: You own this item - bulk_pets: - header: Model pets in bulk - explanation: - Got a lot of pets to model? Just keep typing them into the box below, - or even paste in a whole list of names, one name per line. We'll - stagger them over time to keep our servers happy. Thanks for your - help! - submit: Load pet - add: Add - clear: Clear - waiting: Waiting… - loading: Loading… - submission_success: "%{points} points" + header: Model pets in bulk + explanation: + Got a lot of pets to model? Just keep typing them into the box below, + or even paste in a whole list of names, one name per line. We'll + stagger them over time to keep our servers happy. Thanks for your + help! + submit: Load pet + add: Add + clear: Clear + waiting: Waiting… + loading: Loading… + submission_success: "%{points} points" load: not_found: We couldn't find a pet by that name. Is it spelled correctly? diff --git a/config/locales/es.yml b/config/locales/es.yml index 73542c13..5d2cec9e 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -498,24 +498,16 @@ es: default_human_name: (una especie nueva) pets: bulk: - needed_items: - header: ¿Quieres contribuir en la página? - explanation: ¡Escribe el nombre de tu pet aquí abajo y te diremos qué objetos nos hace falta junto a esa especie de pet para actualizar la base de datos! ¡Gracias por tu ayuda! - submit: Enviar - pet_header: Objetos que tu pet %{pet_name} puede posar - reload: Actualizar - item_owned: Tú tienes este objeto - bulk_pets: - header: Hacer que desfilen varios pets a la vez - explanation: "¿Tienes muchos pets para que desfilen? + header: Hacer que desfilen varios pets a la vez + 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!" - submit: Cargar pet - add: Añadir - clear: Limpiar - waiting: Esperando… - loading: Cargando… - submission_success: "%{points} puntos" + Escribe o pega una lista de pets, recuerda añadir un nombre por línea :P ¡Muchas gracias por tu ayuda!" + submit: Cargar pet + add: Añadir + clear: Limpiar + waiting: Esperando… + loading: Cargando… + submission_success: "%{points} puntos" load: not_found: No hemos podido encontrar a un pet con ese nombre. ¿Lo has escrito correctamente? asset_download_error: Hemos encontrado el pet que intentas vestir, pero no hemos podido descargar las imágenes que lo asocian. Posiblemente Neopets está caído. ¡Por favor inténtalo de nuevo más tarde! diff --git a/config/locales/pt.yml b/config/locales/pt.yml index 0c9abef4..d41077a8 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -494,22 +494,14 @@ pt: default_human_name: (uma nova espécie) pets: bulk: - needed_items: - header: Procurando maneiras de ajudar? - explanation: Digite o nome do seu pet e nós diremos quais itens você pode modelar. Obrigado pela ajuda - submit: Enviar - pet_header: Itens que %{pet_name} pode modelar - reload: Recarregar - item_owned: Você possui este item - bulk_pets: - header: Modele pets em massa - explanation: Tem um monte de pets para modelar? Basta digitar seus nomes na caixa abaixo, ou até mesmo colar toda uma lista de nomes, um nome por linha. Obrigado por sua ajuda! - submit: Carregar pet - add: Adicionar - clear: Limpar - waiting: Esperando… - loading: Carregando… - submission_success: "%{points} pontos" + header: Modele pets em massa + explanation: Tem um monte de pets para modelar? Basta digitar seus nomes na caixa abaixo, ou até mesmo colar toda uma lista de nomes, um nome por linha. Obrigado por sua ajuda! + submit: Carregar pet + add: Adicionar + clear: Limpar + waiting: Esperando… + loading: Carregando… + submission_success: "%{points} pontos" load: not_found: Não foi possível achar um pet com esse nome. Está escrito corretamente? asset_download_error: Nós achamos o pet e o que ele está vestindo, mas não foi possível baixar os dados. Talvez Neopets esteja fora do ar. Por favor tente mais tarde! diff --git a/config/routes.rb b/config/routes.rb index 5defd506..ee85a5af 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -26,7 +26,6 @@ OpenneoImpressItems::Application.routes.draw do resources :appearances, controller: 'item_appearances', only: [:index] collection do - get :needed get "sources/:ids", action: :sources end end @@ -102,4 +101,4 @@ OpenneoImpressItems::Application.routes.draw do get '/sitemap.xml' => 'sitemap#index', :as => :sitemap, :format => :xml get '/robots.txt' => 'sitemap#robots', :as => :robots, :format => :text post '/locales/choose' => 'locales#choose', :as => :choose_locale -end \ No newline at end of file +end