Commit graph

193 commits

Author SHA1 Message Date
Tomas Bures
d4cea46f07 Report templates ported to ReactJS and Knex.
Does not run yet because reports have dependencies on the old report templates.
2017-07-09 15:41:53 +02:00
Tomas Bures
be7da791db LDAP auth seems to work too.
Users completely refactored to ReactJS and Knex
Initial draft of call context passing (for the time being only in users:remove
2017-07-08 21:34:26 +02:00
Tomas Bures
9758b4b104 Local auth seems to work 2017-07-08 18:57:41 +02:00
Tomas Bures
d79bbad575 All about user login
Not runnable at the moment
2017-07-08 15:48:34 +02:00
Tomas Bures
fbb8f5799e React-based /account endpoint for editing a user profile 2017-06-30 16:11:02 +02:00
Tomas Bures
eb2287f6e9 Release candidate of basic user management - currently only CRUD on users, no permission assignment. 2017-06-29 23:22:33 +02:00
witzig
277b2cadf5 Fixed bug #261 2017-06-21 17:28:56 +02:00
Tomas Bures
e7856bfb73 Merge branch 'master' of github.com:Mailtrain-org/mailtrain into access 2017-06-21 02:16:28 +02:00
Tomas Bures
c81f5544e6 Added support for Datatables
Added support for ajax-based server side validation (useful for validation of emails, duplicate usernames, etc.)
User form more or less ready in the basic version (i.e. without permission management)
2017-06-21 02:14:14 +02:00
witzig
3c4558d70c Refactored and linted editorapi image handling 2017-06-20 19:08:14 +02:00
Tomas Bures
f776170854 Merge branch 'master' of github.com:Mailtrain-org/mailtrain into access
Conflicts:
	package.json
2017-06-17 10:11:07 +02:00
witzig
1d76eefe27 Fixed unhandled promise rejection #254 (and some cleanup) 2017-06-14 11:07:16 +02:00
witzig
87f7a050ab Fixed bug #249 2017-06-11 01:27:27 +02:00
Tomas Bures
5b82d3b540 Edit and create seem to more or less work (including selection of the parent). Delete is pending. 2017-06-07 01:13:15 +02:00
Tomas Bures
5e4c86f626 Seems that hierarchical error handling works..
TreeTable component seems to work too.
Edit is half-way through. Create / delete are TBD.
2017-06-05 23:59:08 +02:00
Tomas Bures
79ea9e1897 Work in progress on a React-based error reporting mechanism.
The idea is that REST handlers always fail with throwing an Error (subclass of InteroperableError). The InteroperableError contains type and data field which are JSON-serialized and sent to client. It's up to the client to interpret the error and choose an appropriate way to present it.
2017-06-05 00:52:59 +02:00
Tomas Bures
4504d539c5 Some basic components for building forms. 2017-06-04 13:16:29 +02:00
Tomas Bures
d13fc65ce2 Merge branch 'master' of github.com:Mailtrain-org/mailtrain into access 2017-06-03 07:50:09 +02:00
Tomas Bures
6f554038c9 Merge branch 'master' of github.com:Mailtrain-org/mailtrain 2017-06-01 08:04:56 -04:00
Tomas Bures
8c5b62b6a4 Fixed bug #246. 2017-06-01 08:03:43 -04:00
witzig
a7b2c33b30 GrapeJS MJML Integration (Experimental)
#215
2017-05-31 02:08:44 +02:00
Tomas Bures
4f52b571c9 Some bits for ReactJS-based client. 2017-05-28 18:49:00 +02:00
Tomas Bures
115d254baf Merge branch 'master' into access
Conflicts:
	config/default.toml
2017-05-27 10:43:31 +02:00
Tomas Bures
c11d1a1cbf Added processing of the "auto" option in unsubscription.
If auto=yes is specified, the two-step unsubscription works as one-step. No unsubscription form is presented.
2017-05-27 00:43:56 +02:00
Tomas Bures
1b73282e90 WiP on namespaces and users 2017-05-15 16:22:06 -04:00
Tomas Bures
6b92e39112 Some fixes in lists and apis to reflect the changes in subscriptions.
Confirmation URLs split per action type. This allows more specific error reporting.
2017-05-06 06:35:32 -04:00
Tomas Bures
11990d62b2 Merge branch 'master' of github.com:Mailtrain-org/mailtrain
Conflicts:
	languages/de_DE.po
2017-05-04 17:58:55 -04:00
Tomas Bures
a6d25e668b Release candidate of the selectable unsubscription
Implemented the resubscription process - i.e. pre-filling in the form when the subscription link is clicked in the unsubscription notice.
2017-05-04 17:42:46 -04:00
witzig
408db13fd4 Updated RSS merge tag reference 2017-05-03 23:13:05 +02:00
Tomas Bures
bd4961366f More or less all the functionality for selectable unsubscription process. Not tested yet!
Sending emails moved completely to controller. It felt strange to have some emails sent from the controller and some of them from the model.
Confirmations refactored to an independent model that can be potentially used also for other actions that need an email confirmation.
2017-05-03 15:53:34 -04:00
Tomas Bures
32e2e61789 Unsubscription is identified by subscriber cid. This effectivelly allows only the recipient of the email to unsubscribe. This addresses issue #221.
I also scraped the "auto" parameter which automatically submits the unsubscription form when the link is clicked in a campaign email. Instead, I introduced the
unsubscription options ONE_STEP, ONE_STEP_WITH_FORM, TWO_STEP, TWO_STEP_WITH_FORM. The options without "_WITH_FORM" shall behave like when called with "auto".
This functionality is to come. Currently it behaves as ONE_STEP_WITH_FORM.
2017-04-30 13:01:22 -04:00
Tomas Bures
3783d7c2ce Halfway through extending subscriptions by selectable unsubscription process. Also contains changes towards better handling of scenarios when address is already subscribed. 2017-04-30 10:51:47 -04:00
root
2ac89f3365 Report processor worker refactored to run under another user (nobody) and have its own mysql credentials. 2017-04-27 16:35:53 -04:00
Tomas Bures
418dba7b9f Work in progress on securing reports. 2017-04-25 22:49:31 +00:00
Tomas Bures
3072632d8d Fixed eslint errors 2017-04-23 15:24:31 -04:00
Tomas Bures
bb4eb3832f Some bugfixes to the previous commit. 2017-04-20 19:57:55 -04:00
Tomas Bures
8237dd5d77 The "Reports" feature seems functional.
Some small refactoring (column widths) of rendering tables in Lists, Templates, and Campaigns so that it is the same as Reports.
2017-04-20 19:42:01 -04:00
Tomas Bures
e7d12f1dbc Halfway through in refactoring the report generation to a separate process running asynchronously of the Express server. 2017-04-17 18:31:01 -04:00
Tomas Bures
2056645023 Added the option to select lists in report.
Added an option to generate a CSV report.
2017-04-17 16:30:31 -04:00
Tomas Bures
6ba04d7ff4 This is a preview of the Reports functionality.
It allows defining report templates and then create reports based on the templates.
A template defines:
- parameters - to be set in the report (currently only selection of campaigns, in the future to be extended to selection of lists/segments, and selection from pre-defined options)
- data retrieval / processing code (in Javascript)
- rendering template (in Handlebars)

This main functionality is accompanied by a few minor tweaks here and there. Worth notice is the ability to use server-side ajax table s for multi-selection of campaigns. This is meant for reports that compare data across multiple campaigns. This could possibly be even used for some poor man's A/B testing.

Note that the execution of custom JavaScript in the data retrieval / processing code and definition of custom Handlebars templates is a security issue. This should however be OK in the general case once proper user management with granular permissions is in. This is because definition of a report template is anyway such an expert task that it would normally be performed only by admin. Instantiation of reports based on report templates can be then done by any user because this should no longer be any security problem.
2017-04-16 18:09:08 -04:00
Tomas Bures
9fdf52674e Lists and Templates overviews refactored to use ajax. Before the refactoring, they behaved and looked a bit different to the other (Ajax) tables. The main difference in the behavior was in the row numbers (1st column) when sort order was switched. The non-ajax tables rearranged the numbers in the 1st column while the ajax-tables didn't.
Some small tweaks in table-helpers to allow selecting which fields are pulled from DB (and how they are renamed).
2017-04-16 03:22:32 -04:00
Tomas Bures
c74232e9c5 Added option to mark a list as not being allowed to be subscribed by public users using the form.
The settings is a checkbox in list create/edit.
2017-04-14 08:57:47 -04:00
vladimir
c9136f8abd Add blacklist function 2017-04-11 10:10:02 +02:00
witzig
100fd41713 Fixes widgets for custom forms, #201 2017-04-10 08:44:33 +02:00
witzig
60907c0d86 Subscription Widget 2017-04-03 20:42:04 +02:00
vladimir
1547e887c3 Add option to disable email cheking for imported CSV 2017-03-31 11:20:43 +02:00
Andris Reinman
d7c06e0a5a Do not use .stack property with error objects 2017-03-24 13:04:38 +02:00
vladimir
3152ecb228 Merge remote-tracking branch 'upstream/master' into clicks-by-device-type 2017-03-21 10:26:50 +02:00
witzig
8852f33f03 Added note about MJML usage 2017-03-20 22:32:32 +01:00
vladimir
10dd23fee4 Merge remote-tracking branch 'upstream/master' into clicks-by-device-type 2017-03-20 14:50:10 +02:00
vladimir
1ba3bce6eb Add device type detect and stats calculation for open/click rate by device type and country 2017-03-20 14:44:17 +02:00
witzig
b09af60fac Merge branch 'master' into custom-forms-mjml
# Conflicts:
#	lib/tools.js
#	package.json
2017-03-19 13:44:24 +01:00
witzig
2e50fbc8ae Custom Forms 2017-03-19 13:36:57 +01:00
Andris Reinman
9d5fb816c9 Fixes issue with HTML entities 2017-03-19 13:39:34 +02:00
witzig
3aaf9bc6bf Fixed title case 2017-03-12 01:13:24 +01:00
witzig
a2450507c6 Rename index-2.hbs to index.hbs 2017-03-12 01:10:08 +01:00
witzig
fca8313a5e Landing Page Proposal 2017-03-11 13:21:07 +01:00
witzig
1ea399cbe9 Reduce error handling noise 2017-03-10 15:38:04 +01:00
Andris Reinman
020a77c78f applied some code style changes 2017-03-10 14:14:38 +02:00
witzig
588eed008b GrapeJS and Mosaico Integration 2017-03-10 09:59:25 +01:00
Andris Reinman
37531f2550 Merge branch 'master' of github.com:andris9/mailtrain 2017-03-07 16:31:34 +02:00
Andris Reinman
d25565b6f8 Updated translation support 2017-03-07 16:30:56 +02:00
witzig
a164a7fb40 Moved tracking scripts to partial and made tools.formatMessage() less greedy
The change in tools.formatMessage() prevents stripping CSS like
a[data-foo] and arrays in JS. Thus only replacing mergeTag it knows
about.
2017-03-06 14:52:22 +01:00
witzig
66dc1091a8 Merge remote-tracking branch 'upstream/master' 2017-03-04 21:52:10 +01:00
witzig
8fdb2840c4 Moved Merge Tag Helpers to helpers.js
… to satisfy ESLint top-level module scope.
2017-03-04 21:50:44 +01:00
Andris Reinman
bd6ba90eca Added 'created' column for subscribers lists table 2017-03-04 22:02:46 +02:00
witzig
d9c1d8e595 Merge remote-tracking branch 'upstream/master' 2017-03-04 18:38:44 +01:00
witzig
633463108e Merge tag reference abstraction/partial
Perhaps helpers.js would be a more suitable place for
getDefaultMergeTags() and getListMergeTags() … ?
2017-03-04 18:37:41 +01:00
Andris Reinman
ba8bd12123 initial translations support 2017-03-04 18:15:16 +02:00
witzig
9f191bd7da Update archive.js
Ups.
2017-03-02 22:49:28 +01:00
witzig
a11d95f3d7 Support for custom HTML editors 2017-03-02 19:30:40 +01:00
Andris Reinman
66bfcebd47 added support for ses 2017-02-17 15:56:55 +02:00
Andris Reinman
c42c71a308 allow using only text content 2017-01-29 18:36:10 +02:00
Andris Reinman
fa5d2d012d allow using only text content 2017-01-29 18:33:40 +02:00
Andris Reinman
59c7e1dd8b allow using only text content 2017-01-29 18:23:00 +02:00
Andris Reinman
50f6c8d101 Reload mailer config once admin updates Mailtrain settings 2016-12-25 17:59:50 +02:00
Andris Reinman
efe65ffc3c Treat on,y Permanent bounces as hard bounces, skip everything else (eg autorseponders) 2016-12-12 21:45:53 +02:00
Andris Reinman
37b0ac9aec Do not use array.includes to support some older versions of node 2016-12-08 13:49:31 +02:00
Andris Reinman
7fce6e28fa Allow updating subscribers email address 2016-12-07 16:12:26 +02:00
Johannes Zellner
ac72abd993 Ensure replyTo is picked up for campaign creation page 2016-11-25 17:43:38 +01:00
Andris Reinman
35bce32529 Full support for message attachments 2016-09-09 23:09:04 +03:00
Andris Reinman
bfc6983c93 Added attachments to campaigns 2016-09-09 22:12:03 +03:00
Andris Reinman
e1ace459cf Require subscribers to have JavaScript turned on 2016-09-08 20:43:02 +03:00
Andris Reinman
7171c236bd Require JavaScript to be turned on for subsciption confirmations 2016-09-08 17:50:25 +03:00
Andris Reinman
78083c33fd Require JavaScript to be turned on for subsciption confirmations 2016-09-08 17:49:01 +03:00
Andris Reinman
dcc22e55b9 fixed dkim handling 2016-09-08 16:32:39 +03:00
Andris Reinman
d651cca039 Updated installation script 2016-09-08 15:31:38 +03:00
Andris Reinman
95379f731f v1.18.0 2016-09-08 14:39:41 +03:00
Andris Reinman
82227f49f6 Merge branch 'master' of github.com:andris9/mailtrain 2016-09-08 11:20:45 +03:00
Andris Reinman
d2f0d16980 Updated install script to bundle ZoneMTA 2016-09-08 11:20:33 +03:00
Thi
904b61467d Fix typo 2016-08-30 12:24:33 +08:00
Andris Reinman
7cb5af94b0 return tag 2016-08-29 14:09:07 +03:00
Andris Reinman
896fc01015 v1.16.0 2016-08-29 13:57:27 +03:00
Andris Reinman
1469e08063 Added API call to create new custom fields 2016-08-29 12:27:14 +03:00
Andris Reinman
fb7fd7238f Encode List-ID header, allow access to campaigns with deleted list 2016-08-10 20:45:29 +03:00
Andris Reinman
aad08c4f12 v1.15.0 2016-07-28 17:10:38 +03:00
Andris Reinman
b6555ffd04 Added links to preview delivered messages 2016-07-06 20:10:34 +03:00
Andris Reinman
cf0042c50a Added support for throttling 2016-07-05 19:31:57 +03:00
Andris Reinman
10bd4614ef Add an option to disable un/subscribe confirmation messages 2016-07-01 00:06:46 +03:00
Andris Reinman
c72f03ff5e Added API method to delete subscribers 2016-06-24 14:29:07 +03:00