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