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:
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user