forked from OpenNeo/impress
Stop referencing Neopia, just do modeling inline
I hope this doesn't cause problems! But yeah, with Puma doing threading, and maybe switching to Falcon someday to get even better concurrency properties, I feel like this will probably be fine? And it makes the UX a loootttt better, to be back in the world where all these forms just work, whew.
This commit is contained in:
parent
e00ee08ae7
commit
2e152735c5
10 changed files with 225 additions and 343 deletions
|
@ -1,10 +1,11 @@
|
|||
(function () { // don't need to export anything in here
|
||||
(function () {
|
||||
// don't need to export anything in here
|
||||
|
||||
var preview_el = $('#pet-preview'),
|
||||
img_el = preview_el.find('img'),
|
||||
response_el = preview_el.find('span');
|
||||
var preview_el = $("#pet-preview"),
|
||||
img_el = preview_el.find("img"),
|
||||
response_el = preview_el.find("span");
|
||||
|
||||
var defaultPreviewUrl = img_el.attr('src');
|
||||
var defaultPreviewUrl = img_el.attr("src");
|
||||
|
||||
preview_el.click(function () {
|
||||
Preview.Job.current.visit();
|
||||
|
@ -12,25 +13,29 @@
|
|||
|
||||
var Preview = {
|
||||
clear: function () {
|
||||
if(typeof Preview.Job.fallback != 'undefined') Preview.Job.fallback.setAsCurrent();
|
||||
if (typeof Preview.Job.fallback != "undefined")
|
||||
Preview.Job.fallback.setAsCurrent();
|
||||
},
|
||||
displayLoading: function () {
|
||||
preview_el.addClass('loading');
|
||||
response_el.text('Loading...');
|
||||
preview_el.addClass("loading");
|
||||
response_el.text("Loading...");
|
||||
},
|
||||
failed: function () {
|
||||
preview_el.addClass('hidden');
|
||||
preview_el.addClass("hidden");
|
||||
},
|
||||
notFound: function (key, options) {
|
||||
Preview.failed();
|
||||
response_el.empty();
|
||||
$('#preview-' + key + '-template').tmpl(options).appendTo(response_el);
|
||||
$("#preview-" + key + "-template")
|
||||
.tmpl(options)
|
||||
.appendTo(response_el);
|
||||
},
|
||||
updateWithName: function (name_el) {
|
||||
var name = name_el.val(), job;
|
||||
if(name) {
|
||||
var name = name_el.val(),
|
||||
job;
|
||||
if (name) {
|
||||
currentName = name;
|
||||
if(!Preview.Job.current || name != Preview.Job.current.name) {
|
||||
if (!Preview.Job.current || name != Preview.Job.current.name) {
|
||||
job = new Preview.Job.Name(name);
|
||||
job.setAsCurrent();
|
||||
Preview.displayLoading();
|
||||
|
@ -38,8 +43,8 @@
|
|||
} else {
|
||||
Preview.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
function loadNotable() {
|
||||
// TODO: add HTTPS to notables
|
||||
|
@ -51,13 +56,13 @@
|
|||
// Preview.Job.fallback.setAsCurrent();
|
||||
// }
|
||||
// });
|
||||
if(!Preview.Job.current) {
|
||||
if (!Preview.Job.current) {
|
||||
Preview.Job.fallback.setAsCurrent();
|
||||
}
|
||||
}
|
||||
|
||||
function loadFeature() {
|
||||
$.getJSON('/donations/features', function(features) {
|
||||
$.getJSON("/donations/features", function (features) {
|
||||
if (features.length > 0) {
|
||||
var feature = features[Math.floor(Math.random() * features.length)];
|
||||
Preview.Job.fallback = new Preview.Job.Feature(feature);
|
||||
|
@ -76,177 +81,172 @@
|
|||
var job = this,
|
||||
quality = 2;
|
||||
job.loading = false;
|
||||
|
||||
|
||||
function getImageSrc() {
|
||||
if (key.substr(0, 3) === 'a:-') {
|
||||
if (key.substr(0, 3) === "a:-") {
|
||||
// lol lazy code for prank image :P
|
||||
// TODO: HTTPS?
|
||||
return "http://swfimages.impress.openneo.net" +
|
||||
"/biology/000/000/0-2/" + key.substr(2) + "/300x300.png";
|
||||
} else if (base === 'cp' || base === 'cpn') {
|
||||
return petImage(base + '/' + key, quality);
|
||||
} else if (base === 'url') {
|
||||
return (
|
||||
"http://swfimages.impress.openneo.net" +
|
||||
"/biology/000/000/0-2/" +
|
||||
key.substr(2) +
|
||||
"/300x300.png"
|
||||
);
|
||||
} else if (base === "cp" || base === "cpn") {
|
||||
return petImage(base + "/" + key, quality);
|
||||
} else if (base === "url") {
|
||||
return key;
|
||||
} else {
|
||||
throw new Error("unrecognized image base " + base);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function load() {
|
||||
job.loading = true;
|
||||
img_el.attr('src', getImageSrc());
|
||||
img_el.attr("src", getImageSrc());
|
||||
}
|
||||
|
||||
|
||||
this.increaseQualityIfPossible = function () {
|
||||
if(quality == 2) {
|
||||
if (quality == 2) {
|
||||
quality = 4;
|
||||
load();
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
this.setAsCurrent = function () {
|
||||
Preview.Job.current = job;
|
||||
load();
|
||||
}
|
||||
};
|
||||
|
||||
this.notFound = function() {
|
||||
Preview.notFound('pet-not-found');
|
||||
}
|
||||
}
|
||||
this.notFound = function () {
|
||||
Preview.notFound("pet-not-found");
|
||||
};
|
||||
};
|
||||
|
||||
Preview.Job.Name = function (name) {
|
||||
this.name = name;
|
||||
Preview.Job.apply(this, [name, 'cpn']);
|
||||
Preview.Job.apply(this, [name, "cpn"]);
|
||||
|
||||
this.visit = function() {
|
||||
$('.main-pet-name').val(this.name).closest('form').submit();
|
||||
}
|
||||
}
|
||||
this.visit = function () {
|
||||
$(".main-pet-name").val(this.name).closest("form").submit();
|
||||
};
|
||||
};
|
||||
|
||||
Preview.Job.Hash = function (hash, form) {
|
||||
Preview.Job.apply(this, [hash, 'cp']);
|
||||
Preview.Job.apply(this, [hash, "cp"]);
|
||||
|
||||
this.visit = function() {
|
||||
window.location = "/wardrobe?color=" + form.find('.color').val() + "&species=" +
|
||||
form.find('.species').val();
|
||||
}
|
||||
}
|
||||
this.visit = function () {
|
||||
window.location =
|
||||
"/wardrobe?color=" +
|
||||
form.find(".color").val() +
|
||||
"&species=" +
|
||||
form.find(".species").val();
|
||||
};
|
||||
};
|
||||
|
||||
Preview.Job.Feature = function(feature) {
|
||||
Preview.Job.apply(this, [feature.outfit_image_url, 'url']);
|
||||
Preview.Job.Feature = function (feature) {
|
||||
Preview.Job.apply(this, [feature.outfit_image_url, "url"]);
|
||||
this.name = "Thanks for donating, " + feature.donor_name + "!"; // TODO: i18n
|
||||
|
||||
this.visit = function() {
|
||||
window.location = '/donate';
|
||||
}
|
||||
this.visit = function () {
|
||||
window.location = "/donate";
|
||||
};
|
||||
|
||||
this.notFound = function() {
|
||||
this.notFound = function () {
|
||||
// The outfit thumbnail hasn't generated or is missing or something.
|
||||
// Let's fall back to a boring image for now.
|
||||
var boring = new Preview.Job.Feature({
|
||||
donor_name: feature.donor_name,
|
||||
outfit_image_url: defaultPreviewUrl
|
||||
outfit_image_url: defaultPreviewUrl,
|
||||
});
|
||||
boring.setAsCurrent();
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
$(function () {
|
||||
var previewWithNameTimeout;
|
||||
|
||||
var name_el = $('.main-pet-name');
|
||||
|
||||
var name_el = $(".main-pet-name");
|
||||
name_el.val(PetQuery.name);
|
||||
Preview.updateWithName(name_el);
|
||||
|
||||
|
||||
name_el.keyup(function () {
|
||||
if(previewWithNameTimeout) {
|
||||
if (previewWithNameTimeout) {
|
||||
clearTimeout(previewWithNameTimeout);
|
||||
Preview.Job.current.loading = false;
|
||||
}
|
||||
var name_el = $(this);
|
||||
previewWithNameTimeout = setTimeout(function() {
|
||||
previewWithNameTimeout = setTimeout(function () {
|
||||
Preview.updateWithName(name_el);
|
||||
}, 250);
|
||||
});
|
||||
|
||||
img_el.load(function () {
|
||||
if(Preview.Job.current.loading) {
|
||||
Preview.Job.loading = false;
|
||||
Preview.Job.current.increaseQualityIfPossible();
|
||||
preview_el.removeClass('loading').removeClass('hidden').addClass('loaded');
|
||||
response_el.text(Preview.Job.current.name);
|
||||
}
|
||||
}).error(function () {
|
||||
if(Preview.Job.current.loading) {
|
||||
Preview.Job.loading = false;
|
||||
Preview.Job.current.notFound();
|
||||
}
|
||||
});
|
||||
|
||||
$('.species, .color').change(function () {
|
||||
var type = {}, nameComponents = {};
|
||||
var form = $(this).closest('form');
|
||||
form.find('select').each(function () {
|
||||
var el = $(this), selectedEl = el.children(':selected'), key = el.attr('name');
|
||||
|
||||
img_el
|
||||
.load(function () {
|
||||
if (Preview.Job.current.loading) {
|
||||
Preview.Job.loading = false;
|
||||
Preview.Job.current.increaseQualityIfPossible();
|
||||
preview_el
|
||||
.removeClass("loading")
|
||||
.removeClass("hidden")
|
||||
.addClass("loaded");
|
||||
response_el.text(Preview.Job.current.name);
|
||||
}
|
||||
})
|
||||
.error(function () {
|
||||
if (Preview.Job.current.loading) {
|
||||
Preview.Job.loading = false;
|
||||
Preview.Job.current.notFound();
|
||||
}
|
||||
});
|
||||
|
||||
$(".species, .color").change(function () {
|
||||
var type = {},
|
||||
nameComponents = {};
|
||||
var form = $(this).closest("form");
|
||||
form.find("select").each(function () {
|
||||
var el = $(this),
|
||||
selectedEl = el.children(":selected"),
|
||||
key = el.attr("name");
|
||||
type[key] = selectedEl.val();
|
||||
nameComponents[key] = selectedEl.text();
|
||||
});
|
||||
name = nameComponents.color + ' ' + nameComponents.species;
|
||||
name = nameComponents.color + " " + nameComponents.species;
|
||||
Preview.displayLoading();
|
||||
$.ajax({
|
||||
url: '/species/' + type.species + '/color/' + type.color + '/pet_type.json',
|
||||
url:
|
||||
"/species/" +
|
||||
type.species +
|
||||
"/color/" +
|
||||
type.color +
|
||||
"/pet_type.json",
|
||||
data: {
|
||||
'for': 'image'
|
||||
for: "image",
|
||||
},
|
||||
dataType: 'json',
|
||||
dataType: "json",
|
||||
success: function (data) {
|
||||
var job;
|
||||
if(data) {
|
||||
if (data) {
|
||||
job = new Preview.Job.Hash(data.image_hash, form);
|
||||
job.name = name;
|
||||
job.setAsCurrent();
|
||||
} else {
|
||||
Preview.notFound('pet-type-not-found', {
|
||||
Preview.notFound("pet-type-not-found", {
|
||||
color_name: nameComponents.color,
|
||||
species_name: nameComponents.species
|
||||
species_name: nameComponents.species,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
var neopiaError = document.location.search.match(/neopia%5Berror%5D=([^&]+)/);
|
||||
if (neopiaError !== null) {
|
||||
var message = decodeURI(neopiaError[1]).replace(/\+/g, ' ');
|
||||
if (message === "pet not found") {
|
||||
$('#pet-not-found').show();
|
||||
} else {
|
||||
var el = $('#neopia-error');
|
||||
var text = el.text().replace('%{message}', message);
|
||||
el.text(text).show();
|
||||
}
|
||||
}
|
||||
|
||||
$('.load-pet-to-wardrobe').submit(function(e) {
|
||||
if ($(this).find('.main-pet-name').val() === "" && Preview.Job.current) {
|
||||
$(".load-pet-to-wardrobe").submit(function (e) {
|
||||
if ($(this).find(".main-pet-name").val() === "" && Preview.Job.current) {
|
||||
e.preventDefault();
|
||||
Preview.Job.current.visit();
|
||||
}
|
||||
});
|
||||
|
||||
function setNeopiaStatus(isOnline) {
|
||||
$('#outfit-forms').attr('data-neopia-status', isOnline ? 'online' : 'offline');
|
||||
}
|
||||
|
||||
Neopia.Status.get().then(function(r) {
|
||||
setNeopiaStatus(!!r.status);
|
||||
}).fail(function() {
|
||||
setNeopiaStatus(false);
|
||||
});
|
||||
});
|
||||
|
||||
$('#latest-contribution-created-at').timeago();
|
||||
|
||||
$("#latest-contribution-created-at").timeago();
|
||||
})();
|
||||
|
|
|
@ -35,7 +35,7 @@ body.outfits-new
|
|||
a
|
||||
color: #0a58ca
|
||||
|
||||
#pet-not-found, #neopia-error
|
||||
#pet-not-found
|
||||
display: none
|
||||
|
||||
#outfit-forms
|
||||
|
@ -93,15 +93,6 @@ body.outfits-new
|
|||
font-size: 175%
|
||||
select
|
||||
font-size: 120%
|
||||
[data-require-neopia-status=offline]
|
||||
display: none
|
||||
&[data-neopia-status=offline]
|
||||
[data-require-neopia-status=online]
|
||||
display: none
|
||||
[data-require-neopia-status=offline]
|
||||
display: block
|
||||
[data-require-neopia-status=offline] .load-pet-to-wardrobe legend a
|
||||
font-size: 85%
|
||||
#description, #top-contributors
|
||||
float: left
|
||||
#description
|
||||
|
|
|
@ -45,10 +45,8 @@ class OutfitsController < ApplicationController
|
|||
end
|
||||
|
||||
def new
|
||||
unless localized_fragment_exist?("outfits#new neopia_online start_from_scratch_form pranks_funny=#{Color.pranks_funny?}") && localized_fragment_exist?("outfits#new neopia_offline start_from_scratch_form pranks_funny=#{Color.pranks_funny?}")
|
||||
@colors = Color.funny.alphabetical
|
||||
@species = Species.alphabetical
|
||||
end
|
||||
@colors = Color.funny.alphabetical
|
||||
@species = Species.alphabetical
|
||||
|
||||
newest_items = Item.newest.select([:id, :updated_at, :thumbnail_url, :rarity_index]).
|
||||
includes(:translations).limit(18)
|
||||
|
|
|
@ -53,7 +53,7 @@ class PetsController < ApplicationController
|
|||
|
||||
def destination
|
||||
case (params[:destination] || params[:origin])
|
||||
when 'wardrobe' then wardrobe_path + '#'
|
||||
when 'wardrobe' then wardrobe_path + '?'
|
||||
when 'needed_items' then needed_items_path + '?'
|
||||
else root_path + '#'
|
||||
end
|
||||
|
|
|
@ -50,14 +50,6 @@ module OutfitsHelper
|
|||
content_tag(:dd, search_query_description(base, filter_key))
|
||||
end
|
||||
|
||||
def neopia_host
|
||||
Rails.configuration.neopia_host
|
||||
end
|
||||
|
||||
def remote_load_pet_path
|
||||
"https://#{neopia_host}/api/1/pet/customization"
|
||||
end
|
||||
|
||||
def render_predicted_missing_species_by_color(species_by_color)
|
||||
key_prefix = 'outfits.new.newest_items.unmodeled.content'
|
||||
|
||||
|
@ -115,17 +107,6 @@ module OutfitsHelper
|
|||
text_field_tag 'name', nil, options
|
||||
end
|
||||
|
||||
def modeling_i18n_tag
|
||||
localized_cache('modeling_i18n') do
|
||||
modeling_i18n = {
|
||||
modeledBodyTitle: t('.newest_items.modeled.body_title'),
|
||||
pet: t('.newest_items.modeled.pet'),
|
||||
neopetsUsernamesForm: t('.newest_items.modeled.neopets_usernames_form')
|
||||
}
|
||||
javascript_tag("var ModelingI18n = #{modeling_i18n.to_json};")
|
||||
end
|
||||
end
|
||||
|
||||
def prank_color_message(unfunny_human_name, artist_name, artist_url)
|
||||
content_key_base = Color.pranks_funny? ? 'funny' : 'unfunny'
|
||||
if artist_url
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
= advertise_campaign_progress @campaign
|
||||
|
||||
%p#pet-not-found.alert= t 'pets.load.not_found'
|
||||
%p#neopia-error.alert= t 'pets.load.neopia_error'
|
||||
|
||||
%section.pardon-our-dust
|
||||
= image_tag 'pardon-our-dust/worker.png', class: 'thumbnail',
|
||||
|
@ -23,45 +22,21 @@
|
|||
%h1= t 'app_name'
|
||||
%h2= t '.tagline'
|
||||
|
||||
%div{'data-require-neopia-status' => 'online'}
|
||||
= form_tag remote_load_pet_path, method: 'GET', class: 'primary load-pet-to-wardrobe' do
|
||||
= hidden_field_tag 'impress_user', current_user.try(:id)
|
||||
- localized_cache action_suffix: 'outfits#new neopia_online main_load_pet_form_content' do
|
||||
= hidden_field_tag 'redirect', "#{wardrobe_url}\#{q}"
|
||||
%fieldset
|
||||
%legend= t '.neopia_online.load_pet'
|
||||
= pet_name_tag class: 'main-pet-name'
|
||||
%button{:type => "submit"}
|
||||
= t '.submit.primary'
|
||||
= form_tag load_pet_path, method: 'POST', class: 'primary load-pet-to-wardrobe' do
|
||||
= hidden_field_tag 'destination', 'wardrobe'
|
||||
%fieldset
|
||||
%legend= t '.load_pet'
|
||||
= pet_name_tag class: 'main-pet-name'
|
||||
%button{:type => "submit"}
|
||||
= t '.submit.primary'
|
||||
|
||||
- localized_cache "outfits#new neopia_online start_from_scratch_form pranks_funny=#{Color.pranks_funny?}" do
|
||||
= form_tag wardrobe_path, method: 'GET', class: 'secondary start-from-scratch', authenticity_token: false do
|
||||
%fieldset
|
||||
%legend= t '.neopia_online.start_from_scratch'
|
||||
= pet_attribute_select 'color', @colors, 8
|
||||
= pet_attribute_select 'species', @species
|
||||
%button{:type => "submit"}
|
||||
= t('.submit.secondary')
|
||||
|
||||
%div{'data-require-neopia-status' => 'offline'}
|
||||
- localized_cache "outfits#new neopia_offline start_from_scratch_form pranks_funny=#{Color.pranks_funny?}" do
|
||||
= form_tag wardrobe_path, method: 'GET', class: 'primary start-from-scratch', authenticity_token: false do
|
||||
%fieldset
|
||||
%legend= t '.neopia_offline.start_from_scratch'
|
||||
= pet_attribute_select 'color', @colors, 8
|
||||
= pet_attribute_select 'species', @species
|
||||
%button{:type => "submit"}
|
||||
= t('.submit.primary')
|
||||
|
||||
= form_tag remote_load_pet_path, method: 'GET', class: 'secondary load-pet-to-wardrobe' do
|
||||
= hidden_field_tag 'impress_user', current_user.try(:id)
|
||||
- localized_cache action_suffix: 'outfits#new neopia_offline main_load_pet_form_content' do
|
||||
= hidden_field_tag 'redirect', "#{wardrobe_url}\#{q}"
|
||||
%fieldset
|
||||
%legend= t '.neopia_offline.load_pet.main_html', link: link_to(t('.neopia_offline.load_pet.link_content'), 'http://blog.openneo.net/')
|
||||
= pet_name_tag class: 'main-pet-name'
|
||||
%button{:type => "submit"}
|
||||
= t '.submit.secondary'
|
||||
= form_tag wardrobe_path, method: 'GET', class: 'secondary start-from-scratch', authenticity_token: false do
|
||||
%fieldset
|
||||
%legend= t '.start_from_scratch'
|
||||
= pet_attribute_select 'color', @colors, 8
|
||||
= pet_attribute_select 'species', @species
|
||||
%button{:type => "submit"}
|
||||
= t('.submit.secondary')
|
||||
|
||||
%ul#sections
|
||||
- localized_cache :action_suffix => 'your_items_module' do
|
||||
|
@ -95,9 +70,7 @@
|
|||
%div
|
||||
%h4= t '.modeling_hub.tagline'
|
||||
%p= t '.modeling_hub.description'
|
||||
= form_tag remote_load_pet_path, method: 'POST' do
|
||||
= hidden_field_tag 'impress_user', current_user.try(:id)
|
||||
= hidden_field_tag 'redirect', "#{root_url}\#{q}"
|
||||
= form_tag load_pet_path, method: 'POST' do
|
||||
= pet_name_tag placeholder: t('.modeling_hub.load_pet.placeholder'),
|
||||
required: true
|
||||
= submit_tag t('.modeling_hub.load_pet.submit')
|
||||
|
@ -110,7 +83,6 @@
|
|||
|
||||
#whats-new
|
||||
- if @newest_unmodeled_items.present?
|
||||
#modeling-neopets-users{'data-usernames' => @neopets_usernames.to_json}
|
||||
%h3= t '.newest_items.unmodeled.header'
|
||||
%ul#newest-unmodeled-items
|
||||
- @newest_unmodeled_items.each do |item|
|
||||
|
@ -146,10 +118,6 @@
|
|||
%script#preview-pet-not-found-template{:type => 'text/x-jquery-tmpl'}
|
||||
= t '.preview.pet_not_found'
|
||||
|
||||
- content_for :meta do
|
||||
%meta{name: 'neopia-host', content: neopia_host}
|
||||
|
||||
- content_for :javascripts do
|
||||
= include_javascript_libraries :jquery20, :jquery_tmpl
|
||||
= modeling_i18n_tag
|
||||
= javascript_include_tag 'ajax_auth', 'react', 'jquery.timeago', 'pet_query', 'modeling', 'outfits/new'
|
||||
= javascript_include_tag 'ajax_auth', 'react', 'jquery.timeago', 'pet_query', 'outfits/new'
|
|
@ -5,20 +5,20 @@ en-MEEP:
|
|||
infinite_closet: Infinite Meepit
|
||||
modeling_hub: Meepiting Hub
|
||||
locale_name: English (meep!)
|
||||
|
||||
|
||||
activerecord:
|
||||
attributes:
|
||||
closet_list:
|
||||
name: Nameep
|
||||
description: Descreeption
|
||||
|
||||
|
||||
user:
|
||||
contact_neopets_connection_id: Meep Neomail to
|
||||
|
||||
|
||||
layouts:
|
||||
application:
|
||||
title_tagline: Preview customized Neopets' meeps and meepits
|
||||
|
||||
|
||||
userbar:
|
||||
greeting: Meep, %{user_name}!
|
||||
contributions_summary:
|
||||
|
@ -29,7 +29,7 @@ en-MEEP:
|
|||
settings: Setteeps
|
||||
logout: Meep out
|
||||
login: Meep in
|
||||
|
||||
|
||||
footer:
|
||||
blog: Bleep
|
||||
source_code: Source Meep
|
||||
|
@ -37,14 +37,13 @@ en-MEEP:
|
|||
contact: Meeptact
|
||||
suggestions: Suggesteeps
|
||||
email: Questions, comments, meepits
|
||||
copyright:
|
||||
Images © 2000–%{year} Neopets, Inc. All Rights Reserved.
|
||||
copyright: Images © 2000–%{year} Neopets, Inc. All Rights Reserved.
|
||||
Used With Permission. Meep.
|
||||
|
||||
|
||||
items:
|
||||
title_tagline: Neopets customization meep and meepits database
|
||||
search: Meep
|
||||
|
||||
|
||||
new:
|
||||
title: Meep broken image
|
||||
explanation_html:
|
||||
|
@ -52,36 +51,33 @@ en-MEEP:
|
|||
get things quite right, and sometimes that can be meeped by just
|
||||
meeping the conversion again. If reconversion doesn't seem to meep the
|
||||
meep, consider sending us a meep at %{contact_link}. Meep!
|
||||
call_to_action:
|
||||
Which of these meeps looked meeped? We'll put it in line for remeeping.
|
||||
call_to_action: Which of these meeps looked meeped? We'll put it in line for remeeping.
|
||||
submit: Meep as broken
|
||||
converted_at_html: Conveeped %{converted_at_ago} ago
|
||||
reported_at_html: Repeeped %{reported_at_ago} ago
|
||||
|
||||
|
||||
closet_hangers:
|
||||
closet_hanger:
|
||||
submit: Submeep
|
||||
delete: Deleep
|
||||
|
||||
|
||||
create:
|
||||
success:
|
||||
owned:
|
||||
in_list:
|
||||
Meep! You own %{count} of the %{item_name} in the %{list_name} list.
|
||||
in_list: Meep! You own %{count} of the %{item_name} in the %{list_name} list.
|
||||
unlisted: Meep! You own %{count} of the %{item_name}.
|
||||
wanted:
|
||||
in_list:
|
||||
Meep! You want %{count} of the %{item_name} in the %{list_name} list.
|
||||
in_list: Meep! You want %{count} of the %{item_name} in the %{list_name} list.
|
||||
unlisted: Meep! You want %{count} of the %{item_name}.
|
||||
invalid:
|
||||
owned: "We couldn't meep how many %{item_name} you own: %{errors}"
|
||||
wanted: "We couldn't meep how many %{item_name} you want: %{errors}"
|
||||
|
||||
|
||||
destroy:
|
||||
success:
|
||||
owned: Meep! You do not own the %{item_name}.
|
||||
wanted: Meep! You do not want the %{item_name}.
|
||||
|
||||
|
||||
index:
|
||||
title_for:
|
||||
you: Your Meeps
|
||||
|
@ -114,9 +110,8 @@ en-MEEP:
|
|||
add_item_html: Meep <strong>%{item_name}</strong>
|
||||
add_to_list_html: Meep to <strong>%{list_name}</strong>
|
||||
add_to_group_html: Meep to <strong>%{group_name}</strong>, no list
|
||||
already_in_collection_html:
|
||||
It's already meeped in <strong>%{collection_name}</strong>
|
||||
|
||||
already_in_collection_html: It's already meeped in <strong>%{collection_name}</strong>
|
||||
|
||||
petpage:
|
||||
title: Export to meeppage
|
||||
your_items_link: Back to Your Meeps
|
||||
|
@ -127,16 +122,15 @@ en-MEEP:
|
|||
have to meep. The HTML is flexible, so, if you're the artsy type, you're
|
||||
free to meep with the styles all you want!
|
||||
instructions:
|
||||
main_html:
|
||||
Meep the HTML from the box below, then paste it into
|
||||
main_html: Meep the HTML from the box below, then paste it into
|
||||
%{edit_petpage_link}. Then meep to the Neoboards to show off! Have
|
||||
fun!
|
||||
edit_petpage_link_content: your meepit's page
|
||||
|
||||
|
||||
petpage_content:
|
||||
unlisted_header: (Not in a meep)
|
||||
footer: I meeped this list on Dreep to Impreep. You can, too!
|
||||
|
||||
|
||||
visibility:
|
||||
private:
|
||||
name: Preevate
|
||||
|
@ -153,11 +147,11 @@ en-MEEP:
|
|||
description:
|
||||
items: These items will be publicly meeped for trades
|
||||
list: Items in this list will be publicly meeped for trades
|
||||
|
||||
|
||||
update_quantities:
|
||||
success: Successfully meeped how many of the %{item_name} you own and want.
|
||||
invalid: "We couldn't meep those quantities: %{errors}"
|
||||
|
||||
|
||||
closet_lists:
|
||||
closet_list:
|
||||
submit: Submeep
|
||||
|
@ -171,10 +165,10 @@ en-MEEP:
|
|||
Are you sure you want to deleep "%{list_name}"? Even if you do, we'll
|
||||
remember that you want these items.
|
||||
empty: This meep is empty.
|
||||
|
||||
|
||||
edit:
|
||||
title: Meepiting list "%{list_name}"
|
||||
|
||||
|
||||
form:
|
||||
your_items_link: Back to Your Meeps
|
||||
name:
|
||||
|
@ -184,26 +178,24 @@ en-MEEP:
|
|||
visibility:
|
||||
label: Who can meep this list?
|
||||
description:
|
||||
hint:
|
||||
Why are these meepits in the same meep? What are your terms for
|
||||
hint: Why are these meepits in the same meep? What are your terms for
|
||||
meeping? Or you can meep this blank.
|
||||
markup_hint_html:
|
||||
We _<em>support</em>_ **<strong>Meepdown</strong>** and some HTML.
|
||||
markup_hint_html: We _<em>support</em>_ **<strong>Meepdown</strong>** and some HTML.
|
||||
submit: Meep list
|
||||
|
||||
|
||||
groups:
|
||||
owned_by:
|
||||
you: Meeps you own
|
||||
you: Meeps you own
|
||||
another_user: Meeps %{user_name} owns
|
||||
wanted_by:
|
||||
you: Meeps you want
|
||||
another_user: Meeps %{user_name} wants
|
||||
|
||||
|
||||
new:
|
||||
title: Meep an items list
|
||||
|
||||
|
||||
unlisted_name: Not in a meep
|
||||
|
||||
|
||||
contributions:
|
||||
contributed_description:
|
||||
parents:
|
||||
|
@ -216,21 +208,20 @@ en-MEEP:
|
|||
swf_asset_html: "%{item_description} on a new body meep"
|
||||
pet_type_html: "%{pet_type_description} for the first meep"
|
||||
pet_state_html: "a new meep for %{pet_type_description}"
|
||||
|
||||
|
||||
contribution:
|
||||
description_html: "%{user_link} meeped us %{contributed_description}"
|
||||
created_at_html: "%{created_at_ago} ameep"
|
||||
|
||||
|
||||
index:
|
||||
title: Recent Contribeeptions
|
||||
user_summary: "%{user_name} currently has %{user_points} meeps"
|
||||
no_contributions: There are no contribeeptions here.
|
||||
|
||||
no_contributions: There are no contribeeptions here.
|
||||
|
||||
items:
|
||||
index:
|
||||
title_with_query: Searching Infinite Meepit for "%{query}"
|
||||
no_results_html:
|
||||
We couldn't meep any wearables that meeped %{query_html}.
|
||||
no_results_html: We couldn't meep any wearables that meeped %{query_html}.
|
||||
Meep!
|
||||
modeling_request:
|
||||
main_html:
|
||||
|
@ -252,7 +243,7 @@ en-MEEP:
|
|||
nc:
|
||||
query: blue is:nc
|
||||
description: returns any NC Meep item with the meep "blue" in it
|
||||
pb:
|
||||
pb:
|
||||
query: collar -is:pb
|
||||
description:
|
||||
returns any item with the meep "collar" in it that isn't from a
|
||||
|
@ -267,7 +258,7 @@ en-MEEP:
|
|||
header: New Meeps
|
||||
species_search:
|
||||
header: Can't decide? Meep by species
|
||||
|
||||
|
||||
item:
|
||||
nc:
|
||||
abbr: MC
|
||||
|
@ -278,7 +269,7 @@ en-MEEP:
|
|||
wanted:
|
||||
abbr: Weented
|
||||
description: You want this meepit
|
||||
|
||||
|
||||
show:
|
||||
rarity: Meepity
|
||||
resources:
|
||||
|
@ -310,18 +301,16 @@ en-MEEP:
|
|||
preview:
|
||||
header: Meepview
|
||||
customize_more: Customize meep
|
||||
requirements_not_met:
|
||||
Javascript and Flash are required to preview meepits. Meep!
|
||||
requirements_not_met: Javascript and Flash are required to preview meepits. Meep!
|
||||
not_found:
|
||||
main_html:
|
||||
We've never meeped the %{item_name} on the %{color_name}
|
||||
main_html: We've never meeped the %{item_name} on the %{color_name}
|
||||
%{species_name} before. Have you? If so, please %{modeling_link} and
|
||||
we'll meep our datameep instantly. Meep!
|
||||
modeling_link_content: meep it for us
|
||||
contributors:
|
||||
header: Meeped to you by
|
||||
footer: Meep!
|
||||
|
||||
|
||||
neopets_page_import_tasks:
|
||||
create:
|
||||
success: Page %{index} meeped!
|
||||
|
@ -339,31 +328,28 @@ en-MEEP:
|
|||
updated_hangers:
|
||||
one: We updated the quantity for 1 of your meepits.
|
||||
other: We updated the quantity for %{count} of your meepits.
|
||||
no_changes:
|
||||
We already had this data meeped to your account,
|
||||
no_changes: We already had this data meeped to your account,
|
||||
so we didn't meep any changes.
|
||||
no_data: We didn't meep any wearables, so we didn't meep any changes.
|
||||
unknown_items:
|
||||
one:
|
||||
"We also meeped an item we didn't recognize: %{item_names}. Please
|
||||
one: "We also meeped an item we didn't recognize: %{item_names}. Please
|
||||
meep it for us and we'll update our database instantly. Thanks!"
|
||||
other:
|
||||
"We also meeped %{count} items we didn't recognize: %{item_names}.
|
||||
Please meep them for us and we'll update our database instantly.
|
||||
Thanks!"
|
||||
next_page:
|
||||
Now the frame should contain page %{next_index}.
|
||||
next_page: Now the frame should contain page %{next_index}.
|
||||
Meep that source code over, too.
|
||||
done: That was the last meepit of your Neopets %{name}.
|
||||
parse_error:
|
||||
We had trouble meeping your source code. Is it a valid HTML document?
|
||||
Make sure you meeped the computery-looking result of clicking View
|
||||
Frame Source, and not the pretty-looking page itself.
|
||||
|
||||
|
||||
names:
|
||||
closet: meepit
|
||||
safety_deposit: safety demeepit
|
||||
|
||||
|
||||
new:
|
||||
title: Meeport from %{name}, Page %{index}
|
||||
your_items_link: Back to Your Meeps
|
||||
|
@ -372,14 +358,12 @@ en-MEEP:
|
|||
submit: Meep items
|
||||
help:
|
||||
welcome: Welcome to the bulk %{name} meeporter!
|
||||
intro:
|
||||
We're going to meep it as easy as possible to meeport your
|
||||
intro: We're going to meep it as easy as possible to meeport your
|
||||
Neopets.com %{name} data into your Dress to Impress meepit list.
|
||||
Here's how it meeps.
|
||||
check_frame:
|
||||
header:
|
||||
main_html:
|
||||
Check the framed Neopets.com meep on the left,
|
||||
main_html: Check the framed Neopets.com meep on the left,
|
||||
meeping to %{page_link}.
|
||||
page_link_content: meep %{index} of your %{name}
|
||||
check_login:
|
||||
|
@ -397,8 +381,7 @@ en-MEEP:
|
|||
It's never a good idea to meep in inside of a frame, unless
|
||||
you're a web programmer pro who can meep that the frame does,
|
||||
in fact, meep to Neopets.com. To be safe, %{login_link}.
|
||||
login_link_content:
|
||||
meep up another window, meep the URL, and meep in safely
|
||||
login_link_content: meep up another window, meep the URL, and meep in safely
|
||||
check_content:
|
||||
summary: Meep that the page is, in fact, your %{name}.
|
||||
details:
|
||||
|
@ -414,16 +397,14 @@ en-MEEP:
|
|||
<strong>In Firefox</strong>, right-meep the frame, choose
|
||||
<strong>This Frame</strong>, then <strong>View Frame
|
||||
Source</strong>.
|
||||
other_html:
|
||||
In other meepits, right-meep and look for something similar.
|
||||
other_html: In other meepits, right-meep and look for something similar.
|
||||
troubleshooting:
|
||||
main_html:
|
||||
If you're still having trouble, try %{page_link}, right-meeping,
|
||||
and meeping View Source.
|
||||
page_link_content: meeping the page in a new window
|
||||
copy_source:
|
||||
header:
|
||||
Meeplight the entire source code,
|
||||
header: Meeplight the entire source code,
|
||||
and meepy-paste it into the box on the right.
|
||||
shortcuts:
|
||||
"Some meepy shortcuts: Ctrl-A to select all the text, Ctrl-C to
|
||||
|
@ -435,19 +416,16 @@ en-MEEP:
|
|||
and quantity of meepits in your %{name}, and add that to your Dress
|
||||
to Impress meepit list. I meep that it's all safe, but, if you're
|
||||
concerned, find a meepit and meep out the source code to be sure.
|
||||
|
||||
|
||||
neopets_users:
|
||||
create:
|
||||
success:
|
||||
zero:
|
||||
Okay. We meeped %{user_name}'s pets, but already had these items
|
||||
zero: Okay. We meeped %{user_name}'s pets, but already had these items
|
||||
meeped to your account.
|
||||
one:
|
||||
Success! We meeped %{user_name}'s pets, and meeped 1 item.
|
||||
other:
|
||||
Success! We meeped %{user_name}'s pets, and meeped %{count} items.
|
||||
one: Success! We meeped %{user_name}'s pets, and meeped 1 item.
|
||||
other: Success! We meeped %{user_name}'s pets, and meeped %{count} items.
|
||||
not_found: Could not meep user %{user_name}. Is it meeped correctly?
|
||||
|
||||
|
||||
new:
|
||||
title: Meemport from pets
|
||||
your_items_link: Back to Your Meeps
|
||||
|
@ -456,11 +434,11 @@ en-MEEP:
|
|||
from all your pets. It's meepy!
|
||||
username_label: Meopets Username
|
||||
submit: Meemport all pets
|
||||
|
||||
|
||||
outfits:
|
||||
destroy:
|
||||
success: Outfit "%{outfit_name}" succeessfully demeeped.
|
||||
|
||||
|
||||
edit:
|
||||
item:
|
||||
controls:
|
||||
|
@ -471,8 +449,7 @@ en-MEEP:
|
|||
add: Closeet
|
||||
remove: Uncloseet
|
||||
pet_type:
|
||||
not_found:
|
||||
We haven't meeped that combination before. Have you?
|
||||
not_found: We haven't meeped that combination before. Have you?
|
||||
Meep the pet's name if you have!
|
||||
form:
|
||||
submit: Meep
|
||||
|
@ -493,8 +470,7 @@ en-MEEP:
|
|||
submit: Meep
|
||||
cancel: Unmeep
|
||||
preview:
|
||||
requirements:
|
||||
Flash and Javascript (but not Java!) are required to meep outfeets.
|
||||
requirements: Flash and Javascript (but not Java!) are required to meep outfeets.
|
||||
big_picture: Big Meepit
|
||||
download: Downmeep
|
||||
mode:
|
||||
|
@ -527,11 +503,11 @@ en-MEEP:
|
|||
We know how hard it can be to meep track of your ideas,
|
||||
especially if you end up having a lot of them.
|
||||
**But Dress to Impress makes it meepy.**
|
||||
|
||||
|
||||
Once you have an idea for an outfit, you can **meep it, meep it,
|
||||
and meep it again later**, either to update your design or
|
||||
finally make your dream a reality.
|
||||
|
||||
|
||||
**Thousands of users have already meeped tens of thousands of
|
||||
outfits. Will you be next?**
|
||||
sign_in: Log in to meep this outfit
|
||||
|
@ -589,23 +565,19 @@ en-MEEP:
|
|||
login: Meep in to use these filters.
|
||||
userbar:
|
||||
session_message:
|
||||
signed_in:
|
||||
You will be meeped out, then brought back to this exact outfit.
|
||||
not_signed_in:
|
||||
You will be meeped in, then brought back to this exact outfit.
|
||||
|
||||
signed_in: You will be meeped out, then brought back to this exact outfit.
|
||||
not_signed_in: You will be meeped in, then brought back to this exact outfit.
|
||||
|
||||
new:
|
||||
tagline: Meeps made meepy!
|
||||
preview:
|
||||
pet_type_not_found:
|
||||
We haven't meeped a %{color_name} %{species_name}. Meep?
|
||||
pet_type_not_found: We haven't meeped a %{color_name} %{species_name}. Meep?
|
||||
pet_not_found: Pet not meeped.
|
||||
submit:
|
||||
primary: Meep my outfit!
|
||||
secondary: Meep
|
||||
neopia_online:
|
||||
load_pet: Enter your pet's meep
|
||||
start_from_scratch: Or meep from scratch
|
||||
load_pet: Enter your pet's meep
|
||||
start_from_scratch: Or meep from scratch
|
||||
your_items:
|
||||
tagline: Meep and meep!
|
||||
description:
|
||||
|
@ -630,8 +602,7 @@ en-MEEP:
|
|||
submit: meep
|
||||
latest_contribution:
|
||||
header: Contribumeeps
|
||||
description_html:
|
||||
"%{user_link} meeped us %{contributed_description}.
|
||||
description_html: "%{user_link} meeped us %{contributed_description}.
|
||||
Meep, %{user_link}!"
|
||||
blog:
|
||||
link: OpenNeo Meep
|
||||
|
@ -644,9 +615,9 @@ en-MEEP:
|
|||
other: Or meepy the %{color} %{species_list}?
|
||||
call_to_action: If so, please meep it above! Meep!
|
||||
species_list:
|
||||
words_connector: '! '
|
||||
two_words_connector: ' meep '
|
||||
last_word_connector: '! meep '
|
||||
words_connector: "! "
|
||||
two_words_connector: " meep "
|
||||
last_word_connector: "! meep "
|
||||
modeled:
|
||||
header: These items have already been meeped—meep for your help!
|
||||
body_title: You just finished meeping this—meep so much!
|
||||
|
@ -660,22 +631,20 @@ en-MEEP:
|
|||
error: Couldn't load. Meep again?
|
||||
title: Meep %{pet} as a model, especially if they're meeping the %{item}!
|
||||
pet_query:
|
||||
notice_html:
|
||||
Thanks for meeping us <strong>%{pet_name}</strong>.
|
||||
notice_html: Thanks for meeping us <strong>%{pet_name}</strong>.
|
||||
Meep up the good work!
|
||||
|
||||
|
||||
outfit:
|
||||
edit: eedit
|
||||
delete: demeep
|
||||
delete_confirmation:
|
||||
Are you sure you want to demeep the outfit %{outfit_name}?
|
||||
|
||||
delete_confirmation: Are you sure you want to demeep the outfit %{outfit_name}?
|
||||
|
||||
show:
|
||||
default_outfit_name: Meeped outfit
|
||||
edit: Meep
|
||||
clone: Meep a copy
|
||||
creation_summary_html: Meeped by %{user_link}, %{created_at_ago} ago
|
||||
|
||||
|
||||
pet_states:
|
||||
description:
|
||||
main: "%{gender} %{mood}"
|
||||
|
@ -689,7 +658,7 @@ en-MEEP:
|
|||
glitched: "#!@?!?"
|
||||
unconverted: Unconveeped
|
||||
unlabeled: Unleeped
|
||||
|
||||
|
||||
pets:
|
||||
bulk:
|
||||
needed_items:
|
||||
|
@ -713,7 +682,7 @@ en-MEEP:
|
|||
waiting: Weeting…
|
||||
loading: Leeding…
|
||||
submission_success: "%{points} peeps"
|
||||
|
||||
|
||||
load:
|
||||
not_found: We couldn't meep a pet by that name. Is it meeped correctly?
|
||||
asset_download_error:
|
||||
|
@ -722,17 +691,17 @@ en-MEEP:
|
|||
pet_download_error:
|
||||
We couldn't meep to Neopets to meep up the pet. Maybe they're down.
|
||||
Please try meep later!
|
||||
|
||||
|
||||
users:
|
||||
index:
|
||||
not_found: We don't have a meepit named %{name}. Is it meeped correctly?
|
||||
|
||||
|
||||
top_contributors:
|
||||
title: Top Conmeeputors
|
||||
rank: Reep
|
||||
user: Meepit
|
||||
points: Peeps
|
||||
|
||||
|
||||
update:
|
||||
success: Settings successfully meeped.
|
||||
invalid: "Could not meep settings: %{errors}"
|
||||
|
|
|
@ -663,20 +663,8 @@ en:
|
|||
submit:
|
||||
primary: Plan my outfit!
|
||||
secondary: Go
|
||||
neopia_online:
|
||||
load_pet: Enter your pet's name
|
||||
start_from_scratch: Or start from scratch
|
||||
neopia_offline:
|
||||
start_from_scratch: Choose a pet to get started
|
||||
load_pet:
|
||||
main_html: Or try your pet's name %{link}
|
||||
link_content: (but it looks like Neopets.com is ignoring us)
|
||||
load_pet:
|
||||
legend: Enter your pet's name
|
||||
submit: Plan my outfit!
|
||||
start_from_scratch:
|
||||
legend: Or start from scratch
|
||||
submit: Go
|
||||
load_pet: Enter your pet's name
|
||||
start_from_scratch: Or start from scratch
|
||||
your_items:
|
||||
tagline: Track and trade!
|
||||
description: Make lists of the items you own and want,
|
||||
|
@ -718,16 +706,6 @@ en:
|
|||
last_word_connector: ", or "
|
||||
modeled:
|
||||
header: These items have already been modeled—thanks for your help!
|
||||
body_title: You just finished modeling this—thanks so much!
|
||||
neopets_usernames_form:
|
||||
label: neopets username
|
||||
submit: add
|
||||
pet:
|
||||
status:
|
||||
success: Thanks! <3
|
||||
unworn: Not wearing this item.
|
||||
error: Couldn't load. Try again?
|
||||
title: Submit %{pet} as a model, especially if they're wearing the %{item}!
|
||||
pet_query:
|
||||
notice_html: Thanks for showing us <strong>%{pet_name}</strong>.
|
||||
Keep up the good work!
|
||||
|
@ -797,7 +775,6 @@ en:
|
|||
pet_download_error:
|
||||
We couldn't connect to Neopets to look up the pet. Maybe they're down.
|
||||
Please try again later!
|
||||
neopia_error: 'We couldn''t load that pet: "%{message}". Try again later?'
|
||||
|
||||
swf_assets:
|
||||
links:
|
||||
|
|
|
@ -468,9 +468,8 @@ es:
|
|||
submit:
|
||||
primary: ¡Diseñar mi atuendo!
|
||||
secondary: Ir
|
||||
neopia_online:
|
||||
load_pet: Escribe el nombre de tu pet
|
||||
start_from_scratch: O empieza a partir de una plantilla
|
||||
load_pet: Escribe el nombre de tu pet
|
||||
start_from_scratch: O empieza a partir de una plantilla
|
||||
your_items:
|
||||
tagline: ¡Añade e intercambia!
|
||||
description: Crea listas de los objetos que tú tienes y quieres. ¡Compártelas con el mundo!
|
||||
|
|
|
@ -466,9 +466,8 @@ pt:
|
|||
submit:
|
||||
primary: Planeje minha roupa!
|
||||
secondary: Vai
|
||||
neopia_online:
|
||||
load_pet: Digite o nome do seu pet
|
||||
start_from_scratch: Ou comece do zero
|
||||
load_pet: Digite o nome do seu pet
|
||||
start_from_scratch: Ou comece do zero
|
||||
your_items:
|
||||
tagline: Acompanhe e troque!
|
||||
description: Faça listas de itens que você tem e que procura, e compartilhe com o mundo.
|
||||
|
|
Loading…
Reference in a new issue