]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
oEmbed neatifying (inspired by Qvitter)
authorMikael Nordfeldth <mmn@hethane.se>
Wed, 16 Mar 2016 23:31:45 +0000 (00:31 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Wed, 16 Mar 2016 23:31:45 +0000 (00:31 +0100)
plugins/Oembed/OembedPlugin.php

index cb59bb21e59e0af676f945520bad3956739872fe..65d71f39c8745b18b5b3fecdfc0c24bd07091cc2 100644 (file)
@@ -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)
     {