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