From 80fbec173b0d1d755549e16e781ee8c5575c0830 Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Sun, 18 May 2014 14:05:29 +0200 Subject: [PATCH] Improved imageboard-style notice feeds on web UI --- lib/attachment.php | 128 +------------------------------------ lib/attachmentlistitem.php | 128 +++++++++++++++++++++++++++++++++++-- lib/default.php | 6 +- 3 files changed, 127 insertions(+), 135 deletions(-) diff --git a/lib/attachment.php b/lib/attachment.php index c55b07d7cc..c7aceed218 100644 --- a/lib/attachment.php +++ b/lib/attachment.php @@ -40,7 +40,7 @@ class Attachment extends AttachmentListItem $this->out->elementStart('div', array('id' => 'attachment_view', 'class' => 'hentry')); $this->out->elementStart('div', 'entry-title'); - $this->out->element('a', $this->linkAttr(), $this->linkTitle()); + $this->out->element('a', $this->linkAttr(), _('Download link')); $this->out->elementEnd('div'); $this->out->elementStart('div', 'entry-content'); @@ -56,130 +56,6 @@ class Attachment extends AttachmentListItem } function linkAttr() { - return array('rel' => 'external', 'href' => $this->attachment->url); - } - - function linkTitle() { - return $this->attachment->url; - } - - function showRepresentation() { - if (Event::handle('StartShowAttachmentRepresentation', array($this->out, $this->attachment))) { - if (!empty($this->attachment->mimetype)) { - switch ($this->attachment->mimetype) { - case 'image/gif': - case 'image/png': - case 'image/jpg': - case 'image/jpeg': - $this->out->element('img', array('src' => $this->attachment->url, 'alt' => 'alt')); - break; - - case 'application/ogg': - $arr = array('type' => $this->attachment->mimetype, - 'data' => $this->attachment->url, - 'width' => 320, - 'height' => 240 - ); - $this->out->elementStart('object', $arr); - $this->out->element('param', array('name' => 'src', 'value' => $this->attachment->url)); - $this->out->element('param', array('name' => 'autoStart', 'value' => 1)); - $this->out->elementEnd('object'); - break; - - case 'audio/ogg': - case 'audio/x-speex': - case 'video/mpeg': - case 'audio/mpeg': - case 'video/mp4': - case 'video/ogg': - case 'video/quicktime': - case 'video/webm': - $mediatype = common_get_mime_media($this->attachment->mimetype); - try { - $thumb = $this->attachment->getThumbnail(); - $poster = $thumb->getUrl(); - unset ($thumb); - } catch (Exception $e) { - $poster = null; - } - $this->out->elementStart($mediatype, - array('class'=>'attachment_player', - 'poster'=>$poster, - 'controls'=>'controls')); - $this->out->element('source', - array('src'=>$this->attachment->url, - 'type'=>$this->attachment->mimetype)); - $this->out->elementEnd($mediatype); - break; - - case 'text/html': - if ($this->attachment->filename) { - // Locally-uploaded HTML. Scrub and display inline. - $this->showHtmlFile($this->attachment); - break; - } - // Fall through to default. - - default: - Event::handle('ShowUnsupportedAttachmentRepresentation', array($this->out, $this->attachment)); - } - } else { - Event::handle('ShowUnsupportedAttachmentRepresentation', array($this->out, $this->attachment)); - } - } - Event::handle('EndShowAttachmentRepresentation', array($this->out, $this->attachment)); - } - - protected function showHtmlFile(File $attachment) - { - $body = $this->scrubHtmlFile($attachment); - if ($body) { - $this->out->raw($body); - } - } - - /** - * @return mixed false on failure, HTML fragment string on success - */ - protected function scrubHtmlFile(File $attachment) - { - $path = File::path($attachment->filename); - if (!file_exists($path) || !is_readable($path)) { - common_log(LOG_ERR, "Missing local HTML attachment $path"); - return false; - } - $raw = file_get_contents($path); - - // Normalize... - $dom = new DOMDocument(); - if(!$dom->loadHTML($raw)) { - common_log(LOG_ERR, "Bad HTML in local HTML attachment $path"); - return false; - } - - // Remove