Sử dụng popup xác nhận

Cập nhật lúc 1694752410000

Tổng quan

EzyPlatform đã cung cấp sẵn mã nguồn cho popup dạng confirm (sử dụng bootstrap) cho cả admin và web. Bạn sẽ cần import mã nguồn của popup vào template của mình, đồng thời bổ sung các mã javascript để thực thi sau khi người dùng xác nhận.

Với admin

Ví dụ bạn có chức năng xoá lớp học với nút bấm thế này:

<button class="btn btn-danger mb-2"
        th:attr="onclick=|elearning.onDeleteClassClick(${eclass.id})|">
    [[#{delete}]] <i class="fas fa-trash"></i>
</button>

Bạn sẽ cần import một confirm popup như thế này:

<th:block layout:fragment="modals">
    <th:block th:replace="~{fragments/prompt :: content(id='delete-class-modal', title=#{confirm}, body=${'body'}, confirmButton=#{delete}, closeButton=#{close})}" />
</th:block>

Và mã javascript thế này:

<script layout:fragment="scripts" th:inline="javascript">
/*<![CDATA[*/
ezyadmin.messages.do_you_want_to_delete_class_pid = /*[[#{do_you_want_to_delete_class_pid}]]*/;
/*]]>*/

// ==================== delete a class ============
elearning.onDeleteClassClick = function(classId) {
    elearning.selectedClassId = classId;
    $('#delete-class-modal-body-content')
        .text(
            ezyadmin
                .messages
                .do_you_want_to_delete_class_pid
                .replace('{0}', elearning.selectedClassId)
        );
    $('#delete-class-modal').modal('show');
}

elearning.onPromptConfirmed = function(modalId) {
    if (modalId == 'delete-class-modal') {
        elearning.deleteEClass();
    }
}

ezyadmin.deleteEClass = function() {
    $.ajax({
        type: 'DELETE',
        url: '/elearning/api/v1/classes/' + elearning.selectedClassId,
        success: function (data) {
            window.location = '/elearning/classes'
                + (ezyadmin.lang ? '?lang=' + ezyadmin.lang : '');
        },
        error: function (e) {
            ezyadmin.processGetApiErrors(e);
        }
    });
}

Khi người dùng nhấn nút thì hàm onDeleteClassClick sẽ được gọi, nó sẽ set nột dung cho popup và hiển thị. Khi người dùng xác nhận thì hàm deleteEClass sẽ được gọi.

Với web

Ví dụ bạn có chức năng xóa dự án với nút bấm thế này:

<button class="btn btn-solid btn-danger d-md-inline-block d-none btn-project-action"
        data-bs-toggle="modal" data-bs-target="#delete-project-modal">
    [[#{delete}]]
</button>

Bạn sẽ cần import một confirm popup thế này:

<th:block layout:fragment="modals">
    <th:block th:replace="~{ezycommon/prompt :: content(id='delete-project-modal', title=#{confirm}, body=${#messages.msg('do_you_want_to_delete_project_pname', project.displayName)}, confirmButton=#{delete}, closeButton=#{close})}" />
</th:block>

Và mã nguồn javascript sẽ thế này:

var onPromptConfirmed = function(modalId) {
    if (modalId == 'delete-project-modal') {
        deleteProject();
    } else {
        actProjectVersion(modalId);
    }
}

var deleteProject = function() {
    $.ajax({
        type: 'DELETE',
        url: '/api/v1/projects/' + projectId,
        success: function (data) {
            window.location = '/account/projects';
        },
        error: function (data, e) {
            ezyweb.processUpdateApiErrors({}, data);
        }
    });
}

Khi người dùng nhấn nút thì popup sẽ được hiển thị. Khi người dùng xác nhận thì hàm deleteProject sẽ được gọi.

Mục lục