From 5c5dc7e45e43f68416335733a447055052fd4759 Mon Sep 17 00:00:00 2001 From: anish Date: Tue, 25 Apr 2023 18:58:41 +0530 Subject: [PATCH 01/17] Email notification templates draft Pending changes: - Write macros for hero image, subject line preview text and buttons. - Revise layout of update email template. - Update cancel registration button URL. --- .../comment_received_email.html.jinja2 | 62 ++- .../comment_report_received_email.html.jinja2 | 48 +- .../notifications/layout_email.html.jinja2 | 512 ++++++++++++++++-- ...ation_membership_granted_email.html.jinja2 | 46 +- ...ation_membership_revoked_email.html.jinja2 | 46 +- ..._crew_membership_granted_email.html.jinja2 | 46 +- ..._crew_membership_revoked_email.html.jinja2 | 46 +- .../project_starting_email.html.jinja2 | 65 ++- .../proposal_received_email.html.jinja2 | 54 +- .../proposal_submitted_email.html.jinja2 | 54 +- .../notifications/rsvp_no_email.html.jinja2 | 52 +- .../notifications/rsvp_yes_email.html.jinja2 | 62 ++- .../update_new_email.html.jinja2 | 54 +- .../user_password_set_email.html.jinja2 | 53 +- 14 files changed, 1063 insertions(+), 137 deletions(-) diff --git a/funnel/templates/notifications/comment_received_email.html.jinja2 b/funnel/templates/notifications/comment_received_email.html.jinja2 index e8b456ae0..1b07858af 100644 --- a/funnel/templates/notifications/comment_received_email.html.jinja2 +++ b/funnel/templates/notifications/comment_received_email.html.jinja2 @@ -1,19 +1,57 @@ {%- extends "notifications/layout_email.html.jinja2" -%} {%- block content -%} + {# Hero Image Centered : BEGIN #} + + + alt_text + + + {# Hero Image Centered : END #} - {%- if view.notification.document_type == 'project' -%} -

{{ view.document.joined_title }}

- {%- elif view.notification.document_type == 'proposal' -%} -

{{ view.document.title }}

- {%- elif view.notification.document_type == 'comment' -%} -

{% trans %}You wrote:{% endtrans %}

-
{{ view.document.message }}
- {%- endif %} + {# Email body : BEGIN #} + + +

New comment!

+ {%- if view.notification.document_type == 'project' -%} +

{{ view.document.joined_title }}

+ {%- elif view.notification.document_type == 'proposal' -%} +

{{ view.document.title }}

+ {%- elif view.notification.document_type == 'comment' -%} +

{% trans %}You wrote:{% endtrans %}

+
{{ view.document.message }}
+ {%- endif %} -

{{ view.activity_html() }}

+

{{ view.activity_html() }}

-
{{ view.comment.message }}
- -

{% trans %}View comment{% endtrans %}

+
{{ view.comment.message }}
+ + +
+ + + {# Button : BEGIN #} +
+ + + + + + +
+ +
+ +
+ {#-- Button : END #} + + + {# Email body : END #} {%- endblock content -%} diff --git a/funnel/templates/notifications/comment_report_received_email.html.jinja2 b/funnel/templates/notifications/comment_report_received_email.html.jinja2 index 43b131d43..2a962825a 100644 --- a/funnel/templates/notifications/comment_report_received_email.html.jinja2 +++ b/funnel/templates/notifications/comment_report_received_email.html.jinja2 @@ -1,14 +1,42 @@ -{%- extends "notifications/layout_email.html.jinja2" %} +{%- extends "notifications/layout_email.html.jinja2" -%} {%- block content -%} + {# Hero Image Centered : BEGIN #} + + + alt_text + + + {# Hero Image Centered : END #} -

- {%- trans %}A comment has been reported as spam{% endtrans -%} -

- -

- - {%- trans %}Review comment{% endtrans -%} - -

+ {# Email body : BEGIN #} + + +

Spam alert!

+

+ {%- trans %}A comment has been reported as spam{% endtrans -%} +

+ + +
+ + + {# Button : BEGIN #} +
+ + +
+ {% trans %}Review comment{% endtrans %} +
+ +
+ {#-- Button : END #} + + + {# Email body : END #} {%- endblock content -%} diff --git a/funnel/templates/notifications/layout_email.html.jinja2 b/funnel/templates/notifications/layout_email.html.jinja2 index 1319a4ee9..e506ac44a 100644 --- a/funnel/templates/notifications/layout_email.html.jinja2 +++ b/funnel/templates/notifications/layout_email.html.jinja2 @@ -1,45 +1,485 @@ - - + + + {# utf-8 works for most cases #} + {# Forcing initial-scale shouldn't be necessary #} + {# Use the latest (edge) version of IE rendering engine #} + {# Disable auto-scale in iOS 10 Mail entirely #} + {# Tell iOS not to automatically link certain text strings. #} + + + {# The title tag shows in email notifications, like Android 4.4. #} + + {# What it does: Makes background images in 72ppi Outlook render at correct size. #} + + + {# Outlook / @font-face : BEGIN #} + + {# Desktop Outlook chokes on web font references and defaults to Times New Roman, so we force a safe fallback font. #} + + + {# Outlook / @font-face : END #} + {% block stylesheet -%} - + {# CSS Reset : BEGIN #} + + {# CSS Reset : END #} + + {# Progressive Enhancements : BEGIN #} + + {# Progressive Enhancements : END #} {%- endblock stylesheet %} - - + + {# Element styles : BEGIN #} + + + + +{# + The email background color (#f0f0f0) is defined in three places: + 1. body tag: for most email clients + 2. center tag: for Gmail and Inbox mobile apps and web versions of Gmail, GSuite, Inbox, Yahoo, AOL, Libero, Comcast, freenet, Mail.ru, Orange.fr + 3. mso conditional: For Windows 10 Mail +#} + {%- block jsonld %}{%- if jsonld %} {%- endif %}{%- endblock jsonld %} -
{% block content %}{% endblock content %}
-
{% block footer %} - {%- if view %} -
-

- {{ view.reason_email }} - • - {% trans %}Unsubscribe or manage preferences{% endtrans %} -

- {%- endif %} - {% endblock footer %}
- + +
+ + + {# + Set the email width. Defined in two places: + 1. max-width for all clients except Desktop Windows Outlook, allowing the email to squish on narrow but never go wider than 600px. + 2. MSO tags for Desktop Windows Outlook enforce a 600px width. + #} + + {# Email Footer : BEGIN #} + {% block footer %} + + + + {% endblock footer %}
+ {# Email Footer : END #} + +
+ diff --git a/funnel/templates/notifications/organization_membership_granted_email.html.jinja2 b/funnel/templates/notifications/organization_membership_granted_email.html.jinja2 index 7a4dfbe7f..6674e8081 100644 --- a/funnel/templates/notifications/organization_membership_granted_email.html.jinja2 +++ b/funnel/templates/notifications/organization_membership_granted_email.html.jinja2 @@ -1,10 +1,42 @@ {%- extends "notifications/layout_email.html.jinja2" -%} {%- block content -%} -

{{ view.activity_html() }}

-

- - {%- trans %}See all admins{% endtrans -%} - -

+ {# Hero Image Centered : BEGIN #} + + + alt_text + + + {# Hero Image Centered : END #} + + {# Email body : BEGIN #} + + +

Membership granted!

+

+ {{ view.activity_html() }} +

+ + +
+ + + {# Button : BEGIN #} +
+ + +
+ {% trans %}See all admins{% endtrans %} +
+ +
+ {#-- Button : END #} + + + {# Email body : END #} + {%- endblock content -%} diff --git a/funnel/templates/notifications/organization_membership_revoked_email.html.jinja2 b/funnel/templates/notifications/organization_membership_revoked_email.html.jinja2 index 7a4dfbe7f..35cf24169 100644 --- a/funnel/templates/notifications/organization_membership_revoked_email.html.jinja2 +++ b/funnel/templates/notifications/organization_membership_revoked_email.html.jinja2 @@ -1,10 +1,42 @@ {%- extends "notifications/layout_email.html.jinja2" -%} {%- block content -%} -

{{ view.activity_html() }}

-

- - {%- trans %}See all admins{% endtrans -%} - -

+ {# Hero Image Centered : BEGIN #} + + + alt_text + + + {# Hero Image Centered : END #} + + {# Email body : BEGIN #} + + +

Membership revoked

+

+ {{ view.activity_html() }} +

+ + +
+ + + {# Button : BEGIN #} +
+ + +
+ {% trans %}See all admins{% endtrans %} +
+ +
+ {#-- Button : END #} + + + {# Email body : END #} + {%- endblock content -%} diff --git a/funnel/templates/notifications/project_crew_membership_granted_email.html.jinja2 b/funnel/templates/notifications/project_crew_membership_granted_email.html.jinja2 index f48dbe234..9625c82dc 100644 --- a/funnel/templates/notifications/project_crew_membership_granted_email.html.jinja2 +++ b/funnel/templates/notifications/project_crew_membership_granted_email.html.jinja2 @@ -1,10 +1,42 @@ {%- extends "notifications/layout_email.html.jinja2" -%} {%- block content -%} -

{{ view.activity_html() }}

-

- - {%- trans %}See all crew members{% endtrans -%} - -

+ {# Hero Image Centered : BEGIN #} + + + alt_text + + + {# Hero Image Centered : END #} + + {# Email body : BEGIN #} + + +

Crew membership granted!

+

+ {{ view.activity_html() }} +

+ + +
+ + + {# Button : BEGIN #} +
+ + +
+ {% trans %}See all crew members{% endtrans %} +
+ +
+ {#-- Button : END #} + + + {# Email body : END #} + {%- endblock content -%} diff --git a/funnel/templates/notifications/project_crew_membership_revoked_email.html.jinja2 b/funnel/templates/notifications/project_crew_membership_revoked_email.html.jinja2 index 364066eb7..2a954c9f6 100644 --- a/funnel/templates/notifications/project_crew_membership_revoked_email.html.jinja2 +++ b/funnel/templates/notifications/project_crew_membership_revoked_email.html.jinja2 @@ -1,10 +1,42 @@ {%- extends "notifications/layout_email.html.jinja2" -%} {%- block content -%} -

{{ view.activity_html() }}

-

- - {%- trans %}See all admins{% endtrans -%} - -

+ {# Hero Image Centered : BEGIN #} + + + alt_text + + + {# Hero Image Centered : END #} + + {# Email body : BEGIN #} + + +

Crew membership revoked

+

+ {{ view.activity_html() }} +

+ + +
+ + + {# Button : BEGIN #} +
+ + +
+ {% trans %}See all admins{% endtrans %} +
+ +
+ {#-- Button : END #} + + + {# Email body : END #} + {%- endblock content -%} diff --git a/funnel/templates/notifications/project_starting_email.html.jinja2 b/funnel/templates/notifications/project_starting_email.html.jinja2 index b433d151d..d096e8dc2 100644 --- a/funnel/templates/notifications/project_starting_email.html.jinja2 +++ b/funnel/templates/notifications/project_starting_email.html.jinja2 @@ -1,15 +1,64 @@ {%- extends "notifications/layout_email.html.jinja2" -%} {%- from "notifications/macros_email.html.jinja2" import pinned_update -%} {%- block content -%} + {# Hero Image Centered : BEGIN #} + + + alt_text + + + {# Hero Image Centered : END #} -

- {%- trans project=view.project.joined_title, start_time=view.session.start_at_localized|time -%} - {{ project }} starts at {{ start_time }} - {%- endtrans -%} -

+ {# Email body : BEGIN #} + + +

Session starting soon!

+

+ {%- trans project=view.project.joined_title, start_time=view.session.start_at_localized|time -%} + {{ project }} starts at {{ start_time }} + {%- endtrans -%} +

+ + + + + {# Button : BEGIN #} +
+ + + + + + +
+ +
+ +
+ {#-- Button : END #} + + + {# Email body : END #} -

{% trans %}Join now{% endtrans %}

- -{{ pinned_update(view, view.project) }} + {# Email body footerr : BEGIN #} + {%- if view %} + {{ pinned_update(view, view.rsvp.project) }} + + + + + + + + + {%- endif %} + {# Email body footerr : END #} {%- endblock content -%} diff --git a/funnel/templates/notifications/proposal_received_email.html.jinja2 b/funnel/templates/notifications/proposal_received_email.html.jinja2 index 49d40d6ad..53df21985 100644 --- a/funnel/templates/notifications/proposal_received_email.html.jinja2 +++ b/funnel/templates/notifications/proposal_received_email.html.jinja2 @@ -1,8 +1,50 @@ -{% extends "notifications/layout_email.html.jinja2" %} -{% block content -%} +{%- extends "notifications/layout_email.html.jinja2" -%} +{%- block content -%} + {# Hero Image Centered : BEGIN #} + + + alt_text + + + {# Hero Image Centered : END #} -

{% trans project=project.joined_title, proposal=proposal.title %}Your project {{ project }} has a new submission: {{ proposal }}{% endtrans %}

+ {# Email body : BEGIN #} + + +

New submission!

+

+ {% trans project=project.joined_title, proposal=proposal.title %} + Your project {{ project }} has a new submission: {{ proposal }} + {% endtrans %} +

+ + +
+ + + {# Button : BEGIN #} +
+ + + + + + +
+ +
+ +
+ {#-- Button : END #} + + + {# Email body : END #} -

{% trans %}Submission page{% endtrans %}

- -{%- endblock content %} +{%- endblock content -%} diff --git a/funnel/templates/notifications/proposal_submitted_email.html.jinja2 b/funnel/templates/notifications/proposal_submitted_email.html.jinja2 index b856dc0e6..6668210ef 100644 --- a/funnel/templates/notifications/proposal_submitted_email.html.jinja2 +++ b/funnel/templates/notifications/proposal_submitted_email.html.jinja2 @@ -1,8 +1,50 @@ -{% extends "notifications/layout_email.html.jinja2" %} -{% block content -%} +{%- extends "notifications/layout_email.html.jinja2" -%} +{%- block content -%} + {# Hero Image Centered : BEGIN #} + + + alt_text + + + {# Hero Image Centered : END #} -

{% trans project=project.joined_title, proposal=proposal.title %}You have submitted {{ proposal }} to the project {{ project }}{% endtrans %}

+ {# Email body : BEGIN #} + + +

Proposal sumbitted!

+

+ {% trans project=project.joined_title, proposal=proposal.title %} + You have submitted {{ proposal }} to the project {{ project }} + {% endtrans %} +

+ + +
+ + + {# Button : BEGIN #} +
+ + + + + + +
+ +
+ +
+ {#-- Button : END #} + + + {# Email body : END #} -

{% trans %}View submission{% endtrans %}

- -{%- endblock content %} +{%- endblock content -%} diff --git a/funnel/templates/notifications/rsvp_no_email.html.jinja2 b/funnel/templates/notifications/rsvp_no_email.html.jinja2 index 967f10861..6fc46aff0 100644 --- a/funnel/templates/notifications/rsvp_no_email.html.jinja2 +++ b/funnel/templates/notifications/rsvp_no_email.html.jinja2 @@ -1,8 +1,56 @@ {% extends "notifications/layout_email.html.jinja2" %} {% block content -%} -

{% trans project=view.rsvp.project.joined_title %}You have cancelled your registration for {{ project }}. If this was accidental, you can register again.{% endtrans %}

+ {# Hero image centered : BEGIN #} + + + alt_text + + + {# Hero image centered : END #} -

{% trans %}Project page{% endtrans %}

+ + +

{% trans %}Registration cancelled{% endtrans %}

+

{% trans project=view.rsvp.project.joined_title %}You have cancelled your registration for {{ project }}.
If this was accidental, you can register again.{% endtrans %}


+ + + + + {# Button : BEGIN #} +
+ + + + + + +
+ +
+ +
+ {#-- Button : END #} + + + {# Email body footerr : BEGIN #} + {%- if view %} + + + + + + + + + {%- endif %} + {# Email body footerr : END #} {%- endblock content %} diff --git a/funnel/templates/notifications/rsvp_yes_email.html.jinja2 b/funnel/templates/notifications/rsvp_yes_email.html.jinja2 index 9528aec75..673e93229 100644 --- a/funnel/templates/notifications/rsvp_yes_email.html.jinja2 +++ b/funnel/templates/notifications/rsvp_yes_email.html.jinja2 @@ -2,14 +2,64 @@ {%- from "notifications/macros_email.html.jinja2" import pinned_update -%} {%- block content -%} -

{% trans project=view.rsvp.project.joined_title %}You have registered for {{ project }}{% endtrans %}

+ {# Hero image centered : BEGIN #} + + + alt_text + + + {# Hero image centered : END #} -{% with next_session_at=view.rsvp.project.next_session_at %}{% if next_session_at -%} -

{% trans date_and_time=next_session_at|datetime(view.datetime_format) %}The next session in the schedule starts {{ date_and_time }}{% endtrans %}

-{%- endif %}{% endwith %} + {# Email content : BEGIN #} + + +

{% trans %}Registration confirmed!{% endtrans %}

+

{% trans project=view.rsvp.project.joined_title %}You have registered for {{ project }}{% endtrans %}

+ {% with next_session_at=view.rsvp.project.next_session_at %}{% if next_session_at -%} +

{% trans date_and_time=next_session_at|datetime(view.datetime_format) %}The next session in the schedule starts {{ date_and_time }}{% endtrans %}


+ {%- endif %}{% endwith %} + + -

{% trans %}Project page{% endtrans %}

+ + + {# Button : BEGIN #} +
+ + + + + + +
+ +
+ +
+ {#-- Button : END #} + + + {# Email content : END #} -{{ pinned_update(view, view.rsvp.project) }} + {# Email body footerr : BEGIN #} + {%- if view %} + {{ pinned_update(view, view.rsvp.project) }} + + + + + + + + + {%- endif %} + {# Email body footerr : END #} {%- endblock content -%} diff --git a/funnel/templates/notifications/update_new_email.html.jinja2 b/funnel/templates/notifications/update_new_email.html.jinja2 index 8a5a2a3a1..50dd600ef 100644 --- a/funnel/templates/notifications/update_new_email.html.jinja2 +++ b/funnel/templates/notifications/update_new_email.html.jinja2 @@ -1,12 +1,46 @@ -{% extends "notifications/layout_email.html.jinja2" %} -{% block content %} +{%- extends "notifications/layout_email.html.jinja2" -%} +{%- block content -%} + {# Hero Image Centered : BEGIN #} + + + alt_text + + + {# Hero Image Centered : END #} -

{% trans actor=view.actor.pickername, project=view.update.project.joined_title, project_url=view.update.project.url_for() %}{{ actor }} posted an update in {{ project }}:{% endtrans %}

+ {# Email body : BEGIN #} + + +

New update!

+

+ {% trans actor=view.actor.pickername, project=view.update.project.joined_title, project_url=view.update.project.url_for() %} + {{ actor }} posted an update in {{ project }}: + {% endtrans %} +

+

{{ view.update.title }}

+ {{ view.update.body }} + + +
+ + + {# Button : BEGIN #} +
+ + +
+ {% trans %}Read on the website{% endtrans %} +
+ +
+ {#-- Button : END #} + + + {# Email body : END #} -

{{ view.update.title }}

- -{{ view.update.body }} - -

{% trans %}Read on the website{% endtrans %}

- -{% endblock content %} +{%- endblock content -%} diff --git a/funnel/templates/notifications/user_password_set_email.html.jinja2 b/funnel/templates/notifications/user_password_set_email.html.jinja2 index e8e01b380..cc72a973c 100644 --- a/funnel/templates/notifications/user_password_set_email.html.jinja2 +++ b/funnel/templates/notifications/user_password_set_email.html.jinja2 @@ -1,17 +1,44 @@ -{%- extends "notifications/layout_email.html.jinja2" %} - +{%- extends "notifications/layout_email.html.jinja2" -%} {%- block content -%} -

- {%- trans %}Your password has been updated. If you did this, no further action is necessary.{% endtrans -%} -

- -

- {%- trans %}If this was not authorized, consider resetting with a more secure password. Contact support if further assistance is required.{% endtrans -%} -

+ {# Hero Image Centered : BEGIN #} + + + alt_text + + + {# Hero Image Centered : END #} -

- {% trans %}Reset password{% endtrans %} - {% trans %}Contact support{% endtrans %} -

+ {# Email body : BEGIN #} + + +

Password updated!

+

+ {%- trans %}Your password has been updated. If you did this, no further action is necessary.{% endtrans -%} +

+

+ {%- trans %}If this was not authorized, consider resetting with a more secure password. Contact support if further assistance is required.{% endtrans -%} +

+ + + + + {# Button : BEGIN #} +
+ + +
+ {% trans %}Reset password{% endtrans %} +
+ +
+ {#-- Button : END #} + + + {# Email body : END #} {%- endblock content -%} From 01daacc78c67d368af61607ba830caa53f901172 Mon Sep 17 00:00:00 2001 From: anish Date: Wed, 26 Apr 2023 23:38:19 +0530 Subject: [PATCH 02/17] macro for hero image wip --- funnel/static/img/rsvp_yes_header.jpg | Bin 0 -> 55117 bytes .../notifications/macros_email.html.jinja2 | 8 ++++++++ .../notifications/rsvp_yes_email.html.jinja2 | 8 ++------ 3 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 funnel/static/img/rsvp_yes_header.jpg diff --git a/funnel/static/img/rsvp_yes_header.jpg b/funnel/static/img/rsvp_yes_header.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2980209e991b620fc87d0b0148a7f59c9ce11122 GIT binary patch literal 55117 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

L&Ta=(taouZ&la+9~+HCh4c+KJ#?b z@t=9RY1AXyZklx)-Zbj4_Khrmd;3z?_lHF)X_?2%N~TQsdMWu|M@2s?=;){AeH|38 zYv|~ub0!?C^3t}La*vjsv+aLsbqV&5O+OTUrs=2PT<4~rfiqI668+K9N~Fv8SE7&- zlieK@s#@k96zVQvPNL=%>MmhV#GdHrr{Yg^bW*uV?v9Fn6!%x6kTPZatI= zS0Z1!Iw=pKFWnUU37VgQY4{gUO+OFB-8B4Udri|ygO6*ZQl^+PkCv59e8QiZvkHD@ z%qdj%_eV`XIro3PE1&TH0IHSGKIrMD#Qf|1>G{{)Jv7^&nR-nk<=+{A_&_>o2@=&Y z3iI2i`tSeR00;pA0R}$+{{ZkW_m1)0*zLJdfiXSl(k7Ruv_%;`avx#>c$U7_#O61g z=txTm8qlcP9XUxpvh)7{BgBihwk8h}gr5nn&0_0;-LFBe581}C&48#iC#EcRqn~%} zC3DM!HmdEsjAKr;mW-%QoxI|(niKSJsk(f%tzt8vdl;+l3lCWlPaL5A9b<@VT+Le9 zx24bsbFg?Zb!(=d6AMcUk885=4o4A?t(C{w9aZmBl_!Ql>q#Rlq6?0G=*je4MHKqZ~S-edm54*5w_As@8B)B|Xg`W+464 zJWrV1S&Nz6t&^|v1Zd!Pclh5pWwaBjr$2w zhCT@_-M1;}NTG>K$n1N9s3e{wdQ(kbV_+TN+PJpWM2o2na%4Z>B^}4^u8Z5$Pspj7 z$;bUj+15H;GdT!}v1T*hR;H@V2<9Eip&Zn=XBF(>w(@2(@bt0V`GB_Vhaa65sw0Q~ z%~bly{tn|jslwVZWVc!i+m+*Qc`>oM5yEsjj~-Pz{;Cn!-y((&1&^OAmF@%ZY< zWR_VQu~kRq^$ur>JFm>BD{gJ;qR&?l+DnhdKWNcUyFAO@?W!sJgHRm*00i1C%jO0L z6Jb8}Ij=%&4L`)IG@sh=-CkiwWUiWu)Gy21>MLJE!=LNpL(o9dTxLae*VX+Wj&Wu zv1L@4Ad)(9qc?D8796Pd^q-@Q=J?JcL2oZA_!MF!$6CBfBZdSgv?2fr)0x$~{{ReC z>%{Zeoz^%YjY~Vb9TinZq>@g64j|mSlALyY$<9Ho>6=Fw$Ry?}KzV@LY2vW$KIr#H zKc5#jZs*1A%H(R2WNk%Xuh@b{1&^^o;i4Pa@{%a#C{VdF_UWL11yKJ0JAf1V#bh0I zXz|Jb)A;i*Zy)UYoBiJp{%4Q&ea-&whyMUG!z$vpT&g=HS~WmFM^(UoCl0agt<@x8 z`;KeVQb*D8XHFZ#*!z)~eZa<=gY=Ox)9m1w{JqXQ{%W;~%0AFr`y3rSw#ydN-3Igk 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 aw~GxVvsMN8haH+dhU%670F=l0cmLUl(6)g9 literal 0 HcmV?d00001 diff --git a/funnel/templates/notifications/macros_email.html.jinja2 b/funnel/templates/notifications/macros_email.html.jinja2 index 6c398fdee..0d8ee9b06 100644 --- a/funnel/templates/notifications/macros_email.html.jinja2 +++ b/funnel/templates/notifications/macros_email.html.jinja2 @@ -12,3 +12,11 @@ {%- endif -%} {%- endwith -%} {%- endmacro -%} + +{%- macro hero_image(img_url) -%} + + + alt_text + + +{%- endmacro -%} diff --git a/funnel/templates/notifications/rsvp_yes_email.html.jinja2 b/funnel/templates/notifications/rsvp_yes_email.html.jinja2 index 673e93229..5b108fd92 100644 --- a/funnel/templates/notifications/rsvp_yes_email.html.jinja2 +++ b/funnel/templates/notifications/rsvp_yes_email.html.jinja2 @@ -1,13 +1,9 @@ {% extends "notifications/layout_email.html.jinja2" -%} -{%- from "notifications/macros_email.html.jinja2" import pinned_update -%} +{%- from "notifications/macros_email.html.jinja2" import pinned_update, hero_image -%} {%- block content -%} {# Hero image centered : BEGIN #} - - - alt_text - - + {{ hero_image("view.url_for('static', filename='img/rsvp_yes_header.jpg', _external=true)") }} {# Hero image centered : END #} {# Email content : BEGIN #} From b24db1ef4e45762a722299db9297b1f4455d85ca Mon Sep 17 00:00:00 2001 From: anish Date: Thu, 27 Apr 2023 22:50:38 +0530 Subject: [PATCH 03/17] Implemented macro for header image, button and footer --- .../notifications/macros_email.html.jinja2 | 43 ++++++++++++++++- .../notifications/rsvp_yes_email.html.jinja2 | 46 ++++--------------- 2 files changed, 50 insertions(+), 39 deletions(-) diff --git a/funnel/templates/notifications/macros_email.html.jinja2 b/funnel/templates/notifications/macros_email.html.jinja2 index 0d8ee9b06..fbac3750e 100644 --- a/funnel/templates/notifications/macros_email.html.jinja2 +++ b/funnel/templates/notifications/macros_email.html.jinja2 @@ -1,7 +1,9 @@ {%- macro pinned_update(view, project) -%} {%- with update=project.pinned_update -%} {%- if update -%} - + + +

{%- trans number=update.number|numberformat -%}Update #{{ number }}{%- endtrans %} • {% trans age=update.published_at|age, editor=update.user.pickername -%}Posted by {{ editor }} {{ age }}{%- endtrans -%}

@@ -20,3 +22,42 @@ {%- endmacro -%} + +{% macro cta_button(btn_url, btn_text) %} + + +
+ + + + + + +
+ +
+ +
+ + +{% endmacro %} + +{% macro body_footer(rsvp_linktext) %} + {%- if view %} + + + + + +
+ + + {%- endif %} +{% endmacro %} diff --git a/funnel/templates/notifications/rsvp_yes_email.html.jinja2 b/funnel/templates/notifications/rsvp_yes_email.html.jinja2 index 5b108fd92..f98f570c4 100644 --- a/funnel/templates/notifications/rsvp_yes_email.html.jinja2 +++ b/funnel/templates/notifications/rsvp_yes_email.html.jinja2 @@ -1,9 +1,9 @@ {% extends "notifications/layout_email.html.jinja2" -%} -{%- from "notifications/macros_email.html.jinja2" import pinned_update, hero_image -%} +{%- from "notifications/macros_email.html.jinja2" import pinned_update, hero_image, cta_button, body_footer -%} {%- block content -%} {# Hero image centered : BEGIN #} - {{ hero_image("view.url_for('static', filename='img/rsvp_yes_header.jpg', _external=true)") }} + {{ hero_image("https://images.hasgeek.com/embed/file/19acf7182396436781d3653a0914a2cf?size=320x240") }} {# Hero image centered : END #} {# Email content : BEGIN #} @@ -17,45 +17,15 @@ - - - {# Button : BEGIN #} -
- - - - - - -
- -
- -
- {#-- Button : END #} - - + {# Button : BEGIN #} + {{ cta_button(view.rsvp.project.url_for(_external=true, **view.tracking_tags()), "Project page" )}} + {#-- Button : END #} + {# Email content : END #} - {# Email body footerr : BEGIN #} - {%- if view %} {{ pinned_update(view, view.rsvp.project) }} - - - - - - - - - {%- endif %} + {# Email body footerr : BEGIN #} + {{ body_footer("Cancel registration") }} {# Email body footerr : END #} {%- endblock content -%} From cd252c5aca0e004b0931ac317a43d407df3aca85 Mon Sep 17 00:00:00 2001 From: anish Date: Fri, 28 Apr 2023 20:14:36 +0530 Subject: [PATCH 04/17] Implemented macros across all templates --- .../comment_received_email.html.jinja2 | 42 +++---------- .../comment_report_received_email.html.jinja2 | 36 +++-------- .../notifications/layout_email.html.jinja2 | 19 +++--- .../notifications/macros_email.html.jinja2 | 4 +- ...ation_membership_granted_email.html.jinja2 | 36 +++-------- ...ation_membership_revoked_email.html.jinja2 | 36 +++-------- ..._crew_membership_granted_email.html.jinja2 | 36 +++-------- ..._crew_membership_revoked_email.html.jinja2 | 36 +++-------- .../project_starting_email.html.jinja2 | 61 +++++-------------- .../proposal_received_email.html.jinja2 | 42 +++---------- .../proposal_submitted_email.html.jinja2 | 42 +++---------- .../notifications/rsvp_no_email.html.jinja2 | 56 ++++------------- .../notifications/rsvp_yes_email.html.jinja2 | 13 ++-- .../update_new_email.html.jinja2 | 36 +++-------- .../user_password_set_email.html.jinja2 | 42 ++++--------- 15 files changed, 148 insertions(+), 389 deletions(-) diff --git a/funnel/templates/notifications/comment_received_email.html.jinja2 b/funnel/templates/notifications/comment_received_email.html.jinja2 index 1b07858af..6d44f1fe8 100644 --- a/funnel/templates/notifications/comment_received_email.html.jinja2 +++ b/funnel/templates/notifications/comment_received_email.html.jinja2 @@ -1,12 +1,10 @@ {%- extends "notifications/layout_email.html.jinja2" -%} +{%- from "notifications/macros_email.html.jinja2" import hero_image, cta_button -%} {%- block content -%} - {# Hero Image Centered : BEGIN #} - - - alt_text - - - {# Hero Image Centered : END #} + + {# Hero image centered : BEGIN #} + {{ hero_image("https://images.hasgeek.com/embed/file/eb253bce19fd41ddb5ec84b225bd4dc2?size=196x165") }} + {# Hero image centered : END #} {# Email body : BEGIN #} @@ -27,31 +25,11 @@
- - - {# Button : BEGIN #} -
- - - - - - -
- -
- -
- {#-- Button : END #} - - + + {# Button : BEGIN #} + {{ cta_button(view.comment.url_for(_external=true, **view.tracking_tags()), "View comment" )}} + {# Button : END #} + {# Email body : END #} {%- endblock content -%} diff --git a/funnel/templates/notifications/comment_report_received_email.html.jinja2 b/funnel/templates/notifications/comment_report_received_email.html.jinja2 index 2a962825a..2e193734b 100644 --- a/funnel/templates/notifications/comment_report_received_email.html.jinja2 +++ b/funnel/templates/notifications/comment_report_received_email.html.jinja2 @@ -1,12 +1,10 @@ {%- extends "notifications/layout_email.html.jinja2" -%} +{%- from "notifications/macros_email.html.jinja2" import hero_image, cta_button -%} {%- block content -%} - {# Hero Image Centered : BEGIN #} - - - alt_text - - - {# Hero Image Centered : END #} + + {# Hero image centered : BEGIN #} + {{ hero_image("https://images.hasgeek.com/embed/file/c914f2324f1e4b449beb15b272ce9f10?size=196x149") }} + {# Hero image centered : END #} {# Email body : BEGIN #} @@ -18,25 +16,11 @@
- - - {# Button : BEGIN #} - - {#-- Button : END #} - - + + {# Button : BEGIN #} + {{ cta_button(url_for('siteadmin_review_comment', report=view.report.uuid_b58), "Review comment" )}} + {# Button : END #} + {# Email body : END #} {%- endblock content -%} diff --git a/funnel/templates/notifications/layout_email.html.jinja2 b/funnel/templates/notifications/layout_email.html.jinja2 index e506ac44a..f3f867893 100644 --- a/funnel/templates/notifications/layout_email.html.jinja2 +++ b/funnel/templates/notifications/layout_email.html.jinja2 @@ -93,7 +93,6 @@ a { text-decoration: none; } - /* What it does: A work-around for email clients meddling in triggered links. */ a[x-apple-data-detectors], /* iOS */ .unstyle-auto-detected-links a, @@ -154,7 +153,7 @@ .button-td, .button-a { border-radius: 4px; - background: #4d5763; + background-color: #4d5763; transition: all 100ms ease-in; font-family: sans-serif; font-size: 15px; @@ -169,7 +168,7 @@ } .button-td-primary:hover, .button-a-primary:hover { - background: #1f2d3d !important; + background-color: #1f2d3d !important; border-color: #1f2d3d !important; } @@ -180,7 +179,6 @@ .email-container p { font-size: 17px !important; } - } p { @@ -215,9 +213,9 @@ } .email-container { display: block; - width: 100%; max-width: 600px; - margin: 0 20px; + padding: 0 20px; + margin: auto; } .body-content { margin: 0; @@ -242,7 +240,6 @@ border-spacing: 0; border-radius: 16px 16px 16px 16px; overflow: hidden; - background-image: linear-gradient(#ffffff, #ffffff) } tbody, .card-zeromargin { margin: 0; @@ -308,6 +305,10 @@ padding: 8px 0 0 !important; color: #4d5763; } + .footer-link { + padding: 0 !important; + color: #4d5763 !important; + } .unsubscribe { color: #4d5763; text-decoration: underline;" @@ -341,7 +342,7 @@ 1. max-width for all clients except Desktop Windows Outlook, allowing the email to squish on narrow but never go wider than 600px. 2. MSO tags for Desktop Windows Outlook enforce a 600px width. #} -