Commit Graph

169 Commits

Author SHA1 Message Date
Kailash Nadh 68afd61024 Add support for alternate plaintext body for e-mails.
This commit removes the Go html2text lib that would automatically
convert all HTML messages to plaintext and add them as the alt
text body to outgoing e-mails. This lib also had memory leak
issues with certain kinds of HTML templates.

A new UI field for optionally adding an alt plaintext body to
a campaign is added. On enabling, it converts the HTML message in
the campaign editor into plaintext (using the textversionjs lib).

This introduces breaking changes in the campaigns table schema,
model, and template compilation.
2021-01-30 18:49:47 +05:30
Kailash Nadh 535b505404 Add autofocus on the first field in SMTP/Messenger settings UI 2021-01-30 11:00:06 +05:30
Kailash Nadh fcc068cd70 Add missing translations and fix broken ones on the UI 2021-01-26 22:01:55 +05:30
Kailash Nadh dc0465b0af Refactor global instances of $api and $utils to be mixins.
... instead of Vue.prototype variables which is the idiomatic
approach. Also, the refactor enables utils to be instantiated
as a class that takes the i18n object for util functions to have
accesss to i18n translation.
2021-01-26 21:57:27 +05:30
Kailash Nadh 0add1c4e8b Fix incorrect label on skip-TLS setting on UI 2021-01-24 12:26:44 +05:30
Kailash Nadh 027261793f Add support for rate limiting messages with a sliding window.
Certain SMTP hosts limit the total number of messages that can be
sent within a window, for instance, X / 24 hours. The concurrency
and message rate controls can only limit that to a max of
1 messages / second, without a global cap.

This commit introduces a simple sliding window rate limit feature
that counts the number of messages sent in a specific window, and
upon reaching that limit, waits for the window to reset before
any more messages are pushed out globally across any number of
campaigns.

Context: https://github.com/knadh/listmonk/issues/119
2021-01-24 12:19:26 +05:30
Kailash Nadh 4cd5e6ebeb Refactor and remove placeholder i18n func 2021-01-23 18:54:33 +05:30
Kailash Nadh ec1c4f30ed Add subscriber export feature 2021-01-23 18:23:29 +05:30
Kailash Nadh 3498a727f5 WIP: Add i18n support 2021-01-17 20:59:01 +05:30
dependabot[bot] 3975ccc4b7
Bump axios from 0.19.2 to 0.21.1 in /frontend
Bumps [axios](https://github.com/axios/axios) from 0.19.2 to 0.21.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.19.2...v0.21.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-06 06:20:31 +00:00
dependabot[bot] c8fc91e2e0
Bump highlight.js from 9.18.1 to 9.18.5 in /frontend
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 9.18.1 to 9.18.5.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/9.18.5/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/9.18.1...9.18.5)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-25 06:07:48 +00:00
Kailash Nadh ce108c8487 Fix broken 'send campaign' shortcut on the Lists UI 2020-11-21 16:11:59 +05:30
Kailash Nadh 7a9d11d426 Fix escaping {{ TrackLink }} in WYSIWYG editor UI 2020-11-08 19:47:10 +05:30
Kailash Nadh 1aecd6f2e1 Add serverside sort to tables.
Lists, campaigns, and subscribers tables now support server-side
sorting from the UI. This significantly changes the internal
queries from prepared to string interpolated to support dynamic
sort params.
2020-10-24 20:00:29 +05:30
Kailash Nadh 966954d8f4 Refactor log view UI into a component. 2020-10-24 11:42:28 +05:30
Kailash Nadh b054ed5adc Fix inconsistent quotes in Vue config 2020-10-18 23:10:48 +05:30
Kailash Nadh f6511b68d8 Update JS dep (security): node-forge 2020-10-18 18:07:26 +05:30
Kailash Nadh 1b279478fb Make individual subscriber tracking optional.
A new toggle switch in Settings -> Privacy, which is off by
default, allows campaign views (pixel) and link clicks to function
without registering the subscriber ID against view and click
events, anonymising tracking. When off, the subscriber UUIDs in
view and link tracking URLs are removed, anonymising subscriber
information from HTTP logs as well.
2020-10-18 17:49:46 +05:30
Kailash Nadh 50e488fc01 Fix 'Send test' not reflecting campaign body on first page load 2020-10-17 23:38:29 +05:30
Kailash Nadh 8dbe30cd26 Add new 'Logs' page to the UI to view stdout logs 2020-10-10 23:55:54 +05:30
Kailash Nadh f81d75a787 Allow deleting of all campaigns irrespective of status 2020-10-10 22:08:13 +05:30
Kailash Nadh 409b259fd3 Fix settings UI copying SMTP values on 'new' 2020-10-10 21:35:09 +05:30
Kailash Nadh 6cf43ea674 Add generic HTTP postback `Messenger` support.
This is a major feature that builds upon the `Messenger` interface
that has been in listmonk since its inception (with SMTP as the only
messenger). This commit introduces a new Messenger implementation, an
HTTP "postback", that can post campaign messages as a standard JSON
payload to arbitrary HTTP servers. These servers can in turn push them
to FCM, SMS, or any or any such upstream, enabling listmonk to be a
generic campaign messenger for any type of communication, not just
e-mails.

