chg: [outbox] Support of bulk deletion
parent
4899ede9cc
commit
e933d6ca3b
src/Controller
templates/Outbox
|
@ -57,11 +57,15 @@ class OutboxController extends AppController
|
|||
}
|
||||
}
|
||||
|
||||
public function delete($id)
|
||||
public function delete($id=false)
|
||||
{
|
||||
$this->set('deletionTitle', __('Discard request'));
|
||||
$this->set('deletionText', __('Are you sure you want to discard request #{0}?', $id));
|
||||
$this->set('deletionConfirm', __('Discard'));
|
||||
$this->set('deletionTitle', __('Confirm message deletion'));
|
||||
if (!empty($id)) {
|
||||
$this->set('deletionText', __('Are you sure you want to delete message #{0}?', $id));
|
||||
} else {
|
||||
$this->set('deletionText', __('Are you sure you want to delete the selected messages?'));
|
||||
}
|
||||
$this->set('deletionConfirm', __('Delete'));
|
||||
$this->CRUD->delete($id);
|
||||
$responsePayload = $this->CRUD->getResponsePayload();
|
||||
if (!empty($responsePayload)) {
|
||||
|
|
|
@ -8,6 +8,16 @@ echo $this->element('genericElements/IndexTable/index_table', [
|
|||
'data' => $data,
|
||||
'top_bar' => [
|
||||
'children' => [
|
||||
[
|
||||
'children' => [
|
||||
[
|
||||
'text' => __('Delete messages'),
|
||||
'variant' => 'danger',
|
||||
'onclick' => 'deleteMessages',
|
||||
]
|
||||
],
|
||||
'type' => 'multi_select_actions',
|
||||
],
|
||||
[
|
||||
'type' => 'context_filters',
|
||||
'context_filters' => !empty($filteringContexts) ? $filteringContexts : []
|
||||
|
@ -23,6 +33,15 @@ echo $this->element('genericElements/IndexTable/index_table', [
|
|||
]
|
||||
],
|
||||
'fields' => [
|
||||
[
|
||||
'element' => 'selector',
|
||||
'class' => 'short',
|
||||
'data' => [
|
||||
'id' => [
|
||||
'value_path' => 'id'
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
'name' => '#',
|
||||
'sort' => 'id',
|
||||
|
@ -90,5 +109,43 @@ echo $this->element('genericElements/IndexTable/index_table', [
|
|||
]
|
||||
]
|
||||
]);
|
||||
echo '</div>';
|
||||
?>
|
||||
|
||||
<script>
|
||||
function deleteMessages(idList, selectedData, $table) {
|
||||
UI.submissionModalForIndex('/outbox/delete', '/outbox/index', $table).then(([modalObject, ajaxApi]) => {
|
||||
const $idsInput = modalObject.$modal.find('form').find('input#ids-field')
|
||||
$idsInput.val(JSON.stringify(idList))
|
||||
const tableData = selectedData.map(row => {
|
||||
return [row.id, row.scope, row.action, row.title]
|
||||
});
|
||||
handleMessageTable(
|
||||
modalObject.$modal,
|
||||
['<?= __('ID') ?>', '<?= __('Scope') ?>', '<?= __('Action') ?>', '<?= __('Title') ?>'],
|
||||
tableData
|
||||
)
|
||||
})
|
||||
|
||||
function constructMessageTable(header, data) {
|
||||
return HtmlHelper.table(
|
||||
header,
|
||||
data,
|
||||
{
|
||||
small: true,
|
||||
borderless: true,
|
||||
tableClass: ['message-table', 'mt-4 mb-0'],
|
||||
}
|
||||
)
|
||||
}
|
||||
function handleMessageTable($modal, header, data) {
|
||||
const $modalBody = $modal.find('.modal-body')
|
||||
const $messageTable = $modalBody.find('table.message-table')
|
||||
const messageTableHTML = constructMessageTable(header, data)[0].outerHTML
|
||||
if ($messageTable.length) {
|
||||
$messageTable.html(messageTableHTML)
|
||||
} else {
|
||||
$modalBody.append(messageTableHTML)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
Loading…
Reference in New Issue