Move all configuration to initializers

This commit is contained in:
Eric 2020-06-10 17:31:47 -05:00 committed by Eric Schultz
parent 5354633626
commit 2ddab4713a
135 changed files with 673 additions and 1326 deletions

View file

@ -52,8 +52,6 @@ gem 'devise-async', '~> 1.0'
gem 'devise', '~> 4.7'
# API Tools
gem 'config', '> 1.5'
gem 'dry-validation', '~> 0.13.3' # used only for config validation
gem 'foreman', '~> 0.87.1'
gem 'wisper', '~> 2.0'
gem 'wisper-activejob', '~> 1.0.0'
@ -64,7 +62,7 @@ end
group :development, :ci, :test do
gem 'byebug', '~> 11.0', '>= 11.0.1'
gem 'dotenv-rails', '~> 2.7', '>= 2.7.5'
gem 'dotenv-rails', '~> 2.7', '>= 2.7.5', require: 'dotenv/rails-now'
gem 'mail_view', '~> 2.0'
gem 'pry', '~> 0.12.2'
gem 'pry-byebug', '~> 3.7.0'
@ -75,7 +73,7 @@ group :development, :ci, :test do
gem 'factory_bot_rails', '~> 5.0', '>= 5.0.2'
gem 'factory_bot', '~> 5.0', '>= 5.0.2'
gem 'listen'
gem 'table_print', '~> 1.5', '>= 1.5.6' # Nice table printing of data for the console
gem 'table_print', '~> 1.5', '>= 1.5.6' # giuNice table printing of data for the console
gem 'colorize', '~> 0.8.1' # Print colorized text in debugger/console
end

View file

@ -102,10 +102,6 @@ GEM
coderay (1.1.2)
colorize (0.8.1)
concurrent-ruby (1.1.6)
config (1.7.2)
activesupport (>= 3.0)
deep_merge (~> 1.2, >= 1.2.1)
dry-validation (~> 0.12, >= 0.12.2, < 1.0.0)
countries (3.0.0)
i18n_data (~> 0.8.0)
sixarm_ruby_unaccent (~> 1.1)
@ -120,7 +116,6 @@ GEM
database_cleaner-active_record (1.8.0)
activerecord
database_cleaner (~> 1.8.0)
deep_merge (1.2.1)
devise (4.7.1)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
@ -138,34 +133,6 @@ GEM
dotenv-rails (2.7.5)
dotenv (= 2.7.5)
railties (>= 3.2, < 6.1)
dry-configurable (0.8.3)
concurrent-ruby (~> 1.0)
dry-core (~> 0.4, >= 0.4.7)
dry-container (0.7.2)
concurrent-ruby (~> 1.0)
dry-configurable (~> 0.1, >= 0.1.3)
dry-core (0.4.9)
concurrent-ruby (~> 1.0)
dry-equalizer (0.2.2)
dry-inflector (0.1.2)
dry-logic (0.6.1)
concurrent-ruby (~> 1.0)
dry-core (~> 0.2)
dry-equalizer (~> 0.2)
dry-types (0.14.1)
concurrent-ruby (~> 1.0)
dry-container (~> 0.3)
dry-core (~> 0.4, >= 0.4.4)
dry-equalizer (~> 0.2)
dry-inflector (~> 0.1, >= 0.1.2)
dry-logic (~> 0.5, >= 0.5)
dry-validation (0.13.3)
concurrent-ruby (~> 1.0)
dry-configurable (~> 0.1, >= 0.1.3)
dry-core (~> 0.2, >= 0.2.1)
dry-equalizer (~> 0.2)
dry-logic (~> 0.5, >= 0.5.0)
dry-types (~> 0.14.0)
erubi (1.9.0)
factory_bot (5.0.2)
activesupport (>= 4.2.0)
@ -443,13 +410,11 @@ DEPENDENCIES
byebug (~> 11.0, >= 11.0.1)
chronic (~> 0.10.2)
colorize (~> 0.8.1)
config (> 1.5)
countries (~> 3.0)
database_cleaner-active_record
devise (~> 4.7)
devise-async (~> 1.0)
dotenv-rails (~> 2.7, >= 2.7.5)
dry-validation (~> 0.13.3)
factory_bot (~> 5.0, >= 5.0.2)
factory_bot_rails (~> 5.0, >= 5.0.2)
font_assets (~> 0.1.14)

View file

@ -1270,62 +1270,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** dry-logic; version 0.6.1 --
Copyright (c) 2014 Ruby Object Mapper
The MIT License (MIT)
Copyright (c) 2014 Ruby Object Mapper
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** dry-inflector; version 0.1.2 --
Copyright (c) The Dry, Rails, Merb, Datamapper, Inflecto, Flexus, and Hanami teams
Copyright © The Dry, Rails, Merb, Datamapper, Inflecto, Flexus, and Hanami teams
MIT License
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** hashie; version 3.6.0 --
@ -1414,33 +1358,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** dry-container; version 0.7.2 --
Copyright (c) 2015-2017
The MIT License (MIT)
Copyright (c) 2015-2017 dry-container
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** multi_json; version 1.13.1 --
@ -1470,34 +1387,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** dry-core; version 0.4.9 --
Copyright (c) 2016 Nikita Shilnikov
The MIT License (MIT)
Copyright (c) 2016 Nikita Shilnikov
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
------
** bunny; version 2.14.2 --
@ -1728,33 +1617,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** dry-types; version 0.14.1 --
Copyright (c) 2013-2014 Piotr Solnica
Copyright (c) 2013-2014 Piotr Solnica
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** rspec; version 3.9.0 --
@ -2083,6 +1945,37 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** money; version 6.13.7 --
Copyright (c) 2008 Phusion
Copyright (c) 2005 Tobias Lutke
The MIT License (MIT)
Copyright (c) 2005 Tobias Lutke
Copyright (c) 2008 Phusion
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** loofah; version 2.5.0 --
@ -2143,40 +2036,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** config; version 1.7.2 --
Copyright (c) 2008 Steve Midgley
Copyright (c) 2010-2014 Jacques Crocker, Fred Wu, Piotr Kuczynski
# The MIT License (MIT)
Copyright (c) 2010-2014 Jacques Crocker, Fred Wu, Piotr Kuczynski
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Third-party materials and licenses:
* Config contains Deep Merge (deep_merge.rb) which is governed by the MIT license
Copyright (C) 2008 Steve Midgley
------
** traceroute; version 0.8.0 --
@ -2638,35 +2497,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** deep_merge; version 1.2.1 --
Copyright (c) 2008-2016 Steve Midgley
Copyright (c) 2008-2016 Steve Midgley, Daniel DeLeo
The MIT License (MIT)
Copyright (c) 2008-2016 Steve Midgley, Daniel DeLeo
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
------
** sprockets-rails; version 3.2.1 --
@ -3987,33 +3817,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
------
** dry-validation; version 0.13.3 --
Copyright (c) 2015 Dryrb Team
The MIT License (MIT)
Copyright (c) 2015 Dryrb Team
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** mail; version 2.7.1 --
@ -4341,33 +4144,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** dry-configurable; version 0.8.3 --
Copyright (c) 2015-2017
The MIT License (MIT)
Copyright (c) 2015-2017 dry-rb
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** heroku-deflater; version 0.6.3 --
@ -4627,35 +4403,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** dry-equalizer; version 0.2.2 --
Copyright (c) 2012 Markus Schirp
Copyright (c) 2009-2013 Dan Kubb.
Copyright (c) 2009-2013 Dan Kubb
Copyright (c) 2012 Markus Schirp (packaging)
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------
** json; version 1.8.6 --

View file

@ -8,10 +8,10 @@ class ApplicationController < ActionController::Base
protect_from_forgery
def redirect_to_maintenance
if Settings&.maintenance&.maintenance_mode && !current_user
if Houdini.maintenance&.active && !current_user
unless self.class == Users::SessionsController &&
((Settings.maintenance.maintenance_token && params[:maintenance_token] == Settings.maintenance.maintenance_token) || params[:format] == 'json')
redirect_to Settings.maintenance.maintenance_page
((Houdini.maintenance.token && params[:maintenance_token] == Houdini.maintenance.token) || params[:format] == 'json')
redirect_to Houdini.maintenance.page
end
end
end

View file

@ -10,7 +10,7 @@ class BillingSubscriptionsController < ApplicationController
def create
@nonprofit ||= Nonprofit.find(params[:nonprofit_id])
@subscription = BillingSubscription.create_with_stripe(@nonprofit, params[:billing_subscription])
json_saved(@subscription, "Success! You are subscribed to #{Settings.general.name}.")
json_saved(@subscription, "Success! You are subscribed to #{Houdini.general.name}.")
end
# post /nonprofits/:nonprofit_id/billing_subscription/cancel

View file

@ -8,10 +8,10 @@ module Controllers::Locale
before_action :set_locale
def set_locale
if params[:locale] && Settings.available_locales.include?(params[:locale])
if params[:locale] && Houdini.intl.available_locales.include?(params[:locale])
I18n.locale = params[:locale]
else
I18n.locale = Settings.language
I18n.locale = Houdini.intl.language
end
end
end

View file

@ -22,7 +22,7 @@ module Controllers::User::Authorization
def block_with_sign_in(msg = nil)
store_location
if current_user
flash[:notice] = "It looks like you're not allowed to access that page. If this seems like a mistake, please contact #{Settings.mailer.email}"
flash[:notice] = "It looks like you're not allowed to access that page. If this seems like a mistake, please contact #{Houdini.support_email}"
redirect_to root_path
else
msg ||= 'We need to sign you in before you can do that.'

View file

