From 551b196a3572ac9dabcda47abc92db201fb0e6c9 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Mon, 8 Nov 2010 15:32:41 -0800 Subject: [PATCH] doomy doom doom --- actions/shownotice.php | 5 --- js/util.js | 8 +++-- lib/attachmentlist.php | 64 +++++++++++++++++++++++++++----------- lib/noticelist.php | 6 ++++ theme/base/css/display.css | 20 +++++++++--- 5 files changed, 73 insertions(+), 30 deletions(-) diff --git a/actions/shownotice.php b/actions/shownotice.php index b7e61a1375..7a11787b66 100644 --- a/actions/shownotice.php +++ b/actions/shownotice.php @@ -356,9 +356,4 @@ class SingleNoticeItem extends DoFollowListItem $this->profile->fullname : $this->profile->nickname)); } - - function showNoticeAttachments() { - $al = new AttachmentList($this->notice, $this->out); - $al->show(); - } } diff --git a/js/util.js b/js/util.js index a4eb0fc284..15fb163103 100644 --- a/js/util.js +++ b/js/util.js @@ -431,16 +431,19 @@ var SN = { // StatusNet //imgLoading : $('address .url')[0].href+'theme/base/images/illustrations/illu_progress_loading-01.gif', notice.find('a.attachment').each(function() { + /* var attachId = ($(this).attr('id').substring('attachment'.length + 1)); if (attachId) { var thumbUrl = $('address .url')[0].href+'attachment/' + attachId + '/thumb'; - var thumb = $('
Thumb:
'); + var thumb = $('
Thumb:
'); thumb.find('img').attr('src', thumbUrl).last(); - notice.append(thumb); + notice.find('.entry-title .entry-content').append(thumb); } + */ }); if ($('#shownotice').length == 0) { + /* var t; notice.find('a.thumbnail').hover( function() { @@ -465,6 +468,7 @@ var SN = { // StatusNet $(this).closest('.entry-title').removeClass('ov'); } ); + */ } } }, diff --git a/lib/attachmentlist.php b/lib/attachmentlist.php index f6b09fb491..f29d32ada3 100644 --- a/lib/attachmentlist.php +++ b/lib/attachmentlist.php @@ -181,9 +181,11 @@ class AttachmentListItem extends Widget */ function show() { - $this->showStart(); - $this->showNoticeAttachment(); - $this->showEnd(); + if ($this->attachment->isEnclosure()) { + $this->showStart(); + $this->showNoticeAttachment(); + $this->showEnd(); + } } function linkAttr() { @@ -203,9 +205,44 @@ class AttachmentListItem extends Widget } function showRepresentation() { + $thumb = $this->getThumbInfo(); + if ($thumb) { + $thumb = $this->sizeThumb($thumb); + $this->out->element('img', array('alt' => '', 'src' => $thumb->url, 'width' => $thumb->width, 'height' => $thumb->height)); + } + } + + function getThumbInfo() + { $thumbnail = File_thumbnail::staticGet('file_id', $this->attachment->id); - if (!empty($thumbnail)) { - $this->out->element('img', array('alt' => '', 'src' => $thumbnail->url, 'width' => $thumbnail->width, 'height' => $thumbnail->height)); + if ($thumbnail) { + return $thumbnail; + } else { + switch ($this->attachment->mimetype) { + case 'image/gif': + case 'image/png': + case 'image/jpg': + case 'image/jpeg': + $thumb = (object)array(); + $thumb->url = $this->attachment->url; + $thumb->width = 100; + $thumb->height = 75; // @fixme + return $thumb; + } + } + return false; + } + + function sizeThumb($thumbnail) { + $maxWidth = 100; + $maxHeight = 75; + if ($thumbnail->width > $maxWidth) { + $thumb = clone($thumbnail); + $thumb->width = $maxWidth; + $thumb->height = intval($thumbnail->height * $maxWidth / $thumbnail->width); + return $thumb; + } else { + return $thumbnail; } } @@ -234,6 +271,9 @@ class AttachmentListItem extends Widget } } +/** + * used for one-off attachment action + */ class Attachment extends AttachmentListItem { function showLink() { @@ -414,18 +454,4 @@ class Attachment extends AttachmentListItem return $scrubbed; } - - function showFallback() - { - // If we don't know how to display an attachment inline, we probably - // shouldn't have gotten to this point. - // - // But, here we are... displaying details on a file or remote URL - // either on the main view or in an ajax-loaded lightbox. As a lesser - // of several evils, we'll try redirecting to the actual target via - // client-side JS. - - common_log(LOG_ERR, "Empty or unknown type for file id {$this->attachment->id}; falling back to client-side redirect."); - $this->out->raw(''); - } } diff --git a/lib/noticelist.php b/lib/noticelist.php index 6f82c9269b..fb5db2374c 100644 --- a/lib/noticelist.php +++ b/lib/noticelist.php @@ -208,6 +208,7 @@ class NoticeListItem extends Widget $this->showStart(); if (Event::handle('StartShowNoticeItem', array($this))) { $this->showNotice(); + $this->showNoticeAttachments(); $this->showNoticeInfo(); $this->showNoticeOptions(); Event::handle('EndShowNoticeItem', array($this)); @@ -383,6 +384,11 @@ class NoticeListItem extends Widget $this->out->elementEnd('p'); } + function showNoticeAttachments() { + $al = new AttachmentList($this->notice, $this->out); + $al->show(); + } + /** * show the link to the main page for the notice * diff --git a/theme/base/css/display.css b/theme/base/css/display.css index 7ac66095a8..29f7d0ae0d 100644 --- a/theme/base/css/display.css +++ b/theme/base/css/display.css @@ -1150,7 +1150,8 @@ border-radius:4px; -webkit-border-radius:4px; } -.notice div.entry-content { +.notice div.entry-content, +.notice dl.entry-content { clear:left; float:left; font-size:0.95em; @@ -1325,6 +1326,7 @@ margin-left:4px; .notice .attachment.more { padding-left:0; } +/* .notice .attachment img { position:absolute; top:18px; @@ -1334,20 +1336,30 @@ z-index:99; #shownotice .notice .attachment img { position:static; } +*/ -#attachments { + +/* Small inline attachment list */ +#attachments ol li { + list-style-type: none; +} +#attachments dt { + display: none; +} + +#shownotice #attachments { clear:both; float:left; width:100%; margin-top:18px; } -#attachments dt { +#shownotice #attachments dt { font-weight:bold; font-size:1.3em; margin-bottom:4px; } -#attachments ol li { +#shownotice #attachments ol li { margin-bottom:18px; list-style-type:decimal; float:left;