From 180ce731419d43b16ad5fd95d17fdc22e00e0546 Mon Sep 17 00:00:00 2001 From: julien Date: Tue, 14 Jan 2025 17:56:00 +0100 Subject: [PATCH] first commit --- .env | 13 ++ .gitignore | 1 + README.md | 8 + compose.yml | 25 +++ conf/static/email-templates/base.html | 97 ++++++++ .../email-templates/campaign-status.html | 25 +++ .../email-templates/default-archive.tpl | 97 ++++++++ conf/static/email-templates/default.tpl | 103 +++++++++ .../static/email-templates/import-status.html | 19 ++ conf/static/email-templates/sample-tx.tpl | 107 +++++++++ conf/static/email-templates/smtp-test.html | 5 + .../email-templates/subscriber-data.html | 8 + .../subscriber-optin-campaign.html | 17 ++ .../email-templates/subscriber-optin.html | 22 ++ conf/static/public/static/favicon.png | Bin 0 -> 1942 bytes conf/static/public/static/logo.png | Bin 0 -> 2056 bytes conf/static/public/static/logo.svg | 1 + conf/static/public/static/rss.svg | 1 + conf/static/public/static/script.js | 0 conf/static/public/static/style.css | 207 ++++++++++++++++++ conf/static/public/templates/archive.html | 41 ++++ conf/static/public/templates/home.html | 18 ++ conf/static/public/templates/index.html | 47 ++++ conf/static/public/templates/message.html | 27 +++ conf/static/public/templates/optin.html | 30 +++ .../public/templates/subscription-form.html | 52 +++++ .../static/public/templates/subscription.html | 123 +++++++++++ 27 files changed, 1094 insertions(+) create mode 100644 .env create mode 100644 .gitignore create mode 100644 README.md create mode 100644 compose.yml create mode 100644 conf/static/email-templates/base.html create mode 100644 conf/static/email-templates/campaign-status.html create mode 100644 conf/static/email-templates/default-archive.tpl create mode 100644 conf/static/email-templates/default.tpl create mode 100644 conf/static/email-templates/import-status.html create mode 100644 conf/static/email-templates/sample-tx.tpl create mode 100644 conf/static/email-templates/smtp-test.html create mode 100644 conf/static/email-templates/subscriber-data.html create mode 100644 conf/static/email-templates/subscriber-optin-campaign.html create mode 100644 conf/static/email-templates/subscriber-optin.html create mode 100644 conf/static/public/static/favicon.png create mode 100644 conf/static/public/static/logo.png create mode 100644 conf/static/public/static/logo.svg create mode 100644 conf/static/public/static/rss.svg create mode 100644 conf/static/public/static/script.js create mode 100644 conf/static/public/static/style.css create mode 100644 conf/static/public/templates/archive.html create mode 100644 conf/static/public/templates/home.html create mode 100644 conf/static/public/templates/index.html create mode 100644 conf/static/public/templates/message.html create mode 100644 conf/static/public/templates/optin.html create mode 100644 conf/static/public/templates/subscription-form.html create mode 100644 conf/static/public/templates/subscription.html diff --git a/.env b/.env new file mode 100644 index 0000000..b1b7c10 --- /dev/null +++ b/.env @@ -0,0 +1,13 @@ +POSTGRES_USER=listmonk +POSTGRES_DB=listmonk +#POSTGRES_PASSWORD= + +TZ=Europe/Paris + +LISTMONK_app__address=0.0.0.0:9000 +LISTMONK_db__host=listnetignet_postgres +LISTMONK_db__port=5432 +LISTMONK_db__user=listmonk +#LISTMONK_db__password= +LISTMONK_db__database=listmonk +LISTMONK_db__ssl_mode=disable diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57d9655 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +volumes/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..b28b2bf --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# list.netig.net + +## Maintenance + +To perform database upgrade, first stop the containers, then : +``` +# nerdctl compose run --rm listmonk ./listmonk --static-dir=/listmonk/static --upgrade +``` diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..573f7b4 --- /dev/null +++ b/compose.yml @@ -0,0 +1,25 @@ +services: + postgres: + image: postgres:15 + container_name: listnetignet_postgres + env_file: + - .env + - ../passwords/listnetignet.pass + volumes: + - ./volumes/postgres:/var/lib/postgresql/data + restart: unless-stopped + listmonk: + image: listmonk/listmonk:latest + container_name: listnetignet_listmonk + depends_on: + - postgres + env_file: + - .env + - ../passwords/listnetignet.pass + ports: + - "127.0.0.1:9008:9000" + command: "./listmonk --static-dir=/listmonk/static" + volumes: + - ./volumes/uploads:/listmonk/uploads + - ./conf/static:/listmonk/static + restart: unless-stopped diff --git a/conf/static/email-templates/base.html b/conf/static/email-templates/base.html new file mode 100644 index 0000000..f0bd274 --- /dev/null +++ b/conf/static/email-templates/base.html @@ -0,0 +1,97 @@ +{{ define "header" }} + + + + + + + + + + +
 
