xref: /dokuwiki/inc/Ui/Media/DisplayRow.php (revision 9453716dc4e120c7e2ebc01fba4d27c53f881e0c)
1bf9684bcSAndreas Gohr<?php
2bf9684bcSAndreas Gohr
3bf9684bcSAndreas Gohrnamespace dokuwiki\Ui\Media;
4bf9684bcSAndreas Gohr
5bf9684bcSAndreas Gohruse dokuwiki\Utf8\PhpString;
6bf9684bcSAndreas Gohr
7bf9684bcSAndreas Gohr/**
8bf9684bcSAndreas Gohr * Display a MediaFile in the Media Popup
9bf9684bcSAndreas Gohr */
10bf9684bcSAndreas Gohrclass DisplayRow extends DisplayTile
11bf9684bcSAndreas Gohr{
12bf9684bcSAndreas Gohr    /** @inheritDoc */
13bf9684bcSAndreas Gohr    public function show()
14bf9684bcSAndreas Gohr    {
15bf9684bcSAndreas Gohr        global $lang;
16bf9684bcSAndreas Gohr        // FIXME Zebra classes have been dropped and need to be readded via CSS
17bf9684bcSAndreas Gohr
18bf9684bcSAndreas Gohr        $id = $this->mediaFile->getId();
19bf9684bcSAndreas Gohr        $class = 'select mediafile mf_' . $this->mediaFile->getIcoClass();
20bf9684bcSAndreas Gohr        $info = trim($this->formatDimensions('') . ' ' . $this->formatDate() . ' ' . $this->formatFileSize());
21*9453716dSAndreas Gohr        $jump = $this->scrollIntoView ? 'id="scroll__here"' : '';
22bf9684bcSAndreas Gohr
23*9453716dSAndreas Gohr        echo '<div title="' . $id . '" ' . $jump . '>';
24bf9684bcSAndreas Gohr        echo '<a id="h_:' . $id . '" class="' . $class . '">' .
2579b00823SAndreas Gohr            $this->formatDisplayName() .
26bf9684bcSAndreas Gohr            '</a> ';
27bf9684bcSAndreas Gohr        echo '<span class="info">(' . $info . ')</span>' . NL;
28bf9684bcSAndreas Gohr
29bf9684bcSAndreas Gohr        // view button
30bf9684bcSAndreas Gohr        $link = ml($id, '', true);
31bf9684bcSAndreas Gohr        echo ' <a href="' . $link . '" target="_blank"><img src="' . DOKU_BASE . 'lib/images/magnifier.png" ' .
32bf9684bcSAndreas Gohr            'alt="' . $lang['mediaview'] . '" title="' . $lang['mediaview'] . '" class="btn" /></a>';
33bf9684bcSAndreas Gohr
34bf9684bcSAndreas Gohr        // mediamanager button
35bf9684bcSAndreas Gohr        $link = wl('', array('do' => 'media', 'image' => $id, 'ns' => getNS($id)));
36bf9684bcSAndreas Gohr        echo ' <a href="' . $link . '" target="_blank"><img src="' . DOKU_BASE . 'lib/images/mediamanager.png" ' .
37bf9684bcSAndreas Gohr            'alt="' . $lang['btn_media'] . '" title="' . $lang['btn_media'] . '" class="btn" /></a>';
38bf9684bcSAndreas Gohr
3979b00823SAndreas Gohr        // delete button
404f33babfSAndreas Gohr        if ($this->mediaFile->isWritable() && $this->mediaFile->userPermission() >= AUTH_DELETE) {
41bf9684bcSAndreas Gohr            $link = DOKU_BASE . 'lib/exe/mediamanager.php?delete=' . rawurlencode($id) .
42bf9684bcSAndreas Gohr                '&amp;sectok=' . getSecurityToken();
43bf9684bcSAndreas Gohr            echo ' <a href="' . $link . '" class="btn_media_delete" title="' . $id . '">' .
44bf9684bcSAndreas Gohr                '<img src="' . DOKU_BASE . 'lib/images/trash.png" alt="' . $lang['btn_delete'] . '" ' .
45bf9684bcSAndreas Gohr                'title="' . $lang['btn_delete'] . '" class="btn" /></a>';
46bf9684bcSAndreas Gohr        }
47bf9684bcSAndreas Gohr
48bf9684bcSAndreas Gohr        echo '<div class="example" id="ex_' . str_replace(':', '_', $id) . '">';
49bf9684bcSAndreas Gohr        echo $lang['mediausage'] . ' <code>{{:' . $id . '}}</code>';
50bf9684bcSAndreas Gohr        echo '</div>';
514f33babfSAndreas Gohr        if ($this->mediaFile->getWidth()) $this->showDetails();
52bf9684bcSAndreas Gohr        echo '<div class="clearer"></div>' . NL;
53bf9684bcSAndreas Gohr        echo '</div>' . NL;
54bf9684bcSAndreas Gohr
55bf9684bcSAndreas Gohr    }
56bf9684bcSAndreas Gohr
574f33babfSAndreas Gohr    /**
584f33babfSAndreas Gohr     * Show Thumbnail and EXIF data
594f33babfSAndreas Gohr     */
604f33babfSAndreas Gohr    protected function showDetails()
61bf9684bcSAndreas Gohr    {
62bf9684bcSAndreas Gohr        $id = $this->mediaFile->getId();
63bf9684bcSAndreas Gohr
64bf9684bcSAndreas Gohr        echo '<div class="detail">';
65bf9684bcSAndreas Gohr        echo '<div class="thumb">';
66bf9684bcSAndreas Gohr        echo '<a id="d_:' . $id . '" class="select">';
67bf9684bcSAndreas Gohr        echo $this->getPreviewHtml(120, 120);
68bf9684bcSAndreas Gohr        echo '</a>';
69bf9684bcSAndreas Gohr        echo '</div>';
70bf9684bcSAndreas Gohr
71bf9684bcSAndreas Gohr        // read EXIF/IPTC data
72bf9684bcSAndreas Gohr        $t = $this->mediaFile->getMeta()->getField(array('IPTC.Headline', 'xmp.dc:title'));
73bf9684bcSAndreas Gohr        $d = $this->mediaFile->getMeta()->getField(array(
74bf9684bcSAndreas Gohr            'IPTC.Caption',
75bf9684bcSAndreas Gohr            'EXIF.UserComment',
76bf9684bcSAndreas Gohr            'EXIF.TIFFImageDescription',
77bf9684bcSAndreas Gohr            'EXIF.TIFFUserComment',
78bf9684bcSAndreas Gohr        ));
79bf9684bcSAndreas Gohr        if (PhpString::strlen($d) > 250) $d = PhpString::substr($d, 0, 250) . '...';
80bf9684bcSAndreas Gohr        $k = $this->mediaFile->getMeta()->getField(array('IPTC.Keywords', 'IPTC.Category', 'xmp.dc:subject'));
81bf9684bcSAndreas Gohr
82bf9684bcSAndreas Gohr        // print EXIF/IPTC data
83bf9684bcSAndreas Gohr        if ($t || $d || $k) {
84bf9684bcSAndreas Gohr            echo '<p>';
85bf9684bcSAndreas Gohr            if ($t) echo '<strong>' . hsc($t) . '</strong><br />';
86bf9684bcSAndreas Gohr            if ($d) echo hsc($d) . '<br />';
87bf9684bcSAndreas Gohr            if ($t) echo '<em>' . hsc($k) . '</em>';
88bf9684bcSAndreas Gohr            echo '</p>';
89bf9684bcSAndreas Gohr        }
90bf9684bcSAndreas Gohr        echo '</div>';
91bf9684bcSAndreas Gohr    }
92bf9684bcSAndreas Gohr
93bf9684bcSAndreas Gohr}
94