oEmbed neatifying (inspired by Qvitter)
This commit is contained in:
parent
99a2230fdb
commit
102f7ab059
@ -143,6 +143,11 @@ class OembedPlugin extends Plugin
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function onEndShowStylesheets(Action $action) {
|
||||||
|
$action->cssLink($this->path('css/oembed.css'));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save embedding information for a File, if applicable.
|
* Save embedding information for a File, if applicable.
|
||||||
*
|
*
|
||||||
@ -225,6 +230,63 @@ class OembedPlugin extends Plugin
|
|||||||
return true;
|
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)
|
public function onShowUnsupportedAttachmentRepresentation(HTMLOutputter $out, File $file)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
Loading…
Reference in New Issue
Block a user