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