OStatus: override source link with the source domain and link to original message

This commit is contained in:
Brion Vibber 2010-02-17 02:16:03 +00:00
parent 19b03ef797
commit e51e96d724
2 changed files with 29 additions and 12 deletions

View File

@ -492,30 +492,34 @@ class NoticeListItem extends Widget
break; break;
default: default:
$name = null; $name = $source_name;
$url = null; $url = null;
$ns = Notice_source::staticGet($this->notice->source); if (Event::handle('StartNoticeSourceLink', array($this->notice, &$name, &$url, &$title))) {
$ns = Notice_source::staticGet($this->notice->source);
if ($ns) { if ($ns) {
$name = $ns->name; $name = $ns->name;
$url = $ns->url; $url = $ns->url;
} else { } else {
$app = Oauth_application::staticGet('name', $this->notice->source); $app = Oauth_application::staticGet('name', $this->notice->source);
if ($app) { if ($app) {
$name = $app->name; $name = $app->name;
$url = $app->source_url; $url = $app->source_url;
}
} }
} }
Event::handle('EndNoticeSourceLink', array($this->notice, &$name, &$url, &$title));
if (!empty($name) && !empty($url)) { if (!empty($name) && !empty($url)) {
$this->out->elementStart('span', 'device'); $this->out->elementStart('span', 'device');
$this->out->element('a', array('href' => $url, $this->out->element('a', array('href' => $url,
'rel' => 'external'), 'rel' => 'external',
'title' => $title),
$name); $name);
$this->out->elementEnd('span'); $this->out->elementEnd('span');
} else { } else {
$this->out->element('span', 'device', $source_name); $this->out->element('span', 'device', $name);
} }
break; break;
} }

View File

@ -289,4 +289,17 @@ class OStatusPlugin extends Plugin
$action->script(common_path('plugins/OStatus/js/ostatus.js')); $action->script(common_path('plugins/OStatus/js/ostatus.js'));
return true; return true;
} }
function onStartNoticeSourceLink($notice, &$name, &$url, &$title)
{
if ($notice->source == 'ostatus') {
$bits = parse_url($notice->uri);
$domain = $bits['host'];
$name = $domain;
$url = $notice->uri;
$title = sprintf(_m("Sent from %s via OStatus"), $domain);
return false;
}
}
} }