aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/emails/common/base.pug
blob: 41e94564d9d5cc971b3877806f9b5aaef0b399bc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
//-
  The email background color 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
- var backgroundColor = "#fff";
- var mainColor = "#f2690d";
doctype html
head
  // This template is heavily adapted from the Cerberus Fluid template. Kudos to them!
  meta(charset='utf-8')
  //- utf-8 works for most cases
  meta(name='viewport' content='width=device-width')
  //- Forcing initial-scale shouldn't be necessary
  meta(http-equiv='X-UA-Compatible' content='IE=edge')
  //- Use the latest (edge) version of IE rendering engine
  meta(name='x-apple-disable-message-reformatting')
  //- Disable auto-scale in iOS 10 Mail entirely
  meta(name='format-detection' content='telephone=no,address=no,email=no,date=no,url=no')
  //- Tell iOS not to automatically link certain text strings.
  meta(name='color-scheme' content='light')
  meta(name='supported-color-schemes' content='light')
  //- The title tag shows in email notifications, like Android 4.4.
  title #{subject}
  //- What it does: Makes background images in 72ppi Outlook render at correct size.
  //if gte mso 9
    xml
      o:officedocumentsettings
        o:allowpng
          o:pixelsperinch 96
  //- CSS Reset : BEGIN
  style.
    /* What it does: Tells the email client that only light styles are provided but the client can transform them to dark. A duplicate of meta color-scheme meta tag above. */
    :root {
      color-scheme: light;
      supported-color-schemes: light;
    }
    /* What it does: Remove spaces around the email design added by some email clients. */
    /* Beware: It can remove the padding / margin and add a background color to the compose a reply window. */
    html,
    body {
      margin: 0 auto !important;
      padding: 0 !important;
      height: 100% !important;
      width: 100% !important;
    }
    /* What it does: Stops email clients resizing small text. */
    * {
      -ms-text-size-adjust: 100%;
      -webkit-text-size-adjust: 100%;
    }
    /* What it does: Centers email on Android 4.4 */
    div[style*="margin: 16px 0"] {
      margin: 0 !important;
    }
    /* What it does: forces Samsung Android mail clients to use the entire viewport */
    #MessageViewBody, #MessageWebViewDiv{
      width: 100% !important;
    }
    /* What it does: Stops Outlook from adding extra spacing to tables. */
    table,
    td {
      mso-table-lspace: 0pt !important;
      mso-table-rspace: 0pt !important;
    }
    /* What it does: Fixes webkit padding issue. */
    table {
      border-spacing: 0 !important;
      border-collapse: collapse !important;
      table-layout: fixed !important;
      margin: 0 auto !important;
    }
    /* What it does: Uses a better rendering method when resizing images in IE. */
    img {
      -ms-interpolation-mode:bicubic;
    }
    /* What it does: Prevents Windows 10 Mail from underlining links despite inline CSS. Styles for underlined links should be inline. */
    a {
      text-decoration: none;
    }
    a:not(.nocolor) {
      color: #{mainColor};
    }
    a.nocolor {
      color: inherit !important;
    }
    /* What it does: A work-around for email clients meddling in triggered links. */
    a[x-apple-data-detectors],  /* iOS */
    .unstyle-auto-detected-links a,
    .aBn {
      border-bottom: 0 !important;
      cursor: default !important;
      color: inherit !important;
      text-decoration: none !important;
      font-size: inherit !important;
      font-family: inherit !important;
      font-weight: inherit !important;
      line-height: inherit !important;
    }
    /* What it does: Prevents Gmail from displaying a download button on large, non-linked images. */
    .a6S {
      display: none !important;
      opacity: 0.01 !important;
    }
    /* What it does: Prevents Gmail from changing the text color in conversation threads. */
    .im {
      color: inherit !important;
    }
    /* If the above doesn't work, add a .g-img class to any image in question. */
    img.g-img + div {
      display: none !important;
    }
    /* What it does: Removes right gutter in Gmail iOS app: https://github.com/TedGoas/Cerberus/issues/89  */
    /* Create one of these media queries for each additional viewport size you'd like to fix */
    /* iPhone 4, 4S, 5, 5S, 5C, and 5SE */
    @media only screen and (min-device-width: 320px) and (max-device-width: 374px) {
      u ~ div .email-container {
        min-width: 320px !important;
      }
    }
    /* iPhone 6, 6S, 7, 8, and X */
    @media only screen and (min-device-width: 375px) and (max-device-width: 413px) {
      u ~ div .email-container {
        min-width: 375px !important;
      }
    }
    /* iPhone 6+, 7+, and 8+ */
    @media only screen and (min-device-width: 414px) {
      u ~ div .email-container {
        min-width: 414px !important;
      }
    }
  //- CSS Reset : END
  //- CSS for PeerTube : START
  style.
    blockquote {
      margin-left: 0;
      padding-left: 20px;
      border-left: 2px solid #f2690d;
    }
  //- CSS for PeerTube : END
  //- Progressive Enhancements : BEGIN
  style.
    /* What it does: Hover styles for buttons */
    .button-td,
    .button-a {
      transition: all 100ms ease-in;
    }
    .button-td-primary:hover,
    .button-a-primary:hover {
      background: #555555 !important;
      border-color: #555555 !important;
    }
    /* Media Queries */
    @media screen and (max-width: 600px) {
      /* What it does: Adjust typography on small screens to improve readability */
      .email-container p {
        font-size: 17px !important;
      }
    }
  //- Progressive Enhancements : END

