/** * Generate HTML for local video player * * @return string */ function generate_local_file($params) { $random_id = JSNPagebuilderHelpersShortcode::generateRandomString(); $video_size = array(); $video_size['width'] = ' width="' . $params['video_local_dimension_width'] . '" '; $video_size['height'] = $params['video_local_dimension_height'] != '' ? ' height="' . $params['video_local_dimension_height'] . '" ' : ''; $player_options = '{'; $player_options .= $params['video_local_start_volume'] ? 'startVolume: ' . (int) $params['video_local_start_volume'] / 100 . ',' : ''; $player_options .= $params['video_local_loop'] ? 'loop: ' . $params['video_local_loop'] . ',' : ''; $_progress_bar_color = isset($params['video_local_progress_color']) ? '$(".mejs-time-loaded, .mejs-horizontal-volume-current", video_container).css("background", "none repeat scroll 0 0 ' . $params['video_local_progress_color'] . '");' : ''; $params['video_local_elements'] = explode('__#__', $params['video_local_elements']); $player_elements = ''; $player_elements .= in_array('play_button', $params['video_local_elements']) ? '' : '$(".mejs-playpause-button", video_container).hide();'; $player_elements .= in_array('overlay_play_button', $params['video_local_elements']) ? '' : '$(".mejs-overlay-button", video_container).hide();'; $player_elements .= in_array('current_time', $params['video_local_elements']) ? '' : '$(".mejs-currenttime-container", video_container).hide();'; $player_elements .= in_array('time_rail', $params['video_local_elements']) ? '' : '$(".mejs-time-rail", video_container).hide();'; $player_elements .= in_array('track_duration', $params['video_local_elements']) ? '' : '$(".mejs-duration-container", video_container).hide();'; $player_elements .= in_array('volume_button', $params['video_local_elements']) ? '' : '$(".mejs-volume-button", video_container).hide();'; $player_elements .= in_array('volume_slider', $params['video_local_elements']) ? '' : '$(".mejs-horizontal-volume-slider", video_container).hide();'; $player_elements .= in_array('fullscreen_button', $params['video_local_elements']) ? '' : '$(".mejs-fullscreen-button", video_container).hide();'; // Alignment $container_class = 'local_file '; $container_style = ''; if ($params['video_alignment'] === 'right') { $container_style .= 'float: right;'; $container_class .= 'clearafter '; } else { if ($params['video_alignment'] === 'center') { $container_style .= 'margin: 0 auto;'; } else { if ($params['video_alignment'] === 'left') { $container_style .= 'float: left;'; $container_class .= 'clearafter '; } } } // Genarate Container class $container_class = $container_class ? ' class="' . $container_class . '" ' : ''; $player_options .= 'defaultVideoHeight:' . (intval($params['video_local_dimension_height']) - 10) . ','; $player_options .= 'success: function(mediaElement, domObject){ var video_container= $(domObject).parents(".mejs-container"); ' . $player_elements . ' },'; $player_options .= 'keyActions:[], pluginPath:"' . JSNPB_PLG_SYSTEM_ASSETS_URL . '3rd-party/mediaelement/' . '"}'; if (isset($params['video_source_local']) && $params['video_source_local'] != '') { $script = ' JoomlaShine.jQuery(document).ready(function ($){ new MediaElementPlayer("#' . $random_id . '", ' . $player_options . ' ); });'; $document = JFactory::getDocument(); $document->addScriptDeclaration($script, 'text/javascript'); } $container_style .= isset($params['video_margin_left']) && $params['video_margin_left'] != '' ? 'margin-left:' . $params['video_margin_left'] . 'px;' : ''; $container_style .= isset($params['video_margin_top']) && $params['video_margin_top'] != '' ? 'margin-top:' . $params['video_margin_top'] . 'px;' : ''; $container_style .= isset($params['video_margin_right']) && $params['video_margin_right'] != '' ? 'margin-right:' . $params['video_margin_right'] . 'px;' : ''; $container_style .= isset($params['video_margin_bottom']) && $params['video_margin_bottom'] != '' ? 'margin-bottom:' . $params['video_margin_bottom'] . 'px;' : ''; // This under is the fix for Chrome video dimension issue $container_style .= 'width: ' . $params['video_local_dimension_width'] . 'px;'; $container_style .= 'height: ' . ($params['video_local_dimension_height'] + 5) . 'px;'; $container_style = $container_style ? ' style=" ' . $container_style . ' " ' : ''; // Define the media type $src = JURI::root() . str_replace(' ', '+', urldecode($params['video_source_local'])); $source = '<source type="%s" src="%s" />'; $type = JSNPagebuilderHelpersShortcode::checkFiletype($src); $source = sprintf($source, $type['type'], $src); $poster = ' '; if (trim((string) $params['video_thumbnail_source_local']) != '') { $poster = ' poster="' . JURI::root() . $params['video_thumbnail_source_local'] . '" '; } $video = '<video' . $poster . 'id="' . $random_id . '" ' . $video_size['width'] . $video_size['height'] . ' controls="controls" preload="none" src="' . $src . '"> ' . $source . ' </video>'; return '<div ' . $container_class . $container_style . '>' . $video . ' </div><div class="clear:both"></div>'; }
/** * Generate HTML for local audio player */ function generate_local_files($params) { $random_id = JSNPagebuilderHelpersShortcode::generateRandomString(); $audio_size = array(); $audio_size['width'] = ' width="' . $params['audio_local_dimension_width'] . '" '; $audio_size['height'] = $params['audio_local_dimension_height'] != '' ? ' height="' . $params['audio_local_dimension_height'] . '" ' : ''; $player_options = '{'; $player_options .= $params['audio_local_start_volume'] != '' ? 'startVolume: ' . (int) $params['audio_local_start_volume'] / 100 . ',' : ''; $player_options .= $params['audio_local_loop'] != '' ? 'loop: ' . $params['audio_local_loop'] . ',' : ''; if (!isset($params['audio_local_player_image'])) { $_player_color = isset($params['audio_local_player_color']) ? '$( ".mejs-mediaelement, .mejs-controls", audio_container ).css( "background", "none repeat scroll 0 0 ' . $params['audio_local_player_color'] . '" );' : ''; } else { $_player_color = isset($params['audio_local_player_color']) ? '$( ".mejs-mediaelement, .mejs-controls", audio_container ).css( "background", "url(\'' . $params['audio_local_player_image'] . '\' ) repeat scroll 0 0 ' . $params['audio_local_player_color'] . '");' : ''; } $_progress_bar_color = isset($params['audio_local_progress_color']) ? '$( ".mejs-time-loaded, .mejs-horizontal-volume-current", audio_container ).css( "background", "none repeat scroll 0 0 ' . $params['audio_local_progress_color'] . '" );' : ''; $params['audio_local_elements'] = explode('__#__', $params['audio_local_elements']); $player_elements = ''; $player_elements .= in_array('play_button', $params['audio_local_elements']) ? '' : '$( ".mejs-playpause-button", audio_container ).hide();'; $player_elements .= in_array('current_time', $params['audio_local_elements']) ? '' : '$( ".mejs-currenttime-container", audio_container ).hide();'; $player_elements .= in_array('time_rail', $params['audio_local_elements']) ? '' : '$( ".mejs-time-rail", audio_container ).hide();'; $player_elements .= in_array('track_duration', $params['audio_local_elements']) ? '' : '$( ".mejs-duration-container", audio_container ).hide();'; $player_elements .= in_array('volume_button', $params['audio_local_elements']) ? '' : '$( ".mejs-volume-button", audio_container ).hide();'; $player_elements .= in_array('volume_slider', $params['audio_local_elements']) ? '' : '$( ".mejs-horizontal-volume-slider", audio_container ).hide();'; $container_class = ''; if ($params['audio_alignment'] === 'right') { $player_elements .= 'audio_container.css( "float", "right" )'; $container_class .= 'clearafter '; } else { if ($params['audio_alignment'] === 'center') { $player_elements .= 'audio_container.css( "margin", "0 auto" )'; } else { if ($params['audio_alignment'] === 'left') { $player_elements .= 'audio_container.css( "float", "left" )'; $container_class .= 'clearafter '; } } } // Genarate Container class $container_class = $container_class ? ' class="' . $container_class . '" ' : ''; $player_options .= 'success: function( mediaElement, domObject ){ var audio_container = $( domObject ).parents( ".mejs-container" ); ' . $player_elements . ' },'; $player_options .= 'keyActions:[]}'; if (isset($params['audio_source_local']) && !empty($params['audio_source_local'])) { $script = 'JoomlaShine.jQuery( document ).ready( function ($ ){ new MediaElementPlayer("#' . $random_id . '", ' . $player_options . ' ); });'; $document = JFactory::getDocument(); $document->addScriptDeclaration($script, 'text/javascript'); } $container_style = ''; $container_style .= isset($params['audio_margin_left']) && $params['audio_margin_left'] != '' ? 'margin-left:' . $params['audio_margin_left'] . 'px;' : ''; $container_style .= isset($params['audio_margin_top']) && $params['audio_margin_top'] != '' ? 'margin-top:' . $params['audio_margin_top'] . 'px;' : ''; $container_style .= isset($params['audio_margin_right']) && $params['audio_margin_right'] != '' ? 'margin-right:' . $params['audio_margin_right'] . 'px;' : ''; $container_style .= isset($params['audio_margin_bottom']) && $params['audio_margin_bottom'] != '' ? 'margin-bottom:' . $params['audio_margin_bottom'] . 'px;' : ''; $container_style = $container_style ? ' style=" ' . $container_style . ' " ' : ''; // Define the media type $src = str_replace(' ', '+', $params['audio_source_local']); $source = '<source type="%s" src="%s" />'; $type = JSNPagebuilderHelpersShortcode::checkFiletype($src); $source = sprintf($source, $type['type'], $src); return '<div ' . $container_class . $container_style . '> <audio controls="controls" preload="none" ' . $audio_size['width'] . $audio_size['height'] . ' id="' . $random_id . '" src="' . $src . '" > ' . $source . ' </audio> </div><div style="clear: both"></div>'; }