diff --git a/app/controllers/outfits_controller.rb b/app/controllers/outfits_controller.rb
index bc7a5e69..16ab7575 100644
--- a/app/controllers/outfits_controller.rb
+++ b/app/controllers/outfits_controller.rb
@@ -50,9 +50,14 @@ class OutfitsController < ApplicationController
@colors = Color.all_ordered_by_name
@species = Species.all_ordered_by_name
end
+
unless fragment_exist?(:action_suffix => 'top_contributors')
@top_contributors = User.top_contributors.limit(User::PreviewTopContributorsCount)
end
+
+ @newest_items = Item.newest.select([:id, :name, :thumbnail_url]).limit(9)
+ @latest_contribution = Contribution.recent.first
+ Contribution.preload_contributeds_and_parents([@latest_contribution])
end
def show
diff --git a/app/helpers/contribution_helper.rb b/app/helpers/contribution_helper.rb
index 8720d52b..68e4e158 100644
--- a/app/helpers/contribution_helper.rb
+++ b/app/helpers/contribution_helper.rb
@@ -1,24 +1,24 @@
module ContributionHelper
- def contributed_description(contributed)
+ def contributed_description(contributed, image = true)
case contributed
when Item
- contributed_item(contributed, 'for the first time')
+ contributed_item(contributed, image, 'for the first time')
when SwfAsset
- contributed_item(contributed.item, 'on a new body type')
+ contributed_item(contributed.item, image, 'on a new body type')
when PetType
- contributed_pet_type(contributed, :after => 'for the first time')
+ contributed_pet_type(contributed, image, :after => 'for the first time')
when PetState
- contributed_pet_type(contributed.pet_type, :before => 'a new pose for')
+ contributed_pet_type(contributed.pet_type, image, :before => 'a new pose for')
end
end
- def contributed_item(item, adverbial)
+ def contributed_item(item, image = true, adverbial)
if item
output do |html|
html << 'the'
html << link_to(item.name, item, :class => 'contributed-name')
html << adverbial
- html << image_tag(item.thumbnail_url)
+ html << image_tag(item.thumbnail_url) if image
end
else
"data for an item that has since been updated"
@@ -26,13 +26,13 @@ module ContributionHelper
end
PET_TYPE_IMAGE_FORMAT = 'http://pets.neopets.com/cp/%s/1/3.png'
- def contributed_pet_type(pet_type, options)
+ def contributed_pet_type(pet_type, image = true, options)
options[:before] ||= 'the'
output do |html|
html << options[:before]
html << content_tag(:span, pet_type.human_name, :class => 'contributed-name')
html << options[:after] if options[:after]
- html << image_tag(sprintf(PET_TYPE_IMAGE_FORMAT, pet_type.image_hash))
+ html << image_tag(sprintf(PET_TYPE_IMAGE_FORMAT, pet_type.image_hash)) if image
end
end
diff --git a/app/stylesheets/outfits/_new.sass b/app/stylesheets/outfits/_new.sass
index 7a315c40..66aa6f1e 100644
--- a/app/stylesheets/outfits/_new.sass
+++ b/app/stylesheets/outfits/_new.sass
@@ -1,3 +1,4 @@
+@import "compass/css3/gradient"
@import "partials/campaign-progress"
body.outfits-new
@@ -6,7 +7,6 @@ body.outfits-new
#outfit-forms
+clearfix
+module
- margin-bottom: 3em
position: relative
h1
margin-bottom: 0
@@ -103,7 +103,7 @@ body.outfits-new
+clearfix
display: table
list-style: none
- margin-bottom: 1em
+ margin-top: 1em
h3
margin-bottom: .25em
li
@@ -136,8 +136,6 @@ body.outfits-new
+opacity(1)
p
min-height: 4.5em
- #read-more
- float: right
#your-items-module
h3
@@ -148,3 +146,81 @@ body.outfits-new
font-weight: bold
margin-left: .5em
+ $container-width: 800px
+ $blog-preview-outer-width: $container-width * (2 / 3)
+ $newest-items-outer-width: $container-width * (1 / 3)
+ $whats-new-height: 300px
+ $whats-new-gutter: 12px
+ #whats-new
+ +clearfix
+ height: 300px
+ margin-bottom: 1em
+
+ $blog-preview-border-width: 1px
+ $blog-preview-padding: 12px
+ $blog-preview-inner-width: $blog-preview-outer-width - (2 * $blog-preview-border-width) - (2 * $blog-preview-padding) - $whats-new-gutter
+ $blog-preview-inner-height: $whats-new-height - (2 * $blog-preview-border-width) - (2 * $blog-preview-padding)
+ #blog-preview
+ background: $module-bg-color
+ border: $blog-preview-border-width solid $module-border-color
+ display: none
+ float: left
+ height: $blog-preview-inner-height
+ margin-right: $whats-new-gutter
+ padding: $blog-preview-padding
+ width: $blog-preview-inner-width
+
+ > h2
+ font-size: 150%
+
+ > div, > a
+ font-size: 85%
+
+ > div
+ height: 200px
+ margin-bottom: .75em
+ overflow: auto
+ position: relative
+
+ ul, ol
+ margin-bottom: 1em
+ padding: 0 1.5em
+
+ #blog-preview-linkback
+ float: left
+
+ #blog-preview-comments
+ float: right
+ font-size: 85%
+ margin-left: 1em
+
+ #newest-items
+ float: right
+ text-align: center
+ width: $newest-items-outer-width
+
+ h2
+ font-size: 150%
+
+ img
+ height: 80px
+ width: 80px
+
+ #latest-contribution
+ border:
+ color: $soft-border-color
+ style: solid
+ width: 1px 0
+ font-size: 85%
+ margin: 1em 0
+ padding: .5em 0
+ text-align: center
+
+ #recent-contributions-link
+ font-weight: bold
+ margin-right: .5em
+
+ #latest-contribution-created-at
+ color: $soft-text-color
+ margin-left: .5em
+
diff --git a/app/views/outfits/new.html.haml b/app/views/outfits/new.html.haml
index 3b949f3a..6df0a92e 100644
--- a/app/views/outfits/new.html.haml
+++ b/app/views/outfits/new.html.haml
@@ -54,65 +54,42 @@
= form_tag items_path, :method => 'get' do
= text_field_tag 'q', '', :placeholder => raw('find an item…'), :type => 'search'
= submit_tag 'search'
- %li#blog-preview
- %a{:href => "http://blog.openneo.net"}
- = image_tag 'blog.png'
+ %li
+ %a{:href => bulk_pets_path}
+ = image_tag 'http://images.neopets.com/items/mall_ac_garland_spotlight.gif'
%h3
- %a{:href => "http://blog.openneo.net/"} OpenNeo Blog
+ %a{:href => bulk_pets_path}
+ Modeling
%div
- %h4 We'll keep you posted!
+ %h4 Found something?
%p
- Dress to Impress is always improving, and you can always stay in
- the loop through our blog.
- #description
- %h2 Built by you, just for you!
- %p
- Dress to Impress lets you plan how you want to dress up your Neopets,
- before you even go shopping! Whenever you give us a Neopet's name, we
- automatically look up what it's wearing and organize the data into
- our own wearables database — a community closet, if you will.
- Then you can plan your outfit, mixing and matching various items, so
- you can have the best-dressed Neopet in all of Neopia!
- %p
- To make all this possible, though, we need your help — and if
- you log in at the top, we'll keep track of your
- = link_to 'contributions', contributions_path
- and award
- = link_to 'points', top_contributors_path
- so you can show off just how dedicated you really are!
-- cache :action_suffix => 'top_contributors' do
- #top-contributors
- %h3 Top Contributors
- %ol
- - @top_contributors.each do |user|
- %li
- = link_to user.name, user_contributions_path(user)
- —
- = user.points
- %a{:href => top_contributors_path} see more
-= form_tag load_pet_path, :id => 'how-can-i-help' do
- - cache :action_suffix => 'how_can_i_help_form_content' do
- = destination_tag 'needed_items'
- = origin_tag root_path
- %h2 How can I help?
- %p
- Enter your pet's name, and we'll tell you what items you can help us
- model. Thanks so much!
- = pet_name_tag
- %button{:type => "submit"}
- Let's model!
-= form_tag load_pet_path, :id => 'i-found-something' do
- - cache :action_suffix => 'i_found_something_form_content' do
- = origin_tag root_path
- %a{:href => bulk_pets_path}
- add many pets
- %h2 I found something!
- %p
- Enter the name of the pet you found, and we'll keep a copy of what
- it's wearing. Thanks so much!
- = pet_name_tag
- %button{:type => "submit"}
- I pwn!
+ Enter a pet's name here and we'll keep a copy of what it's wearing.
+ Thanks so much!
+ = form_tag load_pet_path do
+ = origin_tag root_path
+ = pet_name_tag :placeholder => raw('model a pet…')
+ = submit_tag 'submit'
+ #latest-contribution
+ = link_to 'Contributions:', contributions_path, :id => 'recent-contributions-link'
+ = link_to @latest_contribution.user.name, user_contributions_path(@latest_contribution.user)
+ showed us
+ = succeed '.' do
+ = contributed_description @latest_contribution.contributed, false
+ Thanks,
+ = succeed '!' do
+ = link_to @latest_contribution.user.name, user_contributions_path(@latest_contribution.user)
+ %span#latest-contribution-created-at{:title => @latest_contribution.created_at.to_s}
+ #{time_ago_in_words @latest_contribution.created_at} ago
+ #whats-new
+ #blog-preview
+ %h2
+ %div
+ %a#blog-preview-linkback{:href => 'http://blog.openneo.net/'} OpenNeo Blog
+ #newest-items
+ %h2 New Items
+ %ul
+ - @newest_items.each do |item|
+ = link_to image_tag(item.thumbnail_url), item
- content_for :javascripts do
= include_javascript_libraries :jquery
= include_javascripts :new_outfit_package
diff --git a/public/javascripts/outfits/new.js b/public/javascripts/outfits/new.js
index f06b1321..24b97c83 100644
--- a/public/javascripts/outfits/new.js
+++ b/public/javascripts/outfits/new.js
@@ -1,3 +1,5 @@
+var disqus_shortname = 'dresstoimpress';
+
(function () { // don't need to export anything in here
var preview_el = $('#pet-preview'),
@@ -144,7 +146,7 @@ $(function () {
$.getJSON('http://blog.openneo.net/api/read/json?callback=?', function (data) {
var post = data.posts[0], el = $('#blog-preview'),
url = post['url-with-slug'], header = "Here's the latest!", body = '',
- truncate_body_at = 100, image;
+ truncate_body_at = 500, image;
if(post.type == 'regular') {
header = post['regular-title'];
body = post['regular-body'];
@@ -155,20 +157,28 @@ $(function () {
body = post['photo-caption'];
image = post['photo-url-75'];
}
- body = body.replace(/(<\/?[\S][^>]*>)/gi, '');
+ // No truncation on this new layout
+ /*body = body.replace(/(<\/?[\S][^>]*>)/gi, '');
if(body.length > truncate_body_at) {
body = body.substring(0, truncate_body_at);
body = body.replace(/\s+\w+$/, '');
body += '…';
- }
- el.find('h4').text(header).wrapInner($('', {href: url}));
- el.find('p').html(body);
- $('', {'id': 'read-more', href: url, text: 'read more'}).appendTo(el.find('div'));
+ }*/
+ el.find('h2').text(header).wrapInner($('', {href: url}));
+ el.find('div').html(body);
+ $('', {'id': 'blog-preview-comments', href: url + '#disqus_thread'}).appendTo(el);
if(image) {
el.find('img').attr('src', image).parent().attr('href', url);
}
- el.children('div').hide().fadeIn('slow');
+ el.fadeIn('medium');
+ addDisqusCount();
});
});
+function addDisqusCount() {
+ var s = document.createElement('script'); s.async = true;
+ s.type = 'text/javascript';
+ s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);}
})();
+
diff --git a/public/stylesheets/compiled/screen.css b/public/stylesheets/compiled/screen.css
index 3de6f307..b65c4117 100644
--- a/public/stylesheets/compiled/screen.css
+++ b/public/stylesheets/compiled/screen.css
@@ -3644,14 +3644,13 @@ body.outfits-new .campaign-progress-label, body.outfits-new .campaign-progress-l
body.outfits-new.campaign-loaded .campaign-progress-wrapper {
visibility: visible;
}
-/* line 6, ../../../app/stylesheets/outfits/_new.sass */
+/* line 7, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #outfit-forms {
overflow: hidden;
display: inline-block;
background: #eeffee;
border: 1px solid #006600;
padding: 1em;
- margin-bottom: 3em;
position: relative;
}
/* line 8, ../../../app/stylesheets/partials/clean/_mixins.sass */
@@ -3811,7 +3810,7 @@ body.outfits-new #sections {
display: inline-block;
display: table;
list-style: none;
- margin-bottom: 1em;
+ margin-top: 1em;
}
/* line 8, ../../../app/stylesheets/partials/clean/_mixins.sass */
body.outfits-new #sections {
@@ -3874,11 +3873,7 @@ body.outfits-new #sections img:hover {
body.outfits-new #sections p {
min-height: 4.5em;
}
-/* line 139, ../../../app/stylesheets/outfits/_new.sass */
-body.outfits-new #read-more {
- float: right;
-}
-/* line 144, ../../../app/stylesheets/outfits/_new.sass */
+/* line 142, ../../../app/stylesheets/outfits/_new.sass */
body.outfits-new #your-items-module h3:after {
color: red;
content: "new!";
@@ -3886,6 +3881,93 @@ body.outfits-new #your-items-module h3:after {
font-weight: bold;
margin-left: 0.5em;
}
+/* line 154, ../../../app/stylesheets/outfits/_new.sass */
+body.outfits-new #whats-new {
+ overflow: hidden;
+ display: inline-block;
+ height: 300px;
+ margin-bottom: 1em;
+}
+/* line 8, ../../../app/stylesheets/partials/clean/_mixins.sass */
+body.outfits-new #whats-new {
+ display: block;
+}
+/* line 163, ../../../app/stylesheets/outfits/_new.sass */
+body.outfits-new #whats-new #blog-preview {
+ background: #eeffee;
+ border: 1px solid #006600;
+ display: none;
+ float: left;
+ height: 274px;
+ margin-right: 12px;
+ padding: 12px;
+ width: 495.333px;
+}
+/* line 173, ../../../app/stylesheets/outfits/_new.sass */
+body.outfits-new #whats-new #blog-preview > h2 {
+ font-size: 150%;
+}
+/* line 176, ../../../app/stylesheets/outfits/_new.sass */
+body.outfits-new #whats-new #blog-preview > div, body.outfits-new #whats-new #blog-preview > a {
+ font-size: 85%;
+}
+/* line 179, ../../../app/stylesheets/outfits/_new.sass */
+body.outfits-new #whats-new #blog-preview > div {
+ height: 200px;
+ margin-bottom: 0.75em;
+ overflow: auto;
+ position: relative;
+}
+/* line 185, ../../../app/stylesheets/outfits/_new.sass */
+body.outfits-new #whats-new #blog-preview > div ul, body.outfits-new #whats-new #blog-preview > div ol {
+ margin-bottom: 1em;
+ padding: 0 1.5em;
+}
+/* line 189, ../../../app/stylesheets/outfits/_new.sass */
+body.outfits-new #whats-new #blog-preview #blog-preview-linkback {
+ float: left;
+}
+/* line 192, ../../../app/stylesheets/outfits/_new.sass */
+body.outfits-new #whats-new #blog-preview #blog-preview-comments {
+ float: right;
+ font-size: 85%;
+ margin-left: 1em;
+}
+/* line 197, ../../../app/stylesheets/outfits/_new.sass */
+body.outfits-new #whats-new #newest-items {
+ float: right;
+ text-align: center;
+ width: 266.667px;
+}
+/* line 202, ../../../app/stylesheets/outfits/_new.sass */
+body.outfits-new #whats-new #newest-items h2 {
+ font-size: 150%;
+}
+/* line 205, ../../../app/stylesheets/outfits/_new.sass */
+body.outfits-new #whats-new #newest-items img {
+ height: 80px;
+ width: 80px;
+}
+/* line 209, ../../../app/stylesheets/outfits/_new.sass */
+body.outfits-new #latest-contribution {
+ border-color: #aaddaa;
+ border-style: solid;
+ border-width: 1px 0;
+ font-size: 85%;
+ margin: 1em 0;
+ padding: 0.5em 0;
+ text-align: center;
+}
+/* line 219, ../../../app/stylesheets/outfits/_new.sass */
+body.outfits-new #latest-contribution #recent-contributions-link {
+ font-weight: bold;
+ margin-right: 0.5em;
+}
+/* line 223, ../../../app/stylesheets/outfits/_new.sass */
+body.outfits-new #latest-contribution #latest-contribution-created-at {
+ color: #448844;
+ margin-left: 0.5em;
+}
/* line 2, ../../../app/stylesheets/partials/_campaign-progress.sass */
body.outfits-show .campaign-progress-wrapper {