@ -30,7 +30,7 @@ class NonprofitsController < ApplicationController
@nonprofit_background_image = @nonprofit.background_image.attached? ?
url_for(@nonprofit.background_image_by_size(:normal)) :
url_for(Image::DefaultNonprofitUrl)
url_for(Houdini.defaults.image.nonprofit)
respond_to do |format|
format.html
@ -135,10 +135,10 @@ class NonprofitsController < ApplicationController
def countries_list(locale)
all_countries = ISO3166::Country.translations(locale)
if Settings.intntl.all_countries
countries = all_countries.select { |code, _name| Settings.intntl.all_countries.include? code }
if Houdini.intl.all_countries
countries = all_countries.select { |code, _name| Houdini.intl.all_countries.include? code }
countries = countries.map { |code, name| [code.upcase, name] }.sort_by { |a| a[1] }
countries.push([Settings.intntl.other_country.upcase, I18n.t('nonprofits.donate.info.supporter.other_country')]) if Settings.intntl.other_country
countries.push([Houdini.intl.other_country.upcase, I18n.t('nonprofits.donate.info.supporter.other_country')]) if Houdini.intl.other_country
countries
else
all_countries.map { |code, name| [code.upcase, name] }.sort_by { |a| a[1] }

View file

@ -9,18 +9,16 @@ class StaticController < ApplicationController
end
def ccs
ccs_method = !Settings.ccs ? 'local_tar_gz' : Settings.ccs.ccs_method
if ccs_method == 'local_tar_gz'
temp_file = "#{Rails.root}/tmp/#{Time.current.to_i}.tar.gz"
result = Kernel.system("git archive --format=tar.gz -o #{temp_file} HEAD")
if result
send_file(temp_file, type: 'application/gzip')
else
render body: nil, status: 500
begin
Houdini.ccs.retrieve_ccs do |ccs|
if ccs.is_a? String
redirect_to ccs
else
send_data(ccs, type: 'application/gzip')
end
end
elsif ccs_method == 'github'
git_hash = File.read("#{Rails.root}/CCS_HASH")
redirect_to "https://github.com/#{Settings.ccs.options.account}/#{Settings.ccs.options.repo}/tree/#{git_hash}"
rescue => e
render body: nil, status: 500
end
end
end

View file

@ -30,7 +30,7 @@ class Users::SessionsController < Devise::SessionsController
session[:pw_timestamp] = Time.current.to_s
render json: { token: tok }, status: :ok
else
render json: ["Incorrect password. Please enter your #{Settings.general.name} %> password."], status: :unprocessable_entity
render json: ["Incorrect password. Please enter your #{Houdini.general.name} %> password."], status: :unprocessable_entity
end
end
end

View file

@ -1,9 +1,6 @@
<%
cdn_url = URI(Settings.cdn.url)
cdn_url = URI(Houdini.button_host)
cdn_url = cdn_url.to_s
if Settings.button_config&.url
cdn_url = URI(Settings.button_config.url).to_s
end
%>
module.exports = "<%= cdn_url %>"

View file

@ -1,5 +1,5 @@
const pageInfo = {
apiDomain: '<%= Settings.api_domain.url %>'
apiDomain: '<%= Houdini.button_host %>'
}
module.exports = pageInfo;

View file

@ -10,6 +10,6 @@ class AdminMailer < BaseMailer
def notify_failed_gift(donation, campaign_gift_option)
@campaign_gift_option = campaign_gift_option
@donation = donation
mail subject: "Tried to associate donation #{donation.id} with campaign gift option #{campaign_gift_option.id} which is out of stock", to: Settings.mailer.email, from: Settings.mailer.default_from
mail subject: "Tried to associate donation #{donation.id} with campaign gift option #{campaign_gift_option.id} which is out of stock", to: Houdini.support_email, from: Houdini.support_email
end
end

View file

@ -5,6 +5,6 @@ class BaseMailer < ActionMailer::Base
include Roadie::Rails::Automatic
include Devise::Controllers::UrlHelpers
add_template_helper(ApplicationHelper)
default from: Settings.mailer.default_from
default from: Houdini.support_email
layout 'email'
end

View file

@ -8,6 +8,6 @@ class BillingSubscriptionMailer < BaseMailer
@card = @nonprofit.active_card
@billing_plan = @billing_subscription.billing_plan
@emails = QueryUsers.all_nonprofit_user_emails(@nonprofit.id)
mail(to: @emails, subject: "Action Needed, Please Update Your #{Settings.general.name} Account")
mail(to: @emails, subject: "Action Needed, Please Update Your #{Houdini.general.name} Account")
end
end

View file

@ -5,12 +5,12 @@ class CampaignMailer < BaseMailer
def creation_followup(campaign)
@creator_profile = campaign.profile
@campaign = campaign
mail(to: @creator_profile.user.email, subject: "Get your new campaign rolling! (via #{Settings.general.name})")
mail(to: @creator_profile.user.email, subject: "Get your new campaign rolling! (via #{Houdini.general.name})")
end
def federated_creation_followup(campaign)
@creator_profile = campaign.profile
@campaign = campaign
mail(to: @creator_profile.user.email, subject: "Get your new campaign rolling! (via #{Settings.general.name})")
mail(to: @creator_profile.user.email, subject: "Get your new campaign rolling! (via #{Houdini.general.name})")
end
end

View file

@ -9,6 +9,6 @@ class EventMailer < BaseMailer
def creation_followup(event)
@creator_profile = event.profile
@event = event
mail(to: @creator_profile.user.email, subject: "Get your new event rolling on #{Settings.general.name}!")
mail(to: @creator_profile.user.email, subject: "Get your new event rolling on #{Houdini.general.name}!")
end
end

View file

@ -6,12 +6,12 @@ class GenericMailer < BaseMailer
@from_email = from_email
@from_name = from_name
@message = message
mail(to: to_email, from: "#{from_name} <#{Settings.mailer.email}>", reply_to: from_email, subject: subject.to_s)
mail(to: to_email, from: "#{from_name} <#{Houdini.support_email}>", reply_to: from_email, subject: subject.to_s)
end
# For sending a system notice to super admins
def admin_notice(options)
@from_email = Settings.mailer.email
@from_email = Houdini.support_email
@from_name = 'CC Bot'
@message = options[:body]
emails = QueryUsers.super_admin_emails

View file

@ -7,14 +7,14 @@ class NonprofitAdminMailer < BaseMailer
@title_with_article = Format::Indefinitize.with_article(role.name.to_s.titleize)
@nonprofit = role.host
@token = raw_token
mail(to: @user.email, subject: "You're now #{@title_with_article} of #{@nonprofit.name} on #{Settings.general.name}. Let's set your password.")
mail(to: @user.email, subject: "You're now #{@title_with_article} of #{@nonprofit.name} on #{Houdini.general.name}. Let's set your password.")
end
def existing_invite(role)
@user = role.user
@title_with_article = Format::Indefinitize.with_article(role.name.to_s.titleize)
@nonprofit = role.host
mail(to: @user.email, subject: "You're now #{@title_with_article} of #{@nonprofit.name} on #{Settings.general.name}.")
mail(to: @user.email, subject: "You're now #{@title_with_article} of #{@nonprofit.name} on #{Houdini.general.name}.")
end
def supporter_fundraiser(event_or_campaign)

View file

@ -5,13 +5,13 @@ class NonprofitMailer < BaseMailer
def failed_verification_notice(np)
@nonprofit = np
@emails = QueryUsers.nonprofit_user_emails(@nonprofit.id, 'notify_payouts')
mail(to: @emails, subject: "We need some further account verification on #{Settings.general.name}")
mail(to: @emails, subject: "We need some further account verification on #{Houdini.general.name}")
end
def successful_verification_notice(np)
@nonprofit = np
@emails = QueryUsers.nonprofit_user_emails(@nonprofit.id, 'notify_payouts')
mail(to: @emails, subject: "Verification successful on #{Settings.general.name}!")
mail(to: @emails, subject: "Verification successful on #{Houdini.general.name}!")
end
def refund_notification(refund_id)
@ -87,7 +87,7 @@ class NonprofitMailer < BaseMailer
@payment = payment
@emails = QueryUsers.all_nonprofit_user_emails(@nonprofit.id, [:nonprofit_admin])
@month_name = Date::MONTHNAMES[payment.date.month]
mail(to: @emails, subject: "#{Settings.general.name} Subscription Receipt for #{@month_name}")
mail(to: @emails, subject: "#{Houdini.general.name} Subscription Receipt for #{@month_name}")
end
# pass in all of:
@ -105,7 +105,7 @@ class NonprofitMailer < BaseMailer
def setup_verification(np_id)
@nonprofit = Nonprofit.find(np_id)
@emails = QueryUsers.all_nonprofit_user_emails(np_id, [:nonprofit_admin])
mail(to: @emails, reply_to: 'support@commitchange.com', from: "#{Settings.general.name} Support", subject: "Set up automatic payouts on #{Settings.general.name}")
mail(to: @emails, reply_to: 'support@commitchange.com', from: "#{Houdini.general.name} Support", subject: "Set up automatic payouts on #{Houdini.general.name}")
end
def welcome(np_id)
@ -113,6 +113,6 @@ class NonprofitMailer < BaseMailer
@user = @nonprofit.users.first
@token = @user.make_confirmation_token!
@emails = QueryUsers.all_nonprofit_user_emails(np_id, [:nonprofit_admin])
mail(to: @emails, reply_to: 'support@commitchange.com', from: "#{Settings.general.name} Support", subject: "A hearty welcome from the #{Settings.general.name} team")
mail(to: @emails, reply_to: 'support@commitchange.com', from: "#{Houdini.general.name} Support", subject: "A hearty welcome from the #{Houdini.general.name} team")
end
end

View file

