This commit is contained in:
Andris Reinman 2016-05-05 17:02:22 +03:00
parent 80316b0ead
commit 3b9f3559a4
19 changed files with 40 additions and 9 deletions

View file

@ -1,5 +1,10 @@
# Changelog # Changelog
## 1.5.0 2016-05-05
* Fixed a bug in unsubscribing through the admin interface
* Added individual link click stats
## 1.4.1 2016-05-04 ## 1.4.1 2016-05-04
* Added support for RSS templates * Added support for RSS templates

View file

@ -1,7 +1,7 @@
{ {
"name": "mailtrain", "name": "mailtrain",
"private": true, "private": true,
"version": "1.4.1", "version": "1.5.0",
"description": "Self hosted email newsletter app", "description": "Self hosted email newsletter app",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {

BIN
public/images/img01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

BIN
public/images/img02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

BIN
public/images/img03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

BIN
public/images/img04.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

BIN
public/images/img05.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

BIN
public/images/img06.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
public/images/img07.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

BIN
public/images/img08.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

BIN
public/images/img09.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

View file

@ -378,7 +378,7 @@ router.post('/subscription/unsubscribe', passport.parseForm, passport.csrfProtec
return res.redirect('/lists/view/' + list.id); return res.redirect('/lists/view/' + list.id);
} }
subscriptions.unsubscribe(list.id, subscription.email, err => { subscriptions.unsubscribe(list.id, subscription.email, false, err => {
if (err) { if (err) {
req.flash('danger', err && err.message || err || 'Could not unsubscribe user'); req.flash('danger', err && err.message || err || 'Could not unsubscribe user');
return res.redirect('/lists/subscription/' + list.id + '/edit/' + subscription.cid); return res.redirect('/lists/subscription/' + list.id + '/edit/' + subscription.cid);

View file

@ -139,8 +139,7 @@ function checkEntries(parent, entries, callback) {
from: parent.from, from: parent.from,
address: parent.address, address: parent.address,
subject: entry.title || parent.subject, subject: entry.title || parent.subject,
list: parent.list, list: parent.segment ? parent.list + ':' + parent.segment : parent.list,
segment: parent.segment,
html html
}; };

View file

@ -33,6 +33,21 @@
</div> </div>
</div> </div>
<div class="row">
<div class="col-md-4">
<h2>RSS Campaigns</h2>
<p>Setup Mailtrain to track RSS feeds and if a new entry is detected in a feed then Mailtrain auto-generates a new campaign using entry data as message contents and sends it to selected subscribers.</p>
</div>
<div class="col-md-4">
<h2>GPG Encryption</h2>
<p>If a list includes a custom field for a GPG Public Key then subscribers can upload their GPG public keys when signing up or managing preferences. Subscriber that have a key set get all messages from the list in an encrypted form.</p>
</div>
<div class="col-md-4">
<h2>Click stats</h2>
<p>After a campaign is sent, check individual click statistics for every link included in the message.</p>
</div>
</div>
<div class="row"> <div class="row">
<div class="col-md-4"> <div class="col-md-4">
<h2>Open source</h2> <h2>Open source</h2>
@ -66,19 +81,31 @@
<!-- Wrapper for slides --> <!-- Wrapper for slides -->
<div class="carousel-inner" role="listbox"> <div class="carousel-inner" role="listbox">
<div class="item active"> <div class="item active">
<img src="/images/img01_lists.png" alt="Lists"> <img src="/images/img01.png">
</div> </div>
<div class="item"> <div class="item">
<img src="/images/img02_list.png" alt="List"> <img src="/images/img02.png">
</div> </div>
<div class="item"> <div class="item">
<img src="/images/img03_fields.png" alt="Custom fields"> <img src="/images/img03.png">
</div> </div>
<div class="item"> <div class="item">
<img src="/images/img04_segment.png" alt="List segments"> <img src="/images/img04.png">
</div> </div>
<div class="item"> <div class="item">
<img src="/images/img05_subscribe.png" alt="List segments"> <img src="/images/img05.png">
</div>
<div class="item">
<img src="/images/img06.png">
</div>
<div class="item">
<img src="/images/img07.png">
</div>
<div class="item">
<img src="/images/img08.png">
</div>
<div class="item">
<img src="/images/img09.png">
</div> </div>
</div> </div>