. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Elements; use Fisharebest\Webtrees\Http\RequestHandlers\CreateSourceModal; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Tree; use function e; use function route; use function trim; use function view; /** * XREF:SOUR := {Size=1:22} * A pointer to, or a cross-reference identifier of, a SOURce record. */ class XrefSource extends AbstractXrefElement { protected const SUBTAGS = [ 'PAGE' => '0:1', 'EVEN' => '0:1', 'DATA' => '0:1', 'OBJE' => '0:M', 'NOTE' => '0:M', 'QUAY' => '0:1', ]; protected const ABRIDGED_SUBTAGS = [ 'PAGE' => '0:1', 'DATA' => '0:1', 'OBJE' => '0:M', ]; /** * An edit control for this data. * * @param string $id * @param string $name * @param string $value * @param Tree $tree * * @return string */ public function edit(string $id, string $name, string $value, Tree $tree): string { $select = view('components/select-source', [ 'id' => $id, 'name' => $name, 'source' => Registry::sourceFactory()->make(trim($value, '@'), $tree), 'tree' => $tree, 'at' => '@', ]); return '
' . '
' . '' . '
' . $select . '
'; } /** * @param Tree $tree * * @return array */ public function subtags(Tree $tree): array { if ($tree->getPreference('FULL_SOURCES') === '1') { return static::SUBTAGS; } return static::ABRIDGED_SUBTAGS; } /** * Display the value of this type of element. * * @param string $value * @param Tree $tree * * @return string */ public function value(string $value, Tree $tree): string { return $this->valueXrefLink($value, $tree, Registry::sourceFactory()); } }