@ -58,8 +58,8 @@ class Campaign < ApplicationRecord
has_one_attached_with_sizes(:main_image, {normal: [524, 360], thumb: [180,150]})
has_one_attached_with_sizes(:background_image, {normal: [1000, 600]})
has_one_attached_with_default(:main_image, Image::DefaultProfileUrl,
filename: "main_image_#{SecureRandom.uuid}#{Pathname.new(Image::DefaultProfileUrl).extname}")
has_one_attached_with_default(:main_image, Houdini.defaults.image.profile,
filename: "main_image_#{SecureRandom.uuid}#{Pathname.new(Houdini.defaults.image.profile).extname}")
has_many :donations
has_many :charges, through: :donations

View file

@ -17,7 +17,7 @@ class CreateModel < Base
role = user.roles.build(host: nonprofit, name: 'nonprofit_admin')
role.save!
billing_plan = BillingPlan.find(Settings.default_bp.id)
billing_plan = BillingPlan.find(Houdini.default_bp.id)
b_sub = nonprofit.build_billing_subscription(billing_plan: billing_plan, status: 'active')
b_sub.save!
end

View file

@ -68,11 +68,11 @@ class Event < ApplicationRecord
has_one_attached_with_sizes :main_image, {normal: 400, thumb: 100}
has_one_attached_with_sizes :background_image, {normal: [1000, 600]}
has_one_attached_with_default(:main_image, Image::DefaultProfileUrl,
filename: "main_image_#{SecureRandom.uuid}#{Pathname.new(Image::DefaultProfileUrl).extname}")
has_one_attached_with_default(:main_image, Houdini.defaults.image.profile,
filename: "main_image_#{SecureRandom.uuid}#{Pathname.new(Houdini.defaults.image.profile).extname}")
has_one_attached_with_default(:background_image, Image::DefaultCampaignUrl,
filename: "background_image_#{SecureRandom.uuid}#{Pathname.new(Image::DefaultCampaignUrl).extname}")
has_one_attached_with_default(:background_image, Houdini.defaults.image.campaign,
filename: "background_image_#{SecureRandom.uuid}#{Pathname.new(Houdini.defaults.image.campaign).extname}")
scope :not_deleted, -> { where(deleted: [nil, false]) }

View file

@ -111,16 +111,16 @@ class Nonprofit < ApplicationRecord
has_one_attached_with_sizes(:second_image, {nonprofit_carousel: [590, 338], thumb: [188, 120], thumb_explore: [100, 100]})
has_one_attached_with_sizes(:third_image, {nonprofit_carousel: [590, 338], thumb: [188, 120], thumb_explore: [100, 100]})
has_one_attached_with_default(:logo, Image::DefaultProfileUrl,
filename: "logo_#{SecureRandom.uuid}#{Pathname.new(Image::DefaultProfileUrl).extname}")
has_one_attached_with_default(:background_image, Image::DefaultNonprofitUrl,
filename: "background_image_#{SecureRandom.uuid}#{Pathname.new(Image::DefaultNonprofitUrl).extname}")
has_one_attached_with_default(:main_image, Image::DefaultProfileUrl,
filename: "main_image_#{SecureRandom.uuid}#{Pathname.new(Image::DefaultProfileUrl).extname}")
has_one_attached_with_default(:second_image, Image::DefaultProfileUrl,
filename: "second_image_#{SecureRandom.uuid}#{Pathname.new(Image::DefaultProfileUrl).extname}")
has_one_attached_with_default(:third_image, Image::DefaultProfileUrl,
filename: "third_image_#{SecureRandom.uuid}#{Pathname.new(Image::DefaultProfileUrl).extname}")
has_one_attached_with_default(:logo, Houdini.defaults.image.profile,
filename: "logo_#{SecureRandom.uuid}#{Pathname.new(Houdini.defaults.image.profile).extname}")
has_one_attached_with_default(:background_image, Houdini.defaults.image.nonprofit,
filename: "background_image_#{SecureRandom.uuid}#{Pathname.new(Houdini.defaults.image.nonprofit).extname}")
has_one_attached_with_default(:main_image, Houdini.defaults.image.profile,
filename: "main_image_#{SecureRandom.uuid}#{Pathname.new(Houdini.defaults.image.profile).extname}")
has_one_attached_with_default(:second_image, Houdini.defaults.image.profile,
filename: "second_image_#{SecureRandom.uuid}#{Pathname.new(Houdini.defaults.image.profile).extname}")
has_one_attached_with_default(:third_image, Houdini.defaults.image.profile,
filename: "third_image_#{SecureRandom.uuid}#{Pathname.new(Houdini.defaults.image.profile).extname}")
serialize :achievements, Array
serialize :categories, Array
@ -242,7 +242,7 @@ class Nonprofit < ApplicationRecord
end
def currency_symbol
Settings.intntl.all_currencies.find { |i| i.abbv.casecmp(currency).zero? }&.symbol
Houdini.intl.all_currencies[currency.downcase.to_sym][:symbol]
end
private
@ -252,7 +252,7 @@ private
end
def add_billing_subscription
billing_plan = BillingPlan.find(Settings.default_bp.id)
billing_plan = BillingPlan.find(Houdini.default_bp.id)
b_sub = build_billing_subscription(billing_plan: billing_plan, status: 'active')
b_sub.save!
end

View file

