forked from GNUsocial/gnu-social
oEmbed neatifying (inspired by Qvitter)
This commit is contained in:
parent
99a2230fdb
commit
102f7ab059
@ -143,6 +143,11 @@ class OembedPlugin extends Plugin
|
||||
return true;
|
||||
}
|
||||
|
||||
public function onEndShowStylesheets(Action $action) {
|
||||
$action->cssLink($this->path('css/oembed.css'));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save embedding information for a File, if applicable.
|
||||
*
|
||||
@ -224,6 +229,63 @@ class OembedPlugin extends Plugin
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function onStartShowAttachmentRepresentation(HTMLOutputter $out, File $file)
|
||||
{
|
||||
try {
|
||||
$oembed = File_oembed::getByFile($file);
|
||||
} catch (NoResultException $e) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$out->elementStart('article', ['class'=>'oembed-item']);
|
||||
$out->elementStart('header');
|
||||
try {
|
||||
$thumb = $file->getThumbnail(128, 128);
|
||||
$out->element('img', $thumb->getHtmlAttrs(['class'=>'oembed-thumb']));
|
||||
unset($thumb);
|
||||
} catch (Exception $e) {
|
||||
$out->element('div', ['class'=>'error'], $e->getMessage());
|
||||
}
|
||||
$out->elementStart('h5', ['class'=>'oembed-title']);
|
||||
$out->element('a', ['href'=>$file->getUrl()], $oembed->title);
|
||||
$out->elementEnd('h5');
|
||||
$out->elementStart('div', ['class'=>'oembed-source']);
|
||||
if (!empty($oembed->author_name)) {
|
||||
// TRANS: text before the author name of oEmbed attachment representation
|
||||
// FIXME: The whole "By x from y" should be i18n because of different language constructions.
|
||||
$out->text(_('By '));
|
||||
$attrs = ['class'=>'h-card'];
|
||||
if (!empty($oembed->author_url)) {
|
||||
$attrs['href'] = $oembed->author_url;
|
||||
$tag = 'a';
|
||||
} else {
|
||||
$tag = 'span';
|
||||
}
|
||||
$out->element($tag, $attrs, $oembed->author_name);
|
||||
}
|
||||
if (!empty($oembed->provider)) {
|
||||
// TRANS: text between the oEmbed author name and provider url
|
||||
// FIXME: The whole "By x from y" should be i18n because of different language constructions.
|
||||
$out->text(_(' from '));
|
||||
$attrs = ['class'=>'h-card'];
|
||||
if (!empty($oembed->provider_url)) {
|
||||
$attrs['href'] = $oembed->provider_url;
|
||||
$tag = 'a';
|
||||
} else {
|
||||
$tag = 'span';
|
||||
}
|
||||
$out->element($tag, $attrs, $oembed->provider);
|
||||
}
|
||||
$out->elementEnd('div');
|
||||
$out->elementEnd('header');
|
||||
$out->element('div', ['class'=>'oembed-item-body'], common_purify($oembed->html));
|
||||
$out->elementStart('footer');
|
||||
$out->elementEnd('footer');
|
||||
$out->elementEnd('article');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function onShowUnsupportedAttachmentRepresentation(HTMLOutputter $out, File $file)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user