Skip to content

Commit 6d0e6f8

Browse files
authored
Merge pull request #2477 from Laravel-Backpack/delete-operation-can-respond-with-notifications
[4.0][Feature][Ready] Delete operation can respond with Notification Bubbles
2 parents 1afa723 + 2b09b48 commit 6d0e6f8

File tree

2 files changed

+59
-25
lines changed

2 files changed

+59
-25
lines changed

src/resources/views/crud/buttons/bulk_delete.blade.php

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,34 @@ className: "bg-danger",
5151
type: 'POST',
5252
data: { entries: crud.checkedItems },
5353
success: function(result) {
54-
// Show an alert with the result
55-
new Noty({
56-
type: "success",
57-
text: "<strong>{!! trans('backpack::crud.bulk_delete_sucess_title') !!}</strong><br>"+crud.checkedItems.length+"{!! trans('backpack::crud.bulk_delete_sucess_message') !!}"
58-
}).show();
54+
if (Array.isArray(result)) {
55+
// Show a success notification bubble
56+
new Noty({
57+
type: "success",
58+
text: "<strong>{!! trans('backpack::crud.bulk_delete_sucess_title') !!}</strong><br>"+crud.checkedItems.length+"{!! trans('backpack::crud.bulk_delete_sucess_message') !!}"
59+
}).show();
60+
} else {
61+
// if the result is an array, it means
62+
// we have notification bubbles to show
63+
if (result instanceof Object) {
64+
// trigger one or more bubble notifications
65+
Object.entries(result).forEach(function(entry, index) {
66+
var type = entry[0];
67+
entry[1].forEach(function(message, i) {
68+
new Noty({
69+
type: type,
70+
text: message
71+
}).show();
72+
});
73+
});
74+
} else {
75+
// Show a warning notification bubble
76+
new Noty({
77+
type: "warning",
78+
text: "<strong>{!! trans('backpack::crud.bulk_delete_error_title') !!}</strong><br>{!! trans('backpack::crud.bulk_delete_error_message') !!}"
79+
}).show();
80+
}
81+
}
5982
6083
crud.checkedItems = [];
6184
crud.table.ajax.reload();

src/resources/views/crud/buttons/delete.blade.php

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -43,24 +43,12 @@ className: "bg-danger",
4343
url: route,
4444
type: 'DELETE',
4545
success: function(result) {
46-
if (result != 1) {
47-
// Show an error alert
48-
swal({
49-
title: "{!! trans('backpack::crud.delete_confirmation_not_title') !!}",
50-
text: "{!! trans('backpack::crud.delete_confirmation_not_message') !!}",
51-
icon: "error",
52-
timer: 2000,
53-
buttons: false,
54-
});
55-
} else {
56-
// Show a success message
57-
swal({
58-
title: "{!! trans('backpack::crud.delete_confirmation_title') !!}",
59-
text: "{!! trans('backpack::crud.delete_confirmation_message') !!}",
60-
icon: "success",
61-
timer: 4000,
62-
buttons: false,
63-
});
46+
if (result == 1) {
47+
// Show a success notification bubble
48+
new Noty({
49+
type: "success",
50+
text: "{!! '<strong>'.trans('backpack::crud.delete_confirmation_title').'</strong><br>'.trans('backpack::crud.delete_confirmation_message') !!}"
51+
}).show();
6452
6553
// Hide the modal, if any
6654
$('.modal').modal('hide');
@@ -72,13 +60,36 @@ className: "bg-danger",
7260
7361
// Remove the row from the datatable
7462
row.remove();
63+
} else {
64+
// if the result is an array, it means
65+
// we have notification bubbles to show
66+
if (result instanceof Object) {
67+
// trigger one or more bubble notifications
68+
Object.entries(result).forEach(function(entry, index) {
69+
var type = entry[0];
70+
entry[1].forEach(function(message, i) {
71+
new Noty({
72+
type: type,
73+
text: message
74+
}).show();
75+
});
76+
});
77+
} else {// Show an error alert
78+
swal({
79+
title: "{!! trans('backpack::crud.delete_confirmation_not_title') !!}",
80+
text: "{!! trans('backpack::crud.delete_confirmation_not_message') !!}",
81+
icon: "error",
82+
timer: 4000,
83+
buttons: false,
84+
});
85+
}
7586
}
7687
},
7788
error: function(result) {
7889
// Show an alert with the result
7990
swal({
8091
title: "{!! trans('backpack::crud.delete_confirmation_not_title') !!}",
81-
text: "{!! trans('backpack::crud.delete_confirmation_not_message') !!}",
92+
text: "{!! trans('backpack::crud.delete_confirmation_not_message') !!}",
8293
icon: "error",
8394
timer: 4000,
8495
buttons: false,
@@ -94,4 +105,4 @@ className: "bg-danger",
94105
// make it so that the function above is run after each DataTable draw event
95106
// crud.addFunctionToDataTablesDrawEventQueue('deleteEntry');
96107
</script>
97-
@if (!$crud->request->ajax()) @endpush @endif
108+
@if (!$crud->request->ajax()) @endpush @endif

0 commit comments

Comments
 (0)