From 82be7fe3011ca1d2db440d96c44c7e084e785d8c Mon Sep 17 00:00:00 2001 From: Emi Matchu Date: Sun, 18 Feb 2024 20:12:14 -0800 Subject: [PATCH] Move most fundraising files into a Fundraising module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mostly this is just me testing out what it would look like to modularize the app moreā€¦ I've noticed that some concerns, like fundraising, are just not relevant to most of the app, and being able to lock them away inside subfolders feels like it'll help tidy up long folder lists. Notably, I haven't touched the models case yet, because I worry that might be a bit more complex, whereas everything else seems pretty well-isolated? We'll try it out! --- app/assets/images/campaigns/bird.gif | Bin 7442 -> 0 bytes app/assets/images/campaigns/hug.gif | Bin 7068 -> 0 bytes .../{campaigns => fundraising}/purple.png | Bin app/assets/javascripts/campaigns.js | 2 - .../campaigns/show.js} | 0 .../{ => fundraising}/donations/show.js | 0 app/assets/stylesheets/application.css.sass | 2 - app/assets/stylesheets/campaigns/_show.sass | 227 ------------------ app/assets/stylesheets/donations/_show.sass | 29 --- .../fundraising/campaigns/show.css.sass | 227 ++++++++++++++++++ .../fundraising/donations/show.css.sass | 28 +++ app/controllers/campaigns_controller.rb | 27 --- .../donation_features_controller.rb | 8 - app/controllers/donations_controller.rb | 56 ----- .../fundraising/campaigns_controller.rb | 29 +++ .../donation_features_controller.rb | 10 + .../fundraising/donations_controller.rb | 58 +++++ app/helpers/application_helper.rb | 3 +- app/helpers/donations_helper.rb | 25 -- app/helpers/fundraising/campaigns_helper.rb | 11 + app/helpers/fundraising/donations_helper.rb | 27 +++ app/helpers/static_helper.rb | 9 - app/mailers/donation_mailer.rb | 8 - app/mailers/fundraising/donation_mailer.rb | 10 + .../campaigns/show.html.haml | 5 +- .../donation_mailer/thank_you_email.html.erb | 0 .../donations/show.html.haml | 5 +- config/routes.rb | 12 +- 28 files changed, 417 insertions(+), 401 deletions(-) delete mode 100644 app/assets/images/campaigns/bird.gif delete mode 100644 app/assets/images/campaigns/hug.gif rename app/assets/images/{campaigns => fundraising}/purple.png (100%) delete mode 100644 app/assets/javascripts/campaigns.js rename app/assets/javascripts/{static/donate.js => fundraising/campaigns/show.js} (100%) rename app/assets/javascripts/{ => fundraising}/donations/show.js (100%) delete mode 100644 app/assets/stylesheets/campaigns/_show.sass delete mode 100644 app/assets/stylesheets/donations/_show.sass create mode 100644 app/assets/stylesheets/fundraising/campaigns/show.css.sass create mode 100644 app/assets/stylesheets/fundraising/donations/show.css.sass delete mode 100644 app/controllers/campaigns_controller.rb delete mode 100644 app/controllers/donation_features_controller.rb delete mode 100644 app/controllers/donations_controller.rb create mode 100644 app/controllers/fundraising/campaigns_controller.rb create mode 100644 app/controllers/fundraising/donation_features_controller.rb create mode 100644 app/controllers/fundraising/donations_controller.rb delete mode 100644 app/helpers/donations_helper.rb create mode 100644 app/helpers/fundraising/campaigns_helper.rb create mode 100644 app/helpers/fundraising/donations_helper.rb delete mode 100644 app/helpers/static_helper.rb delete mode 100644 app/mailers/donation_mailer.rb create mode 100644 app/mailers/fundraising/donation_mailer.rb rename app/views/{ => fundraising}/campaigns/show.html.haml (97%) rename app/views/{ => fundraising}/donation_mailer/thank_you_email.html.erb (100%) rename app/views/{ => fundraising}/donations/show.html.haml (92%) diff --git a/app/assets/images/campaigns/bird.gif b/app/assets/images/campaigns/bird.gif deleted file mode 100644 index cb83e601683fdbb3a92d28cf9c15d879afb9b2ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7442 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

{pfePCugB`(1;;E+Iw{3M1IvBo+qh1nJI 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