X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Fnoticelist.php;h=8aab834338228da4c921492d0326de41c0d1ea84;hb=b3628b78448266fda2368f1317e70d1cca45ac17;hp=9c433f81a0a4f218f627452ffb2fc14e5e80c9b5;hpb=3ce45acfa8488a050cf7d68c8e980166f56c5d43;p=quix0rs-gnu-social.git diff --git a/lib/noticelist.php b/lib/noticelist.php index 9c433f81a0..8aab834338 100644 --- a/lib/noticelist.php +++ b/lib/noticelist.php @@ -22,6 +22,7 @@ * @category UI * @package Laconica * @author Evan Prodromou + * @author Sarven Capadisli * @copyright 2008 Control Yourself, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://laconi.ca/ @@ -33,6 +34,7 @@ if (!defined('LACONICA')) { require_once INSTALLDIR.'/lib/favorform.php'; require_once INSTALLDIR.'/lib/disfavorform.php'; +require_once INSTALLDIR.'/lib/attachmentlist.php'; /** * widget for displaying a list of notices @@ -48,7 +50,6 @@ require_once INSTALLDIR.'/lib/disfavorform.php'; * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://laconi.ca/ * @see Notice - * @see StreamAction * @see NoticeListItem * @see ProfileNoticeList */ @@ -67,7 +68,7 @@ class NoticeList extends Widget function __construct($notice, $out=null) { - parent::__construct($out); + parent::__construct($out); $this->notice = $notice; } @@ -160,7 +161,7 @@ class NoticeListItem extends Widget function __construct($notice, $out=null) { - parent::__construct($out); + parent::__construct($out); $this->notice = $notice; $this->profile = $notice->getProfile(); } @@ -178,6 +179,7 @@ class NoticeListItem extends Widget { $this->showStart(); $this->showNotice(); + $this->showNoticeAttachments(); $this->showNoticeInfo(); $this->showNoticeOptions(); $this->showEnd(); @@ -191,25 +193,47 @@ class NoticeListItem extends Widget $this->out->elementEnd('div'); } + function showNoticeAttachments() { + if ($this->isUsedInList()) { + return; + } + $al = new AttachmentList($this->notice, $this->out); + $al->show(); + } + + function isUsedInList() { + return 'shownotice' !== $this->out->args['action']; + } + + function attachmentCount($discriminant = true) { + $file_oembed = new File_oembed; + $query = "select count(*) as c from file_oembed join file_to_post on file_oembed.file_id = file_to_post.file_id where post_id=" . $this->notice->id; + $file_oembed->query($query); + $file_oembed->fetch(); + return intval($file_oembed->c); + } + function showNoticeInfo() { $this->out->elementStart('div', 'entry-content'); $this->showNoticeLink(); $this->showNoticeSource(); - $this->showReplyTo(); + $this->showContext(); $this->out->elementEnd('div'); } function showNoticeOptions() { - $this->out->elementStart('div', 'notice-options'); - $this->showFaveForm(); - $this->showReplyLink(); - $this->showDeleteLink(); - $this->out->elementEnd('div'); + $user = common_current_user(); + if ($user) { + $this->out->elementStart('div', 'notice-options'); + $this->showFaveForm(); + $this->showReplyLink(); + $this->showDeleteLink(); + $this->out->elementEnd('div'); + } } - /** * start a single notice. * @@ -221,7 +245,7 @@ class NoticeListItem extends Widget // XXX: RDFa // TODO: add notice_type class e.g., notice_video, notice_image $this->out->elementStart('li', array('class' => 'hentry notice', - 'id' => 'notice-' . $this->notice->id)); + 'id' => 'notice-' . $this->notice->id)); } /** @@ -235,11 +259,11 @@ class NoticeListItem extends Widget $user = common_current_user(); if ($user) { if ($user->hasFave($this->notice)) { - $disfavor = new DisfavorForm($this->out, $this->notice); - $disfavor->show(); + $disfavor = new DisfavorForm($this->out, $this->notice); + $disfavor->show(); } else { - $favor = new FavorForm($this->out, $this->notice); - $favor->show(); + $favor = new FavorForm($this->out, $this->notice); + $favor->show(); } } } @@ -255,8 +279,12 @@ class NoticeListItem extends Widget function showAuthor() { $this->out->elementStart('span', 'vcard author'); - $this->out->elementStart('a', array('href' => $this->profile->profileurl, - 'class' => 'url')); + $attrs = array('href' => $this->profile->profileurl, + 'class' => 'url'); + if (!empty($this->profile->fullname)) { + $attrs['title'] = $this->profile->fullname . ' (' . $this->profile->nickname . ') '; + } + $this->out->elementStart('a', $attrs); $this->showAvatar(); $this->showNickname(); $this->out->elementEnd('a'); @@ -274,18 +302,23 @@ class NoticeListItem extends Widget function showAvatar() { - $avatar = $this->profile->getAvatar(AVATAR_STREAM_SIZE); + if ('shownotice' === $this->out->trimmed('action')) { + $avatar_size = AVATAR_PROFILE_SIZE; + } else { + $avatar_size = AVATAR_STREAM_SIZE; + } + $avatar = $this->profile->getAvatar($avatar_size); $this->out->element('img', array('src' => ($avatar) ? - common_avatar_display_url($avatar) : - common_default_avatar(AVATAR_STREAM_SIZE), - 'class' => 'avatar photo', - 'width' => AVATAR_STREAM_SIZE, - 'height' => AVATAR_STREAM_SIZE, - 'alt' => - ($this->profile->fullname) ? - $this->profile->fullname : - $this->profile->nickname)); + $avatar->displayUrl() : + Avatar::defaultImage($avatar_size), + 'class' => 'avatar photo', + 'width' => $avatar_size, + 'height' => $avatar_size, + 'alt' => + ($this->profile->fullname) ? + $this->profile->fullname : + $this->profile->nickname)); } /** @@ -299,7 +332,7 @@ class NoticeListItem extends Widget function showNickname() { $this->out->element('span', array('class' => 'nickname fn'), - $this->profile->nickname); + $this->profile->nickname); } /** @@ -346,14 +379,14 @@ class NoticeListItem extends Widget $noticeurl = $this->notice->uri; } $this->out->elementStart('dl', 'timestamp'); - $this->out->element('dt', null, _('Published')); + $this->out->element('dt', null, _('Published')); $this->out->elementStart('dd', null); $this->out->elementStart('a', array('rel' => 'bookmark', - 'href' => $noticeurl)); + 'href' => $noticeurl)); $dt = common_date_iso8601($this->notice->created); $this->out->element('abbr', array('class' => 'published', - 'title' => $dt), - common_date_string($this->notice->created)); + 'title' => $dt), + common_date_string($this->notice->created)); $this->out->elementEnd('a'); $this->out->elementEnd('dd'); $this->out->elementEnd('dl'); @@ -375,23 +408,24 @@ class NoticeListItem extends Widget $this->out->element('dt', null, _('From')); $source_name = _($this->notice->source); switch ($this->notice->source) { - case 'web': - case 'xmpp': - case 'mail': - case 'omb': - case 'api': - $this->out->element('dd', 'noticesource', $source_name); + case 'web': + case 'xmpp': + case 'mail': + case 'omb': + case 'system': + case 'api': + $this->out->element('dd', null, $source_name); break; - default: + default: $ns = Notice_source::staticGet($this->notice->source); if ($ns) { $this->out->elementStart('dd', null); $this->out->element('a', array('href' => $ns->url, - 'rel' => 'external'), - $ns->name); + 'rel' => 'external'), + $ns->name); $this->out->elementEnd('dd'); } else { - $this->out->element('dd', 'noticesource', $source_name); + $this->out->element('dd', null, $source_name); } break; } @@ -408,17 +442,18 @@ class NoticeListItem extends Widget * @return void */ - function showReplyTo() + function showContext() { - if ($this->notice->reply_to) { - $replyurl = common_local_url('shownotice', - array('notice' => $this->notice->reply_to)); + // XXX: also show context if there are replies to this notice + if (!empty($this->notice->conversation) + && $this->notice->conversation != $this->notice->id) { + $convurl = common_local_url('conversation', + array('id' => $this->notice->conversation)); $this->out->elementStart('dl', 'response'); $this->out->element('dt', null, _('To')); $this->out->elementStart('dd'); - $this->out->element('a', array('href' => $replyurl, - 'rel' => 'in-reply-to'), - _('in reply to')); + $this->out->element('a', array('href' => $convurl), + _('in context')); $this->out->elementEnd('dd'); $this->out->elementEnd('dl'); } @@ -435,16 +470,21 @@ class NoticeListItem extends Widget function showReplyLink() { - $reply_url = common_local_url('newnotice', - array('replyto' => $this->profile->nickname)); - - $this->out->elementStart('dl', 'notice_reply'); - $this->out->element('dt', null, _('Reply to this notice')); - $this->out->elementStart('dd'); - $this->out->element('a', array('href' => $reply_url, - 'title' => _('Reply to this notice')), _('Reply')); - $this->out->elementEnd('dd'); - $this->out->elementEnd('dl'); + if (common_logged_in()) { + $reply_url = common_local_url('newnotice', + array('replyto' => $this->profile->nickname)); + + $this->out->elementStart('dl', 'notice_reply'); + $this->out->element('dt', null, _('Reply to this notice')); + $this->out->elementStart('dd'); + $this->out->elementStart('a', array('href' => $reply_url, + 'title' => _('Reply to this notice'))); + $this->out->text(_('Reply')); + $this->out->element('span', 'notice_id', $this->notice->id); + $this->out->elementEnd('a'); + $this->out->elementEnd('dd'); + $this->out->elementEnd('dl'); + } } /**