mirror of
https://github.com/penpot/penpot.git
synced 2025-08-04 09:19:45 +02:00
🚧 Major refactor of backend code.
Relevant changes: - ring -> vertx - suricatta -> vertx-pgsql - emails improvements - logging - hybrid sync/async -> full async execution model - database layout refactor
This commit is contained in:
parent
73753ce071
commit
e9b00339a5
134 changed files with 5394 additions and 6598 deletions
14
backend/resources/emails/debug-email-list.html
Normal file
14
backend/resources/emails/debug-email-list.html
Normal file
|
@ -0,0 +1,14 @@
|
|||
<html>
|
||||
<body>
|
||||
<section style="font-family: Monoid, monospace; font-size: 14px;">
|
||||
<h1>Available Emails:</h1>
|
||||
<ul>
|
||||
{{#emails}}
|
||||
<li>
|
||||
<a href="/debug/emails/{{ id }}">{{id}}</a>
|
||||
</li>
|
||||
{{/emails}}
|
||||
</ul>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
|
@ -11,7 +11,31 @@ UXBOX team.
|
|||
-- end
|
||||
|
||||
-- begin :body-html
|
||||
<p>Hello {{user}}!</p>
|
||||
<p>Welcome to UXBOX.</p>
|
||||
<p>UXBOX team.</p>
|
||||
<html>
|
||||
<head>
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
||||
<meta content="width=device-width" name="viewport" />
|
||||
<title>title</title>
|
||||
{{> ../partials/inline_style }}
|
||||
</head>
|
||||
<body bgcolor="#f6f6f6" cz-shortcut-listen="true">
|
||||
<table class="body-wrap">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td bgcolor="#FFFFFF" class="container">
|
||||
<div class="logo">
|
||||
<img alt="UXBOX" src="{{#static}}images/email/logo.png{{/static}}" />
|
||||
</div>
|
||||
<p>Hello {{user}}!</p>
|
||||
<p>Welcome to UXBOX.</p>
|
||||
<p>UXBOX team.</p>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
{{> ../partials/en/footer }}
|
||||
</body>
|
||||
</html>
|
||||
-- end
|
46
backend/resources/emails/partials/en/footer.mustache
Normal file
46
backend/resources/emails/partials/en/footer.mustache
Normal file
|
@ -0,0 +1,46 @@
|
|||
<table class="footer-wrap">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="container">
|
||||
<div class="content">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<div style="text-align: center;">
|
||||
<a href="#" target="_blank">
|
||||
<img src="{{#static}}images/email/twitter.png{{/static}}"
|
||||
style="display: inline-block; width: 25px; margin-right: 5px;" />
|
||||
</a>
|
||||
<a href="#" target="_blank">
|
||||
<img src="{{#static}}images/email/github.png{{/static}}"
|
||||
style="display: inline-block; width: 25px; margin-right: 5px;" />
|
||||
</a>
|
||||
<a href="#" target="_blank">
|
||||
<img src="{{#static}}images/email/linkedin.png{{/static}}"
|
||||
style="display: inline-block; width: 25px; margin-right: 5px;" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{{#comment}}
|
||||
<tr>
|
||||
<td align="center">
|
||||
<p>
|
||||
<span>Sent from UXBOX | </span>
|
||||
<a href="#" target="_blank">
|
||||
<unsubscribe>Email preferences</unsubscribe>
|
||||
</a>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
{{/comment}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
6
backend/resources/emails/partials/head.mustache
Normal file
6
backend/resources/emails/partials/head.mustache
Normal file
|
@ -0,0 +1,6 @@
|
|||
<head>
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
||||
<meta content="width=device-width" name="viewport" />
|
||||
<title>title</title>
|
||||
{{> inline_style }}
|
||||
</head>
|
162
backend/resources/emails/partials/inline_style.mustache
Normal file
162
backend/resources/emails/partials/inline_style.mustache
Normal file
|
@ -0,0 +1,162 @@
|
|||
<style>
|
||||
/* GLOBAL */
|
||||
* {
|
||||
margin:0;
|
||||
padding:0;
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 100%;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.img-header {
|
||||
border-top-left-radius: 5px;
|
||||
border-top-right-radius: 5px;
|
||||
}
|
||||
|
||||
body {
|
||||
-webkit-font-smoothing:antialiased;
|
||||
-webkit-text-size-adjust:none;
|
||||
width: 100%!important;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* ELEMENTS */
|
||||
a {
|
||||
color: #78dbbe;
|
||||
text-decoration:none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
text-decoration:none;
|
||||
color: #fff;
|
||||
background-color: #78dbbe;
|
||||
padding: 10px 30px;
|
||||
font-weight: bold;
|
||||
margin: 20px 0;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
color: #FFF;
|
||||
background-color: #8eefcf;
|
||||
}
|
||||
|
||||
.last {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.first{
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.logo {
|
||||
background-color: #f6f6f6;
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
padding-bottom: 25px;
|
||||
}
|
||||
.logo h2 {
|
||||
color: #777;
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
margin-top: 15px;
|
||||
}
|
||||
.logo img {
|
||||
max-width: 150px;
|
||||
}
|
||||
|
||||
/* BODY */
|
||||
table.body-wrap {
|
||||
width: 100%;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
table.body-wrap .container{
|
||||
border-radius: 5px;
|
||||
color: #ababab;
|
||||
}
|
||||
|
||||
|
||||
/* FOOTER */
|
||||
table.footer-wrap {
|
||||
width: 100%;
|
||||
clear:both!important;
|
||||
}
|
||||
|
||||
.footer-wrap .container p {
|
||||
font-size: 12px;
|
||||
color:#666;
|
||||
|
||||
}
|
||||
|
||||
table.footer-wrap a{
|
||||
color: #999;
|
||||
}
|
||||
|
||||
|
||||
/* TYPOGRAPHY */
|
||||
h1,h2,h3{
|
||||
font-family: Arial, sans-serif;
|
||||
line-height: 1.1;
|
||||
margin-bottom:15px;
|
||||
color:#000;
|
||||
margin: 40px 0 10px;
|
||||
line-height: 1.2;
|
||||
font-weight:200;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #777;
|
||||
font-size: 28px;
|
||||
font-weight: bold;
|
||||
}
|
||||
h2 {
|
||||
font-size: 24px;
|
||||
}
|
||||
h3 {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
p, ul {
|
||||
margin-bottom: 10px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
ul li {
|
||||
margin-left:5px;
|
||||
list-style-position: inside;
|
||||
}
|
||||
|
||||
/* RESPONSIVE */
|
||||
|
||||
/* Set a max-width, and make it display as block so it will automatically stretch to that width, but will also shrink down on a phone or something */
|
||||
.container {
|
||||
display: block !important;
|
||||
max-width: 620px !important;
|
||||
margin: 0 auto !important; /* makes it centered */
|
||||
clear: both !important;
|
||||
}
|
||||
|
||||
/* This should also be a block element, so that it will fill 100% of the .container */
|
||||
.content {
|
||||
padding: 20px;
|
||||
max-width: 620px;
|
||||
margin: 0 auto;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Let's make sure tables in the content area are 100% wide */
|
||||
.content table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
</style>
|
Loading…
Add table
Add a link
Reference in a new issue