+
+
+ {{ if ne LogoURL "" }} + listmonk + {{ end }} +
+{{ end }} + +{{ define "footer" }} +
+ + +
 
+ + +{{ end }} diff --git a/conf/static/email-templates/campaign-status.html b/conf/static/email-templates/campaign-status.html new file mode 100644 index 0000000..4ccbdc6 --- /dev/null +++ b/conf/static/email-templates/campaign-status.html @@ -0,0 +1,25 @@ +{{ define "campaign-status" }} +{{ template "header" . }} +

{{ L.Ts "email.status.campaignUpdateTitle" }}

+ + + + + + + + + + + + + + {{ if ne (index . "Reason") "" }} + + + + + {{ end }} +
{{ L.Ts "globals.terms.campaign" }}{{ index . "Name" }}
{{ L.Ts "email.status.status" }}{{ index . "Status" }}
{{ L.Ts "email.status.campaignSent" }}{{ index . "Sent" }} / {{ index . "ToSend" }}
{{ L.Ts "email.status.campaignReason" }}{{ index . "Reason" }}
+{{ template "footer" }} +{{ end }} diff --git a/conf/static/email-templates/default-archive.tpl b/conf/static/email-templates/default-archive.tpl new file mode 100644 index 0000000..103a23c --- /dev/null +++ b/conf/static/email-templates/default-archive.tpl @@ -0,0 +1,97 @@ + + + + {{ .Campaign.Subject }} + + + + + + +
 
+
+ {{ template "content" . }} +
+ + + + diff --git a/conf/static/email-templates/default.tpl b/conf/static/email-templates/default.tpl new file mode 100644 index 0000000..6b8ae96 --- /dev/null +++ b/conf/static/email-templates/default.tpl @@ -0,0 +1,103 @@ + + + + {{ .Campaign.Subject }} + + + + + + +
 
+
+ {{ template "content" . }} +
+ + +
 {{ TrackView }}
+ + diff --git a/conf/static/email-templates/import-status.html b/conf/static/email-templates/import-status.html new file mode 100644 index 0000000..39748cc --- /dev/null +++ b/conf/static/email-templates/import-status.html @@ -0,0 +1,19 @@ +{{ define "import-status" }} +{{ template "header" . }} +

{{ L.Ts "email.status.importTitle" }}

+ + + + + + + + + + + + + +
{{ L.Ts "email.status.importFile" }}{{ .Name }}
{{ L.Ts "email.status.status" }}{{ .Status }}
{{ L.Ts "email.status.importRecords" }}{{ .Imported }} / {{ .Total }}
+{{ template "footer" }} +{{ end }} diff --git a/conf/static/email-templates/sample-tx.tpl b/conf/static/email-templates/sample-tx.tpl new file mode 100644 index 0000000..9687f02 --- /dev/null +++ b/conf/static/email-templates/sample-tx.tpl @@ -0,0 +1,107 @@ + + + + + + + + + + +
 
+
+

Hello {{ .Subscriber.Name }}

+

+ Order number: {{ .Tx.Data.order_id }}
+ Shipping date: {{ .Tx.Data.shipping_date }}
+

+
+

+ Transactional templates supports arbitrary parameters. + Render them using .Tx.Data.YourParamName. For more information, + see the transactional mailing documentation. +

