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\Http\RequestHandlers\AutoCompletePlace; 23c2ed51d1SGreg Roachuse Fisharebest\Webtrees\Tree; 24c2ed51d1SGreg Roach 25c2ed51d1SGreg Roachuse function e; 26c2ed51d1SGreg Roachuse function route; 27cb33ea03SGreg Roachuse function trim; 28c2ed51d1SGreg Roach 29c2ed51d1SGreg Roach/** 30c2ed51d1SGreg Roach * PLACE_NAME := {1,120} 31c2ed51d1SGreg Roach * [ <PLACE_TEXT> | <PLACE_TEXT>, <PLACE_NAME> ] 32c2ed51d1SGreg Roach * The jurisdictional name of the place where the event took place. Jurisdictions are separated by 33c2ed51d1SGreg Roach * commas, for example, "Cove, Cache, Utah, USA." If the actual jurisdictional names of these 34c2ed51d1SGreg Roach * places have been identified, they can be shown using a PLAC.FORM structure either in the HEADER 35c2ed51d1SGreg Roach * or in the event structure. (See <PLACE_HIERARCHY>, page 58.) 36c2ed51d1SGreg Roach */ 37c2ed51d1SGreg Roachclass PlaceName extends AbstractElement 38c2ed51d1SGreg Roach{ 3977b47e31SGreg Roach protected const SUBTAGS = [ 4077b47e31SGreg Roach 'FORM' => '0:1', 4177b47e31SGreg Roach 'MAP' => '0:1', 4277b47e31SGreg Roach 'FONE' => '0:1', 4377b47e31SGreg Roach 'ROMN' => '0:1', 4477b47e31SGreg Roach 'NOTE' => '0:M', 4577b47e31SGreg Roach ]; 4677b47e31SGreg Roach 47c2ed51d1SGreg Roach /** 48c2ed51d1SGreg Roach * Convert a value to a canonical form. 49c2ed51d1SGreg Roach * 50c2ed51d1SGreg Roach * @param string $value 51c2ed51d1SGreg Roach * 52c2ed51d1SGreg Roach * @return string 53c2ed51d1SGreg Roach */ 54c2ed51d1SGreg Roach public function canonical(string $value): string 55c2ed51d1SGreg Roach { 56c2ed51d1SGreg Roach $value = parent::canonical($value); 57c2ed51d1SGreg Roach 58c2ed51d1SGreg Roach // Arabic, Chinese and Japanese commas. 59c2ed51d1SGreg Roach $value = strtr($value, ['،' => ',', ',' => ',', '、' => ',']); 60c2ed51d1SGreg Roach 61c2ed51d1SGreg Roach // Spaces before commas. 62c2ed51d1SGreg Roach $value = strtr($value, [' ,' => ',']); 63c2ed51d1SGreg Roach 64c2ed51d1SGreg Roach // Spaces after commas. 65c2ed51d1SGreg Roach $value = strtr($value, [',' => ', ']); 66c2ed51d1SGreg Roach $value = strtr($value, [', ' => ', ']); 67c2ed51d1SGreg Roach 68cb33ea03SGreg Roach return trim($value); 69c2ed51d1SGreg Roach } 70c2ed51d1SGreg Roach 71c2ed51d1SGreg Roach /** 724e09581bSGreg Roach * Should we collapse the children of this element when editing? 734e09581bSGreg Roach * 744e09581bSGreg Roach * @return bool 754e09581bSGreg Roach */ 764e09581bSGreg Roach public function collapseChildren(): bool 774e09581bSGreg Roach { 784e09581bSGreg Roach return true; 794e09581bSGreg Roach } 804e09581bSGreg Roach 814e09581bSGreg Roach /** 82c2ed51d1SGreg Roach * An edit control for this data. 83c2ed51d1SGreg Roach * 84c2ed51d1SGreg Roach * @param string $id 85c2ed51d1SGreg Roach * @param string $name 86c2ed51d1SGreg Roach * @param string $value 87c2ed51d1SGreg Roach * @param Tree $tree 88c2ed51d1SGreg Roach * 89c2ed51d1SGreg Roach * @return string 90c2ed51d1SGreg Roach */ 91c2ed51d1SGreg Roach public function edit(string $id, string $name, string $value, Tree $tree): string 92c2ed51d1SGreg Roach { 93d4786c66SGreg Roach return '<input data-wt-autocomplete-url="' . e(route(AutoCompletePlace::class, ['tree' => $tree->name()])) . '" autocomplete="off" class="form-control" type="text" id="' . e($id) . '" name="' . e($name) . '" value="' . e($value) . '" />'; 94c2ed51d1SGreg Roach } 95c2ed51d1SGreg Roach} 96