Postback HTTP endpoints can be defined in settings and they can be
selected on campaigns.
2020-10-10 18:52:08 +05:30
Kailash Nadh be9fbcd542
Merge pull request #200 from knadh/fix-incorrect-csv-example
fix: incorrect csv import example on frontend
2020-10-04 15:10:19 +05:30
Vivek R 025d54b64e fix: incorrect csv import example on frontend
Example given for CSV import on Import.vue is incorrect since
field `attributes` value is not a valid JSON. Previous example
copy pasted was throwing CSV parse error.
2020-10-03 17:52:56 +05:30
Vivek R 6c234f1b1d fix: use inbuilt frontend dev server to proxy API
Vue's inbuilt dev server can be configured to proxy API for
development instead of directing developers to setup Nginx proxy.
Additionally this commit also adds an option to configure frontend port
on which dev server runs. Sample env config file is under
`frontend/.env.sample`, it can be copied to either `frontend/.env` or `frontend/.env.local`.

Available options are

LISTMONK_FRONTEND_PORT - Configure frontend dev server port (defaults to 8080)
LISTMONK_API_URL - Configure API server URL (defaults to http://127.0.0.1:9000)

Since env variables are sourced to current session we are prefixing it with `LISTMONK_`.
2020-10-03 04:50:07 +05:30
René d6279ed965
Update Settings.vue 2020-09-19 00:11:42 +02:00
Kailash Nadh 288164ea6a Remove 'required' from upload field that fails to recognize drag-drop 2020-09-02 11:48:56 +05:30
Kailash Nadh 26390e9994 Merge branch 'master' of github.com:knadh/listmonk 2020-08-30 17:46:17 +05:30
Shivam Mishra abe8c598fc fix: update toggle on update:active 2020-08-25 19:16:33 +05:30
Shivam Mishra ed0d9ee431 chore: remove stray whitesapce 2020-08-25 19:15:32 +05:30
Shivam Mishra 3b141bb100 style: remove stray tab indentation 2020-08-24 19:52:00 +05:30
Shivam Mishra 427fcf7efd fix: inconsistent active link on sidebar navigation 2020-08-24 19:15:28 +05:30
Kailash Nadh 8fe601aa4a Add pagination to lists 2020-08-22 19:58:21 +05:30
Kailash Nadh 1ef1c5a61c Fix incorrect default values and server response in list creation UI 2020-08-22 14:13:13 +05:30
Kailash Nadh 8c56407031 Add rebranded design elements.
- New logo and favicon and new splash image + intro text in the
  README.
2020-08-09 19:15:44 +05:30
Kailash Nadh d8a60d1295 Add automatic update checks.
- A check for new versions on the GitHub releases pages happens
  once every 24 hours. When a new version is available, a notice
  is displayed on the admin UI.
2020-08-08 16:59:47 +05:30
Kailash Nadh 7ed07550ff Fix minor inconsistencies in settings.
- Add missing `app.root_url` key in migration.
- Register `/settings` handler in the backend.
- Add dummy dots in secret fields on the UI for visibility.
2020-08-07 19:28:23 +05:30
Kailash Nadh 8979a2ad0b Fix Quill setup to use inline CSS styles instead of classes 2020-08-07 13:43:18 +05:30
Kailash Nadh 494c519359 Upgrade JS dependencies (security fixes) 2020-08-01 20:28:39 +05:30
Kailash Nadh 4703d78b39 Add a fullscreen option to the campaign richtext editor 2020-08-01 20:19:03 +05:30
Kailash Nadh 378e8145fe Add campaign search UI. 2020-08-01 19:46:47 +05:30
Kailash Nadh 0db95799fb Suffix app name in page titles 2020-08-01 18:47:05 +05:30
Kailash Nadh 5ff5c74321 Add custom email headers to SMTP settings UI 2020-08-01 18:33:15 +05:30
Kailash Nadh ec097909db Add support for `List-Unsubscribe` header.
- Added as a setting in the settings UI.
- Refactor Messenger.Push() method to accept messenger.Message{}
  instead of a growing number of positional arguments.
2020-08-01 17:54:51 +05:30
Kailash Nadh 7ead052054 Fixed `reset` not clearing query on subscriber search UI 2020-08-01 16:59:34 +05:30
Kailash Nadh e4f233e2e5 Add missing `root_url` to settings UI 2020-08-01 16:53:29 +05:30
Kailash Nadh 8c0804ba9f Refactor `blacklist` to `blocklist` 2020-08-01 16:45:29 +05:30
Kailash Nadh 2143def136 Fix loss of caret on image insertion in campaign from popup 2020-08-01 16:09:55 +05:30
Kailash Nadh 13a252a7b3 Add missing 'opt-in' campaign feature to the new UI 2020-08-01 15:31:13 +05:30