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()); 219453716dSAndreas Gohr $jump = $this->scrollIntoView ? 'id="scroll__here"' : ''; 22bf9684bcSAndreas Gohr 239453716dSAndreas 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 35*e2d055f5SAndreas Gohr $link = wl('', ['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 '&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>'; 518e9d8d55SAndreas Gohr if ($this->mediaFile->isImage()) $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 72*e2d055f5SAndreas Gohr $t = $this->mediaFile->getMeta()->getField(['IPTC.Headline', 'xmp.dc:title']); 73*e2d055f5SAndreas Gohr $d = $this->mediaFile->getMeta()->getField([ 74bf9684bcSAndreas Gohr 'IPTC.Caption', 75bf9684bcSAndreas Gohr 'EXIF.UserComment', 76bf9684bcSAndreas Gohr 'EXIF.TIFFImageDescription', 77*e2d055f5SAndreas Gohr 'EXIF.TIFFUserComment' 78*e2d055f5SAndreas Gohr ]); 79bf9684bcSAndreas Gohr if (PhpString::strlen($d) > 250) $d = PhpString::substr($d, 0, 250) . '...'; 80*e2d055f5SAndreas Gohr $k = $this->mediaFile->getMeta()->getField(['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