+
+ + + + diff --git a/conf/static/email-templates/smtp-test.html b/conf/static/email-templates/smtp-test.html new file mode 100644 index 0000000..61cfb38 --- /dev/null +++ b/conf/static/email-templates/smtp-test.html @@ -0,0 +1,5 @@ +{{ define "smtp-test" }} +{{ template "header" . }} +

{{ L.Ts "settings.smtp.testConnection" }}

+{{ template "footer" }} +{{ end }} diff --git a/conf/static/email-templates/subscriber-data.html b/conf/static/email-templates/subscriber-data.html new file mode 100644 index 0000000..4a8c34d --- /dev/null +++ b/conf/static/email-templates/subscriber-data.html @@ -0,0 +1,8 @@ +{{ define "subscriber-data" }} +{{ template "header" . }} +

{{ L.Ts "email.data.title" }}

+

+ {{ L.Ts "email.data.info" }} +

+{{ template "footer" }} +{{ end }} diff --git a/conf/static/email-templates/subscriber-optin-campaign.html b/conf/static/email-templates/subscriber-optin-campaign.html new file mode 100644 index 0000000..084d24e --- /dev/null +++ b/conf/static/email-templates/subscriber-optin-campaign.html @@ -0,0 +1,17 @@ +{{ define "optin-campaign" }} + +

{{ L.Ts "email.optin.confirmSubWelcome" }} {{ "{{" }}.Subscriber.FirstName {{ "}}" }}

+

{{ L.Ts "email.optin.confirmSubInfo" }}

+ +

+ {{ L.Ts "email.optin.confirmSub" }} +

+{{ end }} diff --git a/conf/static/email-templates/subscriber-optin.html b/conf/static/email-templates/subscriber-optin.html new file mode 100644 index 0000000..caecf35 --- /dev/null +++ b/conf/static/email-templates/subscriber-optin.html @@ -0,0 +1,22 @@ +{{ define "subscriber-optin" }} +{{ template "header" . }} +

{{ L.Ts "email.optin.confirmSubTitle" }}

+

{{ L.Ts "email.optin.confirmSubWelcome" }} {{ .Subscriber.FirstName }}

+

{{ L.Ts "email.optin.confirmSubInfo" }}

+ +

{{ L.Ts "email.optin.confirmSubHelp" }}

+

+ {{ L.Ts "email.optin.confirmSub" }} +

