xref: /webtrees/resources/views/modals/create-repository.phtml (revision 2d111ef4d7fa5c4d9d27b419b54419f20e0c57e9)
1852ede8cSGreg Roach<?php
2dd6b2bfcSGreg Roach
3*2d111ef4SGreg Roachuse Fisharebest\Webtrees\Contracts\ElementInterface;
4852ede8cSGreg Roachuse Fisharebest\Webtrees\Http\RequestHandlers\CreateRepositoryAction;
5852ede8cSGreg Roachuse Fisharebest\Webtrees\I18N;
6edbd59d9SGreg Roachuse Fisharebest\Webtrees\Tree;
7edbd59d9SGreg Roach
8edbd59d9SGreg Roach/**
9*2d111ef4SGreg Roach * @var array<string,ElementInterface> $elements
10edbd59d9SGreg Roach * @var Tree                           $tree
11edbd59d9SGreg Roach */
12852ede8cSGreg Roach
13852ede8cSGreg Roach?>
14852ede8cSGreg Roach
15852ede8cSGreg Roach<form method="post" action="<?= e(route(CreateRepositoryAction::class, ['tree' => $tree->name()])) ?>" id="wt-modal-form">
16dd6b2bfcSGreg Roach    <?= csrf_field() ?>
17dd6b2bfcSGreg Roach
18dd6b2bfcSGreg Roach    <?= view('modals/header', ['title' => I18N::translate('Create a repository')]) ?>
19dd6b2bfcSGreg Roach
20dd6b2bfcSGreg Roach    <div class="modal-body">
21*2d111ef4SGreg Roach        <?= view('modals/repository-fields', ['elements' => $elements, 'tree' => $tree]) ?>
22dd6b2bfcSGreg Roach    </div>
23dd6b2bfcSGreg Roach
24dd6b2bfcSGreg Roach    <?= view('modals/footer-save-cancel') ?>
25dd6b2bfcSGreg Roach</form>
26dd6b2bfcSGreg Roach
27dd6b2bfcSGreg Roach<script>
28dd6b2bfcSGreg Roach    // Submit the modal form using AJAX
292a12145eSGreg Roach    document.getElementById("wt-modal-form").addEventListener("submit", function (event) {
30dd6b2bfcSGreg Roach        event.preventDefault();
31dd6b2bfcSGreg Roach        let form          = event.target;
322a12145eSGreg Roach        let modal_content = document.querySelector("#wt-ajax-modal .modal-content");
33dd6b2bfcSGreg Roach        let select        = document.getElementById(modal_content.dataset.selectId);
34dd6b2bfcSGreg Roach
35dd6b2bfcSGreg Roach        $.ajax({
36dd6b2bfcSGreg Roach            url:         form.action,
37dd6b2bfcSGreg Roach            type:        form.method,
38dd6b2bfcSGreg Roach            data:        new FormData(form),
39dd6b2bfcSGreg Roach            async:       false,
40dd6b2bfcSGreg Roach            cache:       false,
41dd6b2bfcSGreg Roach            contentType: false,
42dd6b2bfcSGreg Roach            processData: false,
43dd6b2bfcSGreg Roach            success:     function (data) {
44dd6b2bfcSGreg Roach                if (select) {
45dd6b2bfcSGreg Roach                    // If this modal was activated by the "new" button in a select2
46dd6b2bfcSGreg Roach                    // edit control, then insert the result and select it.
472a12145eSGreg Roach                    let option       = new Option(data.text, data.id, true, true);
482a12145eSGreg Roach                    option.innerHTML = option.innerText;
492a12145eSGreg Roach
50dd6b2bfcSGreg Roach                    $(select)
51edbd59d9SGreg Roach                        .select2({ escapeMarkup: (x) => x })
52dd6b2bfcSGreg Roach                        .empty()
532a12145eSGreg Roach                        .append(option)
542a12145eSGreg Roach                        .trigger("change");
55dd6b2bfcSGreg Roach
562a12145eSGreg Roach                    $("#wt-ajax-modal").modal("hide");
57dd6b2bfcSGreg Roach                } else {
58dd6b2bfcSGreg Roach                    modal_content.innerHTML = data.html;
59dd6b2bfcSGreg Roach                }
60dd6b2bfcSGreg Roach            },
61dd6b2bfcSGreg Roach            failure:     function (data) {
62dd6b2bfcSGreg Roach                modal_content.innerHTML = data.html;
632a12145eSGreg Roach            },
64dd6b2bfcSGreg Roach        });
65dd6b2bfcSGreg Roach    });
66dd6b2bfcSGreg Roach</script>
67