break;
}
- $item = $this->newListItem($this->notice);
- $item->show();
+ try {
+ $item = $this->newListItem($this->notice);
+ $item->show();
+ } catch (Exception $e) {
+ // we log exceptions and continue
+ common_log(LOG_ERR, $e->getMessage());
+ continue;
+ }
}
$this->out->elementEnd('ol');
$this->showStart();
if (Event::handle('StartShowNoticeItem', array($this))) {
$this->showNotice();
+ $this->showNoticeAttachments();
$this->showNoticeInfo();
$this->showNoticeOptions();
Event::handle('EndShowNoticeItem', array($this));
function showNoticeInfo()
{
$this->out->elementStart('div', 'entry-content');
- $this->showNoticeLink();
- $this->showNoticeSource();
- $this->showNoticeLocation();
- $this->showContext();
- $this->showRepeat();
+ if (Event::handle('StartShowNoticeInfo', array($this))) {
+ $this->showNoticeLink();
+ $this->showNoticeSource();
+ $this->showNoticeLocation();
+ $this->showContext();
+ $this->showRepeat();
+ Event::handle('EndShowNoticeInfo', array($this));
+ }
+
$this->out->elementEnd('div');
}
function showNoticeOptions()
{
- $user = common_current_user();
- if ($user) {
- $this->out->elementStart('div', 'notice-options');
- $this->showFaveForm();
- $this->showReplyLink();
- $this->showRepeatForm();
- $this->showDeleteLink();
- $this->out->elementEnd('div');
+ if (Event::handle('StartShowNoticeOptions', array($this))) {
+ $user = common_current_user();
+ if ($user) {
+ $this->out->elementStart('div', 'notice-options');
+ $this->showFaveForm();
+ $this->showReplyLink();
+ $this->showRepeatForm();
+ $this->showDeleteLink();
+ $this->out->elementEnd('div');
+ }
+ Event::handle('EndShowNoticeOptions', array($this));
}
}
function showStart()
{
- // XXX: RDFa
- // TODO: add notice_type class e.g., notice_video, notice_image
- $id = (empty($this->repeat)) ? $this->notice->id : $this->repeat->id;
- $this->out->elementStart('li', array('class' => 'hentry notice',
- 'id' => 'notice-' . $id));
+ if (Event::handle('StartOpenNoticeListItemElement', array($this))) {
+ $id = (empty($this->repeat)) ? $this->notice->id : $this->repeat->id;
+ $this->out->elementStart('li', array('class' => 'hentry notice',
+ 'id' => 'notice-' . $id));
+ Event::handle('EndOpenNoticeListItemElement', array($this));
+ }
}
/**
function showFaveForm()
{
- $user = common_current_user();
- if ($user) {
- if ($user->hasFave($this->notice)) {
- $disfavor = new DisfavorForm($this->out, $this->notice);
- $disfavor->show();
- } else {
- $favor = new FavorForm($this->out, $this->notice);
- $favor->show();
+ if (Event::handle('StartShowFaveForm', array($this))) {
+ $user = common_current_user();
+ if ($user) {
+ if ($user->hasFave($this->notice)) {
+ $disfavor = new DisfavorForm($this->out, $this->notice);
+ $disfavor->show();
+ } else {
+ $favor = new FavorForm($this->out, $this->notice);
+ $favor->show();
+ }
}
+ Event::handle('EndShowFaveForm', array($this));
}
}
$attrs = array('href' => $this->profile->profileurl,
'class' => 'url');
if (!empty($this->profile->fullname)) {
- $attrs['title'] = $this->profile->fullname . ' (' . $this->profile->nickname . ')';
+ $attrs['title'] = $this->profile->getFancyName();
}
$this->out->elementStart('a', $attrs);
$this->showAvatar();
function showAvatar()
{
- if ('shownotice' === $this->out->trimmed('action')) {
- $avatar_size = AVATAR_PROFILE_SIZE;
- } else {
- $avatar_size = AVATAR_STREAM_SIZE;
- }
+ $avatar_size = AVATAR_STREAM_SIZE;
+
$avatar = $this->profile->getAvatar($avatar_size);
$this->out->element('img', array('src' => ($avatar) ?
$this->out->elementEnd('p');
}
+ function showNoticeAttachments() {
+ if (common_config('attachments', 'show_thumbs')) {
+ $al = new InlineAttachmentList($this->notice, $this->out);
+ $al->show();
+ }
+ }
+
/**
* show the link to the main page for the notice
*
$ns = $this->notice->getSource();
if ($ns) {
- $source_name = _($ns->code);
+ $source_name = (empty($ns->name)) ? ($ns->code ? _($ns->code) : _('web')) : _($ns->name);
$this->out->text(' ');
$this->out->elementStart('span', 'source');
+ // FIXME: probably i18n issue. If "from" is followed by text, that should be a parameter to "from" (from %s).
$this->out->text(_('from'));
$this->out->text(' ');
$this->out->elementStart('span', 'repeat vcard');
$this->out->raw(_('Repeated by'));
+ $this->out->raw(' ');
$this->out->elementStart('a', $attrs);
$this->out->element('span', 'fn nickname', $repeater->nickname);
function showEnd()
{
- $this->out->elementEnd('li');
+ if (Event::handle('StartCloseNoticeListItemElement', array($this))) {
+ $this->out->elementEnd('li');
+ Event::handle('EndCloseNoticeListItemElement', array($this));
+ }
}
}