]> git.bts.cx Git - cx.git/blobdiff - cx/lib/markdown.php
Try to fix aspect ratio issues
[cx.git] / cx / lib / markdown.php
index 00d46c29f64dd3d54dc257d6818f9fbd357714b9..aab58d59e005f0d5006e7918cbc2cbb4cbd20b74 100644 (file)
@@ -6,7 +6,8 @@ cx_require('third_party', 'parsedown', 'Parsedown.php');
 
 class ExtendedParsedown extends Parsedown {
        public function __construct() {
-               $this->InlineTypes['{'][]= 'BlogImage';
+               $this->InlineTypes['{'][] = 'BlogImage';
+               $this->InlineTypes['{'][] = 'Youtube';
                $this->inlineMarkerList .= '{';
        }
 
@@ -33,6 +34,35 @@ class ExtendedParsedown extends Parsedown {
                        );
                }
        }
+
+       protected function inlineYoutube($excerpt) {
+               if (preg_match('/^{yt:([^}]+)}/', $excerpt['text'], $matches)) {
+                       $video_id = $matches[1];
+
+                       if ($video_id == null) {
+                               return;
+                       }
+
+                       return array(
+                               'extent' => strlen($matches[0]) + 1, 
+                               'element' => array(
+                                       'name' => 'iframe',
+                                       'text' => '',
+                                       'attributes' => array(
+                                               'class' => "video",
+                                               'type' => "text/html",
+                                               //'width' => "640",
+                                               //'height' => "360",
+                                               'src' => "https://www.youtube.com/embed/" . $video_id,
+                                               'frameborder' => "0",
+                                               'loading' => "lazy",
+                                               'referrerpolicy' => "no-referrer",
+                                               'sandbox' => "allow-same-origin allow-scripts",
+                                       ),
+                               ),
+                       );
+               }
+       }
 }
 
 function cx_markdown_generate_html($markdown) {