Преглед изворни кода

#2331 Live video streaming: embeds

Alex Trofimov пре 5 година
родитељ
комит
314ab3ca11

+ 5 - 0
modules/boonex/stream/classes/BxStrmModule.php

@@ -40,6 +40,11 @@ class BxStrmModule extends BxBaseModTextModule
         return $this->_oEngine;
     }
 
+    public function actionEmbedStream($iContentId = 0)
+    {
+        $this->_serviceTemplateFunc ('embedStream', $iContentId);
+    }
+
     public function actionStreamViewers ($iContentId = 0)
     {
         header('Content-Type:text/javascript; charset=utf-8');

+ 32 - 1
modules/boonex/stream/classes/BxStrmTemplate.php

@@ -54,6 +54,8 @@ class BxStrmTemplate extends BxBaseModTextTemplate
 
         $sUrlViewStream = 'page.php?i=' . $CNF['URI_VIEW_ENTRY'] . '&id=' . (int)$aContentInfo['id'];
         $sUrlViewStream = BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink($sUrlViewStream);
+        $sUrlEmbed = BX_DOL_URL_ROOT . $this->_oConfig->getBaseUri() . 'embed_stream/' . (int)$aContentInfo['id'];
+
         $aForm = array(
             'form_attrs' => array(
                 'name' => 'bx-stream-form-share',
@@ -63,10 +65,17 @@ class BxStrmTemplate extends BxBaseModTextTemplate
                 'url' => array(
                     'type' => 'text',
                     'name' => 'url'.time(),
-                    'caption' => '',
+                    'caption' => _t('_bx_stream_field_link'),
                     'value' => $sUrlViewStream,
                     'attrs' => array('readonly' => 'readonly'),
                 ),
+                'embed' => array(
+                    'type' => 'text',
+                    'name' => 'embed'.time(),
+                    'caption' => _t('_bx_stream_field_embed'),
+                    'value' => '<iframe width="560" height="315" frameborder="0" allow="autoplay; picture-in-picture" allowfullscreen src="' . $sUrlEmbed . '"></iframe>',
+                    'attrs' => array('readonly' => 'readonly'),
+                ),
             ),
         );
         $oForm = new BxTemplFormView ($aForm);
@@ -143,6 +152,28 @@ class BxStrmTemplate extends BxBaseModTextTemplate
         ));
     }
 
+    public function embedStream($aContentInfo)
+    {
+        $CNF = &$this->getModule()->_oConfig->CNF;
+
+        // TODO: visibility and other checks
+
+        $sCode = $this->parseHtmlByName('stream_embed.html', array(
+            'player' => $this->entryStreamPlayer ($aContentInfo),
+            'viewers' => $this->entryStreamViewers ($aContentInfo),
+        ));
+
+        $this->addCss('main.css');
+
+        // display page
+        $oTemplate = BxDolTemplate::getInstance();
+        $oTemplate->setPageNameIndex (BX_PAGE_EMBED);
+        $oTemplate->setPageHeader ($aContentInfo[$CNF['FIELD_TITLE']]);
+        $oTemplate->setPageContent ('page_main_code', $sCode);
+        $oTemplate->getPageCode();
+        exit;
+    }
+
     /**
      * Use Gallery image for both because currently there is no Unit types with small thumbnails.
      */

+ 3 - 1
modules/boonex/stream/install/langs/en.xml

@@ -261,7 +261,9 @@
     <string name="_bx_stream_start_streaming"><![CDATA[Start Streaming]]></string>
     <string name="_bx_stream_stop_streaming"><![CDATA[Stop Streaming]]></string>
 
-    <string name="_bx_stream_popup_share"><![CDATA[Stream view URL]]></string>
+    <string name="_bx_stream_popup_share"><![CDATA[Stream Share]]></string>
+    <string name="_bx_stream_field_link"><![CDATA[Stream URL]]></string>
+    <string name="_bx_stream_field_embed"><![CDATA[Stream Embed]]></string>
     <string name="_bx_stream_popup_settings"><![CDATA[Stream settings]]></string>
     <string name="_bx_stream_field_audio_source"><![CDATA[Audio source]]></string>
     <string name="_bx_stream_field_video_source"><![CDATA[Video source]]></string>

+ 1 - 1
modules/boonex/stream/install/sql/enable.sql

@@ -109,7 +109,7 @@ INSERT INTO `sys_objects_page`(`object`, `title_system`, `title`, `module`, `lay
 
 INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
 ('bx_stream_broadcast', 1, 'bx_stream', '', '_bx_stream_page_block_title_viewers', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_stream\";s:6:\"method\";s:14:\"stream_viewers\";}', 0, 0, 1, 1),
-('bx_stream_broadcast', 1, 'bx_stream', '', '_bx_stream_page_block_title_broadcast', 3, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_stream\";s:6:\"method\";s:16:\"stream_broadcast\";}', 0, 0, 1, 2);
+('bx_stream_broadcast', 1, 'bx_stream', '', '_bx_stream_page_block_title_broadcast', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:9:\"bx_stream\";s:6:\"method\";s:16:\"stream_broadcast\";}', 0, 0, 1, 2);
 
 -- PAGE: view entry comments
 

+ 8 - 0
modules/boonex/stream/template/css/main.css

@@ -31,3 +31,11 @@
     float:none;
     display:inline-block;
 }
+
+.bx-stream-embed-viewers {
+    position:absolute;
+    top:0;
+    right:0;
+    background-color:rgba(255,255,255,0.3);
+    color:#fff;
+}

+ 4 - 0
modules/boonex/stream/template/stream_embed.html

@@ -0,0 +1,4 @@
+<div class="bx-stream-embed">
+    <div class="bx-stream-embed-player">__player__</div>
+    <div class="bx-stream-embed-viewers bx-def-font-small bx-def-padding-thd">__viewers__</div>
+</div>