Commit graph

142 commits

Author SHA1 Message Date
Tomas Bures
d8ee364a4b settings keys in DB converted to camel case
callback-based settings model replaced by async-based settings model
2017-12-30 17:27:24 +01:00
Tomas Bures
e73c0a8b28 Work in progress on subscriptions 2017-08-13 20:11:58 +02:00
Tomas Bures
f6e1938ff9 Lists list and CUD
Custom forms list
Updated DB schema (not yet implemented in the server, which means that most of the server is not broken).
- custom forms are independent of a list
- order and visibility of fields is now in custom_fields
- first_name and last_name has been turned to a regular custom field
2017-07-29 22:42:07 +03:00
Tomas Bures
216fe40b53 Merge branch 'master' of github.com:Mailtrain-org/mailtrain into access 2017-07-27 23:19:48 +03:00
witzig
ce2ed26fc9 findMailByResponse now searches in latest campaigns first
This should be more efficient especially if there’re many campaigns.
2017-07-13 22:29:55 +02:00
Tomas Bures
d63eed9ca9 Reports ported to ReactJS and Knex
Note that the interface for the custom JS code inside a report template has changed. It now offers promise-based interface and exposes knex.
2017-07-13 13:27:03 +02:00
Andris Reinman
091c00a218 Merge pull request #269 from losacno/master
Check for locally requeued messages in postfix
2017-07-10 18:22:04 +03:00
Luc LosCan
f90e67d775 Save new queueId/response on locally requeued messages 2017-07-10 12:13:17 +02:00
Tomas Bures
ad1e4c58f5 Merge branch 'master' of github.com:Mailtrain-org/mailtrain into access
Conflicts:
	views/users/api.hbs
2017-07-09 23:34:03 +02:00
Tomas Bures
aba42d94ac Reports halfway through.
Editing report parameters and execution/monitoring of reports is TBD.
2017-07-09 22:38:57 +02:00
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
d79bbad575 All about user login
Not runnable at the moment
2017-07-08 15:48:34 +02:00
Bruce Mackintosh
191dc7b541 Changed the trigger treshold value from 6 hours to 24 hours, so that dates stored via the API as 00:00:00 are correctly picked up and added to the queue. 2017-07-03 19:44:45 +01: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
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
830ca4f17f Satisfy eslint rule no-useless-escape 2017-06-15 21:44:54 +02:00
witzig
2da90b58e4 Satisfy new eslint indentation rule 2017-06-15 21:26:35 +02:00
witzig
4f5c132db4 Fixed bug: Hidden custom fields (for custom forms) losing values when updating preferences.
Credits to @flapuente-palbin
2017-06-15 19:11:13 +02:00
Tomas Bures
8e54879539 Release candidate of namespace CRUD 2017-06-09 00:23:03 +02:00
Krzysztof Jablonski
71ac4c64a5 Avoid using > with „enums” 2017-06-08 14:22:34 +02:00
Krzysztof Jablonski
819fcfb392 Fix typo during refactoring
During code refactoring for selectable
unsubscription feature code:
`!campaignId || status > 2` was wrongly refactored
to:
`subscription.status !== Status.SUBSCRIBED`

Link:
a6d25e668b (diff-5af9fe5dfae76c093530c92e3d7404e1R496)
2017-06-08 14:06:35 +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
witzig
5aa6dff743 Fixed HTML templates for custom JSON fields #192 2017-06-03 00:13:03 +02:00
witzig
466bf225a3 Fixed Merge Tags #206 #236 2017-06-02 00:24:26 +02:00
Tomas Bures
cda93630ea Merge branch 'master' into access
Conflicts:
	test/e2e/lib/worker-counter.js
2017-05-28 19:35:06 +02:00
Tomas Bures
4f52b571c9 Some bits for ReactJS-based client. 2017-05-28 18:49:00 +02:00
vladimir
1e3fe96825 [bugfix] Blacklisted emails counter not set to 0 on campaign reset 2017-05-27 14:14:32 +02:00
vladimir
25bb4afa80 Merge with upstream 2017-05-27 14:07:56 +02:00
vladimir
59912e3c29 Separate disable opened/clicked tracker to 2 options 2017-05-27 14:04:49 +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
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
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
Tomas Bures
3072632d8d Fixed eslint errors 2017-04-23 15:24:31 -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
e5190c9b20 Code de-duplication of list and filter methods. The common functionality moved to table-helpers.js
This should make developing new table-based views easier.
2017-04-15 08:24:58 -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
9c2444488f Satisfy ESLint no-unused-vars 2017-04-02 14:00:42 +02:00