Completed
Push — 2.1 ( a48c6e...94265a )
by Greg
06:30
created

XrefMedia   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 16
c 1
b 0
f 0
dl 0
loc 44
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A edit() 0 19 1
A value() 0 3 1
1
<?php
2
3
/**
4
 * webtrees: online genealogy
5
 * Copyright (C) 2020 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 <http://www.gnu.org/licenses/>.
16
 */
17
18
declare(strict_types=1);
19
20
namespace Fisharebest\Webtrees\GedcomElements;
21
22
use Fisharebest\Webtrees\Http\RequestHandlers\CreateMediaObjectModal;
23
use Fisharebest\Webtrees\I18N;
24
use Fisharebest\Webtrees\Registry;
25
use Fisharebest\Webtrees\Tree;
26
27
use function e;
28
use function route;
29
use function trim;
30
use function view;
31
32
/**
33
 * XREF:OBJE := {Size=1:22}
34
 * A pointer to, or a cross-reference identifier of, a multimedia object.
35
 */
36
class XrefMedia extends AbstractXrefElement
37
{
38
    /**
39
     * An edit control for this data.
40
     *
41
     * @param string $id
42
     * @param string $name
43
     * @param string $value
44
     * @param Tree   $tree
45
     *
46
     * @return string
47
     */
48
    public function edit(string $id, string $name, string $value, Tree $tree): string
49
    {
50
        $select = view('components/select-media', [
51
            'id'    => $id,
52
            'name'  => $name,
53
            'media' => Registry::mediaFactory()->make(trim($value, '@'), $tree),
54
            'tree'  => $tree,
55
            'at'    => '@',
56
        ]);
57
58
        return
59
            '<div class="input-group">' .
60
            '<div class="input-group-prepend">' .
61
            '<button class="btn btn-secondary" type="button" data-toggle="modal" data-backdrop="static" data-target="#wt-ajax-modal" data-href="' . e(route(CreateMediaObjectModal::class, ['tree' => $tree->name()])) . '" data-select-id="' . $id . '" title="' . I18N::translate('Create a media object') . '">' .
62
            view('icons/add') .
63
            '</button>' .
64
            '</div>' .
65
            $select .
66
            '</div>';
67
    }
68
69
    /**
70
     * Display the value of this type of element.
71
     *
72
     * @param string $value
73
     * @param Tree   $tree
74
     *
75
     * @return string
76
     */
77
    public function value(string $value, Tree $tree): string
78
    {
79
        return $this->valueXrefLink($value, $tree, Registry::mediaFactory());
80
    }
81
}
82