* @link http://status.net/
*/
-if (!defined('STATUSNET')) {
- // This check helps protect against security problems;
- // your code file can't be executed directly from the web.
- exit(1);
-}
+if (!defined('GNUSOCIAL')) { exit(1); }
/**
* widget for displaying a single notice
*
* @param Notice $notice The notice we'll display
*/
- function __construct($notice, $out=null)
+ function __construct(Notice $notice, HTMLOutputter $out=null)
{
parent::__construct($out);
if (!empty($notice->repeat_of)) {
- $original = Notice::staticGet('id', $notice->repeat_of);
+ $original = Notice::getKV('id', $notice->repeat_of);
if (empty($original)) { // could have been deleted
$this->notice = $notice;
} else {
$this->showNoticeLink();
$this->showNoticeSource();
$this->showNoticeLocation();
- $this->showContext();
+ if ($this->notice->hasConversation()) {
+ $this->showContext();
+ }
$this->showRepeat();
Event::handle('EndShowNoticeInfo', array($this));
}
$this->out->elementStart('a', $attrs);
$this->showAvatar();
$this->out->text(' ');
- $user = common_current_user();
- if (!empty($user) && $user->streamNicknames()) {
- $this->out->element('span',array('class' => 'fn'),
- $this->profile->nickname);
- } else {
- $this->out->element('span',array('class' => 'fn'),
- $this->profile->getBestName());
- }
+ $this->out->element('span',array('class' => 'fn'), $this->profile->getStreamName());
$this->out->elementEnd('a');
$this->out->elementEnd('span');
function showAddressees()
{
- $ga = $this->getGroupAddressees();
$pa = $this->getProfileAddressees();
- $a = array_merge($ga, $pa);
-
- if (!empty($a)) {
+ if (!empty($pa)) {
$this->out->elementStart('span', 'addressees');
$first = true;
- foreach ($a as $addr) {
+ foreach ($pa as $addr) {
if (!$first) {
// TRANS: Separator in profile addressees list.
$this->out->text(_m('SEPARATOR',', '));
}
}
- function getGroupAddressees()
- {
- $ga = array();
-
- $groups = $this->getGroups();
-
- $user = common_current_user();
-
- $streamNicknames = !empty($user) && $user->streamNicknames();
-
- foreach ($groups as $group) {
- $ga[] = array('href' => $group->homeUrl(),
- 'title' => $group->nickname,
- 'class' => 'addressee group',
- 'text' => ($streamNicknames) ? $group->nickname : $group->getBestName());
- }
-
- return $ga;
- }
-
- function getGroups()
- {
- return $this->notice->getGroups();
- }
-
function getProfileAddressees()
{
$pa = array();
- $replies = $this->getReplyProfiles();
+ $attentions = $this->getReplyProfiles();
- $user = common_current_user();
-
- $streamNicknames = !empty($user) && $user->streamNicknames();
-
- foreach ($replies as $reply) {
- $pa[] = array('href' => $reply->profileurl,
- 'title' => $reply->nickname,
- 'class' => 'addressee account',
- 'text' => ($streamNicknames) ? $reply->nickname : $reply->getBestName());
+ foreach ($attentions as $attn) {
+ $class = $attn->isGroup() ? 'group' : 'account';
+ $pa[] = array('href' => $attn->profileurl,
+ 'title' => $attn->nickname,
+ 'class' => "addressee {$class}",
+ 'text' => $attn->getStreamName());
}
return $pa;
{
$avatar_size = $this->avatarSize();
- $avatar = $this->profile->getAvatar($avatar_size);
+ $avatarUrl = $this->profile->avatarUrl($avatar_size);
- $this->out->element('img', array('src' => ($avatar) ?
- $avatar->displayUrl() :
- Avatar::defaultImage($avatar_size),
+ $this->out->element('img', array('src' => $avatarUrl,
'class' => 'avatar photo',
'width' => $avatar_size,
'height' => $avatar_size,
/**
* show the link to the main page for the notice
*
- * Displays a link to the page for a notice, with "relative" time. Tries to
- * get remote notice URLs correct, but doesn't always succeed.
+ * Displays a local link to the rendered notice, with "relative" time.
*
* @return void
*/
function showNoticeLink()
{
- $noticeurl = $this->notice->bestUrl();
-
- // above should always return an URL
-
- assert(!empty($noticeurl));
-
$this->out->elementStart('a', array('rel' => 'bookmark',
'class' => 'timestamp',
- 'href' => $noticeurl));
- $dt = common_date_iso8601($this->notice->created);
- $this->out->element('abbr', array('class' => 'published',
- 'title' => $dt),
+ 'href' => $this->notice->getLocalUrl()));
+ $this->out->element('time', array('class' => 'dt-published',
+ 'datetime' => common_date_iso8601($this->notice->created),
+ // TRANS: Timestamp title (tooltip text) for NoticeListItem
+ 'title' => common_exact_date($this->notice->created)),
common_date_string($this->notice->created));
$this->out->elementEnd('a');
}
*/
function showContext()
{
- if ($this->notice->hasConversation()) {
- $conv = Conversation::staticGet(
- 'id',
- $this->notice->conversation
- );
- $convurl = $conv->uri;
- if (!empty($convurl)) {
- $this->out->text(' ');
- $this->out->element(
- 'a',
- array(
- 'href' => $convurl.'#notice-'.$this->notice->id,
- 'class' => 'response'),
- // TRANS: Addition in notice list item if notice is part of a conversation.
- _('in context')
- );
- } else {
- $msg = sprintf(
- "Couldn't find Conversation ID %d to make 'in context'"
- . "link for Notice ID %d",
- $this->notice->conversation,
- $this->notice->id
- );
- common_log(LOG_WARNING, $msg);
- }
- }
+ $this->out->element('a',
+ array('href' => $this->notice->getConversationUrl(),
+ 'class' => 'conversation'),
+ // TRANS: Addition in notice list item if notice is part of a conversation.
+ _('in context'));
}
/**
{
if (!empty($this->repeat)) {
- $repeater = Profile::staticGet('id', $this->repeat->profile_id);
+ $repeater = Profile::getKV('id', $this->repeat->profile_id);
$attrs = array('href' => $repeater->profileurl,
'class' => 'url');
// TRANS: Addition in notice list item if notice was repeated. Followed by a span with a nickname.
$this->out->raw(_('Repeated by'));
- $this->out->raw(_(' '));
+ $this->out->raw(' ');
$this->out->elementStart('a', $attrs);
$this->out->element('span', 'fn nickname', $repeater->nickname);
$user->id != $this->notice->profile_id) {
$this->out->text(' ');
$profile = $user->getProfile();
- if ($profile->hasRepeated($this->notice->id)) {
+ if ($profile->hasRepeated($this->notice)) {
$this->out->element('span', array('class' => 'repeated',
// TRANS: Title for repeat form status in notice list when a notice has been repeated.
'title' => _('Notice repeated.')),