1c2ed51d1SGreg Roach<?php 2c2ed51d1SGreg Roach 3c2ed51d1SGreg Roach/** 4c2ed51d1SGreg Roach * webtrees: online genealogy 5*d11be702SGreg Roach * Copyright (C) 2023 webtrees development team 6c2ed51d1SGreg Roach * This program is free software: you can redistribute it and/or modify 7c2ed51d1SGreg Roach * it under the terms of the GNU General Public License as published by 8c2ed51d1SGreg Roach * the Free Software Foundation, either version 3 of the License, or 9c2ed51d1SGreg Roach * (at your option) any later version. 10c2ed51d1SGreg Roach * This program is distributed in the hope that it will be useful, 11c2ed51d1SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of 12c2ed51d1SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13c2ed51d1SGreg Roach * GNU General Public License for more details. 14c2ed51d1SGreg Roach * You should have received a copy of the GNU General Public License 15c2ed51d1SGreg Roach * along with this program. If not, see <https://www.gnu.org/licenses/>. 16c2ed51d1SGreg Roach */ 17c2ed51d1SGreg Roach 18c2ed51d1SGreg Roachdeclare(strict_types=1); 19c2ed51d1SGreg Roach 20c2ed51d1SGreg Roachnamespace Fisharebest\Webtrees\Elements; 21c2ed51d1SGreg Roach 22c2ed51d1SGreg Roachuse Fisharebest\Webtrees\I18N; 23c2ed51d1SGreg Roachuse Fisharebest\Webtrees\Tree; 24c2ed51d1SGreg Roach 25c2ed51d1SGreg Roachuse function e; 26c2ed51d1SGreg Roach 27c2ed51d1SGreg Roach/** 28c2ed51d1SGreg Roach * Events which can take "Y" to indicate that they occurred, but date/place are unknown. 29c2ed51d1SGreg Roach */ 30c2ed51d1SGreg Roachclass AbstractEventElement extends AbstractElement 31c2ed51d1SGreg Roach{ 32c2ed51d1SGreg Roach /** 33e3b1d371SGreg Roach * Convert a value to a canonical form. 34c2ed51d1SGreg Roach * 35e3b1d371SGreg Roach * @param string $value 36c2ed51d1SGreg Roach * 37c2ed51d1SGreg Roach * @return string 38c2ed51d1SGreg Roach */ 39e3b1d371SGreg Roach public function canonical(string $value): string 40c2ed51d1SGreg Roach { 41e3b1d371SGreg Roach $value = parent::canonical($value); 42e3b1d371SGreg Roach 43e3b1d371SGreg Roach if ($value === 'y') { 44c2ed51d1SGreg Roach return 'Y'; 45c2ed51d1SGreg Roach } 46c2ed51d1SGreg Roach 47e3b1d371SGreg Roach return $value; 48e3b1d371SGreg Roach } 49e3b1d371SGreg Roach 50c2ed51d1SGreg Roach /** 51c2ed51d1SGreg Roach * An edit control for this data. 52c2ed51d1SGreg Roach * 53c2ed51d1SGreg Roach * @param string $id 54c2ed51d1SGreg Roach * @param string $name 55c2ed51d1SGreg Roach * @param string $value 56c2ed51d1SGreg Roach * @param Tree $tree 57c2ed51d1SGreg Roach * 58c2ed51d1SGreg Roach * @return string 59c2ed51d1SGreg Roach */ 60c2ed51d1SGreg Roach public function edit(string $id, string $name, string $value, Tree $tree): string 61c2ed51d1SGreg Roach { 62c2ed51d1SGreg Roach return 63c2ed51d1SGreg Roach '<div class="form-check">' . 64c2ed51d1SGreg Roach $this->editHidden($id, $name, $value ? 'Y' : '') . 654a213054SGreg Roach '<input class="form-check-input" type="checkbox" value="Y" id="' . e($id) . '-check" ' . ($value ? 'checked="checked"' : '') . ' />' . 66c2ed51d1SGreg Roach '<label class="form-check-label" for="' . e($id) . '-check">' . 67c2ed51d1SGreg Roach I18N::translate('This event occurred, but the details are unknown.') . 68c2ed51d1SGreg Roach '</label>' . 69c2ed51d1SGreg Roach '</div>' . 70c2ed51d1SGreg Roach '<script>' . 71c2ed51d1SGreg Roach 'document.getElementById("' . e($id) . '-check").addEventListener("change", function () {' . 72c2ed51d1SGreg Roach 'document.getElementById("' . e($id) . '").value = this.checked ? "Y" : "";' . 73c2ed51d1SGreg Roach '})' . 74c2ed51d1SGreg Roach '</script>'; 75c2ed51d1SGreg Roach } 76b315f3e1SGreg Roach 77b315f3e1SGreg Roach /** 78b315f3e1SGreg Roach * Display the value of this type of element. 79b315f3e1SGreg Roach * 80b315f3e1SGreg Roach * @param string $value 81b315f3e1SGreg Roach * @param Tree $tree 82b315f3e1SGreg Roach * 83b315f3e1SGreg Roach * @return string 84b315f3e1SGreg Roach */ 85b315f3e1SGreg Roach public function value(string $value, Tree $tree): string 86b315f3e1SGreg Roach { 87b315f3e1SGreg Roach if ($value === 'Y') { 88b315f3e1SGreg Roach return I18N::translate('yes'); 89b315f3e1SGreg Roach } 90b315f3e1SGreg Roach 91b315f3e1SGreg Roach return parent::value($value, $tree); 92b315f3e1SGreg Roach } 93c2ed51d1SGreg Roach} 94