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
## 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
* Added support for RSS templates

View file

@ -1,7 +1,7 @@
{
"name": "mailtrain",
"private": true,
"version": "1.4.1",
"version": "1.5.0",
"description": "Self hosted email newsletter app",
"main": "index.js",
"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);
}
subscriptions.unsubscribe(list.id, subscription.email, err => {
subscriptions.unsubscribe(list.id, subscription.email, false, err => {
if (err) {
req.flash('danger', err && err.message || err || 'Could not unsubscribe user');
return res.redirect('/lists/subscription/' + list.id + '/edit/' + subscription.cid);

View file

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

View file

@ -33,6 +33,21 @@
</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="col-md-4">
<h2>Open source</h2>
@ -66,19 +81,31 @@
<!-- Wrapper for slides -->
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="/images/img01_lists.png" alt="Lists">
<img src="/images/img01.png">
</div>
<div class="item">
<img src="/images/img02_list.png" alt="List">
<img src="/images/img02.png">
</div>
<div class="item">
<img src="/images/img03_fields.png" alt="Custom fields">
<img src="/images/img03.png">
</div>
<div class="item">
<img src="/images/img04_segment.png" alt="List segments">
<img src="/images/img04.png">
</div>
<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>