style(aurora): CSS class-based refactor, full i18n, and locale alignment
themes/aurora/ (all 11 tmpl templates): - Extract all reusable inline styles to CSS classes in <style> blocks - Organize CSS with /* Section */ comment headers (Base, Header, Card, etc.) - Clean HTML structure: <tr>/<td> on separate lines, consistent 2-space indent - Replace all hardcoded English button text with locale.Tr keys - Add mail.team_invite.text_3 disclaimer notice to team_invite - Go variable assignments on dedicated lines with proper indentation - Section comments in Title Case tools/preview/locale.go: - Replace LocaleEN with full 60-key official Gitea mail locale - Add positional format specifier support (%[1]s, %[2]d) in Tr() - All keys verified against official Gitea locale_en-US.json (100% match) .gitignore: - Add preview/rendered.js entry Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
a97a9bea1d
commit
6ae9c97be8
13 files changed
+1552
-498
No files matched your search
@@ -20,3 +20,6 @@ Desktop.ini
|
|||||||
|
|
||||||
# Package lock file
|
# Package lock file
|
||||||
package-lock.json
|
package-lock.json
|
||||||
|
|
||||||
|
# Preview generated files
|
||||||
|
preview/rendered.js
|
||||||
@@ -4,50 +4,139 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="x-apple-disable-message-reformatting" />
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<title>{{AppName}} - Team Invitation</title>
|
|
||||||
|
<title>
|
||||||
|
{{.locale.Tr "mail.team_invite.subject" (.Inviter.DisplayName|DotEscape) (.Organization.DisplayName|DotEscape)}}
|
||||||
|
</title>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body,.ExternalClass,.ReadMsgBody{background-color:#0a0815}
|
/* Base */
|
||||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6{color:#ccfbf1!important}
|
body,.ExternalClass,.ReadMsgBody { background-color:#0a0815 }
|
||||||
.card-body a,.card-body a:link,.card-body a:visited{color:#5eead4!important;text-decoration:underline!important}
|
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif }
|
||||||
.card-body a:hover,.card-body a:active{color:#99f6e4!important}
|
|
||||||
.card-body li{color:rgba(210,252,245,0.88)!important}
|
/* Header */
|
||||||
@media only screen and (max-width:480px){
|
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||||
.resp-card{padding:32px 20px!important}
|
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||||
.resp-spacer{padding:24px 20px!important}
|
.email-header { padding:0 0 32px;text-align:center }
|
||||||
.resp-heading{font-size:20px!important}
|
|
||||||
|
/* Card */
|
||||||
|
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||||
|
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||||
|
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||||
|
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||||
|
|
||||||
|
/* Divider */
|
||||||
|
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||||
|
|
||||||
|
/* Button */
|
||||||
|
.email-btn-row { padding:40px 40px;text-align:center }
|
||||||
|
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||||
|
.email-btn-table { margin:0 0 32px }
|
||||||
|
|
||||||
|
/* Fallback link */
|
||||||
|
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||||
|
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||||
|
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
.email-footer { padding:32px 0 0;text-align:center }
|
||||||
|
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||||
|
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||||
|
|
||||||
|
/* Typography utilities */
|
||||||
|
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||||
|
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||||
|
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||||
|
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||||
|
|
||||||
|
/* Responsive */
|
||||||
|
@media only screen and (max-width:480px) {
|
||||||
|
.email-card { padding:32px 20px!important }
|
||||||
|
.email-btn-row { padding:24px 20px!important }
|
||||||
|
.email-heading { font-size:20px!important }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin:0;padding:0;background:#0a0815;font-family:system-ui,-apple-system,sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
|
||||||
<center style="width:100%;table-layout:fixed;">
|
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;margin:40px auto;">
|
|
||||||
<!-- floating title -->
|
|
||||||
<tr><td style="padding:0 0 32px;text-align:center;">
|
|
||||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" style="display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5;" />
|
|
||||||
<span style="font-size:16px;font-weight:300;color:rgba(255,255,255,0.4);letter-spacing:4px;text-transform:uppercase;">{{AppName}}</span>
|
|
||||||
</td></tr>
|
|
||||||
<!-- card -->
|
|
||||||
<tr><td class="resp-card card-body" style="padding:48px 40px;background:rgba(25,20,50,0.8);border:1px solid rgba(13,148,136,0.2);box-shadow:0 0 60px rgba(13,148,136,0.08),0 0 120px rgba(99,102,241,0.04);">
|
|
||||||
<p class="resp-heading" style="margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-0.5px;">{{.locale.Tr "mail.hi_user_x" .Invite.Email}}</p>
|
|
||||||
<p style="margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,0.88);font-weight:300;">{{.locale.Tr "mail.team_invite.text_1" (DotEscape .Inviter.DisplayName) (DotEscape .Team.Name) (DotEscape .Organization.DisplayName)}}</p>
|
|
||||||
<p style="margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,0.95);font-weight:300;">{{.locale.Tr "mail.team_invite.text_2"}}</p>
|
|
||||||
</td></tr>
|
|
||||||
<tr><td style="height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,0.3),transparent);"></td></tr>
|
|
||||||
<!-- button + link -->
|
|
||||||
<tr><td class="resp-spacer" style="padding:40px 40px;text-align:center;">
|
|
||||||
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:0 0 32px;"><tr><td align="center">
|
<body style="margin:0;padding:0;background:#0a0815;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||||
<a href="{{.InviteURL}}" style="display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,0.18);border:1px solid rgba(13,148,136,0.3);letter-spacing:1px;">Accept Invitation</a>
|
<center style="width:100%;table-layout:fixed;">
|
||||||
</td></tr></table>
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border:1px solid rgba(13,148,136,0.18);background:rgba(13,148,136,0.03);"><tr><td style="padding:16px 18px;">
|
|
||||||
<p style="margin:0 0 8px;font-size:11px;color:rgba(180,252,238,0.75);font-weight:300;"><span style="color:rgba(180,195,215,0.95);">{{.locale.Tr "mail.link_not_working_do_paste"}}</span></p>
|
<!-- Floating Title -->
|
||||||
<p style="margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,0.2);padding:10px 12px;border:1px solid rgba(13,148,136,0.15);word-break:break-all;">{{.InviteURL}}</p>
|
<tr>
|
||||||
</td></tr></table>
|
<td class="email-header">
|
||||||
</td></tr>
|
|
||||||
<!-- footer -->
|
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||||
<tr><td style="padding:32px 0 0;text-align:center;">
|
<span class="email-brand">{{AppName}}</span>
|
||||||
<p style="margin:0;font-size:11px;color:rgba(160,175,200,0.55);font-weight:300;">© <a href="{{AppUrl}}" style="color:rgba(94,234,212,0.5);text-decoration:none;font-weight:400;">{{AppName}}</a> — Gitea Mail Templates</p>
|
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Card -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-card card-body">
|
||||||
|
|
||||||
|
<p class="email-heading">
|
||||||
|
{{.locale.Tr "mail.hi_user_x" .Invite.Email}}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="email-text">
|
||||||
|
{{.locale.Tr "mail.team_invite.text_1" (DotEscape .Inviter.DisplayName) (DotEscape .Team.Name) (DotEscape .Organization.DisplayName)}}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="email-subtext">
|
||||||
|
{{.locale.Tr "mail.team_invite.text_2"}}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Divider -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-divider"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Button & Link -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-btn-row">
|
||||||
|
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="{{.InviteURL}}" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:16px 18px;">
|
||||||
|
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
|
||||||
|
<p class="email-link-url">{{.InviteURL}}</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<p class="email-subtext" style="margin-top:24px;font-size:12px;color:rgba(160,175,200,.5);">
|
||||||
|
{{.locale.Tr "mail.team_invite.text_3" .Invite.Email}}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-footer">
|
||||||
|
|
||||||
|
<p class="email-footer-text">
|
||||||
|
©
|
||||||
|
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
|
||||||
|
— Gitea Mail Templates
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</center>
|
</center>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -4,50 +4,138 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="x-apple-disable-message-reformatting" />
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<title>{{.Subject}}</title>
|
|
||||||
|
<title>
|
||||||
|
{{.Subject}}
|
||||||
|
</title>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body,.ExternalClass,.ReadMsgBody{background-color:#0a0815}
|
/* Base */
|
||||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6{color:#ccfbf1!important}
|
body,.ExternalClass,.ReadMsgBody { background-color:#0a0815 }
|
||||||
.card-body a,.card-body a:link,.card-body a:visited{color:#5eead4!important;text-decoration:underline!important}
|
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif }
|
||||||
.card-body a:hover,.card-body a:active{color:#99f6e4!important}
|
|
||||||
.card-body li{color:rgba(210,252,245,0.88)!important}
|
/* Header */
|
||||||
@media only screen and (max-width:480px){
|
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||||
.resp-card{padding:32px 20px!important}
|
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||||
.resp-spacer{padding:24px 20px!important}
|
.email-header { padding:0 0 32px;text-align:center }
|
||||||
.resp-heading{font-size:20px!important}
|
|
||||||
|
/* Card */
|
||||||
|
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||||
|
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||||
|
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||||
|
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||||
|
|
||||||
|
/* Divider */
|
||||||
|
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||||
|
|
||||||
|
/* Button */
|
||||||
|
.email-btn-row { padding:40px 40px;text-align:center }
|
||||||
|
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||||
|
.email-btn-table { margin:0 0 32px }
|
||||||
|
|
||||||
|
/* Fallback link */
|
||||||
|
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||||
|
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||||
|
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
.email-footer { padding:32px 0 0;text-align:center }
|
||||||
|
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||||
|
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||||
|
|
||||||
|
/* Typography utilities */
|
||||||
|
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||||
|
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||||
|
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||||
|
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||||
|
|
||||||
|
/* Responsive */
|
||||||
|
@media only screen and (max-width:480px) {
|
||||||
|
.email-card { padding:32px 20px!important }
|
||||||
|
.email-btn-row { padding:24px 20px!important }
|
||||||
|
.email-heading { font-size:20px!important }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin:0;padding:0;background:#0a0815;font-family:system-ui,-apple-system,sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
|
||||||
<center style="width:100%;table-layout:fixed;">
|
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;margin:40px auto;">
|
|
||||||
<!-- floating title -->
|
|
||||||
<tr><td style="padding:0 0 32px;text-align:center;">
|
|
||||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" style="display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5;" />
|
|
||||||
<span style="font-size:16px;font-weight:300;color:rgba(255,255,255,0.4);letter-spacing:4px;text-transform:uppercase;">{{AppName}}</span>
|
|
||||||
</td></tr>
|
|
||||||
<!-- card -->
|
|
||||||
<tr><td class="resp-card card-body" style="padding:48px 40px;background:rgba(25,20,50,0.8);border:1px solid rgba(13,148,136,0.2);box-shadow:0 0 60px rgba(13,148,136,0.08),0 0 120px rgba(99,102,241,0.04);">
|
|
||||||
<p class="resp-heading" style="margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-0.5px;"></p>
|
|
||||||
<p style="margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,0.88);font-weight:300;"><h2>{{.Repo.FullName}} - {{.Run.WorkflowID}}: {{.RunStatusText}}</h2><ul>{{range $job := .Jobs}}<li><a href="{{$job.HTMLURL}}">{{$job.Status}}: {{$job.Name}}{{if gt $job.Attempt 1}} (retry #{{$job.Attempt}}){{end}} - {{$job.Duration}}</a></li>{{end}}</ul></p>
|
|
||||||
<p style="margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,0.95);font-weight:300;"></p>
|
|
||||||
</td></tr>
|
|
||||||
<tr><td style="height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,0.3),transparent);"></td></tr>
|
|
||||||
<!-- button + link -->
|
|
||||||
<tr><td class="resp-spacer" style="padding:40px 40px;text-align:center;">
|
|
||||||
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:0 0 32px;"><tr><td align="center">
|
<body style="margin:0;padding:0;background:#0a0815;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||||
<a href="{{.Run.HTMLURL}}" style="display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,0.18);border:1px solid rgba(13,148,136,0.3);letter-spacing:1px;">{{.locale.Tr "mail.view_it_on" AppName}}</a>
|
<center style="width:100%;table-layout:fixed;">
|
||||||
</td></tr></table>
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border:1px solid rgba(13,148,136,0.18);background:rgba(13,148,136,0.03);"><tr><td style="padding:16px 18px;">
|
|
||||||
<p style="margin:0 0 8px;font-size:11px;color:rgba(180,252,238,0.75);font-weight:300;"><span style="color:rgba(180,195,215,0.95);">{{.locale.Tr "mail.link_not_working_do_paste"}}</span></p>
|
<!-- Floating Title -->
|
||||||
<p style="margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,0.2);padding:10px 12px;border:1px solid rgba(13,148,136,0.15);word-break:break-all;">{{.Run.HTMLURL}}</p>
|
<tr>
|
||||||
</td></tr></table>
|
<td class="email-header">
|
||||||
</td></tr>
|
|
||||||
<!-- footer -->
|
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||||
<tr><td style="padding:32px 0 0;text-align:center;">
|
<span class="email-brand">{{AppName}}</span>
|
||||||
<p style="margin:0;font-size:11px;color:rgba(160,175,200,0.55);font-weight:300;">© <a href="{{AppUrl}}" style="color:rgba(94,234,212,0.5);text-decoration:none;font-weight:400;">{{AppName}}</a> — Gitea Mail Templates</p>
|
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Card -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-card card-body">
|
||||||
|
|
||||||
|
<p class="email-heading"></p>
|
||||||
|
|
||||||
|
<p class="email-text">
|
||||||
|
<h2>{{.Repo.FullName}} - {{.Run.WorkflowID}}: {{.RunStatusText}}</h2>
|
||||||
|
<ul>
|
||||||
|
{{range $job := .Jobs}}
|
||||||
|
<li>
|
||||||
|
<a href="{{$job.HTMLURL}}">{{$job.Status}}: {{$job.Name}}{{if gt $job.Attempt 1}} (retry #{{$job.Attempt}}){{end}} - {{$job.Duration}}</a>
|
||||||
|
</li>
|
||||||
|
{{end}}
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="email-subtext"></p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Divider -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-divider"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Button & Link -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-btn-row">
|
||||||
|
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="{{.Run.HTMLURL}}" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:16px 18px;">
|
||||||
|
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
|
||||||
|
<p class="email-link-url">{{.Run.HTMLURL}}</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-footer">
|
||||||
|
|
||||||
|
<p class="email-footer-text">
|
||||||
|
©
|
||||||
|
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
|
||||||
|
— Gitea Mail Templates
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</center>
|
</center>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -4,50 +4,131 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="x-apple-disable-message-reformatting" />
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<title>{{.Subject}}</title>
|
|
||||||
|
<title>
|
||||||
|
{{.Subject}}
|
||||||
|
</title>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body,.ExternalClass,.ReadMsgBody{background-color:#0a0815}
|
/* Base */
|
||||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6{color:#ccfbf1!important}
|
body,.ExternalClass,.ReadMsgBody { background-color:#0a0815 }
|
||||||
.card-body a,.card-body a:link,.card-body a:visited{color:#5eead4!important;text-decoration:underline!important}
|
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif }
|
||||||
.card-body a:hover,.card-body a:active{color:#99f6e4!important}
|
|
||||||
.card-body li{color:rgba(210,252,245,0.88)!important}
|
/* Header */
|
||||||
@media only screen and (max-width:480px){
|
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||||
.resp-card{padding:32px 20px!important}
|
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||||
.resp-spacer{padding:24px 20px!important}
|
.email-header { padding:0 0 32px;text-align:center }
|
||||||
.resp-heading{font-size:20px!important}
|
|
||||||
|
/* Card */
|
||||||
|
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||||
|
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||||
|
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||||
|
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||||
|
|
||||||
|
/* Divider */
|
||||||
|
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||||
|
|
||||||
|
/* Button */
|
||||||
|
.email-btn-row { padding:40px 40px;text-align:center }
|
||||||
|
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||||
|
.email-btn-table { margin:0 0 32px }
|
||||||
|
|
||||||
|
/* Fallback link */
|
||||||
|
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||||
|
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||||
|
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
.email-footer { padding:32px 0 0;text-align:center }
|
||||||
|
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||||
|
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||||
|
|
||||||
|
/* Typography utilities */
|
||||||
|
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||||
|
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||||
|
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||||
|
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||||
|
|
||||||
|
/* Responsive */
|
||||||
|
@media only screen and (max-width:480px) {
|
||||||
|
.email-card { padding:32px 20px!important }
|
||||||
|
.email-btn-row { padding:24px 20px!important }
|
||||||
|
.email-heading { font-size:20px!important }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin:0;padding:0;background:#0a0815;font-family:system-ui,-apple-system,sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
|
||||||
<center style="width:100%;table-layout:fixed;">
|
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;margin:40px auto;">
|
|
||||||
<!-- floating title -->
|
|
||||||
<tr><td style="padding:0 0 32px;text-align:center;">
|
|
||||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" style="display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5;" />
|
|
||||||
<span style="font-size:16px;font-weight:300;color:rgba(255,255,255,0.4);letter-spacing:4px;text-transform:uppercase;">{{AppName}}</span>
|
|
||||||
</td></tr>
|
|
||||||
<!-- card -->
|
|
||||||
<tr><td class="resp-card card-body" style="padding:48px 40px;background:rgba(25,20,50,0.8);border:1px solid rgba(13,148,136,0.2);box-shadow:0 0 60px rgba(13,148,136,0.08),0 0 120px rgba(99,102,241,0.04);">
|
|
||||||
<p class="resp-heading" style="margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-0.5px;"></p>
|
|
||||||
<p style="margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,0.88);font-weight:300;">{{.locale.Tr "mail.repo.collaborator.added.text"}} <code>{{.RepoName}}</code>.</p>
|
|
||||||
<p style="margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,0.95);font-weight:300;"></p>
|
|
||||||
</td></tr>
|
|
||||||
<tr><td style="height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,0.3),transparent);"></td></tr>
|
|
||||||
<!-- button + link -->
|
|
||||||
<tr><td class="resp-spacer" style="padding:40px 40px;text-align:center;">
|
|
||||||
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:0 0 32px;"><tr><td align="center">
|
<body style="margin:0;padding:0;background:#0a0815;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||||
<a href="{{.Link}}" style="display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,0.18);border:1px solid rgba(13,148,136,0.3);letter-spacing:1px;">{{.locale.Tr "mail.view_it_on" AppName}}</a>
|
<center style="width:100%;table-layout:fixed;">
|
||||||
</td></tr></table>
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border:1px solid rgba(13,148,136,0.18);background:rgba(13,148,136,0.03);"><tr><td style="padding:16px 18px;">
|
|
||||||
<p style="margin:0 0 8px;font-size:11px;color:rgba(180,252,238,0.75);font-weight:300;"><span style="color:rgba(180,195,215,0.95);">{{.locale.Tr "mail.link_not_working_do_paste"}}</span></p>
|
<!-- Floating Title -->
|
||||||
<p style="margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,0.2);padding:10px 12px;border:1px solid rgba(13,148,136,0.15);word-break:break-all;">{{.Link}}</p>
|
<tr>
|
||||||
</td></tr></table>
|
<td class="email-header">
|
||||||
</td></tr>
|
|
||||||
<!-- footer -->
|
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||||
<tr><td style="padding:32px 0 0;text-align:center;">
|
<span class="email-brand">{{AppName}}</span>
|
||||||
<p style="margin:0;font-size:11px;color:rgba(160,175,200,0.55);font-weight:300;">© <a href="{{AppUrl}}" style="color:rgba(94,234,212,0.5);text-decoration:none;font-weight:400;">{{AppName}}</a> — Gitea Mail Templates</p>
|
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Card -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-card card-body">
|
||||||
|
|
||||||
|
<p class="email-heading"></p>
|
||||||
|
|
||||||
|
<p class="email-text">
|
||||||
|
{{.locale.Tr "mail.repo.collaborator.added.text"}} <code>{{.RepoName}}</code>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="email-subtext"></p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Divider -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-divider"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Button & Link -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-btn-row">
|
||||||
|
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="{{.Link}}" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:16px 18px;">
|
||||||
|
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
|
||||||
|
<p class="email-link-url">{{.Link}}</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-footer">
|
||||||
|
|
||||||
|
<p class="email-footer-text">
|
||||||
|
©
|
||||||
|
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
|
||||||
|
— Gitea Mail Templates
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</center>
|
</center>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -4,50 +4,137 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="x-apple-disable-message-reformatting" />
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<title>{{.Subject}}</title>
|
|
||||||
|
<title>
|
||||||
|
{{.Subject}}
|
||||||
|
</title>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body,.ExternalClass,.ReadMsgBody{background-color:#0a0815}
|
/* Base */
|
||||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6{color:#ccfbf1!important}
|
body,.ExternalClass,.ReadMsgBody { background-color:#0a0815 }
|
||||||
.card-body a,.card-body a:link,.card-body a:visited{color:#5eead4!important;text-decoration:underline!important}
|
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif }
|
||||||
.card-body a:hover,.card-body a:active{color:#99f6e4!important}
|
|
||||||
.card-body li{color:rgba(210,252,245,0.88)!important}
|
/* Header */
|
||||||
@media only screen and (max-width:480px){
|
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||||
.resp-card{padding:32px 20px!important}
|
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||||
.resp-spacer{padding:24px 20px!important}
|
.email-header { padding:0 0 32px;text-align:center }
|
||||||
.resp-heading{font-size:20px!important}
|
|
||||||
|
/* Card */
|
||||||
|
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||||
|
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||||
|
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||||
|
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||||
|
|
||||||
|
/* Divider */
|
||||||
|
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||||
|
|
||||||
|
/* Button */
|
||||||
|
.email-btn-row { padding:40px 40px;text-align:center }
|
||||||
|
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||||
|
.email-btn-table { margin:0 0 32px }
|
||||||
|
|
||||||
|
/* Fallback link */
|
||||||
|
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||||
|
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||||
|
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
.email-footer { padding:32px 0 0;text-align:center }
|
||||||
|
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||||
|
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||||
|
|
||||||
|
/* Typography utilities */
|
||||||
|
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||||
|
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||||
|
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||||
|
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||||
|
|
||||||
|
/* Responsive */
|
||||||
|
@media only screen and (max-width:480px) {
|
||||||
|
.email-card { padding:32px 20px!important }
|
||||||
|
.email-btn-row { padding:24px 20px!important }
|
||||||
|
.email-heading { font-size:20px!important }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin:0;padding:0;background:#0a0815;font-family:system-ui,-apple-system,sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
|
||||||
<center style="width:100%;table-layout:fixed;">
|
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;margin:40px auto;">
|
|
||||||
<!-- floating title -->
|
|
||||||
<tr><td style="padding:0 0 32px;text-align:center;">
|
|
||||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" style="display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5;" />
|
|
||||||
<span style="font-size:16px;font-weight:300;color:rgba(255,255,255,0.4);letter-spacing:4px;text-transform:uppercase;">{{AppName}}</span>
|
|
||||||
</td></tr>
|
|
||||||
<!-- card -->
|
|
||||||
<tr><td class="resp-card card-body" style="padding:48px 40px;background:rgba(25,20,50,0.8);border:1px solid rgba(13,148,136,0.2);box-shadow:0 0 60px rgba(13,148,136,0.08),0 0 120px rgba(99,102,241,0.04);">
|
|
||||||
<p class="resp-heading" style="margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-0.5px;"></p>
|
|
||||||
<p style="margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,0.88);font-weight:300;">{{$repo_url := HTMLFormat "<a href=\047%s\047>%s</a>" .Issue.Repo.HTMLURL .Issue.Repo.FullName}}{{$link := HTMLFormat "<a href=\047%s\047>#%d</a>" .Link .Issue.Index}}{{if .IsPull}}{{.locale.Tr "mail.issue_assigned.pull" .Doer.Name $link $repo_url}}{{else}}{{.locale.Tr "mail.issue_assigned.issue" .Doer.Name $link $repo_url}}{{end}}</p>
|
|
||||||
<p style="margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,0.95);font-weight:300;"></p>
|
|
||||||
</td></tr>
|
|
||||||
<tr><td style="height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,0.3),transparent);"></td></tr>
|
|
||||||
<!-- button + link -->
|
|
||||||
<tr><td class="resp-spacer" style="padding:40px 40px;text-align:center;">
|
|
||||||
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:0 0 32px;"><tr><td align="center">
|
<body style="margin:0;padding:0;background:#0a0815;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||||
<a href="{{.Link}}" style="display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,0.18);border:1px solid rgba(13,148,136,0.3);letter-spacing:1px;">{{.locale.Tr "mail.view_it_on" AppName}}</a>
|
<center style="width:100%;table-layout:fixed;">
|
||||||
</td></tr></table>
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border:1px solid rgba(13,148,136,0.18);background:rgba(13,148,136,0.03);"><tr><td style="padding:16px 18px;">
|
|
||||||
<p style="margin:0 0 8px;font-size:11px;color:rgba(180,252,238,0.75);font-weight:300;"><span style="color:rgba(180,195,215,0.95);">{{.locale.Tr "mail.link_not_working_do_paste"}}</span></p>
|
<!-- Floating Title -->
|
||||||
<p style="margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,0.2);padding:10px 12px;border:1px solid rgba(13,148,136,0.15);word-break:break-all;">{{.Link}}</p>
|
<tr>
|
||||||
</td></tr></table>
|
<td class="email-header">
|
||||||
</td></tr>
|
|
||||||
<!-- footer -->
|
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||||
<tr><td style="padding:32px 0 0;text-align:center;">
|
<span class="email-brand">{{AppName}}</span>
|
||||||
<p style="margin:0;font-size:11px;color:rgba(160,175,200,0.55);font-weight:300;">© <a href="{{AppUrl}}" style="color:rgba(94,234,212,0.5);text-decoration:none;font-weight:400;">{{AppName}}</a> — Gitea Mail Templates</p>
|
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Card -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-card card-body">
|
||||||
|
|
||||||
|
<p class="email-heading"></p>
|
||||||
|
|
||||||
|
<p class="email-text">
|
||||||
|
{{$repo_url := HTMLFormat "<a href=\047%s\047>%s</a>" .Issue.Repo.HTMLURL .Issue.Repo.FullName}}
|
||||||
|
{{$link := HTMLFormat "<a href=\047%s\047>#%d</a>" .Link .Issue.Index}}
|
||||||
|
{{if .IsPull}}
|
||||||
|
{{.locale.Tr "mail.issue_assigned.pull" .Doer.Name $link $repo_url}}
|
||||||
|
{{else}}
|
||||||
|
{{.locale.Tr "mail.issue_assigned.issue" .Doer.Name $link $repo_url}}
|
||||||
|
{{end}}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="email-subtext"></p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Divider -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-divider"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Button & Link -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-btn-row">
|
||||||
|
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="{{.Link}}" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:16px 18px;">
|
||||||
|
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
|
||||||
|
<p class="email-link-url">{{.Link}}</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-footer">
|
||||||
|
|
||||||
|
<p class="email-footer-text">
|
||||||
|
©
|
||||||
|
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
|
||||||
|
— Gitea Mail Templates
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</center>
|
</center>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -4,59 +4,206 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="x-apple-disable-message-reformatting" />
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<title>{{.Subject}}</title>
|
|
||||||
|
<title>
|
||||||
|
{{.Subject}}
|
||||||
|
</title>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body,.ExternalClass,.ReadMsgBody{background-color:#0a0815}
|
/* Base */
|
||||||
blockquote { padding-left: 1em; margin: 1em 0; border-left: 1px solid rgba(139,92,246,0.5); color: rgba(255,255,255,0.6) }
|
body,.ExternalClass,.ReadMsgBody { background-color:#0a0815 }
|
||||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6{color:#ccfbf1!important}
|
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif }
|
||||||
.card-body a,.card-body a:link,.card-body a:visited{color:#5eead4!important;text-decoration:underline!important}
|
|
||||||
.card-body a:hover,.card-body a:active{color:#99f6e4!important}
|
/* Header */
|
||||||
.card-body li{color:rgba(210,252,245,0.88)!important}
|
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||||
.aurora-content,.aurora-content *{color:rgba(210,252,245,0.88)!important}
|
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||||
.aurora-content a,.aurora-content a:link,.aurora-content a:visited{color:#5eead4!important;text-decoration:underline!important}
|
.email-header { padding:0 0 32px;text-align:center }
|
||||||
.aurora-content a:hover,.aurora-content a:active{color:#99f6e4!important}
|
|
||||||
.aurora-content code,.aurora-content pre{color:#99f6e4!important;background:rgba(0,0,0,0.3)!important;border-color:rgba(13,148,136,0.2)!important}
|
/* Card */
|
||||||
.aurora-content blockquote{color:rgba(255,255,255,0.6)!important}
|
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||||
.aurora-content h1,.aurora-content h2,.aurora-content h3,.aurora-content h4,.aurora-content h5,.aurora-content h6{color:#ccfbf1!important}
|
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||||
.aurora-content hr{border-color:rgba(13,148,136,0.3)!important}
|
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||||
.aurora-content img{border:0;max-width:100%!important}
|
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||||
@media only screen and (max-width:480px){
|
|
||||||
.resp-card{padding:32px 20px!important}
|
/* Divider */
|
||||||
.resp-spacer{padding:24px 20px!important}
|
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||||
.resp-heading{font-size:20px!important}
|
|
||||||
|
/* Button */
|
||||||
|
.email-btn-row { padding:40px 40px;text-align:center }
|
||||||
|
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||||
|
.email-btn-table { margin:0 0 32px }
|
||||||
|
|
||||||
|
/* Fallback link */
|
||||||
|
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||||
|
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||||
|
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
.email-footer { padding:32px 0 0;text-align:center }
|
||||||
|
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||||
|
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||||
|
|
||||||
|
/* Typography utilities */
|
||||||
|
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||||
|
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||||
|
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||||
|
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||||
|
|
||||||
|
/* Content */
|
||||||
|
.aurora-content,.aurora-content * { color:rgba(210,252,245,.88)!important }
|
||||||
|
.aurora-content a,.aurora-content a:link,.aurora-content a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||||
|
.aurora-content a:hover,.aurora-content a:active { color:#99f6e4!important }
|
||||||
|
.aurora-content code,.aurora-content pre { color:#99f6e4!important;background:rgba(0,0,0,.3)!important;border-color:rgba(13,148,136,.2)!important }
|
||||||
|
.aurora-content blockquote { color:rgba(255,255,255,.6)!important }
|
||||||
|
.aurora-content h1,.aurora-content h2,.aurora-content h3,.aurora-content h4,.aurora-content h5,.aurora-content h6 { color:#ccfbf1!important }
|
||||||
|
.aurora-content hr { border-color:rgba(13,148,136,.3)!important }
|
||||||
|
.aurora-content img { border:0;max-width:100%!important }
|
||||||
|
|
||||||
|
/* Responsive */
|
||||||
|
@media only screen and (max-width:480px) {
|
||||||
|
.email-card { padding:32px 20px!important }
|
||||||
|
.email-btn-row { padding:24px 20px!important }
|
||||||
|
.email-heading { font-size:20px!important }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin:0;padding:0;background:#0a0815;font-family:system-ui,-apple-system,sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
|
||||||
<center style="width:100%;table-layout:fixed;">
|
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;margin:40px auto;">
|
|
||||||
<!-- floating title -->
|
|
||||||
<tr><td style="padding:0 0 32px;text-align:center;">
|
|
||||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" style="display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5;" />
|
|
||||||
<span style="font-size:16px;font-weight:300;color:rgba(255,255,255,0.4);letter-spacing:4px;text-transform:uppercase;">{{AppName}}</span>
|
|
||||||
</td></tr>
|
|
||||||
<!-- card -->
|
|
||||||
<tr><td class="resp-card card-body" style="padding:48px 40px;background:rgba(25,20,50,0.8);border:1px solid rgba(13,148,136,0.2);box-shadow:0 0 60px rgba(13,148,136,0.08),0 0 120px rgba(99,102,241,0.04);">
|
|
||||||
<p class="resp-heading" style="margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-0.5px;"></p>
|
|
||||||
<p style="margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,0.88);font-weight:300;">{{if .IsMention}}<p>{{.locale.Tr "mail.issue.x_mentioned_you" .Doer.Name}}</p>{{end}}{{if eq .ActionName "push"}}<p>{{if .Comment.IsForcePush}}{{$oldCommitUrl := printf "%s/commit/%s" .Comment.Issue.PullRequest.BaseRepo.HTMLURL .Comment.OldCommit}}{{$oldShortSha := ShortSha .Comment.OldCommit}}{{$oldCommitLink := HTMLFormat "<a href=\047%[1]s\047>%[2]s</a>" $oldCommitUrl $oldShortSha}}{{$newCommitUrl := printf "%s/commit/%s" .Comment.Issue.PullRequest.BaseRepo.HTMLURL .Comment.NewCommit}}{{$newShortSha := ShortSha .Comment.NewCommit}}{{$newCommitLink := HTMLFormat "<a href=\047%[1]s\047>%[2]s</a>" $newCommitUrl $newShortSha}}{{.locale.Tr "mail.issue.action.force_push" .Doer.Name .Comment.Issue.PullRequest.HeadBranch $oldCommitLink $newCommitLink}}{{else}}{{.locale.TrN (len .Comment.Commits) "mail.issue.action.push_1" "mail.issue.action.push_n" .Doer.Name .Comment.Issue.PullRequest.HeadBranch (len .Comment.Commits)}}{{end}}</p>{{end}}<p>{{if eq .ActionName "close"}}{{.locale.Tr "mail.issue.action.close" .Doer.Name .Issue.Index}}{{else if eq .ActionName "reopen"}}{{.locale.Tr "mail.issue.action.reopen" .Doer.Name .Issue.Index}}{{else if eq .ActionName "merge"}}{{.locale.Tr "mail.issue.action.merge" .Doer.Name .Issue.Index .Issue.PullRequest.BaseBranch}}{{else if eq .ActionName "approve"}}{{.locale.Tr "mail.issue.action.approve" .Doer.Name}}{{else if eq .ActionName "reject"}}{{.locale.Tr "mail.issue.action.reject" .Doer.Name}}{{else if eq .ActionName "review"}}{{.locale.Tr "mail.issue.action.review" .Doer.Name}}{{else if eq .ActionName "review_dismissed"}}{{.locale.Tr "mail.issue.action.review_dismissed" .Doer.Name .Comment.Review.Reviewer.Name}}{{else if eq .ActionName "ready_for_review"}}{{.locale.Tr "mail.issue.action.ready_for_review" .Doer.Name}}{{end}}{{- if eq .Body ""}}{{if eq .ActionName "new"}}{{.locale.Tr "mail.issue.action.new" .Doer.Name .Issue.Index}}{{end}}{{else}}<span class="aurora-content" style="color:rgba(210,252,245,0.88);">{{.Body}}</span>{{end -}}{{if .CanReply}} {{.locale.Tr "mail.reply"}}{{end}}</p>{{- range .ReviewComments}}<hr><p>{{$.locale.Tr "mail.issue.in_tree_path" .TreePath}}</p><pre>{{.Patch}}</pre><div class="aurora-content" style="color:rgba(210,252,245,0.88);">{{.RenderedContent}}</div>{{end -}}{{if eq .ActionName "push"}}<ul>{{range .Comment.Commits}}<li><a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.ID}}">{{ShortSha .ID.String}}</a> - {{.MessageTitle}}</li>{{end}}</ul>{{end}}</p>
|
|
||||||
<p style="margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,0.95);font-weight:300;"></p>
|
|
||||||
</td></tr>
|
|
||||||
<tr><td style="height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,0.3),transparent);"></td></tr>
|
|
||||||
<!-- button + link -->
|
|
||||||
<tr><td class="resp-spacer" style="padding:40px 40px;text-align:center;">
|
|
||||||
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:0 0 32px;"><tr><td align="center">
|
<body style="margin:0;padding:0;background:#0a0815;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||||
<a href="{{.Link}}" style="display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,0.18);border:1px solid rgba(13,148,136,0.3);letter-spacing:1px;">{{.locale.Tr "mail.view_it_on" AppName}}</a>
|
<center style="width:100%;table-layout:fixed;">
|
||||||
</td></tr></table>
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border:1px solid rgba(13,148,136,0.18);background:rgba(13,148,136,0.03);"><tr><td style="padding:16px 18px;">
|
|
||||||
<p style="margin:0 0 8px;font-size:11px;color:rgba(180,252,238,0.75);font-weight:300;">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
|
<!-- Floating Title -->
|
||||||
<p style="margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,0.2);padding:10px 12px;border:1px solid rgba(13,148,136,0.15);word-break:break-all;">{{.Link}}</p>
|
<tr>
|
||||||
</td></tr></table>
|
<td class="email-header">
|
||||||
</td></tr>
|
|
||||||
<!-- footer -->
|
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||||
<tr><td style="padding:32px 0 0;text-align:center;">
|
<span class="email-brand">{{AppName}}</span>
|
||||||
<p style="margin:0;font-size:11px;color:rgba(160,175,200,0.55);font-weight:300;">© <a href="{{AppUrl}}" style="color:rgba(94,234,212,0.5);text-decoration:none;font-weight:400;">{{AppName}}</a> — Gitea Mail Templates</p>
|
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Card -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-card card-body">
|
||||||
|
|
||||||
|
<p class="email-heading"></p>
|
||||||
|
|
||||||
|
<p class="email-text">
|
||||||
|
{{if .IsMention}}
|
||||||
|
<p>{{.locale.Tr "mail.issue.x_mentioned_you" .Doer.Name}}</p>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
{{if eq .ActionName "push"}}
|
||||||
|
<p>
|
||||||
|
{{if .Comment.IsForcePush}}
|
||||||
|
{{$oldCommitUrl := printf "%s/commit/%s" .Comment.Issue.PullRequest.BaseRepo.HTMLURL .Comment.OldCommit}}
|
||||||
|
{{$oldShortSha := ShortSha .Comment.OldCommit}}
|
||||||
|
{{$oldCommitLink := HTMLFormat "<a href=\047%[1]s\047>%[2]s</a>" $oldCommitUrl $oldShortSha}}
|
||||||
|
{{$newCommitUrl := printf "%s/commit/%s" .Comment.Issue.PullRequest.BaseRepo.HTMLURL .Comment.NewCommit}}
|
||||||
|
{{$newShortSha := ShortSha .Comment.NewCommit}}
|
||||||
|
{{$newCommitLink := HTMLFormat "<a href=\047%[1]s\047>%[2]s</a>" $newCommitUrl $newShortSha}}
|
||||||
|
{{.locale.Tr "mail.issue.action.force_push" .Doer.Name .Comment.Issue.PullRequest.HeadBranch $oldCommitLink $newCommitLink}}
|
||||||
|
{{else}}
|
||||||
|
{{.locale.TrN (len .Comment.Commits) "mail.issue.action.push_1" "mail.issue.action.push_n" .Doer.Name .Comment.Issue.PullRequest.HeadBranch (len .Comment.Commits)}}
|
||||||
|
{{end}}
|
||||||
|
</p>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
<p>
|
||||||
|
{{if eq .ActionName "close"}}
|
||||||
|
{{.locale.Tr "mail.issue.action.close" .Doer.Name .Issue.Index}}
|
||||||
|
{{else if eq .ActionName "reopen"}}
|
||||||
|
{{.locale.Tr "mail.issue.action.reopen" .Doer.Name .Issue.Index}}
|
||||||
|
{{else if eq .ActionName "merge"}}
|
||||||
|
{{.locale.Tr "mail.issue.action.merge" .Doer.Name .Issue.Index .Issue.PullRequest.BaseBranch}}
|
||||||
|
{{else if eq .ActionName "approve"}}
|
||||||
|
{{.locale.Tr "mail.issue.action.approve" .Doer.Name}}
|
||||||
|
{{else if eq .ActionName "reject"}}
|
||||||
|
{{.locale.Tr "mail.issue.action.reject" .Doer.Name}}
|
||||||
|
{{else if eq .ActionName "review"}}
|
||||||
|
{{.locale.Tr "mail.issue.action.review" .Doer.Name}}
|
||||||
|
{{else if eq .ActionName "review_dismissed"}}
|
||||||
|
{{.locale.Tr "mail.issue.action.review_dismissed" .Doer.Name .Comment.Review.Reviewer.Name}}
|
||||||
|
{{else if eq .ActionName "ready_for_review"}}
|
||||||
|
{{.locale.Tr "mail.issue.action.ready_for_review" .Doer.Name}}
|
||||||
|
{{end}}
|
||||||
|
{{- if eq .Body ""}}
|
||||||
|
{{if eq .ActionName "new"}}
|
||||||
|
{{.locale.Tr "mail.issue.action.new" .Doer.Name .Issue.Index}}
|
||||||
|
{{end}}
|
||||||
|
{{else}}
|
||||||
|
<span class="aurora-content">{{.Body}}</span>
|
||||||
|
{{end -}}
|
||||||
|
{{if .CanReply}}
|
||||||
|
{{.locale.Tr "mail.reply"}}
|
||||||
|
{{end}}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{{- range .ReviewComments}}
|
||||||
|
<hr>
|
||||||
|
<p>{{$.locale.Tr "mail.issue.in_tree_path" .TreePath}}</p>
|
||||||
|
<pre>{{.Patch}}</pre>
|
||||||
|
<div class="aurora-content">{{.RenderedContent}}</div>
|
||||||
|
{{end -}}
|
||||||
|
|
||||||
|
{{if eq .ActionName "push"}}
|
||||||
|
<ul>
|
||||||
|
{{range .Comment.Commits}}
|
||||||
|
<li>
|
||||||
|
<a href="{{$.Comment.Issue.PullRequest.BaseRepo.HTMLURL}}/commit/{{.ID}}">{{ShortSha .ID.String}}</a> - {{.MessageTitle}}
|
||||||
|
</li>
|
||||||
|
{{end}}
|
||||||
|
</ul>
|
||||||
|
{{end}}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="email-subtext"></p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Divider -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-divider"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Button & Link -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-btn-row">
|
||||||
|
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="{{.Link}}" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:16px 18px;">
|
||||||
|
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
|
||||||
|
<p class="email-link-url">{{.Link}}</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-footer">
|
||||||
|
|
||||||
|
<p class="email-footer-text">
|
||||||
|
©
|
||||||
|
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
|
||||||
|
— Gitea Mail Templates
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</center>
|
</center>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -4,62 +4,163 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="x-apple-disable-message-reformatting" />
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<title>{{.Subject}}</title>
|
|
||||||
|
<title>
|
||||||
|
{{.Subject}}
|
||||||
|
</title>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body,.ExternalClass,.ReadMsgBody{background-color:#0a0815}
|
/* Base */
|
||||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6{color:#ccfbf1!important}
|
body,.ExternalClass,.ReadMsgBody { background-color:#0a0815 }
|
||||||
.card-body a,.card-body a:link,.card-body a:visited{color:#5eead4!important;text-decoration:underline!important}
|
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif }
|
||||||
.card-body a:hover,.card-body a:active{color:#99f6e4!important}
|
|
||||||
.card-body li{color:rgba(210,252,245,0.88)!important}
|
/* Header */
|
||||||
.aurora-content,.aurora-content *{color:rgba(210,252,245,0.88)!important}
|
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||||
.aurora-content a,.aurora-content a:link,.aurora-content a:visited{color:#5eead4!important;text-decoration:underline!important}
|
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||||
.aurora-content a:hover,.aurora-content a:active{color:#99f6e4!important}
|
.email-header { padding:0 0 32px;text-align:center }
|
||||||
.aurora-content code,.aurora-content pre{color:#99f6e4!important;background:rgba(0,0,0,0.3)!important;border-color:rgba(13,148,136,0.2)!important}
|
|
||||||
.aurora-content blockquote{color:rgba(255,255,255,0.6)!important}
|
/* Card */
|
||||||
.aurora-content h1,.aurora-content h2,.aurora-content h3,.aurora-content h4,.aurora-content h5,.aurora-content h6{color:#ccfbf1!important}
|
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||||
.aurora-content hr{border-color:rgba(13,148,136,0.3)!important}
|
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||||
.aurora-content img{border:0;max-width:100%!important}
|
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||||
@media only screen and (max-width:480px){
|
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||||
.resp-card{padding:32px 20px!important}
|
|
||||||
.resp-spacer{padding:24px 20px!important}
|
/* Divider */
|
||||||
.resp-heading{font-size:20px!important}
|
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||||
|
|
||||||
|
/* Button */
|
||||||
|
.email-btn-row { padding:40px 40px;text-align:center }
|
||||||
|
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||||
|
.email-btn-table { margin:0 0 32px }
|
||||||
|
|
||||||
|
/* Fallback link */
|
||||||
|
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||||
|
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||||
|
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
.email-footer { padding:32px 0 0;text-align:center }
|
||||||
|
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||||
|
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||||
|
|
||||||
|
/* Typography utilities */
|
||||||
|
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||||
|
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||||
|
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||||
|
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||||
|
|
||||||
|
/* Content */
|
||||||
|
.aurora-content,.aurora-content * { color:rgba(210,252,245,.88)!important }
|
||||||
|
.aurora-content a,.aurora-content a:link,.aurora-content a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||||
|
.aurora-content a:hover,.aurora-content a:active { color:#99f6e4!important }
|
||||||
|
.aurora-content code,.aurora-content pre { color:#99f6e4!important;background:rgba(0,0,0,.3)!important;border-color:rgba(13,148,136,.2)!important }
|
||||||
|
.aurora-content blockquote { color:rgba(255,255,255,.6)!important }
|
||||||
|
.aurora-content h1,.aurora-content h2,.aurora-content h3,.aurora-content h4,.aurora-content h5,.aurora-content h6 { color:#ccfbf1!important }
|
||||||
|
.aurora-content hr { border-color:rgba(13,148,136,.3)!important }
|
||||||
|
.aurora-content img { border:0;max-width:100%!important }
|
||||||
|
|
||||||
|
/* Responsive */
|
||||||
|
@media only screen and (max-width:480px) {
|
||||||
|
.email-card { padding:32px 20px!important }
|
||||||
|
.email-btn-row { padding:24px 20px!important }
|
||||||
|
.email-heading { font-size:20px!important }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin:0;padding:0;background:#0a0815;font-family:system-ui,-apple-system,sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
|
||||||
<center style="width:100%;table-layout:fixed;">
|
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;margin:40px auto;">
|
|
||||||
<!-- floating title -->
|
|
||||||
<tr><td style="padding:0 0 32px;text-align:center;">
|
|
||||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" style="display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5;" />
|
|
||||||
<span style="font-size:16px;font-weight:300;color:rgba(255,255,255,0.4);letter-spacing:4px;text-transform:uppercase;">{{AppName}}</span>
|
|
||||||
</td></tr>
|
|
||||||
<!-- card -->
|
|
||||||
<tr><td class="resp-card card-body" style="padding:48px 40px;background:rgba(25,20,50,0.8);border:1px solid rgba(13,148,136,0.2);box-shadow:0 0 60px rgba(13,148,136,0.08),0 0 120px rgba(99,102,241,0.04);">
|
|
||||||
<p class="resp-heading" style="margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-0.5px;"></p>
|
|
||||||
<p style="margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,0.88);font-weight:300;">{{$release_url := HTMLFormat "<a href=\047%s\047>%s</a>" .Release.HTMLURL .Release.TagName}}{{$repo_url := HTMLFormat "<a href=\047%s\047>%s</a>" .Release.Repo.HTMLURL .Release.Repo.FullName}}{{.locale.Tr "mail.release.new.text" .Release.Publisher.Name $release_url $repo_url}}
|
|
||||||
<h4 style="color:#ccfbf1;">{{.locale.Tr "mail.release.title" .Release.Title}}</h4>
|
|
||||||
{{if .Release.RenderedNote}}<p style="color:rgba(210,252,245,0.88);font-size:14px;">{{.locale.Tr "mail.release.note"}}</p><div class="aurora-content" style="color:rgba(210,252,245,0.88);font-size:14px;line-height:2;">{{.Release.RenderedNote}}</div>{{end}}
|
|
||||||
<p style="color:rgba(210,252,245,0.88);font-size:14px;">{{.locale.Tr "mail.release.downloads"}}</p>
|
|
||||||
<ul>{{if not .DisableDownloadSourceArchives}}<li><a href="{{.Release.Repo.HTMLURL}}/archive/{{.Release.TagName | PathEscapeSegments}}.zip">{{.locale.Tr "mail.release.download.zip"}}</a></li><li><a href="{{.Release.Repo.HTMLURL}}/archive/{{.Release.TagName | PathEscapeSegments}}.tar.gz">{{.locale.Tr "mail.release.download.targz"}}</a></li>{{end}}{{if .Release.Attachments}}{{range .Release.Attachments}}<li><a href="{{.DownloadURL}}">{{.Name}} ({{.Size | FileSize}})</a></li>{{end}}{{end}}</ul></p>
|
|
||||||
<p style="margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,0.95);font-weight:300;"></p>
|
|
||||||
</td></tr>
|
|
||||||
<tr><td style="height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,0.3),transparent);"></td></tr>
|
|
||||||
<!-- button + link -->
|
|
||||||
<tr><td class="resp-spacer" style="padding:40px 40px;text-align:center;">
|
|
||||||
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:0 0 32px;"><tr><td align="center">
|
<body style="margin:0;padding:0;background:#0a0815;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||||
<a href="{{.Link}}" style="display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,0.18);border:1px solid rgba(13,148,136,0.3);letter-spacing:1px;">{{.locale.Tr "mail.view_it_on" AppName}}</a>
|
<center style="width:100%;table-layout:fixed;">
|
||||||
</td></tr></table>
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border:1px solid rgba(13,148,136,0.18);background:rgba(13,148,136,0.03);"><tr><td style="padding:16px 18px;">
|
|
||||||
<p style="margin:0 0 8px;font-size:11px;color:rgba(180,252,238,0.75);font-weight:300;"><span style="color:rgba(180,195,215,0.95);">{{.locale.Tr "mail.link_not_working_do_paste"}}</span></p>
|
<!-- Floating Title -->
|
||||||
<p style="margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,0.2);padding:10px 12px;border:1px solid rgba(13,148,136,0.15);word-break:break-all;">{{.Link}}</p>
|
<tr>
|
||||||
</td></tr></table>
|
<td class="email-header">
|
||||||
</td></tr>
|
|
||||||
<!-- footer -->
|
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||||
<tr><td style="padding:32px 0 0;text-align:center;">
|
<span class="email-brand">{{AppName}}</span>
|
||||||
<p style="margin:0;font-size:11px;color:rgba(160,175,200,0.55);font-weight:300;">© <a href="{{AppUrl}}" style="color:rgba(94,234,212,0.5);text-decoration:none;font-weight:400;">{{AppName}}</a> — Gitea Mail Templates</p>
|
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Card -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-card card-body">
|
||||||
|
|
||||||
|
<p class="email-heading"></p>
|
||||||
|
|
||||||
|
<p class="email-text">
|
||||||
|
{{$release_url := HTMLFormat "<a href=\047%s\047>%s</a>" .Release.HTMLURL .Release.TagName}}
|
||||||
|
{{$repo_url := HTMLFormat "<a href=\047%s\047>%s</a>" .Release.Repo.HTMLURL .Release.Repo.FullName}}
|
||||||
|
{{.locale.Tr "mail.release.new.text" .Release.Publisher.Name $release_url $repo_url}}
|
||||||
|
|
||||||
|
<h4>{{.locale.Tr "mail.release.title" .Release.Title}}</h4>
|
||||||
|
|
||||||
|
{{if .Release.RenderedNote}}
|
||||||
|
<p>{{.locale.Tr "mail.release.note"}}</p>
|
||||||
|
<div class="aurora-content" style="font-size:14px;line-height:2;">{{.Release.RenderedNote}}</div>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
<p>{{.locale.Tr "mail.release.downloads"}}</p>
|
||||||
|
<ul>
|
||||||
|
{{if not .DisableDownloadSourceArchives}}
|
||||||
|
<li><a href="{{.Release.Repo.HTMLURL}}/archive/{{.Release.TagName | PathEscapeSegments}}.zip">{{.locale.Tr "mail.release.download.zip"}}</a></li>
|
||||||
|
<li><a href="{{.Release.Repo.HTMLURL}}/archive/{{.Release.TagName | PathEscapeSegments}}.tar.gz">{{.locale.Tr "mail.release.download.targz"}}</a></li>
|
||||||
|
{{end}}
|
||||||
|
{{if .Release.Attachments}}
|
||||||
|
{{range .Release.Attachments}}
|
||||||
|
<li><a href="{{.DownloadURL}}">{{.Name}} ({{.Size | FileSize}})</a></li>
|
||||||
|
{{end}}
|
||||||
|
{{end}}
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="email-subtext"></p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Divider -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-divider"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Button & Link -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-btn-row">
|
||||||
|
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="{{.Link}}" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:16px 18px;">
|
||||||
|
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
|
||||||
|
<p class="email-link-url">{{.Link}}</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-footer">
|
||||||
|
|
||||||
|
<p class="email-footer-text">
|
||||||
|
©
|
||||||
|
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
|
||||||
|
— Gitea Mail Templates
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</center>
|
</center>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -4,50 +4,132 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="x-apple-disable-message-reformatting" />
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<title>{{.Subject}}</title>
|
|
||||||
|
<title>
|
||||||
|
{{.Subject}}
|
||||||
|
</title>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body,.ExternalClass,.ReadMsgBody{background-color:#0a0815}
|
/* Base */
|
||||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6{color:#ccfbf1!important}
|
body,.ExternalClass,.ReadMsgBody { background-color:#0a0815 }
|
||||||
.card-body a,.card-body a:link,.card-body a:visited{color:#5eead4!important;text-decoration:underline!important}
|
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif }
|
||||||
.card-body a:hover,.card-body a:active{color:#99f6e4!important}
|
|
||||||
.card-body li{color:rgba(210,252,245,0.88)!important}
|
/* Header */
|
||||||
@media only screen and (max-width:480px){
|
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||||
.resp-card{padding:32px 20px!important}
|
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||||
.resp-spacer{padding:24px 20px!important}
|
.email-header { padding:0 0 32px;text-align:center }
|
||||||
.resp-heading{font-size:20px!important}
|
|
||||||
|
/* Card */
|
||||||
|
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||||
|
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||||
|
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||||
|
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||||
|
|
||||||
|
/* Divider */
|
||||||
|
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||||
|
|
||||||
|
/* Button */
|
||||||
|
.email-btn-row { padding:40px 40px;text-align:center }
|
||||||
|
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||||
|
.email-btn-table { margin:0 0 32px }
|
||||||
|
|
||||||
|
/* Fallback link */
|
||||||
|
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||||
|
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||||
|
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
.email-footer { padding:32px 0 0;text-align:center }
|
||||||
|
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||||
|
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||||
|
|
||||||
|
/* Typography utilities */
|
||||||
|
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||||
|
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||||
|
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||||
|
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||||
|
|
||||||
|
/* Responsive */
|
||||||
|
@media only screen and (max-width:480px) {
|
||||||
|
.email-card { padding:32px 20px!important }
|
||||||
|
.email-btn-row { padding:24px 20px!important }
|
||||||
|
.email-heading { font-size:20px!important }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin:0;padding:0;background:#0a0815;font-family:system-ui,-apple-system,sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
|
||||||
<center style="width:100%;table-layout:fixed;">
|
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;margin:40px auto;">
|
|
||||||
<!-- floating title -->
|
|
||||||
<tr><td style="padding:0 0 32px;text-align:center;">
|
|
||||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" style="display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5;" />
|
|
||||||
<span style="font-size:16px;font-weight:300;color:rgba(255,255,255,0.4);letter-spacing:4px;text-transform:uppercase;">{{AppName}}</span>
|
|
||||||
</td></tr>
|
|
||||||
<!-- card -->
|
|
||||||
<tr><td class="resp-card card-body" style="padding:48px 40px;background:rgba(25,20,50,0.8);border:1px solid rgba(13,148,136,0.2);box-shadow:0 0 60px rgba(13,148,136,0.08),0 0 120px rgba(99,102,241,0.04);">
|
|
||||||
<p class="resp-heading" style="margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-0.5px;"></p>
|
|
||||||
<p style="margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,0.88);font-weight:300;">{{$url := HTMLFormat "<a href=\047%[1]s\047>%[2]s</a>" .Link .Repo}}{{.Subject}}. {{.locale.Tr "mail.repo.transfer.body" $url}}</p>
|
|
||||||
<p style="margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,0.95);font-weight:300;"></p>
|
|
||||||
</td></tr>
|
|
||||||
<tr><td style="height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,0.3),transparent);"></td></tr>
|
|
||||||
<!-- button + link -->
|
|
||||||
<tr><td class="resp-spacer" style="padding:40px 40px;text-align:center;">
|
|
||||||
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:0 0 32px;"><tr><td align="center">
|
<body style="margin:0;padding:0;background:#0a0815;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||||
<a href="{{.Link}}" style="display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,0.18);border:1px solid rgba(13,148,136,0.3);letter-spacing:1px;">{{.locale.Tr "mail.view_it_on" AppName}}</a>
|
<center style="width:100%;table-layout:fixed;">
|
||||||
</td></tr></table>
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border:1px solid rgba(13,148,136,0.18);background:rgba(13,148,136,0.03);"><tr><td style="padding:16px 18px;">
|
|
||||||
<p style="margin:0 0 8px;font-size:11px;color:rgba(180,252,238,0.75);font-weight:300;"><span style="color:rgba(180,195,215,0.95);">{{.locale.Tr "mail.link_not_working_do_paste"}}</span></p>
|
<!-- Floating Title -->
|
||||||
<p style="margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,0.2);padding:10px 12px;border:1px solid rgba(13,148,136,0.15);word-break:break-all;">{{.Link}}</p>
|
<tr>
|
||||||
</td></tr></table>
|
<td class="email-header">
|
||||||
</td></tr>
|
|
||||||
<!-- footer -->
|
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||||
<tr><td style="padding:32px 0 0;text-align:center;">
|
<span class="email-brand">{{AppName}}</span>
|
||||||
<p style="margin:0;font-size:11px;color:rgba(160,175,200,0.55);font-weight:300;">© <a href="{{AppUrl}}" style="color:rgba(94,234,212,0.5);text-decoration:none;font-weight:400;">{{AppName}}</a> — Gitea Mail Templates</p>
|
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Card -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-card card-body">
|
||||||
|
|
||||||
|
<p class="email-heading"></p>
|
||||||
|
|
||||||
|
<p class="email-text">
|
||||||
|
{{$url := HTMLFormat "<a href=\047%[1]s\047>%[2]s</a>" .Link .Repo}}
|
||||||
|
{{.Subject}}. {{.locale.Tr "mail.repo.transfer.body" $url}}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="email-subtext"></p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Divider -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-divider"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Button & Link -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-btn-row">
|
||||||
|
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="{{.Link}}" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:16px 18px;">
|
||||||
|
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
|
||||||
|
<p class="email-link-url">{{.Link}}</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-footer">
|
||||||
|
|
||||||
|
<p class="email-footer-text">
|
||||||
|
©
|
||||||
|
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
|
||||||
|
— Gitea Mail Templates
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</center>
|
</center>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -4,50 +4,137 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="x-apple-disable-message-reformatting" />
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<title>{{.locale.Tr "mail.activate_account.title" (.DisplayName|DotEscape)}}</title>
|
|
||||||
|
<title>
|
||||||
|
{{.locale.Tr "mail.activate_account.title" (.DisplayName|DotEscape)}}
|
||||||
|
</title>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body,.ExternalClass,.ReadMsgBody{background-color:#0a0815}
|
/* Base */
|
||||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6{color:#ccfbf1!important}
|
body,.ExternalClass,.ReadMsgBody { background-color:#0a0815 }
|
||||||
.card-body a,.card-body a:link,.card-body a:visited{color:#5eead4!important;text-decoration:underline!important}
|
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif }
|
||||||
.card-body a:hover,.card-body a:active{color:#99f6e4!important}
|
|
||||||
.card-body li{color:rgba(210,252,245,0.88)!important}
|
/* Header */
|
||||||
@media only screen and (max-width:480px){
|
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||||
.resp-card{padding:32px 20px!important}
|
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||||
.resp-spacer{padding:24px 20px!important}
|
.email-header { padding:0 0 32px;text-align:center }
|
||||||
.resp-heading{font-size:20px!important}
|
|
||||||
|
/* Card */
|
||||||
|
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||||
|
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||||
|
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||||
|
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||||
|
|
||||||
|
/* Divider */
|
||||||
|
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||||
|
|
||||||
|
/* Button */
|
||||||
|
.email-btn-row { padding:40px 40px;text-align:center }
|
||||||
|
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||||
|
.email-btn-table { margin:0 0 32px }
|
||||||
|
|
||||||
|
/* Fallback link */
|
||||||
|
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||||
|
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||||
|
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
.email-footer { padding:32px 0 0;text-align:center }
|
||||||
|
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||||
|
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||||
|
|
||||||
|
/* Typography utilities */
|
||||||
|
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||||
|
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||||
|
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||||
|
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||||
|
|
||||||
|
/* Responsive */
|
||||||
|
@media only screen and (max-width:480px) {
|
||||||
|
.email-card { padding:32px 20px!important }
|
||||||
|
.email-btn-row { padding:24px 20px!important }
|
||||||
|
.email-heading { font-size:20px!important }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin:0;padding:0;background:#0a0815;font-family:system-ui,-apple-system,sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
|
||||||
|
<body style="margin:0;padding:0;background:#0a0815;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||||
<center style="width:100%;table-layout:fixed;">
|
<center style="width:100%;table-layout:fixed;">
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;margin:40px auto;">
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||||
<!-- floating title -->
|
|
||||||
<tr><td style="padding:0 0 32px;text-align:center;">
|
<!-- Floating Title -->
|
||||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" style="display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5;" />
|
<tr>
|
||||||
<span style="font-size:16px;font-weight:300;color:rgba(255,255,255,0.4);letter-spacing:4px;text-transform:uppercase;">{{AppName}}</span>
|
<td class="email-header">
|
||||||
</td></tr>
|
|
||||||
<!-- card -->
|
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||||
<tr><td class="resp-card card-body" style="padding:48px 40px;background:rgba(25,20,50,0.8);border:1px solid rgba(13,148,136,0.2);box-shadow:0 0 60px rgba(13,148,136,0.08),0 0 120px rgba(99,102,241,0.04);">
|
<span class="email-brand">{{AppName}}</span>
|
||||||
<p class="resp-heading" style="margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-0.5px;">{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}</p>
|
|
||||||
<p style="margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,0.88);font-weight:300;">{{.locale.Tr "mail.activate_account.text_1" (.DisplayName|DotEscape) AppName}}</p>
|
</td>
|
||||||
<p style="margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,0.95);font-weight:300;">{{.locale.Tr "mail.activate_account.text_2" .ActiveCodeLives}}</p>
|
</tr>
|
||||||
</td></tr>
|
|
||||||
<tr><td style="height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,0.3),transparent);"></td></tr>
|
<!-- Card -->
|
||||||
<!-- button + link -->
|
<tr>
|
||||||
<tr><td class="resp-spacer" style="padding:40px 40px;text-align:center;">
|
<td class="email-card card-body">
|
||||||
{{$activate_url := printf "%suser/activate?code=%s" AppUrl (QueryEscape .Code)}}
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:0 0 32px;"><tr><td align="center">
|
<p class="email-heading">
|
||||||
<a href="{{$activate_url}}" style="display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,0.18);border:1px solid rgba(13,148,136,0.3);letter-spacing:1px;">Activate Account</a>
|
{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}
|
||||||
</td></tr></table>
|
</p>
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border:1px solid rgba(13,148,136,0.18);background:rgba(13,148,136,0.03);"><tr><td style="padding:16px 18px;">
|
|
||||||
<p style="margin:0 0 8px;font-size:11px;color:rgba(180,252,238,0.75);font-weight:300;"><span style="color:rgba(180,195,215,0.95);">{{.locale.Tr "mail.link_not_working_do_paste"}}</span></p>
|
<p class="email-text">
|
||||||
<p style="margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,0.2);padding:10px 12px;border:1px solid rgba(13,148,136,0.15);word-break:break-all;">{{$activate_url}}</p>
|
{{.locale.Tr "mail.activate_account.text_1" (.DisplayName|DotEscape) AppName}}
|
||||||
</td></tr></table>
|
</p>
|
||||||
</td></tr>
|
|
||||||
<!-- footer -->
|
<p class="email-subtext">
|
||||||
<tr><td style="padding:32px 0 0;text-align:center;">
|
{{.locale.Tr "mail.activate_account.text_2" .ActiveCodeLives}}
|
||||||
<p style="margin:0;font-size:11px;color:rgba(160,175,200,0.55);font-weight:300;">© <a href="{{AppUrl}}" style="color:rgba(94,234,212,0.5);text-decoration:none;font-weight:400;">{{AppName}}</a> — Gitea Mail Templates</p>
|
</p>
|
||||||
</td></tr>
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Divider -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-divider"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Button & Link -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-btn-row">
|
||||||
|
|
||||||
|
{{$activate_url := printf "%suser/activate?code=%s" AppUrl (QueryEscape .Code)}}
|
||||||
|
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="{{$activate_url}}" class="email-btn">{{.locale.Tr "mail.activate_account"}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:16px 18px;">
|
||||||
|
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
|
||||||
|
<p class="email-link-url">{{$activate_url}}</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-footer">
|
||||||
|
|
||||||
|
<p class="email-footer-text">
|
||||||
|
©
|
||||||
|
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
|
||||||
|
— Gitea Mail Templates
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</center>
|
</center>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -4,50 +4,135 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="x-apple-disable-message-reformatting" />
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<title>{{.locale.Tr "mail.activate_email.title" (.DisplayName|DotEscape)}}</title>
|
|
||||||
|
<title>
|
||||||
|
{{.locale.Tr "mail.activate_email.title" (.DisplayName|DotEscape)}}
|
||||||
|
</title>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body,.ExternalClass,.ReadMsgBody{background-color:#0a0815}
|
/* Base */
|
||||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6{color:#ccfbf1!important}
|
body,.ExternalClass,.ReadMsgBody { background-color:#0a0815 }
|
||||||
.card-body a,.card-body a:link,.card-body a:visited{color:#5eead4!important;text-decoration:underline!important}
|
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif }
|
||||||
.card-body a:hover,.card-body a:active{color:#99f6e4!important}
|
|
||||||
.card-body li{color:rgba(210,252,245,0.88)!important}
|
/* Header */
|
||||||
@media only screen and (max-width:480px){
|
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||||
.resp-card{padding:32px 20px!important}
|
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||||
.resp-spacer{padding:24px 20px!important}
|
.email-header { padding:0 0 32px;text-align:center }
|
||||||
.resp-heading{font-size:20px!important}
|
|
||||||
|
/* Card */
|
||||||
|
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||||
|
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||||
|
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||||
|
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||||
|
|
||||||
|
/* Divider */
|
||||||
|
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||||
|
|
||||||
|
/* Button */
|
||||||
|
.email-btn-row { padding:40px 40px;text-align:center }
|
||||||
|
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||||
|
.email-btn-table { margin:0 0 32px }
|
||||||
|
|
||||||
|
/* Fallback link */
|
||||||
|
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||||
|
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||||
|
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
.email-footer { padding:32px 0 0;text-align:center }
|
||||||
|
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||||
|
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||||
|
|
||||||
|
/* Typography utilities */
|
||||||
|
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||||
|
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||||
|
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||||
|
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||||
|
|
||||||
|
/* Responsive */
|
||||||
|
@media only screen and (max-width:480px) {
|
||||||
|
.email-card { padding:32px 20px!important }
|
||||||
|
.email-btn-row { padding:24px 20px!important }
|
||||||
|
.email-heading { font-size:20px!important }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin:0;padding:0;background:#0a0815;font-family:system-ui,-apple-system,sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
|
||||||
|
<body style="margin:0;padding:0;background:#0a0815;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||||
<center style="width:100%;table-layout:fixed;">
|
<center style="width:100%;table-layout:fixed;">
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;margin:40px auto;">
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||||
<!-- floating title -->
|
|
||||||
<tr><td style="padding:0 0 32px;text-align:center;">
|
<!-- Floating Title -->
|
||||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" style="display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5;" />
|
<tr>
|
||||||
<span style="font-size:16px;font-weight:300;color:rgba(255,255,255,0.4);letter-spacing:4px;text-transform:uppercase;">{{AppName}}</span>
|
<td class="email-header">
|
||||||
</td></tr>
|
|
||||||
<!-- card -->
|
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||||
<tr><td class="resp-card card-body" style="padding:48px 40px;background:rgba(25,20,50,0.8);border:1px solid rgba(13,148,136,0.2);box-shadow:0 0 60px rgba(13,148,136,0.08),0 0 120px rgba(99,102,241,0.04);">
|
<span class="email-brand">{{AppName}}</span>
|
||||||
<p class="resp-heading" style="margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-0.5px;">{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}</p>
|
|
||||||
<p style="margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,0.88);font-weight:300;">{{.locale.Tr "mail.activate_email.text" .ActiveCodeLives}}</p>
|
</td>
|
||||||
<p style="margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,0.95);font-weight:300;"></p>
|
</tr>
|
||||||
</td></tr>
|
|
||||||
<tr><td style="height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,0.3),transparent);"></td></tr>
|
<!-- Card -->
|
||||||
<!-- button + link -->
|
<tr>
|
||||||
<tr><td class="resp-spacer" style="padding:40px 40px;text-align:center;">
|
<td class="email-card card-body">
|
||||||
{{$activate_url := printf "%suser/activate_email?code=%s&email=%s" AppUrl (QueryEscape .Code) (QueryEscape .Email)}}
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:0 0 32px;"><tr><td align="center">
|
<p class="email-heading">
|
||||||
<a href="{{$activate_url}}" style="display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,0.18);border:1px solid rgba(13,148,136,0.3);letter-spacing:1px;">Verify Email Address</a>
|
{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}
|
||||||
</td></tr></table>
|
</p>
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border:1px solid rgba(13,148,136,0.18);background:rgba(13,148,136,0.03);"><tr><td style="padding:16px 18px;">
|
|
||||||
<p style="margin:0 0 8px;font-size:11px;color:rgba(180,252,238,0.75);font-weight:300;"><span style="color:rgba(180,195,215,0.95);">{{.locale.Tr "mail.link_not_working_do_paste"}}</span></p>
|
<p class="email-text">
|
||||||
<p style="margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,0.2);padding:10px 12px;border:1px solid rgba(13,148,136,0.15);word-break:break-all;">{{$activate_url}}</p>
|
{{.locale.Tr "mail.activate_email.text" .ActiveCodeLives}}
|
||||||
</td></tr></table>
|
</p>
|
||||||
</td></tr>
|
|
||||||
<!-- footer -->
|
<p class="email-subtext"></p>
|
||||||
<tr><td style="padding:32px 0 0;text-align:center;">
|
|
||||||
<p style="margin:0;font-size:11px;color:rgba(160,175,200,0.55);font-weight:300;">© <a href="{{AppUrl}}" style="color:rgba(94,234,212,0.5);text-decoration:none;font-weight:400;">{{AppName}}</a> — Gitea Mail Templates</p>
|
</td>
|
||||||
</td></tr>
|
</tr>
|
||||||
|
|
||||||
|
<!-- Divider -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-divider"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Button & Link -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-btn-row">
|
||||||
|
|
||||||
|
{{$activate_url := printf "%suser/activate_email?code=%s&email=%s" AppUrl (QueryEscape .Code) (QueryEscape .Email)}}
|
||||||
|
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="{{$activate_url}}" class="email-btn">{{.locale.Tr "mail.activate_email"}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:16px 18px;">
|
||||||
|
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
|
||||||
|
<p class="email-link-url">{{$activate_url}}</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-footer">
|
||||||
|
|
||||||
|
<p class="email-footer-text">
|
||||||
|
©
|
||||||
|
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
|
||||||
|
— Gitea Mail Templates
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</center>
|
</center>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -4,52 +4,137 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="x-apple-disable-message-reformatting" />
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<title>{{.locale.Tr "mail.register_notify.title" (.DisplayName|DotEscape) AppName}}</title>
|
|
||||||
|
<title>
|
||||||
|
{{.locale.Tr "mail.register_notify.title" (.DisplayName|DotEscape) AppName}}
|
||||||
|
</title>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body,.ExternalClass,.ReadMsgBody{background-color:#0a0815}
|
/* Base */
|
||||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6{color:#ccfbf1!important}
|
body,.ExternalClass,.ReadMsgBody { background-color:#0a0815 }
|
||||||
.card-body a,.card-body a:link,.card-body a:visited{color:#5eead4!important;text-decoration:underline!important}
|
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif }
|
||||||
.card-body a:hover,.card-body a:active{color:#99f6e4!important}
|
|
||||||
.card-body li{color:rgba(210,252,245,0.88)!important}
|
/* Header */
|
||||||
@media only screen and (max-width:480px){
|
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||||
.resp-card{padding:32px 20px!important}
|
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||||
.resp-spacer{padding:24px 20px!important}
|
.email-header { padding:0 0 32px;text-align:center }
|
||||||
.resp-heading{font-size:20px!important}
|
|
||||||
|
/* Card */
|
||||||
|
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||||
|
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||||
|
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||||
|
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||||
|
|
||||||
|
/* Divider */
|
||||||
|
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||||
|
|
||||||
|
/* Button */
|
||||||
|
.email-btn-row { padding:40px 40px;text-align:center }
|
||||||
|
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||||
|
.email-btn-table { margin:0 0 32px }
|
||||||
|
|
||||||
|
/* Fallback link */
|
||||||
|
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||||
|
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||||
|
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
.email-footer { padding:32px 0 0;text-align:center }
|
||||||
|
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||||
|
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||||
|
|
||||||
|
/* Typography utilities */
|
||||||
|
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||||
|
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||||
|
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||||
|
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||||
|
|
||||||
|
/* Responsive */
|
||||||
|
@media only screen and (max-width:480px) {
|
||||||
|
.email-card { padding:32px 20px!important }
|
||||||
|
.email-btn-row { padding:24px 20px!important }
|
||||||
|
.email-heading { font-size:20px!important }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin:0;padding:0;background:#0a0815;font-family:system-ui,-apple-system,sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
|
||||||
<center style="width:100%;table-layout:fixed;">
|
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;margin:40px auto;">
|
|
||||||
<!-- floating title -->
|
|
||||||
<tr><td style="padding:0 0 32px;text-align:center;">
|
|
||||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" style="display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5;" />
|
|
||||||
<span style="font-size:16px;font-weight:300;color:rgba(255,255,255,0.4);letter-spacing:4px;text-transform:uppercase;">{{AppName}}</span>
|
|
||||||
</td></tr>
|
|
||||||
<!-- card -->
|
|
||||||
<tr><td class="resp-card card-body" style="padding:48px 40px;background:rgba(25,20,50,0.8);border:1px solid rgba(13,148,136,0.2);box-shadow:0 0 60px rgba(13,148,136,0.08),0 0 120px rgba(99,102,241,0.04);">
|
|
||||||
<p class="resp-heading" style="margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-0.5px;">{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}</p>
|
|
||||||
<p style="margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,0.88);font-weight:300;">{{.locale.Tr "mail.register_notify.text_1" AppName}}</p>
|
|
||||||
<p style="margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,0.95);font-weight:300;">{{.locale.Tr "mail.register_notify.text_2" .Username}}
|
|
||||||
{{$set_pwd_url := printf "%suser/forgot_password" AppUrl}}
|
|
||||||
{{.locale.Tr "mail.register_notify.text_3" $set_pwd_url}}</p>
|
|
||||||
</td></tr>
|
|
||||||
<tr><td style="height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,0.3),transparent);"></td></tr>
|
|
||||||
<!-- button + link -->
|
|
||||||
<tr><td class="resp-spacer" style="padding:40px 40px;text-align:center;">
|
|
||||||
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:0 0 32px;"><tr><td align="center">
|
<body style="margin:0;padding:0;background:#0a0815;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||||
<a href="{{AppUrl}}user/login" style="display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,0.18);border:1px solid rgba(13,148,136,0.3);letter-spacing:1px;">Go to {{AppName}}</a>
|
<center style="width:100%;table-layout:fixed;">
|
||||||
</td></tr></table>
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border:1px solid rgba(13,148,136,0.18);background:rgba(13,148,136,0.03);"><tr><td style="padding:16px 18px;">
|
|
||||||
<p style="margin:0 0 8px;font-size:11px;color:rgba(180,252,238,0.75);font-weight:300;"><span style="color:rgba(180,195,215,0.95);">{{.locale.Tr "mail.link_not_working_do_paste"}}</span></p>
|
<!-- Floating Title -->
|
||||||
<p style="margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,0.2);padding:10px 12px;border:1px solid rgba(13,148,136,0.15);word-break:break-all;">{{AppUrl}}user/login</p>
|
<tr>
|
||||||
</td></tr></table>
|
<td class="email-header">
|
||||||
</td></tr>
|
|
||||||
<!-- footer -->
|
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||||
<tr><td style="padding:32px 0 0;text-align:center;">
|
<span class="email-brand">{{AppName}}</span>
|
||||||
<p style="margin:0;font-size:11px;color:rgba(160,175,200,0.55);font-weight:300;">© <a href="{{AppUrl}}" style="color:rgba(94,234,212,0.5);text-decoration:none;font-weight:400;">{{AppName}}</a> — Gitea Mail Templates</p>
|
|
||||||
</td></tr>
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Card -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-card card-body">
|
||||||
|
|
||||||
|
<p class="email-heading">
|
||||||
|
{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="email-text">
|
||||||
|
{{.locale.Tr "mail.register_notify.text_1" AppName}}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="email-subtext">
|
||||||
|
{{.locale.Tr "mail.register_notify.text_2" .Username}}
|
||||||
|
{{$set_pwd_url := printf "%suser/forgot_password" AppUrl}}
|
||||||
|
{{.locale.Tr "mail.register_notify.text_3" $set_pwd_url}}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Divider -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-divider"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Button & Link -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-btn-row">
|
||||||
|
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="{{AppUrl}}user/login" class="email-btn">{{.locale.Tr "mail.view_it_on" AppName}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:16px 18px;">
|
||||||
|
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
|
||||||
|
<p class="email-link-url">{{AppUrl}}user/login</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-footer">
|
||||||
|
|
||||||
|
<p class="email-footer-text">
|
||||||
|
©
|
||||||
|
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
|
||||||
|
— Gitea Mail Templates
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</center>
|
</center>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -4,50 +4,135 @@
|
|||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta name="x-apple-disable-message-reformatting" />
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<title>{{.locale.Tr "mail.reset_password.title" (.DisplayName|DotEscape)}}</title>
|
|
||||||
|
<title>
|
||||||
|
{{.locale.Tr "mail.reset_password.title" (.DisplayName|DotEscape)}}
|
||||||
|
</title>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body,.ExternalClass,.ReadMsgBody{background-color:#0a0815}
|
/* Base */
|
||||||
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6{color:#ccfbf1!important}
|
body,.ExternalClass,.ReadMsgBody { background-color:#0a0815 }
|
||||||
.card-body a,.card-body a:link,.card-body a:visited{color:#5eead4!important;text-decoration:underline!important}
|
.email-wrap { max-width:600px;margin:40px auto;font-family:system-ui,-apple-system,sans-serif }
|
||||||
.card-body a:hover,.card-body a:active{color:#99f6e4!important}
|
|
||||||
.card-body li{color:rgba(210,252,245,0.88)!important}
|
/* Header */
|
||||||
@media only screen and (max-width:480px){
|
.email-logo { display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5 }
|
||||||
.resp-card{padding:32px 20px!important}
|
.email-brand { font-size:16px;font-weight:300;color:rgba(255,255,255,.4);letter-spacing:4px;text-transform:uppercase }
|
||||||
.resp-spacer{padding:24px 20px!important}
|
.email-header { padding:0 0 32px;text-align:center }
|
||||||
.resp-heading{font-size:20px!important}
|
|
||||||
|
/* Card */
|
||||||
|
.email-card { padding:48px 40px;background:rgba(25,20,50,.8);border:1px solid rgba(13,148,136,.2);box-shadow:0 0 60px rgba(13,148,136,.08),0 0 120px rgba(99,102,241,.04) }
|
||||||
|
.email-heading { margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-.5px }
|
||||||
|
.email-text { margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,.88);font-weight:300 }
|
||||||
|
.email-subtext { margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,.95);font-weight:300 }
|
||||||
|
|
||||||
|
/* Divider */
|
||||||
|
.email-divider { height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,.3),transparent) }
|
||||||
|
|
||||||
|
/* Button */
|
||||||
|
.email-btn-row { padding:40px 40px;text-align:center }
|
||||||
|
.email-btn { display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,.18);border:1px solid rgba(13,148,136,.3);letter-spacing:1px }
|
||||||
|
.email-btn-table { margin:0 0 32px }
|
||||||
|
|
||||||
|
/* Fallback link */
|
||||||
|
.email-link-box { border:1px solid rgba(13,148,136,.18);background:rgba(13,148,136,.03) }
|
||||||
|
.email-link-label { margin:0 0 8px;font-size:11px;color:rgba(180,252,238,.75);font-weight:300 }
|
||||||
|
.email-link-url { margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,.2);padding:10px 12px;border:1px solid rgba(13,148,136,.15);word-break:break-all }
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
.email-footer { padding:32px 0 0;text-align:center }
|
||||||
|
.email-footer-text { margin:0;font-size:11px;color:rgba(160,175,200,.55);font-weight:300 }
|
||||||
|
.email-footer-link { color:rgba(94,234,212,.5);text-decoration:none;font-weight:400 }
|
||||||
|
|
||||||
|
/* Typography utilities */
|
||||||
|
.card-body h1,.card-body h2,.card-body h3,.card-body h4,.card-body h5,.card-body h6 { color:#ccfbf1!important }
|
||||||
|
.card-body a,.card-body a:link,.card-body a:visited { color:#5eead4!important;text-decoration:underline!important }
|
||||||
|
.card-body a:hover,.card-body a:active { color:#99f6e4!important }
|
||||||
|
.card-body li { color:rgba(210,252,245,.88)!important }
|
||||||
|
|
||||||
|
/* Responsive */
|
||||||
|
@media only screen and (max-width:480px) {
|
||||||
|
.email-card { padding:32px 20px!important }
|
||||||
|
.email-btn-row { padding:24px 20px!important }
|
||||||
|
.email-heading { font-size:20px!important }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body style="margin:0;padding:0;background:#0a0815;font-family:system-ui,-apple-system,sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
|
||||||
|
<body style="margin:0;padding:0;background:#0a0815;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
|
||||||
<center style="width:100%;table-layout:fixed;">
|
<center style="width:100%;table-layout:fixed;">
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="max-width:600px;margin:40px auto;">
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-wrap">
|
||||||
<!-- floating title -->
|
|
||||||
<tr><td style="padding:0 0 32px;text-align:center;">
|
<!-- Floating Title -->
|
||||||
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" style="display:block;margin:0 auto 14px;border:0;outline:none;opacity:0.5;" />
|
<tr>
|
||||||
<span style="font-size:16px;font-weight:300;color:rgba(255,255,255,0.4);letter-spacing:4px;text-transform:uppercase;">{{AppName}}</span>
|
<td class="email-header">
|
||||||
</td></tr>
|
|
||||||
<!-- card -->
|
<img src="{{AppUrl}}assets/img/favicon.png" alt="logo" width="24" height="24" class="email-logo" />
|
||||||
<tr><td class="resp-card card-body" style="padding:48px 40px;background:rgba(25,20,50,0.8);border:1px solid rgba(13,148,136,0.2);box-shadow:0 0 60px rgba(13,148,136,0.08),0 0 120px rgba(99,102,241,0.04);">
|
<span class="email-brand">{{AppName}}</span>
|
||||||
<p class="resp-heading" style="margin:0 0 20px;font-size:24px;font-weight:300;color:#ccfbf1;line-height:1.3;letter-spacing:-0.5px;">{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}</p>
|
|
||||||
<p style="margin:0 0 24px;font-size:14px;line-height:2;color:rgba(210,252,245,0.88);font-weight:300;">{{.locale.Tr "mail.reset_password.text" .ResetPwdCodeLives}}</p>
|
</td>
|
||||||
<p style="margin:0;font-size:13px;line-height:1.8;color:rgba(180,195,215,0.95);font-weight:300;"></p>
|
</tr>
|
||||||
</td></tr>
|
|
||||||
<tr><td style="height:1px;background:linear-gradient(90deg,transparent,rgba(13,148,136,0.3),transparent);"></td></tr>
|
<!-- Card -->
|
||||||
<!-- button + link -->
|
<tr>
|
||||||
<tr><td class="resp-spacer" style="padding:40px 40px;text-align:center;">
|
<td class="email-card card-body">
|
||||||
{{$recover_url := printf "%suser/recover_account?code=%s" AppUrl (QueryEscape .Code)}}
|
|
||||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="margin:0 0 32px;"><tr><td align="center">
|
<p class="email-heading">
|
||||||
<a href="{{$recover_url}}" style="display:inline-block;padding:16px 48px;font-size:14px;font-weight:400;color:#e0f5f3;text-decoration:none;background:rgba(13,148,136,0.18);border:1px solid rgba(13,148,136,0.3);letter-spacing:1px;">Reset Password</a>
|
{{.locale.Tr "mail.hi_user_x" (.DisplayName|DotEscape)}}
|
||||||
</td></tr></table>
|
</p>
|
||||||
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border:1px solid rgba(13,148,136,0.18);background:rgba(13,148,136,0.03);"><tr><td style="padding:16px 18px;">
|
|
||||||
<p style="margin:0 0 8px;font-size:11px;color:rgba(180,252,238,0.75);font-weight:300;"><span style="color:rgba(180,195,215,0.95);">{{.locale.Tr "mail.link_not_working_do_paste"}}</span></p>
|
<p class="email-text">
|
||||||
<p style="margin:0;font-size:11px;font-family:monospace;color:#99f6e4;background:rgba(0,0,0,0.2);padding:10px 12px;border:1px solid rgba(13,148,136,0.15);word-break:break-all;">{{$recover_url}}</p>
|
{{.locale.Tr "mail.reset_password.text" .ResetPwdCodeLives}}
|
||||||
</td></tr></table>
|
</p>
|
||||||
</td></tr>
|
|
||||||
<!-- footer -->
|
<p class="email-subtext"></p>
|
||||||
<tr><td style="padding:32px 0 0;text-align:center;">
|
|
||||||
<p style="margin:0;font-size:11px;color:rgba(160,175,200,0.55);font-weight:300;">© <a href="{{AppUrl}}" style="color:rgba(94,234,212,0.5);text-decoration:none;font-weight:400;">{{AppName}}</a> — Gitea Mail Templates</p>
|
</td>
|
||||||
</td></tr>
|
</tr>
|
||||||
|
|
||||||
|
<!-- Divider -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-divider"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Button & Link -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-btn-row">
|
||||||
|
|
||||||
|
{{$recover_url := printf "%suser/recover_account?code=%s" AppUrl (QueryEscape .Code)}}
|
||||||
|
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="email-btn-table">
|
||||||
|
<tr>
|
||||||
|
<td align="center">
|
||||||
|
<a href="{{$recover_url}}" class="email-btn">{{.locale.Tr "mail.reset_password"}}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="email-link-box">
|
||||||
|
<tr>
|
||||||
|
<td style="padding:16px 18px;">
|
||||||
|
<p class="email-link-label">{{.locale.Tr "mail.link_not_working_do_paste"}}</p>
|
||||||
|
<p class="email-link-url">{{$recover_url}}</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<tr>
|
||||||
|
<td class="email-footer">
|
||||||
|
|
||||||
|
<p class="email-footer-text">
|
||||||
|
©
|
||||||
|
<a href="{{AppUrl}}" class="email-footer-link">{{AppName}}</a>
|
||||||
|
— Gitea Mail Templates
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</center>
|
</center>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
+80
-46
@@ -9,22 +9,38 @@ import (
|
|||||||
// Locale provides English fallback translations, matching Gitea's locale.Tr interface.
|
// Locale provides English fallback translations, matching Gitea's locale.Tr interface.
|
||||||
type Locale struct{}
|
type Locale struct{}
|
||||||
|
|
||||||
// Tr translates a key and substitutes positional %s/%d arguments.
|
// Tr translates a key and substitutes %s / %d / %[N]s / %[N]d arguments.
|
||||||
// HTML arguments are preserved; plain strings are HTML-escaped.
|
// HTML arguments are preserved; plain strings are HTML-escaped.
|
||||||
func (l Locale) Tr(key string, args ...any) template.HTML {
|
func (l Locale) Tr(key string, args ...any) template.HTML {
|
||||||
s := LocaleEN[key]
|
s := LocaleEN[key]
|
||||||
if s == "" {
|
if s == "" {
|
||||||
s = key
|
s = key
|
||||||
}
|
}
|
||||||
for _, arg := range args {
|
for i, arg := range args {
|
||||||
var val string
|
var val string
|
||||||
if h, ok := arg.(template.HTML); ok {
|
if h, ok := arg.(template.HTML); ok {
|
||||||
val = string(h) // already safe HTML — don't double-escape
|
val = string(h) // already safe HTML
|
||||||
} else {
|
} else {
|
||||||
val = template.HTMLEscapeString(fmt.Sprint(arg))
|
val = template.HTMLEscapeString(fmt.Sprint(arg))
|
||||||
}
|
}
|
||||||
|
// Handle positional format specifiers: %[1]s, %[2]d, etc.
|
||||||
|
pos := fmt.Sprintf("%%[%d]", i+1)
|
||||||
|
s = strings.Replace(s, pos+"s", val, 1)
|
||||||
|
s = strings.Replace(s, pos+"d", val, 1)
|
||||||
|
}
|
||||||
|
// Fallback for non-positional %s / %d (sequential replacement)
|
||||||
|
for _, arg := range args {
|
||||||
|
var val string
|
||||||
|
if h, ok := arg.(template.HTML); ok {
|
||||||
|
val = string(h)
|
||||||
|
} else {
|
||||||
|
val = template.HTMLEscapeString(fmt.Sprint(arg))
|
||||||
|
}
|
||||||
|
if !strings.Contains(s, "%s") && !strings.Contains(s, "%d") {
|
||||||
|
break
|
||||||
|
}
|
||||||
s = strings.Replace(s, "%s", val, 1)
|
s = strings.Replace(s, "%s", val, 1)
|
||||||
s = strings.Replace(s, "%d", fmt.Sprint(arg), 1)
|
s = strings.Replace(s, "%d", val, 1)
|
||||||
}
|
}
|
||||||
return template.HTML(s)
|
return template.HTML(s)
|
||||||
}
|
}
|
||||||
@@ -51,46 +67,64 @@ func (l Locale) TrN(count any, singular, plural string, args ...any) template.HT
|
|||||||
|
|
||||||
// LocaleEN holds all English translation strings used by Gitea mail templates.
|
// LocaleEN holds all English translation strings used by Gitea mail templates.
|
||||||
var LocaleEN = map[string]string{
|
var LocaleEN = map[string]string{
|
||||||
"mail.activate_account.title": "Activate your %s account",
|
"mail.hi_user_x": "Hi <b>%s</b>,",
|
||||||
"mail.hi_user_x": "Hi %s,",
|
"mail.activate_account": "Please activate your account",
|
||||||
"mail.activate_account.text_1": "Welcome to %s! Please activate your account by clicking the button below.",
|
"mail.activate_account.title": "%s, please activate your account",
|
||||||
"mail.activate_account.text_2": "This activation link will expire in %s.",
|
"mail.activate_account.text_1": "Hi <b>%[1]s</b>, thanks for registering at %[2]s!",
|
||||||
"mail.activate_email.title": "Verify your email address for %s",
|
"mail.activate_account.text_2": "Please click the following link to activate your account within <b>%s</b>:",
|
||||||
"mail.activate_email.text": "Please verify your email address. The link will expire in %s.",
|
"mail.activate_email": "Verify your email address",
|
||||||
"mail.register_notify.title": "Welcome to %s, %s",
|
"mail.activate_email.title": "%s, please verify your email address",
|
||||||
"mail.register_notify.text_1": "Your account on %s has been created successfully.",
|
"mail.activate_email.text": "Please click the following link to verify your email address within <b>%s</b>:",
|
||||||
"mail.register_notify.text_2": "Your username is: %s",
|
"mail.register_success": "Registration successful",
|
||||||
"mail.register_notify.text_3": "If you need to set a password, visit %s.",
|
"mail.register_notify": "Welcome to %s",
|
||||||
"mail.reset_password.title": "Reset your %s password",
|
"mail.register_notify.title": "%[1]s, welcome to %[2]s",
|
||||||
"mail.reset_password.text": "Click the link below to reset your password. It will expire in %s.",
|
"mail.register_notify.text_1": "This is your registration confirmation email for %s!",
|
||||||
"mail.link_not_working_do_paste": "If the button doesn't work, copy and paste this link into your browser:",
|
"mail.register_notify.text_2": "You can now log in via username: %s.",
|
||||||
"mail.team_invite.text_1": "%s has invited you to join the team %s in the organization %s.",
|
"mail.register_notify.text_3": "If this account has been created for you, please <a href=\"%s\">set your password</a> first.",
|
||||||
"mail.team_invite.text_2": "Click the button below to accept the invitation.",
|
"mail.reset_password": "Recover your account",
|
||||||
"mail.team_invite.text_3": "This invitation was sent to %s.",
|
"mail.reset_password.title": "%s, you have requested to recover your account",
|
||||||
"mail.repo.collaborator.added.text": "You have been added as a collaborator on the repository",
|
"mail.reset_password.text": "Please click the following link to recover your account within <b>%s</b>:",
|
||||||
"mail.view_it_on": "View it on %s",
|
"mail.team_invite.subject": "%[1]s has invited you to join the %[2]s organization",
|
||||||
"mail.repo.transfer.body": "The repository %s has been transferred to you.",
|
"mail.team_invite.text_1": "%[1]s has invited you to join team %[2]s in organization %[3]s.",
|
||||||
"mail.release.new.text": "%s published a new release %s in the repository %s.",
|
"mail.team_invite.text_2": "Please click the following link to join the team:",
|
||||||
"mail.release.title": "Release: %s",
|
"mail.team_invite.text_3": "Note: This invitation was intended for %[1]s. If you were not expecting this invitation, you can ignore this email.",
|
||||||
"mail.release.note": "Release Notes:",
|
"mail.repo.collaborator.added.subject": "%s added you to %s",
|
||||||
"mail.release.downloads": "Downloads",
|
"mail.repo.collaborator.added.text": "You have been added as a collaborator of repository:",
|
||||||
"mail.release.download.zip": "Source Code (ZIP)",
|
"mail.repo.transfer.subject_to": "%s would like to transfer \"%s\" to %s",
|
||||||
"mail.release.download.targz": "Source Code (TAR.GZ)",
|
"mail.repo.transfer.subject_to_you": "%s would like to transfer \"%s\" to you",
|
||||||
"mail.issue_assigned.pull": "%s assigned pull request %s to you in the repository %s.",
|
"mail.repo.transfer.to_you": "you",
|
||||||
"mail.issue_assigned.issue": "%s assigned issue %s to you in the repository %s.",
|
"mail.repo.transfer.body": "To accept or reject it, visit %s or just ignore it.",
|
||||||
"mail.issue.x_mentioned_you": "%s mentioned you.",
|
"mail.release.new.subject": "%s in %s released",
|
||||||
"mail.issue.action.close": "%s closed issue #%d.",
|
"mail.release.new.text": "<b>@%[1]s</b> released %[2]s in %[3]s",
|
||||||
"mail.issue.action.reopen": "%s reopened issue #%d.",
|
"mail.release.title": "Title: %s",
|
||||||
"mail.issue.action.merge": "%s merged pull request #%d into %s.",
|
"mail.release.note": "Note:",
|
||||||
"mail.issue.action.approve": "%s approved this change.",
|
"mail.release.downloads": "Downloads:",
|
||||||
"mail.issue.action.reject": "%s requested changes.",
|
"mail.release.download.zip": "Source Code (ZIP)",
|
||||||
"mail.issue.action.review": "%s reviewed this change.",
|
"mail.release.download.targz": "Source Code (TAR.GZ)",
|
||||||
"mail.issue.action.review_dismissed": "%s dismissed the review from %s.",
|
"mail.repo.actions.run.failed": "Run failed",
|
||||||
"mail.issue.action.ready_for_review": "%s marked this as ready for review.",
|
"mail.repo.actions.run.succeeded": "Run succeeded",
|
||||||
"mail.issue.action.new": "%s created issue #%d.",
|
"mail.repo.actions.run.cancelled": "Run cancelled",
|
||||||
"mail.issue.action.force_push": "%s force-pushed the %s branch from %s to %s.",
|
"mail.repo.actions.jobs.all_succeeded": "All jobs have succeeded",
|
||||||
"mail.issue.action.push_1": "%s pushed %d commit to %s.",
|
"mail.repo.actions.jobs.all_failed": "All jobs have failed",
|
||||||
"mail.issue.action.push_n": "%s pushed %d commits to %s.",
|
"mail.repo.actions.jobs.some_not_successful": "Some jobs were not successful",
|
||||||
"mail.issue.in_tree_path": "In %s:",
|
"mail.repo.actions.jobs.all_cancelled": "All jobs have been cancelled",
|
||||||
"mail.reply": "Reply to this email",
|
"mail.issue_assigned.pull": "@%[1]s assigned you to pull request %[2]s in repository %[3]s.",
|
||||||
|
"mail.issue_assigned.issue": "@%[1]s assigned you to issue %[2]s in repository %[3]s.",
|
||||||
|
"mail.issue.x_mentioned_you": "<b>@%s</b> mentioned you:",
|
||||||
|
"mail.issue.action.close": "<b>@%[1]s</b> closed #%[2]d.",
|
||||||
|
"mail.issue.action.reopen": "<b>@%[1]s</b> reopened #%[2]d.",
|
||||||
|
"mail.issue.action.merge": "<b>@%[1]s</b> merged #%[2]d into %[3]s.",
|
||||||
|
"mail.issue.action.approve": "<b>@%[1]s</b> approved this pull request.",
|
||||||
|
"mail.issue.action.reject": "<b>@%[1]s</b> requested changes on this pull request.",
|
||||||
|
"mail.issue.action.review": "<b>@%[1]s</b> commented on this pull request.",
|
||||||
|
"mail.issue.action.review_dismissed": "<b>@%[1]s</b> dismissed last review from %[2]s for this pull request.",
|
||||||
|
"mail.issue.action.ready_for_review": "<b>@%[1]s</b> marked this pull request ready for review.",
|
||||||
|
"mail.issue.action.new": "<b>@%[1]s</b> created #%[2]d.",
|
||||||
|
"mail.issue.action.force_push": "<b>%[1]s</b> force-pushed the <b>%[2]s</b> from %[3]s to %[4]s.",
|
||||||
|
"mail.issue.action.push_1": "<b>@%[1]s</b> pushed %[3]d commit to %[2]s",
|
||||||
|
"mail.issue.action.push_n": "<b>@%[1]s</b> pushed %[3]d commits to %[2]s",
|
||||||
|
"mail.issue.in_tree_path": "In %s:",
|
||||||
|
"mail.view_it_on": "View it on %s",
|
||||||
|
"mail.reply": "or reply to this email directly",
|
||||||
|
"mail.link_not_working_do_paste": "Not working? Try copying and pasting it to your browser.",
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user