body(width="100%" style="margin: 0; padding: 0 !important; mso-line-height-rule: exactly; background-color: #{backgroundColor};")
  center(role='article' aria-roledescription='email' lang='en' style='width: 100%; background-color: #{backgroundColor};')
    //if mso | IE
      table(role='presentation' border='0' cellpadding='0' cellspacing='0' width='100%' style='background-color: #fff;')
        tr
          td
    //- Visually Hidden Preheader Text : BEGIN
    div(style='max-height:0; overflow:hidden; mso-hide:all;' aria-hidden='true')
      block preheader
    //- Visually Hidden Preheader Text : END

    //- Create white space after the desired preview text so email clients don’t pull other distracting text into the inbox preview. Extend as necessary.
    //- Preview Text Spacing Hack : BEGIN
    div(style='display: none; font-size: 1px; line-height: 1px; max-height: 0px; max-width: 0px; opacity: 0; overflow: hidden; mso-hide: all; font-family: sans-serif;')
      | ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌
    //- Preview Text Spacing Hack : END

    //-
      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-container(style='max-width: 600px; margin: 0 auto;')
      //if mso
        table(align='center' role='presentation' cellspacing='0' cellpadding='0' border='0' width='600')
          tr
            td
      //- Email Body : BEGIN
      table(align='center' role='presentation' cellspacing='0' cellpadding='0' border='0' width='100%' style='margin: auto;')
        //- 1 Column Text + Button : BEGIN
        tr
          td(style='background-color: #ffffff;')
            table(role='presentation' cellspacing='0' cellpadding='0' border='0' width='100%')
              tr
                td(style='padding: 20px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #555555;')
                  table(role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%")
                    tr
                      td(width="40px")
                        img(src=`${WEBSERVER.URL}/client/assets/images/icons/icon-192x192.png` width="auto" height="30px" alt="" border="0" style="height: 30px; background: #ffffff; font-family: sans-serif; font-size: 15px; line-height: 15px; color: #555555;")
                      td
                        h1(style='margin: 10px 0 10px 0; font-family: sans-serif; font-size: 25px; line-height: 30px; color: #333333; font-weight: normal;')
                          block title
                            if title
                              | #{title}
                            else
                              | Something requires your attention
                  p(style='margin: 0;')
                    block body
              if action
                tr
                  td(style='padding: 0 20px;')
                    //- Button : BEGIN
                    table(align='center' role='presentation' cellspacing='0' cellpadding='0' border='0' style='margin: auto;')
                      tr
                        td.button-td.button-td-primary(style='border-radius: 4px; background: #222222;')
                          a.button-a.button-a-primary(href=action.url style='background: #222222; border: 1px solid #000000; font-family: sans-serif; font-size: 15px; line-height: 15px; text-decoration: none; padding: 13px 17px; color: #ffffff; display: block; border-radius: 4px;') #{action.text}
                    //- Button : END
        //- 1 Column Text + Button : END
        //- Clear Spacer : BEGIN
        tr
          td(aria-hidden='true' height='20' style='font-size: 0px; line-height: 0px;')
        br
        //- Clear Spacer : END
      //- Email Body : END
      //- Email Footer : BEGIN
      unless hideNotificationPreferencesLink
        table(align='center' role='presentation' cellspacing='0' cellpadding='0' border='0' width='100%' style='margin: auto;')
          tr
            td(style='padding: 20px; padding-bottom: 0px; font-family: sans-serif; font-size: 12px; line-height: 15px; text-align: center; color: #888888;')
              webversion
                a.nocolor(href=`${WEBSERVER.URL}/my-account/notifications` style='color: #cccccc; font-weight: bold;') View in your notifications
              br
          tr
            td(style='padding: 20px; padding-top: 10px; font-family: sans-serif; font-size: 12px; line-height: 15px; text-align: center; color: #888888;')
              unsubscribe
                a.nocolor(href=`${WEBSERVER.URL}/my-account/settings#notifications` style='color: #888888;') Manage your notification preferences in your profile
              br
      //- Email Footer : END
      //if mso
    //- Full Bleed Background Section : BEGIN
    table(role='presentation' cellspacing='0' cellpadding='0' border='0' width='100%' style=`background-color: ${mainColor};`)
      tr
        td
          .email-container(align='center' style='max-width: 600px; margin: auto;')
            //if mso
              table(role='presentation' cellspacing='0' cellpadding='0' border='0' width='600' align='center')
                tr
                  td
            table(role='presentation' cellspacing='0' cellpadding='0' border='0' width='100%')
              tr
                td(style='padding: 20px; text-align: left; font-family: sans-serif; font-size: 12px; line-height: 20px; color: #ffffff;')
                  table(role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%")
                    tr
                      td(valign="top") #[a(href="https://github.com/Chocobozzz/PeerTube" style="color: white !important") PeerTube © 2015-#{new Date().getFullYear()}] #[a(href="https://github.com/Chocobozzz/PeerTube/blob/master/CREDITS.md" style="color: white !important") PeerTube Contributors]
            //if mso
    //- Full Bleed Background Section : END
    //if mso | IE