Newsletters listing

- added stylesheet for newsletters listing
- added "status" database column on Newsletters for grouping in listings
- added duplicate link to standard newsletters
This commit is contained in:
Jonathan Labreuille
2016-06-07 17:22:59 +02:00
parent a593347336
commit ecf15d53d9
8 changed files with 88 additions and 16 deletions

View File

@@ -10,6 +10,9 @@ class Newsletter extends Model {
const TYPE_WELCOME = 'welcome';
const TYPE_NOTIFICATION = 'notification';
const STATUS_DRAFT = 'draft';
const STATUS_SENT = 'sent';
function __construct() {
parent::__construct();
@@ -205,6 +208,16 @@ class Newsletter extends Model {
'label' => __('All'),
'count' => Newsletter::getPublished()->where('type', $data['tab'])->count()
),
array(
'name' => self::STATUS_DRAFT,
'label' => __('Draft'),
'count' => Newsletter::filter('filterDraft', $data)->count()
),
array(
'name' => self::STATUS_SENT,
'label' => __('Sent'),
'count' => Newsletter::filter('filterSent', $data)->count()
),
array(
'name' => 'trash',
'label' => __('Trash'),
@@ -213,22 +226,48 @@ class Newsletter extends Model {
);
}
static function groupBy($orm, $data = array()) {
$group = (!empty($data['group'])) ? $data['group'] : 'all';
switch($group) {
case self::STATUS_DRAFT:
$orm->filter('filterDraft', $data);
break;
case self::STATUS_SENT:
$orm->filter('filterSent', $data);
break;
case 'trash':
$orm->whereNotNull('deleted_at');
break;
default:
$orm->whereNull('deleted_at');
}
return $orm;
}
static function filterDraft($orm, $data = array()) {
$type = isset($data['tab']) ? $data['tab'] : self::TYPE_STANDARD;
return $orm
->where('type', $type)
->where('status', self::STATUS_DRAFT);
}
static function filterSent($orm, $data = array()) {
$type = isset($data['tab']) ? $data['tab'] : self::TYPE_STANDARD;
return $orm
->where('type', $type)
->where('status', self::STATUS_SENT);
}
static function listingQuery($data = array()) {
return self::where('type', $data['tab'])
->filter('filterBy', $data)
->filter('groupBy', $data['group'])
->filter('groupBy', $data)
->filter('search', $data['search']);
}
static function groupBy($orm, $group = null) {
if($group === 'trash') {
$orm->whereNotNull('deleted_at');
} else {
$orm->whereNull('deleted_at');
}
return $orm;
}
static function createOrUpdate($data = array()) {
$newsletter = false;