@ -53,7 +53,7 @@ class Profile < ApplicationRecord
def set_defaults
self.name ||= user.name if user
self.email ||= user.email if user
picture.attach(io: File.open(Settings.default.image.profile),
picture.attach(io: File.open(Houdini.defaults.image.profile),
filename: "profile-image.png") unless self.picture.attached?
if self.name.blank? && first_name.present? && last_name.present?
self.name ||= first_name + ' ' + last_name
@ -98,7 +98,7 @@ class Profile < ApplicationRecord
end
# Either does not want photo shown or has none uploaded.
Image::DefaultProfileUrl
Houdini.defaults.image.profile
end
def url

View file

@ -5,7 +5,7 @@ Dear <%= @nonprofit.name %>,
<br>
<p>
Thank you for continuing to use <%= Settings.general.name %>!
Thank you for continuing to use <%= Houdini.general.name %>!
</p>
<br>
@ -15,7 +15,7 @@ Unfortunately, the credit card we currently have on file (<%= @card.name %>, exp
<br>
<p>
If you have any questions or concerns, please feel free to call us (888) 204-8792 or to email <%= Settings.devise.mailer_sender %> and we'll respond promptly to help.
If you have any questions or concerns, please feel free to call us (888) 204-8792 or to email <%= Houdini.support_email %> and we'll respond promptly to help.
</p>
<br>
<br>

View file

@ -8,7 +8,7 @@
<p> By cancelling your subscription, we will move you onto the <strong>2.0% tier</strong> and your card will no longer get charged. </p>
<p> Contact <%= Settings.devise.mailer_sender %> if you need any help with exports or migrations. </p>
<p> Contact <%= Houdini.support_email %> if you need any help with exports or migrations. </p>
<p>
<form action="/nonprofits/<%=@nonprofit.id%>/billing_subscription/cancel" method="post">

View file

@ -26,6 +26,6 @@
<p><strong>Note:</strong> You can still share an unpublished campaign, but it will not show up on your nonprofit profile page or on your campaign listing page.</p>
<br>
<p>If you need some help getting your campaign up and running, don't hesitate to contact <strong><%= Settings.devise.mailer_sender %></strong>.</p>
<p>If you need some help getting your campaign up and running, don't hesitate to contact <strong><%= Houdini.support_email %></strong>.</p>
<%= render 'emails/sig' %>

View file

@ -22,10 +22,10 @@
<%- if ENV['FACEBOOK_APP_ID'] -%>
<li><%= link_to("Facebook", "https://www.facebook.com/dialog/feed?app_id=#{ENV['FACEBOOK_APP_ID']}&display=popup&caption=#{url_encode(@campaign.name)}&link=#{campaign_url}") %></li>
<%- end -%>
<li><%= link_to("Twitter", "https://twitter.com/intent/tweet?url=#{campaign_url}&via=#{Settings.general.name}&text=#{url_encode("Join me in supporting: #{@campaign.name}")}") %></li>
<li><%= link_to("Twitter", "https://twitter.com/intent/tweet?url=#{campaign_url}&via=#{Houdini.general.name}&text=#{url_encode("Join me in supporting: #{@campaign.name}")}") %></li>
<li>Or copy and paste the link above into an email to your friends and family</li>
</ul>
<p>If you need some help getting your campaign up and running, don't hesitate to contact <strong><%= Settings.devise.mailer_sender %></strong>.</p>
<p>If you need some help getting your campaign up and running, don't hesitate to contact <strong><%= Houdini.support_email %></strong>.</p>
<%= render 'emails/sig' %>

View file

@ -114,7 +114,7 @@
<div class='u-paddingLeft--20 u-maxWidth--500'>
<p>
<!--= hide_if is_confirmed -->
Simply click the confirmation link in the email we sent you when you created your <%= Settings.general.name %> account.
Simply click the confirmation link in the email we sent you when you created your <%= Houdini.general.name %> account.
<br/><br/>
Once you've clicked the confirmation link, come back here and <a href="javascript:window.location.reload(true)">reload this page</a>.
</p>

View file

@ -1,5 +1,5 @@
<%- # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later -%>
<% if Settings.page_editor.editor == 'froala' %>
<% if Houdini.page_editor&.editor == 'froala' %>
<%= IncludeAsset.js '/client/js/common/vendor/froala/page.js' %>
<%= IncludeAsset.js '/client/js/common/vendor/froala/video/page.js' %>
<%= IncludeAsset.js '/client/js/common/vendor/froala/lists/page.js' %>

View file

@ -1,4 +1,4 @@
<%- # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later -%>
<span class='commitchangeLogo'>
<%= image_tag Settings.general.logo_full, alt: Settings.general.name %>
<%= image_tag Houdini.general.logo_full, alt: Houdini.general.name %>
</span>

View file

@ -1,4 +1,4 @@
<%- # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later -%>
<span class='commitchangeLogo'>
<%= image_tag Settings.general.logo, alt: Settings.general.name%>
<%= image_tag Houdini.general.logo, alt: Houdini.general.name%>
</span>

View file

@ -8,13 +8,13 @@
<span>
<span class='globalFooter-sub-item'>&copy; <%= Time.current.year %> <%= Settings.general.name %></span>
<span class='globalFooter-sub-item'>&copy; <%= Time.current.year %> <%= Houdini.general.name %></span>
<span class='globalFooter-sub-item'>
<% if current_user %>
<% if Settings.terms_and_privacy&.help_url %><span><%= link_to("Help", Settings.terms_and_privacy.help_url) %></span><% end %>
<% if Houdini.terms_and_privacy&.help_url %><span><%= link_to("Help", Houdini.terms_and_privacy.help_url) %></span><% end %>
<% else %>
<% if Settings.terms_and_privacy&.about_url %><span><%= link_to("About", Settings.terms_and_privacy.about_url) %></span><% end %>
<% if Houdini.terms_and_privacy&.about_url %><span><%= link_to("About", Houdini.terms_and_privacy.about_url) %></span><% end %>
<% end %>
</span>
<span class='globalFooter-sub-item'>

View file

@ -6,7 +6,7 @@
<% end %>
<% if @resource.created_at.to_date == Date.today %>
<p>Thanks for signing up on <a href='https://commitchange.com'></a><%= Settings.general.name %></a>! We're excited to get you started.</p>
<p>Thanks for signing up on <a href='https://commitchange.com'></a><%= Houdini.general.name %></a>! We're excited to get you started.</p>
<% end %>
<p>In order to verify your account, please <strong><a href='<%= confirmation_url(@user, :confirmation_token => @token) %>'>confirm your email address</a></strong></p>

View file

@ -2,6 +2,6 @@
<%= link_to root_url, target: "_blank" do %>
<div style='text-align: center; margin-top: 50px;'>
<p style='font-size: 13px; color: grey;'>Fundraising Powered By</p>
<%= image_tag Settings.general.poweredby_logo, style: "display: inline-block;" %>
<%= image_tag Houdini.general.poweredby_logo, style: "display: inline-block;" %>
</div>
<% end %>

View file

@ -4,5 +4,5 @@
<p>All the best,</p>
<p>
The CommitChange Team<br>
<a href="<%= Settings.devise.mailer_sender %>"><%= Settings.devise.mailer_sender %></a>
<a href="<%= Houdini.support_email %>"><%= Houdini.support_email %></a>
</p>

View file

@ -17,6 +17,6 @@
<p><strong>Note:</strong> You can still share an unpublished event, but it will not show up on your nonprofit profile page or on your event listing page.</p>
<br>
<p>If you need some help getting your event up and running, don't hesitate to contact <strong><%= Settings.devise.mailer_sender %></strong>.</p>
<p>If you need some help getting your event up and running, don't hesitate to contact <strong><%= Houdini.support_email %></strong>.</p>
<%= render 'emails/sig' %>

View file

@ -5,6 +5,6 @@
<p>Note: your generated CSV file will be automatically deleted from our servers after seven days. Don't worry; you can always visit your payments panel and export a new CSV file.</p>
<p>If you have any questions about this export, please contact <a href="mailto:<%= Settings.devise.mailer_sender %>"><%= Settings.devise.mailer_sender %></a>.</p>
<p>If you have any questions about this export, please contact <a href="mailto:<%= Houdini.support_email %>"><%= Houdini.support_email %></a>.</p>
<%= render 'emails/sig' %>

View file

@ -1,7 +1,7 @@
<%- # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later -%>
<p>Your export from <%= Format::Date.simple @export.created_at %> did not succeed due to a technical error.</p>
<p>While CommitChange engineers have been notified, don't hesitate to contact
<a href="mailto:<%= Settings.devise.mailer_sender %>"><%= Settings.devise.mailer_sender %></a> with the following information:</p>
<a href="mailto:<%= Houdini.support_email %>"><%= Houdini.support_email %></a> with the following information:</p>
<ul>
<li>Export ID: <%= @export.id %></li>

View file

@ -5,6 +5,6 @@
<p>Note: your generated CSV file will be automatically deleted from our servers after seven days. Don't worry; you can always visit your recurring donations panel and export a new CSV file.</p>
<p>If you have any questions about this export, please contact <a href="mailto:<%= Settings.devise.mailer_sender %>"><%= Settings.devise.mailer_sender %></a>.</p>
<p>If you have any questions about this export, please contact <a href="mailto:<%= Houdini.support_email %>"><%= Houdini.support_email %></a>.</p>
<%= render 'emails/sig' %>

View file

@ -1,7 +1,7 @@
<%- # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later -%>
<p>Your export from <%= Format::Date.simple @export.created_at %> did not succeed due to a technical error.</p>
<p>While CommitChange engineers have been notified, don't hesitate to contact
<a href="mailto:<%= Settings.devise.mailer_sender %>"><%= Settings.devise.mailer_sender %></a> with the following information:</p>
<a href="mailto:<%= Houdini.support_email %>"><%= Houdini.support_email %></a> with the following information:</p>
<ul>
<li>Export ID: <%= @export.id %></li>

View file

@ -4,6 +4,6 @@
<p>Note: your generated CSV file will be automatically deleted from our servers after seven days. Don't worry; you can always visit your recurring donations panel and export a new CSV file.</p>
<p>If you have any questions about this export, please contact <a href="mailto:<%= Settings.mailer.email %>"><%= Settings.mailer.email %></a>.</p>
<p>If you have any questions about this export, please contact <a href="mailto:<%= Houdini.support_email %>"><%= Houdini.support_email %></a>.</p>
<%= render 'emails/sig' %>

View file

@ -1,6 +1,6 @@
<p>Your export from <%= Format::Date.simple @export.created_at %> did not succeed due to a technical error.</p>
<p>While CommitChange engineers have been notified, don't hesitate to contact
<a href="mailto:<%= Settings.mailer.email %>"><%= Settings.mailer.email %></a> with the following information:</p>
<a href="mailto:<%= Houdini.support_email %>"><%= Houdini.support_email %></a> with the following information:</p>
<ul>
<li>Export ID: <%= @export.id %></li>

View file

@ -5,7 +5,7 @@
<p>To view your new payments data, visit: <a href='<%= root_url %>nonprofits/<%= @nonprofit.id %>/payments'>payment history.</a></p>
<p>If you have any questions about this import, please contact <%= Settings.devise.mailer_sender %>.</p>
<p>If you have any questions about this import, please contact <%= Houdini.support_email %>.</p>
<%= render 'emails/sig' %>

View file

@ -3,8 +3,8 @@
<% if @theme == 'minimal' %>
<div class="minimalFooter">
<div class="container">
<span>&copy; <%= Time.current.year %> <%= Settings.general.name %></span>
<% if Settings.terms_and_privacy&.about_url %><span><%= link_to("About", Settings.terms_and_privacy.about_url) %></span><% end %>
<span>&copy; <%= Time.current.year %> <%= Houdini.general.name %></span>
<% if Houdini.terms_and_privacy&.about_url %><span><%= link_to("About", Houdini.terms_and_privacy.about_url) %></span><% end %>
<span><%= link_to( t("footer.terms_and_privacy"), :static_terms_and_privacy) %></span>
</div>

View file

@ -3,7 +3,7 @@
<% if @theme == 'minimal' %>
<div class="minimalHeader">
<div class="container">
<img src="<%= image_path(Settings.general.logo_full) %>" alt="Logo">
<img src="<%= image_path(Houdini.general.logo_full) %>" alt="Logo">
</div>
</div>

View file

@ -17,10 +17,10 @@ var app = {
, google_auth_client_id: "<%= ENV['GOOGLE_AUTH_CLIENT_ID'] %>"
, autocomplete: <%= @nonprofit ? @nonprofit.autocomplete_supporter_address : 'undefined'%>
, facebook_app_id: "<%= ENV['FACEBOOK_APP_ID'] %>"
, map_provider: "<%= Settings.maps&.provider %>"
, map_provider_options: <%= Settings.maps&.options ? raw(Settings.maps.options.to_json) : {} %>
, editor: "<%= Settings.page_editor.editor%>"
<% if Settings&.page_editor&.editor == 'froala' and Settings&.page_editor&.editor_options&.froala_key %>, froala_key: "<%= Settings.page_editor.editor_options.froala_key %>"<% end %>
, map_provider: "<%= Houdini.maps&.provider %>"
, map_provider_options: <%= Houdini.maps&.options ? raw(Houdini.maps.options.to_json) : {} %>
, editor: "<%= Houdini.page_editor.editor%>"
<% if Settings&.page_editor&.editor == 'froala' and Settings&.page_editor&.editor_options&.froala_key %>, froala_key: "<%= Houdini.page_editor.editor_options.froala_key %>"<% end %>
<%if @nonprofit&.currency_symbol %>, currency_symbol: "<%= @nonprofit.currency_symbol%>"<% end %>
};

View file

@ -3,14 +3,14 @@
<script src="https://cdn.polyfill.io/v1/polyfill.min.js"></script>
<%= render 'layouts/app_data' %>
<% if Settings.payment_provider.stripe_proprietary_v2_js %>
<% if Houdini.payment_providers.stripe.stripe_proprietary_v2_js %>
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
<% else %>
<%= javascript_pack_tag "page__stripe_wrapper" %>
<% end %>
<script>
Stripe.setPublishableKey("<%= Settings.payment_provider.stripe_public_key %>");
Stripe.setPublishableKey("<%= Houdini.payment_providers.stripe.stripe_public_key %>");
window._csrf = "<%= form_authenticity_token %>";
</script>

View file

@ -6,7 +6,7 @@
<% description = "Robust and user-friendly nonprofit fundraising tools. Campaigns, donor management, donation processing and event ticketing." %>
<title><%= yield :title_prefix %> <%= Settings.general.name %> <%= content_for?(:title_suffix) ? yield(:title_suffix) : "| #{title}" %>
<title><%= yield :title_prefix %> <%= Houdini.general.name %> <%= content_for?(:title_suffix) ? yield(:title_suffix) : "| #{title}" %>
</title>
<% if content_for?(:meta_description) %>
@ -16,16 +16,16 @@
<% end %>
<meta property="fb:app_id" content="<%= ENV.fetch('FACEBOOK_APP_ID') %>" />
<meta property="og:site_name" content="<%=Settings.general.name%>" />
<meta property="og:site_name" content="<%=Houdini.general.name%>" />
<meta property="og:url" content="<%= request.original_url %>" />
<meta property="og:type" content="website" />
<% if content_for?(:facebook_tags) %>
<%= yield :facebook_tags %>
<% else %>
<meta property="og:title" content="<%=Settings.general.name%> | <%= title %>"/>
<meta property="og:title" content="<%=Houdini.general.name%> | <%= title %>"/>
<meta property="og:description" content="<%= description %>">
<meta property="og:image" content="<%= Image::DefaultProfileUrl %>" />
<meta property="og:image" content="<%= Houdini.defaults.image.profile %>" />
<% end %>
<meta property="twitter:card" content="summary" />
@ -34,7 +34,7 @@
<% if content_for?(:twitter_tags) %>
<%= yield :twitter_tags %>
<% else %>
<meta property="twitter:title" content="<%=Settings.general.name%> | <%= title %>">
<meta property="twitter:title" content="<%=Houdini.general.name%> | <%= title %>">
<meta property="twitter:description" content="<%= description %>"/>
<% end %>

View file

@ -10,7 +10,7 @@
<% else %>
<meta property="og:title" content="Intelligent fundraising for nonprofits." />
<meta property="og:description" content="Nonprofit software for Fundraising and Donor Management" />
<meta property="og:image" content="<%= Image::DefaultProfileUrl %>" />
<meta property="og:image" content="<%= Houdini.defaults.image.profile %>" />
<% end %>

View file

@ -25,8 +25,8 @@
<% unless current_role?([:nonprofit_admin,:nonprofit_associate]) %>
<section class='sideNav-section'>
<% if Settings.terms_and_privacy&.help_url %>
<a class='sideNav-link' href="<%=Settings.terms_and_privacy.help_url %>">
<% if Houdini.terms_and_privacy&.help_url %>
<a class='sideNav-link' href="<%=Houdini.terms_and_privacy.help_url %>">
<i class='sideNav-icon icon-bubble-ask-2'></i>
<span class='sideNav-text'>Help</span>
</a>

View file

@ -19,8 +19,8 @@
</a>
<% if current_role?([:nonprofit_admin,:nonprofit_associate]) %>
<% if Settings.terms_and_privacy&.help_url %>
<a class='sideNav-link' href='<%=Settings.terms_and_privacy.help_url %>'>
<% if Houdini.terms_and_privacy&.help_url %>
<a class='sideNav-link' href='<%=Houdini.terms_and_privacy.help_url %>'>
<i class='sideNav-icon icon-question-mark'></i>
<span class='sideNav-text'>Help</span>
</a>

View file

@ -4,7 +4,7 @@
<html lang="<%= I18n.locale %>">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><%= "#{yield(:title)} - #{Settings.general.name}" %></title>
<title><%= "#{yield(:title)} - #{Houdini.general.name}" %></title>
<script src="https://cdn.polyfill.io/v2/polyfill.js?features=default,Intl.~locale.en"></script>
<script>
window.I18n = {}

View file

@ -3,7 +3,7 @@
<html>
<head>
<title><%= yield(:title) || "Donate with #{Settings.general.name}" %></title>
<title><%= yield(:title) || "Donate with #{Houdini.general.name}" %></title>
<%= render 'layouts/stylesheets' %>
<%= yield :stylesheets %>

View file

@ -4,7 +4,7 @@
<html lang="<%= I18n.locale %>">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><%= "#{yield(:title)} - #{Settings.general.name}" %></title>
<title><%= "#{yield(:title)} - #{Houdini.general.name}" %></title>
<script src="https://cdn.polyfill.io/v2/polyfill.js?features=default,Intl.~locale.en"></script>
<%= render 'layouts/stylesheets' %>
<%= IncludeAsset.css '/client/css/global/page.css' %>

View file

@ -1,7 +1,7 @@
<%- # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later -%>
<p>
Congrats! You're now <%= @title_with_article %> for
<strong><%= @nonprofit.name %></strong> on <%= Settings.general.name %>.
<strong><%= @nonprofit.name %></strong> on <%= Houdini.general.name %>.
</p><br>
<p><a href='<%= nonprofit_url(@nonprofit) %>'>View your nonprofit profile</a></p>

View file

@ -1,7 +1,7 @@
<%- # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later -%>
<p>
Congrats! We've added you as <%= @title_with_article %> for
<strong><%= @nonprofit.name %></strong> on <%= Settings.general.name %>.
<strong><%= @nonprofit.name %></strong> on <%= Houdini.general.name %>.
</p><br>
<p>Next step: <strong><a href='<%= confirmation_url(@user, confirmation_token: @token) %>'>confirm your email and set your password.</a></strong></p>

View file

@ -7,6 +7,6 @@
<p>If you would like to get in touch with your supporter, you can email them at <a href="mailto:<%= @profile.user.email %>"><%= @profile.user.email %></a>.</p><br>
<p>If you need help or have any questions, don't hesitate to contact us at <strong><%= Settings.devise.mailer_sender %></strong>.</p>
<p>If you need help or have any questions, don't hesitate to contact us at <strong><%= Houdini.support_email %></strong>.</p>
<%= render 'emails/sig' %>

View file

@ -5,7 +5,7 @@
<p><strong>Instructions to include the donate button:</strong></p><br>
<p><strong>1.</strong> First, include the <%= Settings.general.name %> SDK within the page's HTML:</p>
<p><strong>1.</strong> First, include the <%= Houdini.general.name %> SDK within the page's HTML:</p>
<pre><code><%= h "<script id='commitchange-donation-script' data-npo-id='#{@nonprofit.id}' src='https://commitchange.com/js/donate-button.v2.js'></script>" %></code></pre><br>

View file

@ -10,7 +10,7 @@
<p><strong><a href='<%= root_url + "/nonprofits/#{@nonprofit.id}/payouts" %>'>Visit your payouts page to get everything sorted out.</a></strong></p>
<p>As always, if you have any questions, please send us a note at <%= Settings.devise.mailer_sender %></p>
<p>As always, if you have any questions, please send us a note at <%= Houdini.support_email %></p>
<%= render 'emails/sig' %>

View file

@ -13,7 +13,7 @@ Your invoice for the month of <%= @month_name %> has been paid and the receipt i
<thead>
<th colspan='2'>
Payment Receipt for <%= Settings.general.name %>
Payment Receipt for <%= Houdini.general.name %>
</th>
</thead>
@ -38,7 +38,7 @@ Your invoice for the month of <%= @month_name %> has been paid and the receipt i
CommitChange Inc.
<br>Oakland, CA
<br>EIN 46-3123854
<br><%= Settings.devise.mailer_sender %>
<br><%= Houdini.support_email %>
</td>
</tr>

View file

@ -11,6 +11,6 @@
<p><a href='<%= confirmation_nonprofits_bank_account_url(@nonprofit, :t => @bank_account.confirmation_token) %>' class='button'>Confirm Change</a></p>
<p>If you think something is wrong with this change, please contact <a href='mailto:<%= Settings.devise.mailer_sender %>'><%= Settings.devise.mailer_sender %></a>.</p>
<p>If you think something is wrong with this change, please contact <a href='mailto:<%= Houdini.support_email %>'><%= Houdini.support_email %></a>.</p>
<%= render 'emails/sig' %>

View file

@ -7,7 +7,7 @@
<p>If the above looks correct, we don't need any futher actions. The transfer will complete within 1-3 business days.</p><br>
<p><strong>If anything looks incorrect</strong>, please contact <a href='mailto:<%= Settings.devise.mailer_sender %>'><%= Settings.devise.mailer_sender %></a>.</p>
<p><strong>If anything looks incorrect</strong>, please contact <a href='mailto:<%= Houdini.support_email %>'><%= Houdini.support_email %></a>.</p>
<%= render 'emails/sig' %>

View file

@ -1,15 +1,15 @@
<%- # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later -%>
<p>
Congratulations on receiving your first transaction on <%= Settings.general.name %>!
Congratulations on receiving your first transaction on <%= Houdini.general.name %>!
</p>
<br>
<p>
Whenever you receive money on <%= Settings.general.name %>, it will go into your accounts balance. Payouts can be made to your organizations bank account automatically at the beginning of each month, or at any time with the click of a button.
Whenever you receive money on <%= Houdini.general.name %>, it will go into your accounts balance. Payouts can be made to your organizations bank account automatically at the beginning of each month, or at any time with the click of a button.
</p>
<br>
<p>
<strong>Before you can make a payout</strong>, you need to connect your organization's bank account for withdrawals, allowing money to transfer from your account balance on <%= Settings.general.name %> directly to your organization.
<strong>Before you can make a payout</strong>, you need to connect your organization's bank account for withdrawals, allowing money to transfer from your account balance on <%= Houdini.general.name %> directly to your organization.
</p>
<br>

View file

@ -3,11 +3,11 @@
<%= render 'payout_table', payout: @payout %>
<p>Look for the deposit with in the above net amount with <strong><%= Settings.devise.mailer_sender %></strong> in the statement.</p>
<p>Look for the deposit with in the above net amount with <strong><%= Houdini.support_email %></strong> in the statement.</p>
<p><%= link_to 'Visit this link', nonprofits_payouts_url(@nonprofit) %> to view your detailed payout history.</p><br>
<p><strong>If anything looks incorrect</strong>, please contact <a href='mailto:<%= Settings.devise.mailer_sender %>'><%= Settings.devise.mailer_sender %></a>.</p>
<p><strong>If anything looks incorrect</strong>, please contact <a href='mailto:<%= Houdini.support_email %>'><%= Houdini.support_email %></a>.</p>
<%= render 'emails/sig' %>

View file

@ -1,7 +1,7 @@
<%- # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later -%>
<p>Hi <%= @nonprofit.name %>,</p>
<p>Congrats on getting your nonprofit's profile set up on <%= Settings.general.name %>.</p>
<p>Congrats on getting your nonprofit's profile set up on <%= Houdini.general.name %>.</p>
<p>We've just vetted your organization's nonprofit status, and you are now able to withdraw donations. First, you'll need to securely connect your bank account to automatically start receiving donations.</p>

View file

@ -1,6 +1,6 @@
<%- # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later -%>
<p>Welcome to <%= Settings.general.name %>! Were excited to have you on board.</p>
<p>Welcome to <%= Houdini.general.name %>! Were excited to have you on board.</p>
<br>
<p>
@ -31,7 +31,7 @@ Here are a few things you can do right away to get up and running:
</ul>
<p>
If you need help or have any questions, our support team is just a phone call or email away. You can contact us directly at <%= Settings.devise.mailer_sender %> or 888-204-8792.
If you need help or have any questions, our support team is just a phone call or email away. You can contact us directly at <%= Houdini.support_email %> or 888-204-8792.
</p>
<%= render 'emails/sig' %>

View file

@ -30,7 +30,7 @@
<input name='account_number' required parsley-type='number' parsley-trigger='change'></input>
</div>
<div class='field'>
<label>Your <%= Settings.general.name %> Password <br><small>(to confirm this change)</small></label>
<label>Your <%= Houdini.general.name %> Password <br><small>(to confirm this change)</small></label>
<input name='user_password' required type='password' parsley-trigger='change'></input>
</div>
</div>

View file

@ -17,5 +17,5 @@
<p>The bank account for this nonprofit was never initially confirmed.</p>
<% end %>
<p>If you think this was in error, please contact <%= mail_to '<%= Settings.devise.mailer_sender %>' %>
<p>If you think this was in error, please contact <%= mail_to '<%= Houdini.support_email %>' %>
</div>

View file

@ -9,6 +9,6 @@
Once you've started completing these tasks, you'll see your dashboard come to life with helpful data and reminders.
</span>
<% if Settings.terms_and_privacy&.help_url %> If you need help with any these tasks, visit our <%= link_to("Help Center", Settings.terms_and_privacy.help_url) %>.<% end %>
<% if Houdini.terms_and_privacy&.help_url %> If you need help with any these tasks, visit our <%= link_to("Help Center", Houdini.terms_and_privacy.help_url) %>.<% end %>
</p>
</div>

View file

@ -20,7 +20,7 @@
}
app.iframeParams = document.location.search
app.countriesList = <%= raw (@countries_translations).to_json %>
app.show_state_field = <%= Settings.show_state_field %>
app.show_state_field = <%= Houdini.show_state_field %>
I18n.defaultLocale = "<%= I18n.default_locale %>"
I18n.locale = "<%= I18n.locale %>"
</script>

View file

@ -14,7 +14,7 @@
<p class='notification'>
<!--= show_if payment_details.data.dispute -->
One of your supporters has disputed a charge (ie. made a charge-back), meaning they have called their bank and claimed that the charge was unauthorized. You need to collect evidence, via email, that the supporter intended to make the charge. Please contact <%= Settings.devise.mailer_sender %> so we can help resolve this for you.
One of your supporters has disputed a charge (ie. made a charge-back), meaning they have called their bank and claimed that the charge was unauthorized. You need to collect evidence, via email, that the supporter intended to make the charge. Please contact <%= Houdini.support_email %> so we can help resolve this for you.
</p>
<table class='table--small'>

View file

@ -65,7 +65,7 @@
<%= render 'common/modal_header', title: "Bank Account Confirmation Email Resent" %>
<div class='modal-body'>
<p>Success! The confirmation email to activate your bank account has been successfully re-sent. Expect it to arrive in your inbox within a few minutes. If you can't find it, be sure to check your spam folder.</p>
<p><blockquote>Why do we require this confirmation? It proves that you have access to both your <%= Settings.general.name %> account and your email account, preventing anybody from changing your organization's bank account if you leave your CommitChange account signed in on a shared computer.</blockquote></p>
<p>If you still have trouble finding the confirmation email, please contact <a href='mailto:<%= Settings.devise.mailer_sender %>'><%= Settings.devise.mailer_sender %></a>.</p>
<p><blockquote>Why do we require this confirmation? It proves that you have access to both your <%= Houdini.general.name %> account and your email account, preventing anybody from changing your organization's bank account if you leave your CommitChange account signed in on a shared computer.</blockquote></p>
<p>If you still have trouble finding the confirmation email, please contact <a href='mailto:<%= Houdini.support_email %>'><%= Houdini.support_email %></a>.</p>
</div>
</div>

View file

@ -35,7 +35,7 @@
app.countriesList = <%= raw (@countries_translations).to_json %>
app.show_state_field = <%= Settings.show_state_field %>
app.show_state_field = <%= Houdini.show_state_field %>
appl.def('current_nonprofit_user', <%= current_nonprofit_user? %>)
</script>
<%= render 'schema', npo: @nonprofit %>

View file

@ -9,7 +9,7 @@
<div class='pane-inner'>
<p class='pastelBox--yellow u-padding--10 u-marginBottom--30'>
Our Recurring Donation Management Form includes a link from which donors can make a one-time additional donation. By default, this link goes to
your nonprofit's page on <%= Settings.general.name %> (<small><strong><%= url_for(:controller => 'nonprofits', :action => :show, :id=> @nonprofit.id, :only_path => false ) %></strong></small>).
your nonprofit's page on <%= Houdini.general.name %> (<small><strong><%= url_for(:controller => 'nonprofits', :action => :show, :id=> @nonprofit.id, :only_path => false ) %></strong></small>).
Alternatively, you can link to a page on your website.
</p>

View file

@ -36,7 +36,7 @@
</p>
<% end %>
<p class='note u-marginTop--10'>If you have any questions about your current plan, please contact <a href='mailto:<%= Settings.devise.mailer_sender %>'><%= Settings.devise.mailer_sender %></a></p>
<p class='note u-marginTop--10'>If you have any questions about your current plan, please contact <a href='mailto:<%= Houdini.support_email %>'><%= Houdini.support_email %></a></p>
</div>

View file

@ -2,12 +2,12 @@
<% content_for :title, "Terms and Privacy" %>
<div class="container"><h1>Terms and Privacy</h1>
<% if Settings.terms_and_privacy&.terms_url %>
<h2><a href="<%= Settings.terms_and_privacy.terms_url %>">Terms of Use</a></h2>
<% if Houdini.terms_and_privacy&.terms_url %>
<h2><a href="<%= Houdini.terms_and_privacy.terms_url %>">Terms of Use</a></h2>
<% end %>
<% if Settings.terms_and_privacy&.privacy_url %>
<h2><a href="<%= Settings.terms_and_privacy.privacy_url %>">Privacy Policy</a></h2>
<% if Houdini.terms_and_privacy&.privacy_url %>
<h2><a href="<%= Houdini.terms_and_privacy.privacy_url %>">Privacy Policy</a></h2>
<% end %>
<h2>Software Licensing</h2>

View file

@ -1,7 +1,7 @@
<%- # License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later -%>
<p>Hi <%= @user.profile.name %>,</p><br>
<p>Thanks for signing up on <a href='https://commitchange.com'></a><%= Settings.general.name %></a>! Your profile is all set up, and you're ready to start fundraising.</p><br>
<p>Thanks for signing up on <a href='https://commitchange.com'></a><%= Houdini.general.name %></a>! Your profile is all set up, and you're ready to start fundraising.</p><br>
<p>You can sign in to your account <a href='<%= new_user_session_url %>'>here.</a></p><br>

View file

@ -18,13 +18,9 @@ require "action_view/railtie"
# require "sprockets/railtie"
require "rails/test_unit/railtie"
# Mirror Bess as Houdini
Houdini = Bess
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
# require File.expand_path('lib/htp') # Hamster Table Print
module Commitchange
@ -113,5 +109,7 @@ module Commitchange
config.active_record.belongs_to_required_by_default = false
config.active_storage.variant_processor = :vips
config.action_mailer.default_options = {from: "Default Org Team <hi@defaultorg.com>"}
end
end

View file

@ -1,63 +0,0 @@
# License: CC0-1.0
general:
name: Houdini Project
logo: "logos/houdini_project_bug.svg"
logo_full: "logos/houdini_project_full.svg"
default:
image:
profile: "public/images/fallback/default-profile.png"
nonprofit: "public/images/fallback/default-nonprofit.png"
campaign: "public/fallback/default-campaign-background.jpg"
mailer:
delivery_method: "sendmail"
address: "localhost"
port: 25
host: "http://localhost"
default_from: "CommitChange Team <support@commitchange.com>"
email: "support@commitchange.com"
cdn:
url: "http://localhost:5000"
payment_provider:
stripe_connect: true
stripe_public_key: <%= ENV['STRIPE_API_PUBLIC'] %>
stripe_private_key: <%= ENV['STRIPE_API_KEY'] %>
stripe_proprietary_v2_js: true
default_bp:
id: 1
percentage_fee: 0.020
devise:
mailer_sender: 'fake@fake.fake'
page_editor:
editor: 'froala'
editor_options:
froala_key: <%= ENV['FROALA_KEY'] %>
language: 'en'
available_locales: ['en']
intntl:
currencies: ["usd"]
all_currencies:
- unit: "dollars"
subunit: "cents"
symbol: "$"
abbv: "usd"
format: "%u%n"
source_tokens:
max_uses: 1
expiration_time: 1200
event_donation_source:
time_after_event: 1728000
max_uses: 20
nonprofits_must_be_vetted: false

View file

@ -1,32 +0,0 @@
# License: CC0-1.0
# This is an example organization configuration file.
#
# How to use it:
# 1. Set an enviroment variable called ORG_NAME
# 2. Make a copy of this file and rename it to <ORG_NAME>.yml this will be your
# default settings file. You can also create <ORG_NAME>.enviroment.yml which
# will overwrite your settings on per enviroment basis.
# 3. Set your details in the new files et voila!
mailer:
default_from: Default Org Team <hi@defaultorg.com>"
delivery_method: "smtp"
address: "localhost"
port: 1025
host: "localhost:5000"
email: 'email@email.org'
devise:
mailer_sender: "hi@defaultorg.com"
intntl:
currencies: ["eur"]
eur:
unit: "euro"
subunit: "cents"
symbol: "€"
abbv: "eur"
format: "%n%u"
api_domain:
url: "http://localhost:5000"

View file

@ -6,260 +6,6 @@ require_relative 'application'
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
@ignore_dotenv = ENV['IGNORE_DOTENV']
@env = Rails.env || 'development'
unless @ignore_dotenv
require 'dotenv'
if @env == 'test'
Dotenv.load ".env.#{@env}" if File.file?(".env.#{@env}")
else
Dotenv.load '.env'
end
end
@org_name = ENV['ORG_NAME'] || 'default_organization'
puts "config files .env .env.#{@env} ./config/settings.#{@env}.yml#{@env != 'test' ? " ./config/#{@org_name}.yml" : ' '} #{@env != 'test' ? " ./config/#{@org_name}.#{@env}.yml" : ' '} #{@env == 'test' ? './config/settings.test.yml' : ''}"
if Rails.env == 'test'
Settings.add_source!('./config/settings.test.yml')
else
Settings.add_source!("./config/#{@org_name}.yml")
Settings.add_source!("./config/#{@org_name}.#{Rails.env}.yml")
end
# Settings.add_source!("./config/#{@org_name}.#{Rails.env}.yml")
# we load the schema now because we didn't want to do so until we loaded EVERYTHING
Config.schema do
required(:general).schema do
# the name of your website. Default in Settings is "Houdini Project"
required(:name).filled(:str?)
# the relative path from asset_host root where your small logo (bug-sized logo) is set
required(:logo).filled(:str?)
# the relative path from asset_host root where your big logo
required(:logo_full).filled(:str?)
# the relative path from asset_host root to your poweredby email logo (PNG, 150px wide)
required(:poweredby_logo).filled(:str?)
end
required(:default).schema do
required(:image).schema do
# the path on your image.host to your default profile image
required(:profile).filled(:str?)
# the path on your image.host to your default nonprofit image
required(:nonprofit).filled(:str?)
# the path on your image.host to your default campaign background image
required(:campaign).filled(:str?)
end
end
required(:mailer).schema do
# an action mailer delivery method
# Default is sendmail
required(:delivery_method).filled(:str?)
# SMTP server address
# Default is localhost
required(:address).filled(:str?)
# Port for SMTP server
# Default is 25
required(:port).filled(:int?)
# Default host for links in email
# Default is http://localhost
required(:host).filled(:str?)
end
required(:cdn).schema do
# URL for your CDN for assets. Usually this is just your url
# Default is http://localhost:8080
required(:url).filled(:str?)
end
required(:payment_provider).schema do
# Your stripe public key
# Default is STRIPE_API_PUBLIC ENV variable
required(:stripe_public_key).filled(:str?)
# Your Stripe_private key
# Default is STRIPE_API_PRIVATE ENV variable
required(:stripe_private_key).filled(:str?)
# Whether you want to use the Stripe v2 js file instead of
# of the open source replacement
# Default is false
optional(:stripe_proprietary_v2_js).filled(:bool?)
# Whether you want to use Stripe Connect so that every nonprofit account to be
# associated account of a main Stripe account. (Like CommitChange)
# Default is false
optional(:stripe_connect).filled(:bool?)
end
optional(:maps).schema do
# the map provider to use. Currently that's just Google Maps or nothing
# Default is nil
optional(:provider).value(included_in?: ['google', nil])
optional(:options).schema do
# key for your google maps instance
optional(:key).filled(:str?)
end
end
required(:page_editor).schema do
# The editor used for editing nonprofit, campaign
# and event pages and some email templates
# Default is 'quill'
required(:editor).value(included_in?: %w[quill froala])
optional(:editor_options).schema do
# Froala Key if your use froala
# Default is nil (you need to get a key)
required(:froala_key).filled(:str?)
end
end
required(:source_tokens).schema do
# The max number of times a source token can be used before expiring
# Default is 1
required(:max_uses).filled(:int?)
# The time in seconds before a source token expires regardless if used max_time
# Default is 1200 (20 minutes)
required(:expiration_time).filled(:int?)
# event donation source tokens are unique.
# The idea is someone may want to donate multiple times at an event without
# staff needing to enter their info again. Additionally, they
# may want to do it after the event without staff
# needing to reenter info
required(:event_donation_source).schema do
# max number of times an event source toiken can be used before expiring
# Default is 20
required(:max_uses).filled(:int?)
# The time (in seconds) after an event ends that this token can be used.
# Default is 1728000 (20 days)
required(:time_after_event).filled(:int?)
end
end
# sets the default language for the UI
required(:language).filled(:str?)
# sets the list of locales available
required(:available_locales).each(:str?)
# your default language needs to be in the available locales
rule(make_sure_language_in_locales: %i[language available_locales]) do |language, available_locales|
language.included_in?(available_locales)
end
# TODO: have a way to validate the available_locales are actually available translations
# Whether to show state fields in the donation wizard
optional(:show_state_fields).filled(:bool?)
required(:intntl).schema do
# the supporter currencies for the site as abbreviations
required(:currencies).each(:str?)
# the definition of the currencies
required(:all_currencies).each do
# each currency must have the following
# the unit. For 'usd', this would be "dollars"
required(:unit).filled(:str?)
# the abbreviation of the currency. For 'usd', this would be "usd"
required(:abbv).filled(:str?)
# the subunit of the currency. For 'usd', this would be "cents"
required(:subunit).filled(:str?)
# the currency symbol of the currency. For 'usd', this would be "$"
required(:symbol).filled(:str?)
required(:format).filled(:str?)
end
# an array of country codes to override the default set of countries
# If not set, the default is the list of countries in the class ISO3166
# from the countries gem
optional(:all_countries).each(:str?)
# additional countries to add to the country list?
optional(:other_country).filled(:str?)
# Xavier, I need you document this :)
optional(:integration)
end
required(:default_bp).schema do
# the id of the default billing plan
# Default is 1 (which is seeded)
required(:id).filled(:int?)
end
# whether nonprofits must be vetted before they can use the service.
optional(:nonprofits_must_be_vetted).filled(:bool?)
optional(:terms_and_privacy).schema do
# the url to the terms of use of this Houdini Project instance
optional(:terms_url).filled(:str?)
# the url to the privacy policy of this Houdini Project instance
optional(:privacy_url).filled(:str?)
# the url to the help page of this Houdini Project instance
optional(:help_url).filled(:str?)
# the url to the about page of this Houdini Project instance
optional(:about_url).filled(:str?)
end
# complete, corresponding source
optional(:ccs).schema do
optional(:ccs_method).value(included_in?: %w[local_tar_gz github])
# only used for github
# NOTE: for github you need to have the hash of the corresponding source in $RAILS_ROOT/CCS_HASH
optional(:options).schema do
# the account of the repository to find the code
required(:account).filled(:str?)
# the name of the repo to find the code
required(:repo).filled(:str?)
end
end
# the settings to get into maintenance_mode
optional(:maintenance).schema do
# true if you want to be in maintenance mode, otherwise false
optional(:maintenance_mode).filled(:bool?)
# the token you pass into /users/sign_in to actually get to
# a signin page during maintenance mode
optional(:maintenance_token).filled(:str?)
# the url, absolute or relative, that visitors should be redirected to
optional(:maintenance_page).filled(:str?)
end
# the url for your button. As a default, it takes what's in CDN.url
optional(:button_domain).schema do
required(:url).filled?(:str)
end
# the domain for your api. Usually will be your CDN.url
optional(:api_domain).schema do
required(:url).filled?(:str)
end
end
Settings.reload!
# Initialize the rails application
Rails.application.initialize!

View file

@ -66,6 +66,11 @@ Rails.application.configure do
config.log_level = :debug
config.action_mailer.default_url_options = {host: 'http://localhost:5000'}
# don't load factories in development
config.factory_bot.definition_file_paths = []
config.dependency_loading = true if $rails_rake_task
config.middleware.use I18n::JS::Middleware

View file

@ -1,6 +0,0 @@
# License: CC0-1.0
mailer:
delivery_method: "smtp"
address: "localhost"
port: 1025
host: "localhost:8080"

View file

@ -1,7 +0,0 @@
# License: CC0-1.0
mailer:
delivery_method: "aws_ses"
host: "commitchange.com"
cdn:
url: "--cloudfront uri--"

View file

@ -1,4 +0,0 @@
# License: CC0-1.0
mailer:
delivery_method: "aws_ses"
host: "commitchange.com"

View file

@ -1,51 +0,0 @@
# License: CC0-1.0
general:
name: 'CommitChange'
devise:
mailer_sender: "support@commitchange.com"
mailer:
default_from: "CommitChange Team <support@commitchange.com>"
email: "support@commitchange.com"
default_bp:
percentage_fee: 0.020
id: 40
intntl:
currencies: ["usd"]
all_currencies:
- unit: "dollars"
subunit: "cents"
symbol: "$"
abbv: "usd"
format: "%u%n"
language: "en"
available_locales: ["en"]
show_state_field: true
payment_provider:
stripe_connect: true
stripe_proprietary_v2_js: true
maps:
provider: "google"
page_editor:
editor: 'froala'
editor_options:
froala_key: <%= Settings.page_editor.editor_options.froala_key %>
aws:
region: us-west-1
bucket: commitchange
default_bp:
percentage_fee: 0.020
id: 40
#image:
# host: https://s3-us-west-1.amazonaws.com/commitchange

View file

@ -1,13 +0,0 @@
# License: CC0-1.0
mailer:
delivery_method: "sendmail"
address: "localhost"
port: 25
host: "cc.wemove.eu"
cdn:
url: "https://cc.wemove.eu"
payment_provider:
stripe_public_key: <%= ENV['STRIPE_API_PUBLIC'] %>
stripe_private_key: <%= ENV['STRIPE_API_KEY'] %>

View file

@ -1,16 +0,0 @@
# License: CC0-1.0
mailer:
delivery_method: "sendmail"
address: "localhost"
port: 25
host: "cc.wemove.eu"
cdn:
url: "https://cc.wemove.eu"
payment_provider:
# stripe_public_key: <%= ENV['STRIPE_TEST_API_PUBLIC'] %>
# stripe_private_key: <%= ENV['STRIPE_TEST_API_KEY'] %>
stripe_public_key: <%= ENV['STRIPE_API_PUBLIC'] %>
stripe_private_key: <%= ENV['STRIPE_API_KEY'] %>

View file

@ -1,4 +0,0 @@
# License: CC0-1.0
mailer:
delivery_method: "aws_ses"
host: "cc.wemove.eu"

View file

@ -1,61 +0,0 @@
# License: CC0-1.0
general:
name: 'WeMove'
default:
image:
profile: /images/fallback/wemove.min.svg
nonprofit: /images/fallback/wemove.min.svg
campaign: /fallback/default-campaign-background.jpg
image:
host: https://s3.eu-central-1.amazonaws.com/commitchange-wemove/
region: eu-central-1
mailer:
default_from: "WeMove Team <info@wemove.eu>"
email: "info@wemove.eu"
devise:
mailer_sender: "donation@wemove.eu"
payment_provider:
stripe_connect: false
intntl:
currencies: ["eur"]
eur:
unit: "euro"
subunit: "cents"
symbol: "€"
abbv: "eur"
format: "%n%u"
gbp:
unit: "pound"
subunit: "cents"
symbol: "£"
abbv: "gbp"
format: "%n%u"
pln:
unit: "złoty"
subunit: "groszy"
symbol: "zł"
abbv: "pln"
format: "%n%u"
all_countries: [AL, AT, BE, BG, CH, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, HR, HU, IE, IS, IT, LT, LU, LV, ME, MK, MT, NL, 'NO', PL, PT, RO, RS, SE, SI, SK, TR]
other_country: ZZ
integration:
type: "civic_crm"
host: "lem.wemove.eu"
vhost: "data_api"
user: "commitchange"
password: "<%= ENV.fetch('CIVIC_CRM_RABBITMQ_PASSWORD') %>"
exchange: "commitchange"
routing_key: "commitchange.donations"
language: "en"
available_locales: ["en", "fr", "de","it","pl","es", "ro"]
show_state_field: false

View file

@ -1,39 +0,0 @@
# frozen_string_literal: true
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
Config.setup do |config|
# Name of the constant exposing loaded settings
config.const_name = 'Settings'
config.use_env = true
# Ability to remove elements of the array set in earlier loaded settings file. For example value: '--'.
#
# config.knockout_prefix = nil
# Overwrite arrays found in previously loaded settings file. When set to `false`, arrays will be merged.
#
# config.overwrite_arrays = true
# Load environment variables from the `ENV` object and override any settings defined in files.
#
# config.use_env = false
# Define ENV variable prefix deciding which variables to load into config.
#
# config.env_prefix = 'Settings'
# What string to use as level separator for settings loaded from ENV variables. Default value of '.' works well
# with Heroku, but you might want to change it for example for '__' to easy override settings from command line, where
# using dots in variable names might not be allowed (eg. Bash).
#
# config.env_separator = '.'
# Ability to process variables names:
# * nil - no change
# * :downcase - convert to lower case
#
# config.env_converter = :downcase
# Parse numeric values as integers instead of strings.
#
# config.env_parse_values = true
end

View file

@ -7,7 +7,7 @@ Devise.setup do |config|
# ==> Mailer Configuration
# Configure the e-mail address which will be shown in Devise::Mailer,
# note that it will be overwritten if you use your own mailer class with default "from" parameter.
config.mailer_sender = Settings.devise.mailer_sender
config.mailer_sender = Houdini.support_email
# Configure the class responsible to send e-mails.
# config.mailer = "Devise::Mailer"

View file

@ -1,5 +1,4 @@
# frozen_string_literal: true
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
I18n.available_locales = Settings.available_locales
Rails.application.config.i18n.fallbacks = [I18n.default_locale]

View file

@ -3,4 +3,6 @@
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
require 'stripe'
Stripe.api_key = Settings.payment_provider.stripe_private_key
#Stripe.api_key = Houdini.payment_providers.stripe.stripe.private_key
Rails.application.config.houdini.support_email = "support@email.com"

View file

@ -54,7 +54,7 @@ available_locales: ["en"]
show_state_field: true
payment_provider:
stripe_connect: true
connect: true
stripe_proprietary_v2_js: false

View file

@ -1,69 +0,0 @@
# License: CC0-1.0
general:
name: Houdini Project
logo: "logos/houdini_project_bug.svg"
logo_full: "logos/houdini_project_full.svg"
poweredby_logo: "logos/houdini_project_rectangle_150.png"
default:
image:
# profile: "/images/fallback/wemove.min.svg"
# nonprofit: "/images/fallback/wemove.min.svg"
# campaign: "/fallback/default-campaign-background.jpg"
profile: "public/images/fallback/default-profile.png"
nonprofit: "public/images/fallback/default-nonprofit.png"
campaign: "public/fallback/default-campaign-background.jpg"
mailer:
delivery_method: "sendmail"
address: "localhost"
port: 25
host: "http://localhost"
cdn:
url: "http://localhost:5000"
payment_provider:
stripe_connect: false
stripe_public_key: <%= ENV['STRIPE_API_PUBLIC'] %>
stripe_private_key: <%= ENV['STRIPE_API_KEY'] %>
stripe_proprietary_v2_js: false
default_bp:
id: 1
devise:
mailer_sender: 'fake@fake.fake'
page_editor:
editor: 'quill'
language: 'en'
available_locales: ['en', 'de']
intntl:
currencies: ["usd"]
all_currencies:
- unit: "dollars"
subunit: "cents"
symbol: "$"
abbv: "usd"
format: "%u%n"
- unit: "euro"
subunit: "cents"
symbol: "€"
abbv: "eur"
format: "%n%u"
source_tokens:
max_uses: 1
expiration_time: 1200
event_donation_source:
time_after_event: 1728000
max_uses: 20
nonprofits_must_be_vetted: false
api_domain:
url: "http://localhost:5000"

View file

@ -16,4 +16,6 @@ Gem::Specification.new do |spec|
spec.files = Dir["{app,config,db,lib}/**/*", "LICENSE", "AGPL-3.0.txt", "GPL-3.0.txt", "LGPL-3.0.txt", "Rakefile", "README.md"]
spec.add_dependency "rails", "~> 6.0.3", ">= 6.0.3.1"
spec.add_development_dependency 'rspec', '~> 3.9.0'
spec.add_development_dependency 'rspec-rails', '~> 4.0.0'
end

View file

@ -4,5 +4,32 @@
require "houdini/railtie"
module Houdini
# Your code goes here...
extend ActiveSupport::Autoload
autoload :Ccs
autoload :Maintenance
autoload :Intl
autoload :PaymentProvider
mattr_accessor :intl, :maintenance, :ccs
mattr_accessor :general, default: {}
mattr_accessor :defaults, default: {}
mattr_accessor :payment_providers, default: {}
mattr_accessor :maps, default: {}
mattr_accessor :default_bp, default: {}
mattr_accessor :page_editor, default: {}
mattr_accessor :source_tokens, default: {}
mattr_accessor :show_state_fields, default: true
mattr_accessor :nonprofits_must_be_vetted, default: false
mattr_accessor :terms_and_privacy, default: {}
mattr_accessor :button_host
mattr_accessor :support_email
end

Some files were not shown because too many files have changed in this diff Show more