]> git.bts.cx Git - cx.git/blobdiff - cx/lib/markdown.php
added youtube embeds
[cx.git] / cx / lib / markdown.php
index 8cdc235b975e59dea48b6a0c5688a6024fb026b9..771b9476370ed2546633eabdf9aea85454e87d8d 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 .= '{';
        }
 
@@ -26,13 +27,42 @@ class ExtendedParsedown extends Parsedown {
                                'element' => array(
                                        'name' => 'img',
                                        'attributes' => array(
-                                               'src' => cx_url($permalink),
+                                               'src' => cx_url_site($permalink),
                                                'alt' => $image->alt_text,
                                        ),
                                ),
                        );
                }
        }
+
+       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(
+                                               'id' => "ytplayer",
+                                               '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) {