added last bulk actions messages

This commit is contained in:
Jonathan Labreuille
2015-10-22 15:26:31 +02:00
parent 50e888913c
commit 5e5008472c
7 changed files with 130 additions and 39 deletions

View File

@@ -308,7 +308,13 @@ define(
endpoint: this.props.endpoint,
action: 'restore',
data: id
}).done(function() {
}).done(function(response) {
if(
this.props.messages !== undefined
&& this.props.messages['onRestore'] !== undefined
) {
this.props.messages.onRestore(response);
}
this.getItems();
}.bind(this));
},
@@ -325,7 +331,23 @@ define(
id: id,
confirm: confirm
}
}).done(function() {
}).done(function(response) {
if(confirm === true) {
if(
this.props.messages !== undefined
&& this.props.messages['onConfirmDelete'] !== undefined
) {
this.props.messages.onConfirmDelete(response);
}
} else {
if(
this.props.messages !== undefined
&& this.props.messages['onDelete'] !== undefined
) {
this.props.messages.onDelete(response);
}
}
this.getItems();
}.bind(this));
},
@@ -485,11 +507,13 @@ define(
bulk_actions = [
{
name: 'restore',
label: 'Restore'
label: 'Restore',
onSuccess: this.props.messages.onRestore
},
{
name: 'trash',
label: 'Delete permanently',
onSuccess: this.props.messages.onConfirmDelete,
getData: function() {
return { confirm: true };
}

View File

@@ -59,6 +59,63 @@ define(
},
];
var messages = {
onDelete: function(response) {
var count = ~~response.subscribers;
var message = null;
if(count === 1) {
message = (
'1 subscriber was moved to the trash.'
).replace('%$1d', count);
} else if(count > 1) {
message = (
'%$1d subscribers were moved to the trash.'
).replace('%$1d', count);
}
if(message !== null) {
MailPoet.Notice.success(message);
}
},
onConfirmDelete: function(response) {
var count = ~~response.subscribers;
var message = null;
if(count === 1) {
message = (
'1 subscriber was permanently deleted.'
).replace('%$1d', count);
} else if(count > 1) {
message = (
'%$1d subscribers were permanently deleted.'
).replace('%$1d', count);
}
if(message !== null) {
MailPoet.Notice.success(message);
}
},
onRestore: function(response) {
var count = ~~response.subscribers;
var message = null;
if(count === 1) {
message = (
'1 subscriber has been restored from the trash.'
).replace('%$1d', count);
} else if(count > 1) {
message = (
'%$1d subscribers have been restored from the trash.'
).replace('%$1d', count);
}
if(message !== null) {
MailPoet.Notice.success(message);
}
}
};
var bulk_actions = [
{
name: 'moveToList',
@@ -162,12 +219,12 @@ define(
{
name: 'trash',
label: 'Trash',
onSuccess: function(response) {
MailPoet.Notice.success(
'%$1d subscribers were moved to the trash.'
.replace('%$1d', ~~response.subscribers)
);
}
getData: function() {
return {
confirm: false
}
},
onSuccess: messages.onDelete
}
];
@@ -201,8 +258,6 @@ define(
return segment.name;
}).join(', ');
var row_actions = false;
return (
@@ -245,7 +300,9 @@ define(
endpoint="subscribers"
onRenderItem={ this.renderItem }
columns={ columns }
bulk_actions={ bulk_actions } />
bulk_actions={ bulk_actions }
messages={ messages }
/>
</div>
);
}

View File

@@ -16,7 +16,7 @@
"vlucas/phpdotenv": "*",
"umpirsky/twig-gettext-extractor": "1.1.*",
"raveren/kint": "^1.0"
},
},
"autoload": {
"psr-4": {
"MailPoet\\": "lib/",

View File

@@ -71,10 +71,17 @@ class Handler {
return $this->model;
}
function count() {
return (int)$this->model->count();
}
function getSelectionIds() {
$models = $this->getSelection()->select('id')->findMany();
$models = $this->getSelection()
->select('id')
->findArray();
return array_map(function($model) {
return (int)$model->id;
return (int)$model['id'];
}, $models);
}

View File

@@ -322,9 +322,10 @@ class Subscriber extends Model {
}
static function trash($listing, $data = array()) {
if(isset($data['confirm']) && (bool)$data['confirm'] === true) {
$confirm_delete = filter_var($data['confirm'], FILTER_VALIDATE_BOOLEAN);
if($confirm_delete) {
// delete relations with all segments
$subscribers = $listing->getSelection()->findMany();
$subscribers = $listing->getSelection()->findResultSet();
if(!empty($subscribers)) {
$subscribers_count = 0;
@@ -340,25 +341,25 @@ class Subscriber extends Model {
return false;
} else {
// soft delete
$subscribers = $listing->getSelection()->findResultSet();
if(!empty($subscribers)) {
$subscribers->set_expr('deleted_at', 'NOW()');
$subscribers->save();
$subscribers = $listing->getSelection()
->findResultSet()
->set_expr('deleted_at', 'NOW()')
->save();
return array(
'subscribers' => $subscribers->count()
);
}
return false;
return array(
'subscribers' => $subscribers->count()
);
}
}
static function restore($listing, $data = array()) {
$subscribers = $listing->getSelection()->findResultSet();
if(!empty($subscribers)) {
$subscribers->set_expr('deleted_at', 'NULL');
return $subscribers->save();
}
return false;
$subscribers = $listing->getSelection()
->findResultSet()
->set_expr('deleted_at', 'NULL')
->save();
return array(
'subscribers' => $subscribers->count()
);
}
}

View File

@@ -57,7 +57,7 @@ class Subscribers {
$subscriber = Subscriber::findOne($id);
if($subscriber !== false) {
$subscriber->set_expr('deleted_at', 'NULL');
$result = $subscriber->save();
$result = array('subscribers' => (int)$subscriber->save());
} else {
$result = false;
}
@@ -66,12 +66,14 @@ class Subscribers {
function delete($data = array()) {
$subscriber = Subscriber::findOne($data['id']);
$confirm_delete = filter_var($data['confirm'], FILTER_VALIDATE_BOOLEAN);
if($subscriber !== false) {
if(isset($data['confirm']) && (bool)$data['confirm'] === true) {
$result = $subscriber->delete();
if($confirm_delete) {
$subscriber->delete();
$result = array('subscribers' => 1);
} else {
$subscriber->set_expr('deleted_at', 'NOW()');
$result = $subscriber->save();
$result = array('subscribers' => (int)$subscriber->save());
}
} else {
$result = false;

View File

@@ -9,7 +9,7 @@ class ListingCest {
function itShouldReturnListingData() {
$listing = new Listing\Handler(
\Model::factory('\MailPoet\Models\Subscriber'),
'\MailPoet\Models\Subscriber',
array()
);
@@ -27,7 +27,7 @@ class ListingCest {
$I->generateSubscribers(30, array('status' => 'subscribed'));
$listing = new Listing\Handler(
\Model::factory('\MailPoet\Models\Subscriber'),
'\MailPoet\Models\Subscriber',
array('group' => 'subscribed')
);
$result = $listing->get();
@@ -42,7 +42,7 @@ class ListingCest {
));
$listing = new Listing\Handler(
\Model::factory('\MailPoet\Models\Subscriber'),
'\MailPoet\Models\Subscriber',
array(
'search' => 'j.d'
)