xref: /webtrees/resources/views/modals/create-note-object.phtml (revision d70512ab02636ee884ef6d7907223ed02c754ff5)
1<?php
2
3use Fisharebest\Webtrees\Http\RequestHandlers\CreateNoteAction;
4use Fisharebest\Webtrees\I18N;
5
6?>
7
8<form method="post" action="<?= e(route(CreateNoteAction::class, ['tree' => $tree->name()])) ?>" id="wt-modal-form">
9    <?= csrf_field() ?>
10
11    <?= view('modals/header', ['title' => I18N::translate('Create a shared note')]) ?>
12
13    <div class="modal-body">
14        <?= view('modals/note-object-fields') ?>
15    </div>
16
17    <?= view('modals/footer-save-cancel') ?>
18</form>
19
20<script>
21    // Submit the modal form using AJAX
22    document.getElementById("wt-modal-form").addEventListener("submit", function (event) {
23        event.preventDefault();
24        let form          = event.target;
25        let modal_content = document.querySelector("#wt-ajax-modal .modal-content");
26        let select        = document.getElementById(modal_content.dataset.selectId);
27
28        $.ajax({
29            url:         form.action,
30            type:        form.method,
31            data:        new FormData(form),
32            async:       false,
33            cache:       false,
34            contentType: false,
35            processData: false,
36            success:     function (data) {
37                if (select) {
38                    // If this modal was activated by the "new" button in a select2
39                    // edit control, then insert the result and select it.
40                    let option       = new Option(data.text, data.id, true, true);
41                    option.innerHTML = option.innerText;
42                    option.innerHTML = data.text;
43
44                    $(select)
45                        .select2()
46                        .empty()
47                        .append(option)
48                        .trigger("change");
49
50                    $("#wt-ajax-modal").modal("hide");
51                } else {
52                    modal_content.innerHTML = data.html;
53                }
54            },
55            failure:     function (data) {
56                modal_content.innerHTML = data.html;
57            },
58        });
59    });
60</script>
61