From 55477baa157039e9626de9be807b5d4403327ede Mon Sep 17 00:00:00 2001 From: Matt Dunn-Rankin Date: Thu, 18 Jan 2018 17:14:02 -0800 Subject: [PATCH] new donate layout for post-2017 campaign --- app/assets/images/campaigns/purple.png | Bin 0 -> 13514 bytes app/assets/stylesheets/campaigns/_show.sass | 6 +- .../partials/_campaign-progress.sass | 12 +- app/controllers/campaigns_controller.rb | 2 + app/views/campaigns/show.html.haml | 109 +++++++----------- 5 files changed, 50 insertions(+), 79 deletions(-) create mode 100644 app/assets/images/campaigns/purple.png diff --git a/app/assets/images/campaigns/purple.png b/app/assets/images/campaigns/purple.png new file mode 100644 index 0000000000000000000000000000000000000000..ad7976efe88e2b208b0c98e43da58a75c7819d06 GIT binary patch literal 13514 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 IlrRbUKPqt(-T(jq literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/campaigns/_show.sass b/app/assets/stylesheets/campaigns/_show.sass index daa0875b..76018ed1 100644 --- a/app/assets/stylesheets/campaigns/_show.sass +++ b/app/assets/stylesheets/campaigns/_show.sass @@ -45,10 +45,10 @@ body.campaigns-show, body.campaigns-current padding-top: 32px position: relative - // We only use bird theme now. Whatever. + // We ignore the theme attribute on campaigns now, and just do purple. &::after background: - image: url(image_path("campaigns/bird.gif")) + image: url(image_path("campaigns/purple.png")) repeat: no-repeat bottom: 0 content: " " @@ -117,7 +117,7 @@ body.campaigns-show, body.campaigns-current width: 100% input[type=radio]:checked ~ label - background: $amount-choices-border-color + background: lighten($amount-choices-border-color, 15%) font-weight: bold input[type=radio]:focus ~ label diff --git a/app/assets/stylesheets/partials/_campaign-progress.sass b/app/assets/stylesheets/partials/_campaign-progress.sass index 24a06de3..87b24932 100644 --- a/app/assets/stylesheets/partials/_campaign-progress.sass +++ b/app/assets/stylesheets/partials/_campaign-progress.sass @@ -4,16 +4,16 @@ // $campaign-text-color: #004 // $campaign-link-color: $campaign-text-color + #222 -$campaign-border-color: hsl(33, 100%, 40%) -$campaign-background-color: hsl(33, 100%, 97%) -$campaign-text-color: hsl(33, 100%, 20%) +$campaign-border-color: hsl(310, 60%, 40%) +$campaign-background-color: hsl(310, 60%, 97%) +$campaign-text-color: hsl(310, 60%, 20%) $campaign-link-color: $campaign-text-color + #222 =campaign-progress .campaign-progress-wrapper +border-radius(8px) - background: desaturate(lighten($campaign-border-color, 30%), 85%) - background-image: linear-gradient(color-stops(desaturate(lighten($campaign-border-color, 50%), 85%), desaturate(lighten($campaign-border-color, 30%), 85%))) + background: desaturate(lighten($campaign-border-color, 30%), 30%) + background-image: linear-gradient(color-stops(desaturate(lighten($campaign-border-color, 50%), 30%), desaturate(lighten($campaign-border-color, 30%), 30%))) border: 4px solid $campaign-border-color clear: both @@ -37,7 +37,7 @@ $campaign-link-color: $campaign-text-color + #222 height: 2.5em .campaign-progress-label - text-shadow: 1px 1px 0 #888 + text-shadow: 1px 1px 0 $campaign-border-color color: white font-size: 150% left: 0 diff --git a/app/controllers/campaigns_controller.rb b/app/controllers/campaigns_controller.rb index 42eeb03a..384094f6 100644 --- a/app/controllers/campaigns_controller.rb +++ b/app/controllers/campaigns_controller.rb @@ -2,12 +2,14 @@ class CampaignsController < ApplicationController def show @campaign = Campaign.find(params[:id]) redirect_to(action: :current) if @campaign.active? + @current_campaign = Campaign.current @donations = find_donations @all_campaigns = find_all_campaigns end def current @campaign = Campaign.current + @current_campaign = @campaign @donations = find_donations @all_campaigns = find_all_campaigns render action: :show diff --git a/app/views/campaigns/show.html.haml b/app/views/campaigns/show.html.haml index 87b25c28..e09ae7d0 100644 --- a/app/views/campaigns/show.html.haml +++ b/app/views/campaigns/show.html.haml @@ -1,31 +1,30 @@ - title "Support Dress to Impress" -- if @campaign.progress > 0 - = campaign_progress(@campaign) do - We've received #{cents_to_currency(@campaign.progress)} - toward #{@campaign.purpose}. +- if @current_campaign.progress > 0 + = campaign_progress(@current_campaign) do + We've received #{cents_to_currency(@current_campaign.progress)} + toward #{@current_campaign.purpose}. Thanks so much! = form_tag donations_path, method: 'POST', id: 'donation-form', 'data-checkout-image' => image_path('default_preview.png'), 'data-checkout-publishable-key' => Rails.configuration.stripe[:publishable_key], - 'data-campaign-theme' => @campaign.theme_id do + 'data-campaign-theme' => @current_campaign.theme_id do = hidden_field_tag 'donation[stripe_token]' = hidden_field_tag 'donation[stripe_token_type]' = hidden_field_tag 'donation[donor_email]' = hidden_field_tag 'donation[amount]' %header - -# I'm hardcoding the messaging this year, because I'm abandoning the UI - -# of giant paragraphs, and I don't feel like figuring out how this new - -# design generalizes just yet :P Whatever. %p#donation-form-title Thanks for supporting Dress to Impress! %p From modeling to servers, Dress to Impress is a community effort. - This year, we need to raise $840 to cover our 2016 hosting costs. + This year, we need to raise + #{cents_to_currency(@current_campaign.goal, precision: 0)} + to cover our #{@current_campaign.name} hosting costs. %p As a thank-you gift, for every $5 you give, we'll feature one of your - outfits here and on the homepage. Last year's outfits were pretty great—will this year's be even better? :o + outfits here and on the homepage. Show off your latest designs! %p All donations are securely powered by #{link_to 'Stripe', 'https://stripe.com/'}, and go directly toward our @@ -53,13 +52,6 @@ #donation-controls %button{type: 'submit'} Donate now! -#campaign-text{'data-campaign-complete' => @campaign.complete?} - - if @campaign.complete? && @campaign.thanks? - #success-thanks - #success-thanks-main= emote_md @campaign.thanks - %a#success-thanks-toggle-description{href: '#'} How are donations used? - #description= emote_md @campaign.description - - if @donations.present? #outfits-header %h2 Thanks to our lovely donors! @@ -94,64 +86,41 @@ %p#last-years-donors= link_to "Don't forget to check out last year's donors, too!", prev_campaign #fine-print - %h2 Other ways to donate - :markdown - We were considering PayPal for accepting donations, but ended up choosing - Stripe as our primary donation method because it's easy to integrate and - because it's well-trusted in the developer community—and because we've - heard too many horror stories of small organizations having their PayPal - accounts locked down when they suddenly start receiving a bunch of - transactions. Scary stuff. - - But, even though PayPal isn't integrated into the site, we'll still gladly - accept individual donations through PayPal if you'd prefer. - #{mail_to 'webmaster@openneo.net', "Drop us an email and we'll talk - details."} Thanks! - %h2 Some notes on featured outfits :markdown - When you make a donation, we'll divide the amount by $5 USD, and, rounding - down, that's how many of your outifts we'll feature. Cool, eh? - - This is our way of publicly thanking our donors. - (Thanks again, by the way!) - We love them very much and want to bring attention to their awesomeness. - However, there are a few important bits of legal whatnot to keep in mind. - (Mostly, it's the list of things that we expect to do but in no legally - binding way promise to do. Just in case #{image_tag 'emoticons/tongue.gif'}) - - Featuring your outfit is a thank-you gift that we like to give our donors; - it is *not* a purchased service. We make no guarantee that we'll post your - outfit on any page for any particular amount of time, or even at all. - (That said, we expect to publicly list our donors' outfits somewhere on the - site for as long as the site lives, and in rotation on the homepage until - some other site event or feature needs the space.) - - We reserve the right to refuse to post any content for any reason, and we - reserve the right to remove any previously posted content at any time for - any reason. If we don't like the outfit's name, the outfit's appearance, - or the name on your donation, or anything else, then we don't have to - publish it, and we won't necessarily refund you—especially if the content - seems malicious. - (That said, we intend to allow most any name and outfit that are - appropriate for Neopians of all ages.) - - If you change your mind about donating, no worries: you can request a - refund within 60 days of donating, and, so long as you're acting in good - faith, we'll refund the entire donation. - (For example, if you realize you can't afford to donate, or legit just - change your mind, then we'd love to help you out - #{image_tag 'emoticons/smiley.gif'} - But we don't want people posting obscene content and expecting refunds - once we take it down, so we need a refund policy that lets us reject - those requests #{image_tag 'emoticons/tongue.gif'} - So, we determine "good faith" at our sole discretion—not limited to those - examples—but we're generally pretty understanding.) - **TL;DR: We love to help and acknowledge our good-faith donors, but reserve the right not to do those things, in order to better handle bad-faith donors and unexpected circumstances.** - That's the whole deal #{image_tag 'emoticons/smiley.gif'} + #{image_tag 'emoticons/smiley.gif'} + + When you make a donation, we'll divide the amount by $5 USD, and, rounding + down, that's how many of your outifts we'll feature. This is our way of + publicly thanking our donors, and we love doing it! However, it is not a + purchased service. Your outfit is not guaranteed to appear anywhere on the + site, for any amount of time. (That said, our donors' outfits generally + appear on the site very quickly, and we plan to continue to showcase them + for as long as the site stays up!) + + We reserve the right to refuse to post any content for any reason, and we + reserve the right to remove any previously posted content at any time for + any reason. If we we're not comfortable with the outfit's name, the + outfit's appearance, or the name on your donation, or anything else, then + we might choose not to publish it. + (That said, we plan to allow any name and outfit that are appropriate for + Neopians of all ages.) + + If you change your mind about donating, no worries: you can request a + refund at any time #{image_tag 'emoticons/smiley.gif'} If it's within 30 + days of when you donated, then we promise to refund your donation as soon + as we can. If it's been longer, we're a bit more limited in what we can do, + but we'll try our best to help! Additionally, if we remove your outfit + because we didn't feel comfortable showcasing it, then we may choose not to + issue a refund, regardless of when you ask. (Sorry for the extra + complexity, but this exception helps us discourage bad behavior.) + + We also accept donations via PayPal. + #{mail_to 'webmaster@openneo.net', "Please email us for more information."} + Thank you!! - content_for :javascripts do = javascript_include_tag 'https://checkout.stripe.com/checkout.js',