xref: /webtrees/resources/views/admin/map-import-form.phtml (revision afa67798854828b1edc33dd077960ec2b18e6140)
1<?php
2
3use Fisharebest\Webtrees\Http\RequestHandlers\ControlPanel;
4use Fisharebest\Webtrees\Http\RequestHandlers\MapDataImportAction;
5use Fisharebest\Webtrees\Http\RequestHandlers\MapDataList;
6use Fisharebest\Webtrees\I18N;
7use Fisharebest\Webtrees\View;
8
9/**
10 * @var array<string> $files
11 * @var string        $folder
12 * @var string        $title
13 */
14
15?>
16
17<?= view('components/breadcrumbs', ['links' => [route(ControlPanel::class) => I18N::translate('Control panel'), route(MapDataList::class)  => I18N::translate('Geographic data'), $title]]) ?>
18
19<h3><?= $title ?></h3>
20
21<form method="post" action="<?= e(route(MapDataImportAction::class)) ?>" id="upload_form" enctype="multipart/form-data">
22    <?= csrf_field() ?>
23
24    <!-- Server file -->
25    <div class="row form-group">
26        <label class="col-form-label col-sm-4" for="serverfile">
27            <?= I18N::translate('A file on the server') ?>
28        </label>
29        <div class="col-sm-8">
30            <div class="input-group" dir="ltr">
31                <div class="input-group-prepend">
32                            <span class="input-group-text">
33                                <?= e($folder) ?>
34                            </span>
35                </div>
36                <select id="serverfile" name="serverfile" class="form-control">
37                    <option selected value=""></option>
38                    <?php foreach ($files as $file) : ?>
39                        <option value="<?= e($file) ?>">
40                            <?= e($file) ?>
41                        </option>
42                    <?php endforeach ?>
43                </select>
44            </div>
45        </div>
46    </div>
47
48    <!-- local file -->
49    <div class="row form-group">
50        <label class="col-form-label col-sm-4" for="localfile">
51            <?= I18N::translate('A file on your computer') ?>
52        </label>
53        <div class="col-sm-8">
54            <input id="localfile" type="file" name="localfile" class="form-control-file">
55        </div>
56    </div>
57
58    <!-- CLEAR DATABASE -->
59    <fieldset class="form-group">
60        <div class="row">
61            <legend class="col-form-label col-sm-4">
62                <?= I18N::translate('Delete all existing geographic data before importing the file.') ?>
63            </legend>
64            <div class="col-sm-8">
65                <?= view('components/radios-inline', ['name' => 'cleardatabase', 'options' => [I18N::translate('no'), I18N::translate('yes')], 'selected' => 0]) ?>
66            </div>
67        </div>
68    </fieldset>
69
70    <!-- Import options -->
71    <fieldset class="form-group">
72        <div class="row">
73            <legend class="col-form-label col-sm-4" for="import-options">
74                <?= I18N::translate('Import') ?>
75            </legend>
76            <div class="col-sm-8">
77                <?= view('components/select', ['name' => 'import-options', 'selected' => '', 'options' => ['update' => I18N::translate('Only update existing records'), 'add' => I18N::translate('Only add new records'), 'addupdate' => I18N::translate('Add new, and update existing records')]]) ?>
78            </div>
79        </div>
80    </fieldset>
81
82    <!-- SAVE BUTTON -->
83    <div class="row form-group">
84        <div class="offset-sm-4 col-sm-8">
85            <button type="submit" class="btn btn-primary">
86                <?= view('icons/save') ?>
87                <?= I18N::translate('continue') ?>
88            </button>
89            <a href="<?= e(route(MapDataList::class)) ?>">
90                <?= view('icons/cancel') ?>
91                <?= /* I18N: A button label. */ I18N::translate('cancel') ?>
92            </a>
93        </div>
94    </div>
95</form>
96
97<?php View::push('javascript') ?>
98    <script>
99        $('#upload_form').on('submit', function(e) {
100            let self = this;
101            e.preventDefault();
102            if($('input[name="cleardatabase"]:checked').val() === '1') {
103                if (!confirm('<?= I18N::translate('Really delete all geographic data?') ?> ')) {
104                    return false;
105                }
106            }
107            self.submit();
108        });
109    </script>
110<?php View::endpush() ?>
111