mirror of
https://github.com/plausible/analytics.git
synced 2024-12-01 03:48:35 +03:00
517d4db262
* first commit with test and compile job Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * adding 'prepare' stage Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * updated ci script to include "test" compile phase Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * adding environment variables for connecting to postgresql Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * updated ci config for postgres Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * using non-alpine version of elixir Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * re-using the 'compile' artifacts and added explict env variables for testing Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * removing redundant deps fetching from common code Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * formatting using mix.format -- beware no-code changes! Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * added release config Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * adding consistent env variable for Database Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * more cleaning up of environment variables Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Adding releases config for enabling releases Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * cleaning up env configs Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Cleaned up config and prepared config for releases Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * updated CI script with new config for test Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Added Dockerfile for creating production docker image Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Adding "docker" build job yay! Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * using non-slim version of debian and installing webpack Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Adding overlays for migrations on releases Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * restricting the docker built to master branch only Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * typo fix Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * adding "Hosting.md" to explain hosting instructions Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * removed the default comments Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Added documentation related to env variables * updated documentation and fixed typo Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * updated documentation * Bumping up elixir version as `overlays` are only supported in latest version read release notes: https://github.com/elixir-lang/elixir/releases/tag/v1.10.0 Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Adding tarball assembly during release Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * updated HOSTING.md Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Added support for db migration Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * minor corrections Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * initializing admin user Admin user has been added in the "migration" phase. A default user is automatically created in the process. One can provide the related env variables, else a new one will be automatically created for you. Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Initial base domain update - phase#1 These changes are only meant for correct operating it under self-hosting. There are many other cosmetic changes, that require updates to email, site and other places where the original website and author is used. Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Using dedicated config variable `base_domain` instead Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * adding base_domain to releases config Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * removing the dedicated config "base_domain", relying on endpoint host Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Removed the usage of "Mix" in code! It is bad practice to use "mix" module inside the code as in actual release this module is unavailable. Replacing this with a config environment variable Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Added support for SMTP via Bamboo Smtp Adapter Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Capturing SMTP errors via Sentry Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Minor updates Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * Adding junit formatter -- useful for generating test reports Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * adding documentation for default user * Resolve "Gitlab Adoption: Add supported services in "Security & Compliance"" * bumping up the debian version to fix issues fixing some vulnerabilities identified by the scanning tools * More updates for self-hosting Changes in most of the places to suit self-hosting. Although, there are some which have been left-off. Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * quick-dirty-fix! * bumping up the db connect timeout Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * bumping up the db connect timeout Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * bumping up the db connect timeout Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * bumping up timeout - skipping MRs :-/ * removing restrictions on watching for changes this stuff isn't working * Update HOSTING.md * renamed the module name * reverting formatting-whitespace changes Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * reverting the name to release Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * adding docker-compose.yml and related instructions Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * using `plausible_url` instead of assuming `https` this is because, it is much to test in local dev machines and in most cases there's already a layer above which is capable for `https` termination and http -> https upgrade Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * WIP: merging changes from upstream Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * wip: more changes * Pushing in changes from upstream Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * changes to ci for testing Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * cleaning up and finishing clickhouse integration Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * updating readme with hosting details * removing deleted files from upstream * minor config adjustments Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * formatting changes Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * changing the connection strategy for clickhouse during release since clickhouse integration doesn't have an ecto support, we need to prepare the db _before_ the clickhouse migration. One workaround is to connect to a default db on init and then create a db Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * formatting * cleanup and added separated migration to setup * Big improvements to selfhosting - added ability for disabling - authentication completely - registration - landing page - formatting cleanups * Big improvements to selfhosting - added ability for disabling - authentication completely - registration - landing page - formatting cleanups * changing smtp auth to optional Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * removed stale templates and permanently removed landing page Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me> * removed stale templates and permanently removed landing page Signed-off-by: Chandra Tungathurthi <tckb@tgrthi.me>
117 lines
3.2 KiB
Elixir
117 lines
3.2 KiB
Elixir
defmodule PlausibleWeb.Email do
|
|
use Bamboo.Phoenix, view: PlausibleWeb.EmailView
|
|
import Bamboo.PostmarkHelper
|
|
|
|
def mailer_email_from do
|
|
Application.get_env(:plausible, :mailer_email)
|
|
end
|
|
|
|
def admin_email do
|
|
Application.get_env(:plausible, :admin_email)
|
|
end
|
|
|
|
def activation_email(user, link) do
|
|
base_email()
|
|
|> to(user.email)
|
|
|> from(mailer_email_from())
|
|
|> tag("activation-email")
|
|
|> subject("Activate your Plausible free trial")
|
|
|> render("activation_email.html", name: user.name, link: link)
|
|
end
|
|
|
|
def welcome_email(user) do
|
|
base_email()
|
|
|> to(user)
|
|
|> from(mailer_email_from())
|
|
|> tag("welcome-email")
|
|
|> subject("Welcome to Plausible")
|
|
|> render("welcome_email.html", user: user)
|
|
end
|
|
|
|
def create_site_email(user) do
|
|
base_email()
|
|
|> to(user)
|
|
|> from(mailer_email_from())
|
|
|> tag("create-site-email")
|
|
|> subject("Your Plausible setup: Add your website details")
|
|
|> render("create_site_email.html", user: user)
|
|
end
|
|
|
|
def site_setup_help(user, site) do
|
|
base_email()
|
|
|> to(user)
|
|
|> from(mailer_email_from())
|
|
|> tag("help-email")
|
|
|> subject("Your Plausible setup: Waiting for the first page views")
|
|
|> render("site_setup_help_email.html", user: user, site: site)
|
|
end
|
|
|
|
def site_setup_success(user, site) do
|
|
base_email()
|
|
|> to(user)
|
|
|> from(mailer_email_from())
|
|
|> tag("setup-success-email")
|
|
|> subject("Plausible is now tracking your website stats")
|
|
|> render("site_setup_success_email.html", user: user, site: site)
|
|
end
|
|
|
|
def check_stats_email(user) do
|
|
base_email()
|
|
|> to(user)
|
|
|> from(mailer_email_from())
|
|
|> tag("check-stats-email")
|
|
|> subject("Check your Plausible website stats")
|
|
|> render("check_stats_email.html", user: user)
|
|
end
|
|
|
|
def password_reset_email(email, reset_link) do
|
|
base_email()
|
|
|> to(email)
|
|
|> from(mailer_email_from())
|
|
|> tag("password-reset-email")
|
|
|> subject("Plausible password reset")
|
|
|> render("password_reset_email.html", reset_link: reset_link)
|
|
end
|
|
|
|
def trial_one_week_reminder(user) do
|
|
base_email()
|
|
|> to(user)
|
|
|> from(mailer_email_from())
|
|
|> tag("trial-one-week-reminder")
|
|
|> subject("Your Plausible trial expires next week")
|
|
|> render("trial_one_week_reminder.html", user: user)
|
|
end
|
|
|
|
def trial_upgrade_email(user, day, pageviews) do
|
|
base_email()
|
|
|> to(user)
|
|
|> from(mailer_email_from())
|
|
|> tag("trial-upgrade-email")
|
|
|> subject("Your Plausible trial ends #{day}")
|
|
|> render("trial_upgrade_email.html", user: user, day: day, pageviews: pageviews)
|
|
end
|
|
|
|
def trial_over_email(user) do
|
|
base_email()
|
|
|> to(user)
|
|
|> from(mailer_email_from())
|
|
|> tag("trial-over-email")
|
|
|> subject("Your Plausible trial has ended")
|
|
|> render("trial_over_email.html", user: user)
|
|
end
|
|
|
|
def weekly_report(email, site, assigns) do
|
|
base_email()
|
|
|> to(email)
|
|
|> from("Plausible Analytics <info@plausible.io>")
|
|
|> tag("weekly-report")
|
|
|> subject("#{assigns[:name]} report for #{site.domain}")
|
|
|> render("weekly_report.html", Keyword.put(assigns, :site, site))
|
|
end
|
|
|
|
defp base_email() do
|
|
new_email()
|
|
|> put_param("TrackOpens", false)
|
|
end
|
|
end
|