Skip to content

Commit 103e803

Browse files
author
Carlos Garcia
committed
feat: add delete confirmation modals and associated JavaScript functionality
1 parent 32f7bb8 commit 103e803

File tree

4 files changed

+96
-19
lines changed

4 files changed

+96
-19
lines changed

Core/View/AdminPlugins.html.twig

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -166,26 +166,26 @@
166166
existingModal.remove();
167167
}
168168
169-
const editListViewDeleteCancel = "{{ trans('cancel') }}";
170-
const editListViewDeleteConfirm = "{{ trans('delete') }}";
171-
const editListViewDeleteMessage = "{{ trans('are-you-sure') }}";
172-
const editListViewDeleteTitle = "{{ trans('confirm-delete')|raw }}";
169+
const adminPluginsDeleteCancel = "{{ trans('cancel') }}";
170+
const adminPluginsDeleteConfirm = "{{ trans('delete') }}";
171+
const adminPluginsDeleteMessage = "{{ trans('are-you-sure') }}";
172+
const adminPluginsDeleteTitle = "{{ trans('confirm-delete')|raw }}";
173173
174174
// Crear el HTML del modal como string usando los parámetros
175175
const modalHTML = `
176176
<div class="modal fade" id="dynamicAdminPluginsDeleteModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="dynamicAdminPluginsDeleteModalLabel" aria-hidden="true">
177177
<div class="modal-dialog">
178178
<div class="modal-content">
179179
<div class="modal-header">
180-
<h5 class="modal-title" id="dynamicAdminPluginsDeleteModal">${editListViewDeleteTitle}</h5>
180+
<h5 class="modal-title" id="dynamicAdminPluginsDeleteModalLabel">${adminPluginsDeleteTitle}</h5>
181181
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
182182
</div>
183183
<div class="modal-body">
184-
${editListViewDeleteMessage}
184+
${adminPluginsDeleteMessage}
185185
</div>
186186
<div class="modal-footer">
187-
<button type="button" class="btn btn-secondary btn-spin-action" data-bs-dismiss="modal">${editListViewDeleteCancel}</button>
188-
<button type="button" id="saveDynamicAdminPluginsDeleteModalBtn" class="btn btn-danger btn-spin-action">${editListViewDeleteConfirm}</button>
187+
<button type="button" class="btn btn-secondary btn-spin-action" data-bs-dismiss="modal">${adminPluginsDeleteCancel}</button>
188+
<button type="button" id="saveDynamicAdminPluginsDeleteModalBtn" class="btn btn-danger btn-spin-action">${adminPluginsDeleteConfirm}</button>
189189
</div>
190190
</div>
191191
</div>

Core/View/EditPageOption.html.twig

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,29 @@
132132
</div>
133133
</div>
134134
</div>
135+
136+
{# -- Delete Options Confirmation Modal -- #}
137+
<div class="modal fade" id="deleteOptionsModal" tabindex="-1" aria-labelledby="deleteOptionsModalLabel" aria-hidden="true">
138+
<div class="modal-dialog">
139+
<div class="modal-content">
140+
<div class="modal-header">
141+
<h5 class="modal-title" id="deleteOptionsModalLabel">{{ trans('confirm-delete') }}</h5>
142+
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
143+
</div>
144+
<div class="modal-body">
145+
{{ trans('are-you-sure') }}
146+
</div>
147+
<div class="modal-footer">
148+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
149+
<i class="fa-solid fa-times"></i> {{ trans('cancel') }}
150+
</button>
151+
<button type="button" class="btn btn-danger" id="confirmDeleteOptionsBtn">
152+
<i class="fa-solid fa-check"></i> {{ trans('delete') }}
153+
</button>
154+
</div>
155+
</div>
156+
</div>
157+
</div>
135158
{% endblock %}
136159

137160
{% block css %}
@@ -143,6 +166,23 @@
143166
</style>
144167
{% endblock %}
145168

169+
{% block javascripts %}
170+
{{ parent() }}
171+
<script>
172+
function deleteOptions() {
173+
const deleteModal = new bootstrap.Modal(document.getElementById('deleteOptionsModal'));
174+
175+
document.getElementById('confirmDeleteOptionsBtn').onclick = function() {
176+
animateSpinner('add');
177+
document.main_form.action.value = 'delete';
178+
document.main_form.submit();
179+
};
180+
181+
deleteModal.show();
182+
}
183+
</script>
184+
{% endblock %}
185+
146186
{% macro editGroupColumn(col) %}
147187
<tr>
148188
<td title="{{ trans('title') }}">

Core/View/Master/EditView.html.twig

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,20 @@
2424
{% set fieldCount = fieldCount + group.columns | length %}
2525
{% endfor %}
2626

27+
<script>
28+
function editViewDelete(viewName) {
29+
const deleteModal = new bootstrap.Modal(document.getElementById('deleteConfirmModal' + viewName));
30+
31+
document.getElementById('confirmDeleteBtn' + viewName).onclick = function() {
32+
document.querySelector("#form" + viewName + " input[name='action']").value = "delete";
33+
document.getElementById("form" + viewName).submit();
34+
};
35+
36+
deleteModal.show();
37+
return false;
38+
}
39+
</script>
40+
2741
{# -- Row header -- #}
2842
<div class="row">
2943
{% set row = currentView.getRow('header') %}
@@ -104,3 +118,26 @@
104118
{% for group in currentView.getModals() %}
105119
{{ group.modal(currentView.model, currentView.getViewName()) | raw }}
106120
{% endfor %}
121+
122+
{# -- Delete Confirmation Modal -- #}
123+
<div class="modal fade" id="deleteConfirmModal{{ currentView.getViewName() }}" tabindex="-1" aria-labelledby="deleteConfirmModalLabel{{ currentView.getViewName() }}" aria-hidden="true">
124+
<div class="modal-dialog">
125+
<div class="modal-content">
126+
<div class="modal-header">
127+
<h5 class="modal-title" id="deleteConfirmModalLabel{{ currentView.getViewName() }}">{{ trans('confirm-delete') }}</h5>
128+
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
129+
</div>
130+
<div class="modal-body">
131+
{{ trans('are-you-sure') }}
132+
</div>
133+
<div class="modal-footer">
134+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
135+
<i class="fa-solid fa-times"></i> {{ trans('cancel') }}
136+
</button>
137+
<button type="button" class="btn btn-danger" id="confirmDeleteBtn{{ currentView.getViewName() }}">
138+
<i class="fa-solid fa-check"></i> {{ trans('confirm') }}
139+
</button>
140+
</div>
141+
</div>
142+
</div>
143+
</div>

Test/Core/Lib/CodePatternsTest.php

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
final class CodePatternsTest extends TestCase
2828
{
29-
public function testDefault()
29+
public function testDefault(): void
3030
{
3131
$order = new PedidoCliente();
3232
$order->codejercicio = '2021';
@@ -37,7 +37,7 @@ public function testDefault()
3737
$this->assertEquals('PED2021A1', $code, 'different-code');
3838
}
3939

40-
public function testZeroNum()
40+
public function testZeroNum(): void
4141
{
4242
$order = new PedidoCliente();
4343
$order->codejercicio = '2021';
@@ -48,7 +48,7 @@ public function testZeroNum()
4848
$this->assertEquals('PED2021A000022', $code, 'different-code');
4949
}
5050

51-
public function testEje2()
51+
public function testEje2(): void
5252
{
5353
$order = new PedidoCliente();
5454
$order->codejercicio = '2022';
@@ -59,7 +59,7 @@ public function testEje2()
5959
$this->assertEquals('PED22A000555', $code, 'different-code');
6060
}
6161

62-
public function testZeroSerie()
62+
public function testZeroSerie(): void
6363
{
6464
$order = new PedidoCliente();
6565
$order->codejercicio = '2022';
@@ -70,7 +70,7 @@ public function testZeroSerie()
7070
$this->assertEquals('220C009999', $code, 'different-code');
7171
}
7272

73-
public function testAnyoMesDiaNum()
73+
public function testAnyoMesDiaNum(): void
7474
{
7575
$order = new PedidoCliente();
7676
$order->codejercicio = '2022';
@@ -82,7 +82,7 @@ public function testAnyoMesDiaNum()
8282
$this->assertEquals('2021-11-23-777', $code, 'different-code');
8383
}
8484

85-
public function testNombreMesNum()
85+
public function testNombreMesNum(): void
8686
{
8787
$order = new PedidoCliente();
8888
$order->codejercicio = '2020';
@@ -94,7 +94,7 @@ public function testNombreMesNum()
9494
$this->assertEquals('A-Marzo-123', $code, 'different-code');
9595
}
9696

97-
public function testAnyo2MesDiaNum()
97+
public function testAnyo2MesDiaNum(): void
9898
{
9999
$order = new PedidoCliente();
100100
$order->codejercicio = '2022';
@@ -106,7 +106,7 @@ public function testAnyo2MesDiaNum()
106106
$this->assertEquals('21-11-23-777', $code, 'different-code');
107107
}
108108

109-
public function testDateNum()
109+
public function testDateNum(): void
110110
{
111111
$order = new PedidoCliente();
112112
$order->codejercicio = '2020';
@@ -119,7 +119,7 @@ public function testDateNum()
119119
$this->assertEquals('A87-02-03-2021-11:22:33', $code, 'different-code');
120120
}
121121

122-
public function testDateTimeNum()
122+
public function testDateTimeNum(): void
123123
{
124124
$order = new PedidoCliente();
125125
$order->codejercicio = '2020';
@@ -132,7 +132,7 @@ public function testDateTimeNum()
132132
$this->assertEquals('Z88-07-07-2020 15:16:17', $code, 'different-code');
133133
}
134134

135-
public function testFilters()
135+
public function testFilters(): void
136136
{
137137
$order = new PedidoCliente();
138138
$order->codejercicio = '2020';
@@ -149,7 +149,7 @@ public function testFilters()
149149
$this->assertEquals('PEd2020Z63ccc', $code3, 'uc-first-fail');
150150
}
151151

152-
public function testNoBusinessDoc()
152+
public function testNoBusinessDoc(): void
153153
{
154154
$product = new Producto();
155155
$product->actualizado = '03-04-2021 11:33:55';

0 commit comments

Comments
 (0)