Improve branding mechanisms

This commit is contained in:
Hugo Peixoto 2023-09-20 14:19:35 +01:00
parent dccad36474
commit dcc6d1a991
35 changed files with 217 additions and 115 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

View File

@ -15,13 +15,10 @@ main {
.banner { .banner {
width: 100%; width: 100%;
height: 30px;
padding: 15px; padding: 15px;
background-image: url(logo.svg);
background-size: auto 30px; background-size: auto 30px;
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
background-color: #041952;
} }
footer { footer {

View File

@ -1,34 +1,9 @@
module Config module Config
def self.organization_full_name class <<self
"ANSOL - Associação Nacional para o Software Livre" if ENV.fetch("BRANDING") == "d3"
include Config::D3
else
include Config::Ansol
end end
def self.organization_website
"https://ansol.org"
end
def self.regular_payment_value
30
end
def self.reduced_payment_value
6
end
def self.ifthenpay_payment_title
"Quotas ANSOL"
end
def self.payment_iban
"PT50 0035 2178 00027478430 14"
end
def self.payment_proof_email
"direccao@ansol.org"
end
def self.reduced_payment_description
"Caso queiras usufruir da quota reduzida de 6.00€ para estudantes, pessoas
desempregadas ou reformadas, envia-nos um comprovativo desse estatuto."
end end
end end

60
app/lib/config/ansol.rb Normal file
View File

@ -0,0 +1,60 @@
module Config
module Ansol
def organization_short_name
"ANSOL"
end
def organization_full_name
"ANSOL - Associação Nacional para o Software Livre"
end
def organization_website
"https://ansol.org"
end
def regular_payment_value
30
end
def reduced_payment_value
6
end
def full_rights_vesting_period
6.months
end
def payment_pending_grace_period
90.days
end
def ifthenpay_payment_title
"Quotas ANSOL"
end
def payment_iban
"PT50 0035 2178 00027478430 14"
end
def payment_proof_email
"direccao@ansol.org"
end
def reduced_payment_description
"Caso queiras usufruir da quota reduzida de 6.00€ para estudantes, pessoas
desempregadas ou reformadas, envia-nos um comprovativo desse estatuto."
end
def header_color
"white"
end
def header_background_color
"#041952"
end
def organization_logo_url
"https://#{ENV['BASE_HOST']}/logo.png"
end
end
end

60
app/lib/config/d3.rb Normal file
View File

@ -0,0 +1,60 @@
module Config
module D3
def organization_short_name
"D3"
end
def organization_full_name
"Associação D3 - Defesa dos Direitos Digitais"
end
def organization_website
"https://direitosdigitais.pt"
end
def regular_payment_value
32
end
def reduced_payment_value
16
end
def full_rights_vesting_period
1.year
end
def payment_pending_grace_period
120.days
end
def ifthenpay_payment_title
"Quotas D3"
end
def payment_iban
"PT50 0033 0000 45508899562 05"
end
def payment_proof_email
"direccao@direitosdigitais.pt"
end
def reduced_payment_description
"Caso queiras usufruir da quota reduzida de 6.00€ para estudantes, pessoas
desempregadas ou reformadas, envia-nos um comprovativo desse estatuto."
end
def header_color
"#60f163"
end
def header_background_color
"#424242"
end
def organization_logo_url
"https://direitosdigitais.pt/templates/g5_hydrogen/custom/images/d3/d3-logo/logo-d3-transparente.png"
end
end
end

View File

@ -1,58 +1,70 @@
class NotificationMailer < ApplicationMailer class NotificationMailer < ApplicationMailer
# Subject can be set in your I18n file at config/locales/en.yml default to: ->() { @member.email }
# with the following lookup:
#
# en.notification_mailer.expiration_in_60d.subject
#
def expiration_in_60d def expiration_in_60d
set_notification set_notification
mail to: @notification.member.email mail
end end
def expiration_in_30d def expiration_in_30d
set_notification set_notification
mail to: @notification.member.email mail
end end
def expired def expired
set_notification set_notification
mail to: @notification.member.email mail
end end
def expired_30d_ago def expired_30d_ago
set_notification set_notification
mail to: @notification.member.email mail
end end
def expired_60d_ago def expired_60d_ago
set_notification set_notification
mail to: @notification.member.email mail
end end
def cancelled def cancelled
set_notification set_notification
mail to: @notification.member.email mail
end end
def registration def registration
@member = params[:member] set_member
@payment = @member.create_payment mail
mail to: @member.email
end end
def first_payment_confirmation def first_payment_confirmation
@contribution = params[:contribution] set_contribution
mail to: @contribution.member.email mail
end end
def payment_renewal_confirmation def payment_renewal_confirmation
@contribution = params[:contribution] set_contribution
mail to: @contribution.member.email mail
end end
private private
def set_notification def set_notification
@notification = params[:notification] @notification = params[:notification]
@member = @notification.member
@payment = @notification.member.create_payment @payment = @notification.member.create_payment
end end
def set_contribution
@contribution = params[:contribution]
@member = @contribution.member
end
def set_member
@member = params[:member]
@payment = @member.create_payment
end
def default_i18n_subject
mailer_scope = self.class.mailer_name.tr("/", ".")
I18n.t(:subject, scope: [mailer_scope, action_name], organization_short_name: Config.organization_short_name)
end
end end

View File

@ -14,11 +14,11 @@ class Member < ApplicationRecord
end end
def cancelled_on def cancelled_on
expires_on + 90.days expires_on + Config.payment_pending_grace_period
end end
def obtains_full_rights_on def obtains_full_rights_on
joined_on + 6.months joined_on + Config.full_rights_vesting_period
end end
def reset_status! def reset_status!
@ -26,6 +26,7 @@ class Member < ApplicationRecord
end end
def employed? def employed?
# normal is deprecated, here for retrocompatibility reasons
category == "normal" || category == "employed" category == "normal" || category == "employed"
end end
@ -111,7 +112,7 @@ class Member < ApplicationRecord
{ to_be_sent_on: expires_on + 0.days, template: "expired" }, { to_be_sent_on: expires_on + 0.days, template: "expired" },
{ to_be_sent_on: expires_on + 30.days, template: "expired_30d_ago" }, { to_be_sent_on: expires_on + 30.days, template: "expired_30d_ago" },
{ to_be_sent_on: expires_on + 60.days, template: "expired_60d_ago" }, { to_be_sent_on: expires_on + 60.days, template: "expired_60d_ago" },
{ to_be_sent_on: expires_on + 90.days, template: "cancelled" }, { to_be_sent_on: expires_on + Config.payment_pending_grace_period, template: "cancelled" },
].reject do |n| ].reject do |n|
n[:to_be_sent_on].before?(from) || dates.include?(n[:to_be_sent_on]) n[:to_be_sent_on].before?(from) || dates.include?(n[:to_be_sent_on])
end.each do |n| end.each do |n|

View File

@ -11,7 +11,9 @@
</head> </head>
<body> <body>
<div class='banner'></div> <div class='banner' style="background-color: <%= Config.header_background_color %>;">
<img src="<%= Config.organization_logo_url %>" style="margin: 0px auto; max-width: 400px; display: block; color: <%= Config.header_color %>" alt="<%= Config.organization_full_name %>" />
</div>
<% if signed_in? %> <% if signed_in? %>
<nav> <nav>
<ul> <ul>

View File

@ -9,8 +9,8 @@
<body> <body>
<div style="max-width: 600px;"> <div style="max-width: 600px;">
<div style="background-color: #041952; padding: 20px"> <div style="background-color: <%= Config.header_background_color %>; padding: 20px; text-align: center;">
<img src="<%= image_url("ansol-logo-white.png") %>" style="margin: 0px auto; max-width: 400px; display: block; color: white" alt="ANSOL" /> <img src="<%= Config.organization_logo_url %>" style="margin: 0px auto; max-width: 400px; display: block; color: <%= Config.header_color %>" alt="<%= Config.organization_full_name %>" />
</div> </div>
<%= yield %> <%= yield %>

View File

@ -1,4 +1,4 @@
<p> <p>
Saudações livres,<br> Saudações livres,<br>
Direcção da ANSOL Direcção da <%= Config.organization_short_name %>
</p> </p>

View File

@ -1,2 +1,2 @@
Saudações livres, Saudações livres,
Direcção da ANSOL Direcção da <%= Config.organization_short_name %>

View File

@ -0,0 +1,3 @@
<p>
<%= t('notification_mailer.greetings', display_name: member.display_name) %>
</p>

View File

@ -0,0 +1 @@
<%= t('notification_mailer.greetings', display_name: member.display_name) %>

View File

@ -1,10 +1,8 @@
<p> <%= render partial: "greetings", locals: { member: @member } %>
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %>
</p>
<p> <p>
Como não recebemos o pagamento anual das quotas da ANSOL, a tua inscrição foi Como não recebemos o pagamento anual das quotas da <%= Config.organization_short_name %>,
cancelada. a tua inscrição foi cancelada.
</p> </p>
<p> <p>
@ -24,7 +22,4 @@
rápido possível. rápido possível.
</p> </p>
<p> <%= render partial: "cheers" %>
Saudações livres,<br>
Direcção da ANSOL
</p>

View File

@ -1,7 +1,7 @@
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %> <%= render partial: "greetings", locals: { member: @member } %>
Como não recebemos o pagamento anual das quotas da ANSOL, a tua inscrição foi Como não recebemos o pagamento anual das quotas da <%= Config.organization_short_name %>,
cancelada. a tua inscrição foi cancelada.
Vamos revogar em breve os teus acessos à infraestrutura da associação exclusiva Vamos revogar em breve os teus acessos à infraestrutura da associação exclusiva
para membros (nextcloud, mailing list, sala de Matrix, etc). para membros (nextcloud, mailing list, sala de Matrix, etc).
@ -13,5 +13,4 @@ Caso consideres que estás a receber esta mensagem indevidamente, contacta-nos
através do endereço direccao@ansol.org para resolvermos a situação o mais através do endereço direccao@ansol.org para resolvermos a situação o mais
rápido possível. rápido possível.
Saudações livres, <%= render partial: "cheers" %>
Direcção da ANSOL

View File

@ -1,4 +1,4 @@
<p><%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %></p> <%= render partial: "greetings", locals: { member: @member } %>
<p> <p>
A tua inscrição como membro da ANSOL expira em 30 dias. A tua inscrição como membro da ANSOL expira em 30 dias.

View File

@ -1,4 +1,4 @@
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %> <%= render partial: "greetings", locals: { member: @member } %>
A tua inscrição como membro da ANSOL expira em 30 dias. A tua inscrição como membro da ANSOL expira em 30 dias.

View File

@ -1,4 +1,4 @@
<p><%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %></p> <%= render partial: "greetings", locals: { member: @member } %>
<p> <p>
A tua inscrição como membro da ANSOL expira em 60 dias. A tua inscrição como membro da ANSOL expira em 60 dias.

View File

@ -1,4 +1,4 @@
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %> <%= render partial: "greetings", locals: { member: @member } %>
A tua inscrição como membro da ANSOL expira em 60 dias. A tua inscrição como membro da ANSOL expira em 60 dias.

View File

@ -1,6 +1,4 @@
<p> <%= render partial: "greetings", locals: { member: @member } %>
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %>
</p>
<p> <p>
A tua inscrição como membro da ANSOL vai ser cancelada dentro de 30 dias por A tua inscrição como membro da ANSOL vai ser cancelada dentro de 30 dias por

View File

@ -1,4 +1,4 @@
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %> <%= render partial: "greetings", locals: { member: @member } %>
A tua inscrição como membro da ANSOL expirou hoje e não recebemos a tua A tua inscrição como membro da ANSOL expirou hoje e não recebemos a tua
contribuição anual. contribuição anual.

View File

@ -1,6 +1,4 @@
<p> <%= render partial: "greetings", locals: { member: @member } %>
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %>
</p>
<p> <p>
A tua inscrição como membro da ANSOL expirou há um mês e ainda não recebemos A tua inscrição como membro da ANSOL expirou há um mês e ainda não recebemos

View File

@ -1,4 +1,4 @@
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %> <%= render partial: "greetings", locals: { member: @member } %>
A tua inscrição como membro da ANSOL expirou há um mês e ainda não recebemos A tua inscrição como membro da ANSOL expirou há um mês e ainda não recebemos
a tua contribuição anual. a tua contribuição anual.

View File

@ -1,6 +1,4 @@
<p> <%= render partial: "greetings", locals: { member: @member } %>
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %>
</p>
<p> <p>
A tua inscrição como membro da ANSOL vai ser cancelada dentro de 30 dias por A tua inscrição como membro da ANSOL vai ser cancelada dentro de 30 dias por

View File

@ -1,4 +1,4 @@
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %> <%= render partial: "greetings", locals: { member: @member } %>
A tua inscrição como membro da ANSOL expirou há 60 dias e ainda não recebemos A tua inscrição como membro da ANSOL expirou há 60 dias e ainda não recebemos
a tua contribuição anual. a tua contribuição anual.

View File

@ -1,4 +1,4 @@
<p><%= t('notification_mailer.greetings', display_name: @contribution.member.display_name) %></p> <%= render partial: "greetings", locals: { member: @member } %>
<p> <p>
Bem-vinde à ANSOL! Confirmamos que recebemos o teu pagamento, e tua inscrição Bem-vinde à ANSOL! Confirmamos que recebemos o teu pagamento, e tua inscrição

View File

@ -1,4 +1,4 @@
<%= t('notification_mailer.greetings', display_name: @contribution.member.display_name) %> <%= render partial: "greetings", locals: { member: @member } %>
Bem-vinde à ANSOL! Confirmamos que recebemos o teu pagamento, e tua inscrição Bem-vinde à ANSOL! Confirmamos que recebemos o teu pagamento, e tua inscrição
está válida até <%= @contribution.member.expires_on %>. está válida até <%= @contribution.member.expires_on %>.

View File

@ -1,4 +1,4 @@
<p><%= t('notification_mailer.greetings', display_name: @contribution.member.display_name) %></p> <%= render partial: "greetings", locals: { member: @member } %>
<p> <p>
Recebemos o teu pagamento. Obrigado por continuares a apoiar a ANSOL. A tua Recebemos o teu pagamento. Obrigado por continuares a apoiar a ANSOL. A tua

View File

@ -1,4 +1,4 @@
<%= t('notification_mailer.greetings', display_name: @contribution.member.display_name) %> <%= render partial: "greetings", locals: { member: @member } %>
Recebemos o teu pagamento. Obrigado por continuares a apoiar a ANSOL. A tua Recebemos o teu pagamento. Obrigado por continuares a apoiar a ANSOL. A tua
inscrição foi renovada e está válida até <%= @contribution.member.expires_on %>. inscrição foi renovada e está válida até <%= @contribution.member.expires_on %>.

View File

@ -1,4 +1,4 @@
<p><%= t('notification_mailer.greetings', display_name: @member.display_name) %></p> <%= render partial: "greetings", locals: { member: @member } %>
<p> <p>
Obrigado pelo interesse em fazer parte da ANSOL. A tua candidatura foi Obrigado pelo interesse em fazer parte da ANSOL. A tua candidatura foi

View File

@ -1,4 +1,4 @@
<%= t('notification_mailer.greetings', display_name: @member.display_name) %> <%= render partial: "greetings", locals: { member: @member } %>
Obrigado pelo interesse em fazer parte da ANSOL. A tua candidatura foi aprovada Obrigado pelo interesse em fazer parte da ANSOL. A tua candidatura foi aprovada
pela direcção. pela direcção.

View File

@ -1,4 +1,7 @@
en: en:
option:
positive: Yes
negative: No
navigation: navigation:
members: "Member list" members: "Member list"
board: "Board" board: "Board"
@ -68,21 +71,21 @@ en:
notification_mailer: notification_mailer:
payment_cta: "Pay now" payment_cta: "Pay now"
expiration_in_60d: expiration_in_60d:
subject: "ANSOL - Pagamento anual de quotas" subject: "%{organization_short_name} - Yearly membership renewal"
title: "Pagamento anual de quotas"
expiration_in_30d: expiration_in_30d:
subject: "ANSOL - Prazo para pagamento de quotas vence em 30 dias" subject: "%{organization_short_name} - Your membership expires in 30 days"
expired: expired:
subject: "ANSOL - Pagamento de quotas pendente" subject: "%{organization_short_name} - Membership payment pending"
expired_30d_ago: expired_30d_ago:
subject: "ANSOL - Pagamento de quotas em atraso" subject: "%{organization_short_name} - Membership payment expired"
expired_60d_ago: expired_60d_ago:
subject: "ANSOL - Suspensão de inscrição iminente" subject: "%{organization_short_name} - Your membership is about to be suspended"
first_payment_confirmation: first_payment_confirmation:
subject: "ANSOL - Payment received: Welcome!" subject: "%{organization_short_name} - Payment received: Welcome!"
payment_renewal_confirmation: payment_renewal_confirmation:
subject: "ANSOL - Payment received" subject: "%{organization_short_name} - Payment received"
registration: registration:
subject: "ANSOL - Registration approved: Payment required" subject: "%{organization_short_name} - Registration approved: Payment required"
cancelled: cancelled:
subject: "ANSOL - Inscrição cancelada" subject: "%{organization_short_name} - Membership suspended"
greetings: "Dear %{display_name}"

View File

@ -105,23 +105,23 @@ pt:
notification_mailer: notification_mailer:
payment_cta: "Pagar quotas" payment_cta: "Pagar quotas"
expiration_in_60d: expiration_in_60d:
subject: "ANSOL - Pagamento anual de quotas" subject: "%{organization_short_name} - Pagamento anual de quotas"
expiration_in_30d: expiration_in_30d:
subject: "ANSOL - Inscrição expira em 30 dias" subject: "%{organization_short_name} - Inscrição expira em 30 dias"
expired: expired:
subject: "ANSOL - Pagamento de quotas pendente" subject: "%{organization_short_name} - Pagamento de quotas pendente"
expired_30d_ago: expired_30d_ago:
subject: "ANSOL - Pagamento de quotas em atraso" subject: "%{organization_short_name} - Pagamento de quotas em atraso"
expired_60d_ago: expired_60d_ago:
subject: "ANSOL - Suspensão de inscrição iminente" subject: "%{organization_short_name} - Suspensão de inscrição iminente"
first_payment_confirmation: first_payment_confirmation:
subject: "ANSOL - Pagamento recebido: Mensagem de boas vindas" subject: "%{organization_short_name} - Pagamento recebido: Mensagem de boas vindas"
payment_renewal_confirmation: payment_renewal_confirmation:
subject: "ANSOL - Pagamento de quotas recebido" subject: "%{organization_short_name} - Pagamento de quotas recebido"
registration: registration:
subject: "ANSOL - Inscrição aprovada: Pagamento inicial de quotas" subject: "%{organization_short_name} - Inscrição aprovada: Pagamento inicial de quotas"
cancelled: cancelled:
subject: "ANSOL - Inscrição cancelada" subject: "%{organization_short_name} - Inscrição cancelada"
greetings: "Car(a/o/e) %{display_name}" greetings: "Car(a/o/e) %{display_name}"
sessions: sessions:
new: new:

BIN
public/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB