show original notice in repeat, with repeat info below

This commit is contained in:
Evan Prodromou 2009-12-11 12:10:58 -05:00
parent afc86a86d3
commit 962f391f3e

View File

@ -147,6 +147,10 @@ class NoticeListItem extends Widget
var $notice = null; var $notice = null;
/** The notice that was repeated. */
var $repeat = null;
/** The profile of the author of the notice, extracted once for convenience. */ /** The profile of the author of the notice, extracted once for convenience. */
var $profile = null; var $profile = null;
@ -162,8 +166,13 @@ class NoticeListItem extends Widget
function __construct($notice, $out=null) function __construct($notice, $out=null)
{ {
parent::__construct($out); parent::__construct($out);
if (!empty($notice->repeat_of)) {
$this->notice = Notice::staticGet('id', $notice->repeat_of);
$this->repeat = $notice;
} else {
$this->notice = $notice; $this->notice = $notice;
$this->profile = $notice->getProfile(); }
$this->profile = $this->notice->getProfile();
} }
/** /**
@ -202,6 +211,7 @@ class NoticeListItem extends Widget
$this->showNoticeSource(); $this->showNoticeSource();
$this->showNoticeLocation(); $this->showNoticeLocation();
$this->showContext(); $this->showContext();
$this->showRepeat();
$this->out->elementEnd('div'); $this->out->elementEnd('div');
} }
@ -508,6 +518,52 @@ class NoticeListItem extends Widget
} }
} }
/**
* show a link to the author of repeat
*
* @return void
*/
function showRepeat()
{
if (!empty($this->repeat)) {
$repeater = Profile::staticGet('id', $this->repeat->profile_id);
$attrs = array('href' => $repeater->profileurl,
'class' => 'url');
if (!empty($repeater->fullname)) {
$attrs['title'] = $repeater->fullname . ' (' . $repeater->nickname . ')';
}
$this->out->elementStart('span', 'repeat');
$this->out->elementStart('a', $attrs);
$avatar = $repeater->getAvatar(AVATAR_MINI_SIZE);
$this->out->element('img', array('src' => ($avatar) ?
$avatar->displayUrl() :
Avatar::defaultImage(AVATAR_MINI_SIZE),
'class' => 'avatar photo',
'width' => AVATAR_MINI_SIZE,
'height' => AVATAR_MINI_SIZE,
'alt' =>
($repeater->fullname) ?
$repeater->fullname :
$repeater->nickname));
$this->out->elementEnd('a');
$text_link = XMLStringer::estring('a', $attrs, $repeater->nickname);
$this->out->raw(sprintf(_('Repeated by %s'), $text_link));
$this->out->elementEnd('span');
}
}
/** /**
* show a link to reply to the current notice * show a link to reply to the current notice
* *