]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/Oembed/OembedPlugin.php
Debugging output in OStatus for easier reading+greping
[quix0rs-gnu-social.git] / plugins / Oembed / OembedPlugin.php
index cb59bb21e59e0af676f945520bad3956739872fe..56ce3cf0988a9ce548b0f6efbdc08bd09ab4eb9f 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,70 @@ class OembedPlugin extends Plugin
         }
         return true;
     }
+
+    public function onStartShowAttachmentRepresentation(HTMLOutputter $out, File $file)
+    {
+        try {
+            $oembed = File_oembed::getByFile($file);
+        } catch (NoResultException $e) {
+            return true;
+        }
+
+        // Show thumbnail as usual if it's a photo.
+        if ($oembed->type === 'photo') {
+            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()], common_strip_html($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->elementStart('div', ['class'=>'oembed-html']);
+        $out->raw(common_purify($oembed->html));
+        $out->elementEnd('div');
+        $out->elementStart('footer');
+        $out->elementEnd('footer');
+        $out->elementEnd('article');
+
+        return false;
+    }
     
     public function onShowUnsupportedAttachmentRepresentation(HTMLOutputter $out, File $file)
     {