function prepare($args)
{
parent::prepare($args);
+ if ($this->boolean('ajax')) {
+ StatusNet::setApi(true);
+ }
$id = $this->arg('notice');
function title()
{
- if (!empty($this->profile->fullname)) {
- $base = $this->profile->fullname . ' (' . $this->profile->nickname . ')';
- } else {
- $base = $this->profile->nickname;
- }
+ $base = $this->profile->getFancyName();
return sprintf(_('%1$s\'s status on %2$s'),
$base,
{
parent::handle($args);
- if ($this->notice->is_local == Notice::REMOTE_OMB) {
- if (!empty($this->notice->url)) {
- $target = $this->notice->url;
- } else if (!empty($this->notice->uri) && preg_match('/^https?:/', $this->notice->uri)) {
- // Old OMB posts saved the remote URL only into the URI field.
- $target = $this->notice->uri;
- } else {
- // Shouldn't happen.
- $target = false;
- }
- if ($target && $target != $this->selfUrl()) {
- common_redirect($target, 301);
- return false;
+ if ($this->boolean('ajax')) {
+ $this->showAjax();
+ } else {
+ if ($this->notice->is_local == Notice::REMOTE_OMB) {
+ if (!empty($this->notice->url)) {
+ $target = $this->notice->url;
+ } else if (!empty($this->notice->uri) && preg_match('/^https?:/', $this->notice->uri)) {
+ // Old OMB posts saved the remote URL only into the URI field.
+ $target = $this->notice->uri;
+ } else {
+ // Shouldn't happen.
+ $target = false;
+ }
+ if ($target && $target != $this->selfUrl()) {
+ common_redirect($target, 301);
+ return false;
+ }
}
+ $this->showPage();
}
- $this->showPage();
}
/**
$this->elementEnd('ol');
}
+ function showAjax()
+ {
+ header('Content-Type: text/xml;charset=utf-8');
+ $this->xw->startDocument('1.0', 'UTF-8');
+ $this->elementStart('html');
+ $this->elementStart('head');
+ $this->element('title', null, _('Notice'));
+ $this->elementEnd('head');
+ $this->elementStart('body');
+ $nli = new NoticeListItem($this->notice, $this);
+ $nli->show();
+ $this->elementEnd('body');
+ $this->elementEnd('html');
+ }
+
/**
* Don't show page notice
*
'content' => $id->toString()));
}
- if ($user->jabbermicroid && $user->jabber && $this->notice->uri) {
- $id = new Microid('xmpp:', $user->jabber,
- $this->notice->uri);
- $this->element('meta', array('name' => 'microid',
- 'content' => $id->toString()));
- }
$this->element('link',array('rel'=>'alternate',
'type'=>'application/json+oembed',
'href'=>common_local_url(
array(),
array('format'=>'xml','url'=>$this->notice->uri)),
'title'=>'oEmbed'),null);
+
+ // Extras to aid in sharing notices to Facebook
+ $avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE);
+ $avatarUrl = ($avatar) ?
+ $avatar->displayUrl() :
+ Avatar::defaultImage(AVATAR_PROFILE_SIZE);
+ $this->element('meta', array('property' => 'og:image',
+ 'content' => $avatarUrl));
+ $this->element('meta', array('property' => 'og:description',
+ 'content' => $this->notice->content));
}
}
-class SingleNoticeItem extends NoticeListItem
+class SingleNoticeItem extends DoFollowListItem
{
/**
* recipe function for displaying a single notice.
$this->showEnd();
}
+ /**
+ * For our zoomed-in special case we'll use a fuller list
+ * for the attachment info.
+ */
function showNoticeAttachments() {
$al = new AttachmentList($this->notice, $this->out);
$al->show();
}
+
+ /**
+ * show the avatar of the notice's author
+ *
+ * We use the larger size for single notice page.
+ *
+ * @return void
+ */
+
+ function showAvatar()
+ {
+ $avatar_size = AVATAR_PROFILE_SIZE;
+
+ $avatar = $this->profile->getAvatar($avatar_size);
+
+ $this->out->element('img', array('src' => ($avatar) ?
+ $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));
+ }
}