+{{ L.T "email.unsub" }} + +{{ template "footer" }} +{{ end }} diff --git a/conf/static/public/static/favicon.png b/conf/static/public/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca8f02b9c938198974e282ea6fdb55da5cd0db8 GIT binary patch literal 1942 zcmV;H2Wj|;P){ z)@JSX-kDjF{v%r83E(1O>S?U_d2zbMY zT*Q+Mf=e!Uir=kzH%j*;5~~UKPDGO^>j5W#B?WasPU2}N$6I>Ba&e0A01d(5W)&_AR0K=fWahmthE}o46y8vt+sK?740{OC)K79TH@+c|iZ>0)N$yK%W zCGjSDK17WNxC`_QiS*`Dg^Pa!+SSn4zZcP`ORc1=D0^vkez@3AVsQaTxN$@ep==4{ zT={s3YgJo0v2v_f!Quf(xN*=w0QZOCS^3acz-%Ptj4xDb;Xa^U4RDx`T;l=cK|~Kt zwqaft4nSZ3UeJ;|mJbce7W(`4EL3FvPoOQ`hRU(fow_N=Hd4;ff=>#T-#k$74|P;W zlyyI_WG<6 zkDUKFw5y_KsXi4AmVkP*@L9MI9QT& z-qiak*Qy1j{>oYT?B9ZI|yH;%lT2@#sj?Ec$Kc^AAsBq@{eG~w3f>F z&ir3y-hgeFmM}i{PXcvDa)w;)!N{^W$#fk#IRUH=U}cE0%Fj;a6K39k@zEUwYP_B$ z9{+lzDXh+x%P{&i;H>~wmJ^?Na_XPFPe8T@F#0cY-UA$2`9T01izBu6eUJx$e_PuS zoo=fifX#hh!aj|a!EKw?o7Q?;QcgF> zudVeWNth0Re$&#-y9m3jod`-i{!`#RE3L|U07Eie2V$4H7JWXHq0W{gD?dQ#uvE8@ zI9qGTnpW&`gIP3t(6aLIi0MJ>`T{}Xt;XN6vEtQ|r?*ki*>V|p%}T4{7?1`_@kuLP z6o_R2#H%-`th5qW$e*orQ81yWt#m5&2GnMyrFeSLs?sPhCWD`2C=t2UFtbBj3PU%w z_n(XJi^Ue1RvYXRAE9hahK!9*)urzY{hwj5j9l1`guoID%~b>Z*Fw0Qglp4xM8k$m zHC9{ma@By?OlAZl^%lBl_*kwHtJ$nxF^FEWs#GV|S?Qv{lY6Xmq8AOGWUR!>eO9_i z(0lE4a={?Dmg4nnJb#;=Hbj!?I^Y{tT2Ea=E_Vv6SrjopZ-0}?ny0W!mn)Jz?ROlB zbQ+|&bQ?0rSjFvOo!BawM9)&V>DUh^q%Kq9>zmEQ!c zXo~j`o+mr8zvQj6WV()=*#Wu}+o5hQ%A<5OAI|@&zzRx*gxd|=6-uQ(IpB4aS5fW8 zn9L0+wGEkSV%Y{n)*;-FKfMijAYvA$NjYCBenbW!;eHPE40cI|#WL*Q5&_T}qCILq zg6FN__#JQ0eK7wTdXt+#^u-9BDj%xfrmN+pLXYOp33fRtl)aHTRW5`*^EDodofPeI zoM!jC{4~!7AjCAD=do0lm5Zuj~suZX7sUQ$L5Qt#Z%5WgIB(VN|32?c@aHA z&FI4%Seq?cbkRoJ)zII!2bE_6ITtO8@Ek8XKb||>%}42()J<*z;UH-A3!l;$LG?Qe zb$Erayfl@*-9LLv`SSpUIgRH%R%o0rMhMsDcn-K($PhDd1Q*<_5 ciPF9Q0e-VRmk`h;Bme*a07*qoM6N<$f|Hf3UjP6A literal 0 HcmV?d00001 diff --git a/conf/static/public/static/logo.png b/conf/static/public/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4697ced973de05db47b43a7bb0f8dc1f2168d2ed GIT binary patch literal 2056 zcmV+j2>17iP)y-RS`sGJ%M=RuAr!h;sHiHiA2R&qfr#R<4L?x0S`p+1`i0D zs7TaVSqUH#MO2hS0w}vXD|kku93HTMvWxC^`N!*aYN~rKW;Q0Szoaw$>Q%jZJ+JD$ zdaqlN39*`^z!?mj0(1k)fGxm!G&R6XN=oK1?V!yW<>U_shyh)JIY51p<+pjL(AEp; zkHvMz0RwW7u@TgGni?lC>*%d{%-tT?8`u}v3al`APXHsl`zD|dP?v}7wul{&jj|8$ zBk)zG&Q2<+6_vGPaNR}ZW^{ngpvO^Kx|CSrz#PX!5rcjQd<0VHzkRwlp%@UIrh&q$718&1r}|GK5Yqk+be1K z`nm^!iwaa=R~$W?^H%O#pq%S~+kt10-M%<;_lzh5s(>ZH8c%MUhZw%H{v@=zD@~so zv>HxJOIN6mQrgl1txf{6#EE6I-n z9Wu!83~bCpUMHX#`5*H|De|oO9HK+vP?_il924Lu#uD#2#xi;;-YBml5*Y~UmjF-e zn+wqEV&FaFDzo@~fj5!Vauf2$Zvo~4Ly%qF)f@YgHTDWa?r@`hhSA;=I2f3T96~n& zYk^^2-;TfpZ|)7qqIed`RKjo$@GfHP2H^zHPH73q5^mxu|ivgbjjo#R=fuU*U z3d2BB|IbsQvi31zb=tb>8Sp_gXR)!`%R^)|F?iL^X+}f=ZCuY={81Lao533fv{-!m zngsO7(nph;O*9zo6D``jE&&p0cu$2q=aeiuYyeI$#tb)jn}D%t#<{>*-k8HJ-i?O5 zF32MDd2<2Bk$7!E=}CNea&w?PEu5(YU115OZr|Kxb`!NBo8S z*-gN5g8BbXUi)&OCe1w813LoKkOGp4SAcThec%OeJ|9;B5re)R@i0EV_H>(rxOE+KeFAdX}K z01FVq{{sh!c^2IMIS5Z8mS_(g7id@N$GqfZ$5y1sWbTv*a554D*8&fcy3_tG*fBfk z5yeB9D3*sj7C6+PYq1ungH|5}$2r$>)v|UuPowmuz%EwnHkurJl@|jGk#uV$@P)-I z0qzD~YlV3WMOc<(|Hq9*nrlArwn1NuwJ{wWJtH_yAHv2RM&~p|Y~_Av9tz>S$IKqK zn<^H5L*iFC@`7SK;(~pgi@45z6YDJ6u0;UsVcfeUV|g)f6UmU|0FyBmnnS!|5yAKa z=#f;`JwPlT3GzG)sqF=kd4#$s^<)7`=Yv|{4&Y&{-9Pbev)a=YS&EG%7Cq3SI{^I* zdJ#cg3&A(YhVao7$s7Q1Kxt67A}2-@3e7!GzETP_iEhN=5eBc?nOIGKVs(>o)G}cI zkV$7#RWUzk{6a`o#V07nrWsrT>IKl>LwPeL&6~mb5GhuKodecD z^EFu%(xj$HXCv{gPnL0y1DAUbuoih|P>tle7aRQ+Af5nZk$qSXYKwSE*2JaK3Hc)IdlB_X+)ETA#D*4dyicz4Z7C6xcP=lyCA|z7?z%FmL zCs~3_howk-2T4^h<+&f*&4IV8gnD5 z-z}D<`R1;!4=&@7c$f_vP>e@!o \ No newline at end of file diff --git a/conf/static/public/static/rss.svg b/conf/static/public/static/rss.svg new file mode 100644 index 0000000..8562d88 --- /dev/null +++ b/conf/static/public/static/rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/conf/static/public/static/script.js b/conf/static/public/static/script.js new file mode 100644 index 0000000..e69de29 diff --git a/conf/static/public/static/style.css b/conf/static/public/static/style.css new file mode 100644 index 0000000..905b79d --- /dev/null +++ b/conf/static/public/static/style.css @@ -0,0 +1,207 @@ +* { + box-sizing: border-box; +} +html, body { + padding: 0; + margin: 0; + min-width: 320px; +} +body { + background: #f9f9f9; + font-family: "Inter", "Open Sans", "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 26px; + color: #111; +} +a { + color: #0055d4; + text-decoration-color: #abcbfb; +} +a:hover { + color: #111; +} +label { + cursor: pointer; + color: #444; +} +h1, +h2, +h3, +h4 { + font-weight: 400; +} +.section { + margin-bottom: 45px; +} + +input[type="text"], input[type="email"], select { + padding: 10px 15px; + border: 1px solid #888; + border-radius: 3px; + width: 100%; + box-shadow: 2px 2px 0 #f3f3f3; + border: 1px solid #ddd; + font-size: 1em; +} + input:focus { + border-color: #0055d4; + } + +input:focus::placeholder { + color: transparent; +} + +input[disabled] { + opacity: 0.5; +} + +.center { + text-align: center; +} +.right { + text-align: right; +} +.button { + background: #0055d4; + padding: 15px 30px; + border-radius: 3px; + border: 0; + cursor: pointer; + text-decoration: none; + color: #ffff; + display: inline-block; + min-width: 150px; + font-size: 1.1em; + text-align: center; +} +.button:hover { + background: #333; + color: #fff; +} +.button.button-outline { + background: #fff; + border: 1px solid #0055d4; + color: #0055d4; +} +.button.button-outline:hover { + background-color: #0055d4; + color: #fff; +} + +.container { + margin: 60px auto 15px auto; + max-width: 550px; +} + +.wrap { + background: #fff; + padding: 40px; + box-shadow: 2px 2px 0 #f3f3f3; + border: 1px solid #eee; +} + +.header { + border-bottom: 1px solid #eee; + padding-bottom: 15px; + margin-bottom: 30px; +} +.header .logo img { + width: auto; + max-width: 150px; +} + +.unsub-all { + margin-top: 30px; + padding-top: 30px; + border-top: 1px solid #eee; +} + +.row { + margin-bottom: 20px; +} +.lists { + list-style-type: none; + padding: 0; +} + .lists li { + margin: 0 0 5px 0; + } + .lists .description { + margin: 0 0 15px 0; + font-size: 0.875em; + line-height: 1.3rem; + color: #888; + margin-left: 25px; + } + .form .nonce { + display: none; + } + .form .captcha { + margin-top: 30px; + } + +.archive { + list-style-type: none; + margin: 25px 0 0 0; + padding: 0; +} + .archive .date { + display: block; + color: #666; + font-size: 0.875em; + } + .archive li { + margin-bottom: 15px; + } + .feed { + margin-right: 15px; + } + +.home-options { + margin-top: 30px; +} + .home-options a { + margin: 0 7px; + } + +.pagination { + margin-top: 30px; + text-align: center; +} + .pg-page { + display: inline-block; + padding: 0 10px; + text-decoration: none; + } + .pg-page.pg-selected { + text-decoration: underline; + font-weight: bold; + } + +#btn-back { + display: none; +} + +footer.container { + margin-top: 15px; + text-align: center; + color: #aaa; + font-size: 0.775em; + margin-top: 30px; + margin-bottom: 30px; +} + footer a { + color: #aaa; + text-decoration: none; + } + footer a:hover { + color: #111; + } + +@media screen and (max-width: 650px) { + .wrap { + margin: 0; + padding: 30px; + max-width: none; + } +} diff --git a/conf/static/public/templates/archive.html b/conf/static/public/templates/archive.html new file mode 100644 index 0000000..5f4a886 --- /dev/null +++ b/conf/static/public/templates/archive.html @@ -0,0 +1,41 @@ +{{ define "archive" }} +{{ template "header" .}} +
+

{{ L.T "public.archiveTitle" }}

+ +
    + {{ range $c := .Data.Campaigns }} +
  • + {{ $c.Subject }} + + {{ if $c.SendAt.Valid }} + {{ $c.SendAt.Time.Format "Mon, 02 Jan 2006" }} + {{ else }} + {{ $c.CreatedAt.Time.Format "Mon, 02 Jan 2006" }} + {{ end }} + +
  • + {{ end }} +
+ + {{ if not .Data.Campaigns }} + {{ L.T "public.archiveEmpty" }} + {{ end }} + + {{ if .EnablePublicSubPage }} + + {{ end }} + + {{ if gt .Data.TotalPages 1 }} + + {{ end }} +
+ +{{ template "footer" .}} +{{ end }} diff --git a/conf/static/public/templates/home.html b/conf/static/public/templates/home.html new file mode 100644 index 0000000..5bd3b26 --- /dev/null +++ b/conf/static/public/templates/home.html @@ -0,0 +1,18 @@ +{{ define "home" }} +{{ template "header" .}} + +
+ {{ L.T "users.login" }} + +
+ {{ if .EnablePublicSubPage }} + {{ L.T "public.sub" }} + {{ end }} + {{ if .EnablePublicArchive }} + {{ L.T "public.archiveTitle" }} + {{ end }} +
+
+ +{{ template "footer" .}} +{{ end }} \ No newline at end of file diff --git a/conf/static/public/templates/index.html b/conf/static/public/templates/index.html new file mode 100644 index 0000000..d5b1523 --- /dev/null +++ b/conf/static/public/templates/index.html @@ -0,0 +1,47 @@ +{{ define "header" }} + + + + + {{ .Data.Title }} - {{ .SiteName }} + + + + {{ if .EnablePublicArchive }} + + {{ end }} + + + + + + {{ if ne .FaviconURL "" }} + + {{ else }} + + {{ end }} + + +
+
+ +
+{{ end }} + +{{ define "footer" }} +
+ +
+
+ + +{{ end }} diff --git a/conf/static/public/templates/message.html b/conf/static/public/templates/message.html new file mode 100644 index 0000000..bb070f3 --- /dev/null +++ b/conf/static/public/templates/message.html @@ -0,0 +1,27 @@ +{{ define "message" }} + {{ template "header" .}} + +

{{ .Data.Title }}

+
+ {{ .Data.Message }} +
+ +

+ {{ L.T "globals.buttons.back" }} +

+ + + {{ template "footer" .}} +{{ end }} diff --git a/conf/static/public/templates/optin.html b/conf/static/public/templates/optin.html new file mode 100644 index 0000000..3bc7050 --- /dev/null +++ b/conf/static/public/templates/optin.html @@ -0,0 +1,30 @@ +{{ define "optin" }} +{{ template "header" .}} +
+

{{ L.T "public.confirmSubTitle" }}

+

+ {{ L.T "public.confirmSubInfo" }} +

+ +
+
    + {{ range $i, $l := .Data.Lists }} + + {{ if eq $l.Type "public" }} +
  • {{ $l.Name }}
  • + {{ else }} +
  • {{ L.Ts "public.subPrivateList" }}
  • + {{ end }} + {{ end }} +
+

+ + +

+
+
+ +{{ template "footer" .}} +{{ end }} \ No newline at end of file diff --git a/conf/static/public/templates/subscription-form.html b/conf/static/public/templates/subscription-form.html new file mode 100644 index 0000000..a99e034 --- /dev/null +++ b/conf/static/public/templates/subscription-form.html @@ -0,0 +1,52 @@ +{{ define "subscription-form" }} +{{ template "header" . }} +
+

{{ L.T "public.subTitle" }}

+ +
+
+

+ + + + +

+

+ + +

+ +
    +

    {{ L.T "globals.terms.lists" }}

    + {{ range $i, $l := .Data.Lists }} +
  • + + + {{ if ne $l.Description "" }} +

    {{ $l.Description }}

    + {{ end }} +
  • + {{ end }} +
+ + {{ if .Data.CaptchaKey }} +
+
+ +
+ {{ end }} +

+ + + {{ if .EnablePublicArchive }} +

+ {{ L.T "public.archiveTitle" }} +

+ {{ end }} +

+
+
+
+ +{{ template "footer" .}} +{{ end }} diff --git a/conf/static/public/templates/subscription.html b/conf/static/public/templates/subscription.html new file mode 100644 index 0000000..07bd086 --- /dev/null +++ b/conf/static/public/templates/subscription.html @@ -0,0 +1,123 @@ +{{ define "subscription" }} +{{ template "header" .}} +
+ {{ if not .Data.ShowManage }} +

{{ L.T "public.unsubTitle" }}

+
+
+ {{ if .Data.AllowBlocklist }} +

{{ L.T "public.unsubHelp" }}

+

+ + +

+ {{ end }} + +

+ +

+ + {{ if .Data.AllowPreferences }} + {{ L.T "public.managePrefs" }} + {{ end }} +
+
+ {{ else }} +
+
+ + +

{{ L.T "public.managePrefs" }}

+ + + + {{ if .Data.Subscriptions }} +

+

{{ L.T "public.managePrefsUnsub" }}

+
    + {{ range $i, $l := .Data.Subscriptions }} + {{ if ne $l.SubscriptionStatus.Value "unsubscribed" }} +
  • + + +
  • + {{ end }} + {{ end }} +
+ {{ end }} + + {{ if .Data.AllowBlocklist }} +

+ + +

+ {{ end }} + +

+ +

+
+
+ {{ end }} +
+ +{{ if or .Data.AllowExport .Data.AllowWipe }} +
+
+

{{ L.T "public.privacyTitle" }}

+ {{ if .Data.AllowExport }} +
+ + +
+ {{ L.T "public.privacyExportHelp" }} +
+ {{ end }} + + {{ if .Data.AllowWipe }} +
+ + +
+ {{ L.T "public.privacyWipeHelp" }} +
+ {{ end }} +

+ +

+
+
+ +{{ end }} + +{{ template "footer" .}} +{{ end }} \ No newline at end of file