From d42c4a3c7e55184c02df75c29fe52e2506e64403 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Sun, 18 Jan 2015 00:35:41 -0800 Subject: [PATCH] special upgrade machine --- app/plan.rb | 57 +++++++++++++++------ views/admin.erb | 12 +++++ views/templates/email/supporter_upgrade.erb | 15 ++++++ 3 files changed, 69 insertions(+), 15 deletions(-) create mode 100644 views/templates/email/supporter_upgrade.erb diff --git a/app/plan.rb b/app/plan.rb index 71902ef6..f3924892 100644 --- a/app/plan.rb +++ b/app/plan.rb @@ -12,29 +12,45 @@ get '/plan/?' do erb :'plan/index' end +def is_special_upgrade + params[:username] && params[:plan_type] == 'special' +end + post '/plan/update' do require_login + if is_special_upgrade + require_admin + site = Site[username: params[:username]] + + if site.nil? + flash[:error] = 'Cannot find the requested user.' + redirect '/admin' + end + end + + site ||= parent_site + DB.transaction do - if parent_site.stripe_subscription_id - customer = Stripe::Customer.retrieve parent_site.stripe_customer_id - subscription = customer.subscriptions.retrieve parent_site.stripe_subscription_id + if site.stripe_subscription_id + customer = Stripe::Customer.retrieve site.stripe_customer_id + subscription = customer.subscriptions.retrieve site.stripe_subscription_id subscription.plan = params[:plan_type] subscription.save - parent_site.update( + site.update( plan_ended: false, plan_type: params[:plan_type] ) else customer = Stripe::Customer.create( card: params[:stripe_token], - description: "#{parent_site.username} - #{parent_site.id}", - email: (current_site.email || parent_site.email), + description: "#{site.username} - #{site.id}", + email: site.email, plan: params[:plan_type] ) - parent_site.update( + site.update( stripe_customer_id: customer.id, stripe_subscription_id: customer.subscriptions.first.id, plan_ended: false, @@ -43,14 +59,25 @@ post '/plan/update' do end end - if current_site.email || parent_site.email - EmailWorker.perform_async({ - from: 'web@neocities.org', - reply_to: 'contact@neocities.org', - to: current_site.email || parent_site.email, - subject: "[Neocities] You've become a supporter!", - body: Tilt.new('./views/templates/email_subscription.erb', pretty: true).render(self, plan_name: Site::PLAN_FEATURES[params[:plan_type].to_sym][:name], plan_space: Site::PLAN_FEATURES[params[:plan_type].to_sym][:space].to_space_pretty) - }) + if site.email + if is_special_upgrade + site.send_email( + subject: "[Neocities] Your site has been upgraded to supporter!", + body: Tilt.new('./views/templates/email/supporter_upgrade.erb', pretty: true).render(self) + ) + + redirect '/admin' + else + site.send_email( + subject: "[Neocities] You've become a supporter!", + body: Tilt.new('./views/templates/email_subscription.erb', pretty: true).render(self, plan_name: Site::PLAN_FEATURES[params[:plan_type].to_sym][:name], plan_space: Site::PLAN_FEATURES[params[:plan_type].to_sym][:space].to_space_pretty) + ) + end + end + + if is_special_upgrade + flash[:success] = "#{site.username} has been upgraded to supporter." + redirect '/admin' end redirect params[:plan_type] == 'free' ? '/plan' : '/plan/thanks' diff --git a/views/admin.erb b/views/admin.erb index 7f47a41b..32f85ef2 100644 --- a/views/admin.erb +++ b/views/admin.erb @@ -49,5 +49,17 @@

+ +
+

Upgrade to Supporter

+
+ + <%== csrf_token_input_html %> +

This site will be upgraded to the supporter plan.

+

Site Name:

+

+

+
+
\ No newline at end of file diff --git a/views/templates/email/supporter_upgrade.erb b/views/templates/email/supporter_upgrade.erb new file mode 100644 index 00000000..bee094af --- /dev/null +++ b/views/templates/email/supporter_upgrade.erb @@ -0,0 +1,15 @@ +Hi there! + +A Neocities administrator has upgraded your account to supporter! Someone at Neocities must really like you (or your site). :) + +We won't charge you for the upgrade, so no worries on that. You can see some of the new features you can use by visiting our supporter page at https://neocities.org/plan + +We're looking forward to seeing the awesome things you will do with it. + +Thank you very, very much for supporting Neocities. It means a lot to us. We'll try our hardest to keep improving the site and stick to our core values (NO MARKETING OR ADVERTISING, EVER). + +If you have any questions or comments, or just want to say hi, feel free to contact us at https://neocities.org/contact. You can also reach us on Twitter at @neocitiesweb. + +From Penelope (the Neocities' cat/sysadmin), everyone that's helped work on Neocities, and on behalf of all our sites, our very best wishes for you (and your awesome web site). + +- The Neocities Team \ No newline at end of file