Willkommen bei WordPress. Dies ist dein erster Beitrag. Bearbeite oder lösche ihn und beginne mit dem Schreiben!
Hallo Welt!
von raredesign | Dez 3, 2019 | Allgemein | 0 Kommentare
Cokiee Shell
Current Path : /var/www/web28/html/wp-content/plugins/fusion-builder/shortcodes/ |
Current File : //var/www/web28/html/wp-content/plugins/fusion-builder/shortcodes/fusion-vimeo.php |
<?php /** * Add an element to fusion-builder. * * @package fusion-builder * @since 1.0 */ if ( fusion_is_element_enabled( 'fusion_vimeo' ) ) { if ( ! class_exists( 'FusionSC_Vimeo' ) ) { /** * Shortcode class. * * @since 1.0 */ class FusionSC_Vimeo extends Fusion_Element { /** * The video counter. * * @access private * @since 5.3 * @var int */ private $video_counter = 1; /** * Constructor. * * @access public * @since 1.0 */ public function __construct() { parent::__construct(); add_filter( 'fusion_attr_vimeo-shortcode', [ $this, 'attr' ] ); add_shortcode( 'fusion_vimeo', [ $this, 'render' ] ); } /** * Gets the default values. * * @static * @access public * @since 2.0.0 * @return array */ public static function get_element_defaults() { $fusion_settings = awb_get_fusion_settings(); return [ 'api_params' => '', 'autoplay' => 'no', 'mute' => 'false', 'alignment' => '', 'center' => 'no', 'class' => '', 'css_id' => '', 'height' => 360, 'margin_top' => '', 'margin_bottom' => '', 'hide_on_mobile' => fusion_builder_default_visibility( 'string' ), 'id' => '', 'start_time' => '', 'title_attribute' => '', 'width' => 600, 'video_facade' => $fusion_settings->get( 'video_facade' ), 'structured_data' => '', 'video_title' => '', 'video_desc' => '', 'video_duration' => '', 'video_upload_date' => '', ]; } /** * Render the shortcode. * * @access public * @since 1.0 * @param array $args Shortcode parameters. * @param string $content Content between shortcode. * @return string HTML output. */ public function render( $args, $content = '' ) { // Make videos 16:9 by default. if ( isset( $args['width'] ) && '' !== $args['width'] && ( ! isset( $args['height'] ) || '' === $args['height'] ) ) { $args['height'] = round( intval( $args['width'] ) * 9 / 16 ); } if ( isset( $args['height'] ) && '' !== $args['height'] && ( ! isset( $args['width'] ) || '' === $args['width'] ) ) { $args['width'] = round( intval( $args['height'] ) * 16 / 9 ); } $defaults = FusionBuilder::set_shortcode_defaults( self::get_element_defaults(), $args, 'fusion_vimeo' ); $content = apply_filters( 'fusion_shortcode_content', $content, 'fusion_vimeo', $args ); $defaults['height'] = FusionBuilder::validate_shortcode_attr_value( $defaults['height'], '' ); $defaults['width'] = FusionBuilder::validate_shortcode_attr_value( $defaults['width'], '' ); $defaults['autoplay'] = 'true' === $defaults['autoplay'] || true === $defaults['autoplay'] ? 'yes' : $defaults['autoplay']; extract( $defaults ); $this->args = $defaults; $this->defaults = self::get_element_defaults(); $this->args['margin_bottom'] = FusionBuilder::validate_shortcode_attr_value( $this->args['margin_bottom'], 'px' ); $this->args['margin_top'] = FusionBuilder::validate_shortcode_attr_value( $this->args['margin_top'], 'px' ); // Make sure only the video ID is passed to the iFrame. $pattern = '/(?:https?:\/\/)?(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)/'; $id = $this->args['id']; preg_match( $pattern, $id, $matches ); if ( isset( $matches[3] ) ) { $id = $matches[3]; } // Structured Data attributes. $ds_attr = ''; if ( 'on' === $this->args['structured_data'] ) { $ds_attr = ' itemscope itemtype="http://schema.org/VideoObject"'; } $html = '<div ' . FusionBuilder::attributes( 'vimeo-shortcode' ) . $ds_attr . '>'; // Structured Data. if ( 'on' === $this->args['structured_data'] ) { $video_duration = '' !== $this->args['video_duration'] ? $this->get_duration( $this->args['video_duration'] ) : ''; $html .= $video_duration ? '<meta itemprop="duration" content="' . $video_duration . '" />' : ''; $html .= '' !== $this->args['video_title'] ? '<meta itemprop="name" content="' . $this->args['video_title'] . '" />' : ''; $html .= '' !== $this->args['video_desc'] ? '<meta itemprop="description" content="' . $this->args['video_desc'] . '" />' : ''; $html .= '' !== $this->args['video_upload_date'] ? '<meta itemprop="uploadDate" content="' . $this->args['video_upload_date'] . '" />' : ''; $html .= '<meta itemprop="thumbnailUrl" content="https://vumbnail.com/' . $id . '" />'; $html .= '<meta itemprop="embedUrl" content="https://player.vimeo.com/video/' . $id . '" />'; } $html .= '<div class="video-shortcode">'; $title = $this->args['title_attribute'] ? $this->args['title_attribute'] : 'Vimeo video player ' . $this->video_counter; $api_params = ''; $autoplay = 'yes' === $this->args['autoplay'] ? 'autoplay=1' : 'autoplay=0'; if ( $this->args['start_time'] ) { if ( false === strpos( $this->args['api_params'], '#t=' ) ) { $api_params .= $autoplay . '#t=' . date( 'H\hi\ms\s', $this->args['start_time'] ); } } else { $api_params .= $autoplay; } $api_params .= $this->args['api_params']; if ( false === strpos( $api_params, 'autopause' ) ) { $api_params .= '&autopause=0'; } if ( 'true' === $this->args['mute'] || true === $this->args['mute'] || 'yes' === $this->args['mute'] ) { if ( false === strpos( $api_params, 'muted=1' ) ) { $api_params .= '&muted=1'; } } if ( 'on' === $this->args['video_facade'] ) { $class = ( $defaults['height'] > $defaults['width'] ) ? 'portrait' : 'landscape'; $html .= '<lite-vimeo videoid="' . $id . '" class="' . esc_attr( $class ) . '" params="autoplay=1' . str_replace( $autoplay . '#t=', '&start=', $api_params ) . '" title="' . esc_attr( $title ) . '" width="' . $this->args['width'] . '" height="' . $this->args['height'] . '"></lite-vimeo>'; } else { $iframe = '<iframe title="' . esc_attr( $title ) . '" src="https://player.vimeo.com/video/' . $id . '?' . $api_params . '" width="' . $this->args['width'] . '" height="' . $this->args['height'] . '" allowfullscreen allow="autoplay; fullscreen"></iframe>'; if ( 0 < $defaults['height'] && 0 < $defaults['width'] ) { $iframe = '<div class="fluid-width-video-wrapper" style="padding-top:' . round( $defaults['height'] / $defaults['width'] * 100, 2 ) . '%;" >' . $iframe . '</div>'; } $html .= $iframe; $html = fusion_library()->images->apply_global_selected_lazy_loading_to_iframe( $html ); } $html .= '</div></div>'; $this->on_render(); $this->video_counter++; return apply_filters( 'fusion_element_vimeo_content', $html, $args ); } /** * Builds the attributes array. * * @access public * @since 1.0 * @return array */ public function attr() { $attr = fusion_builder_visibility_atts( $this->args['hide_on_mobile'], [ 'class' => 'fusion-video fusion-vimeo', 'style' => $this->get_style_vars(), ] ); if ( 'yes' === $this->args['center'] ) { $attr['class'] .= ' center-video'; } if ( '' !== $this->args['alignment'] && ! fusion_element_rendering_is_flex() ) { $attr['class'] .= ' fusion-align' . $this->args['alignment']; } if ( 'yes' === $this->args['autoplay'] ) { $attr['data-autoplay'] = 1; } if ( $this->args['class'] ) { $attr['class'] .= ' ' . $this->args['class']; } if ( $this->args['css_id'] ) { $attr['id'] = $this->args['css_id']; } return $attr; } /** * Get style variables. * * @since 3.9 * @return string */ public function get_style_vars() { $custom_css_vars = []; if ( 'yes' !== $this->args['center'] ) { $custom_css_vars['max-width'] = $this->args['width'] . 'px'; $custom_css_vars['max-height'] = $this->args['height'] . 'px'; } if ( '' !== $this->args['alignment'] ) { if ( fusion_element_rendering_is_flex() ) { // RTL adjust. if ( is_rtl() && 'center' !== $this->args['alignment'] ) { $this->args['alignment'] = 'left' === $this->args['alignment'] ? 'right' : 'left'; } if ( 'left' === $this->args['alignment'] ) { $custom_css_vars['align-self'] = 'flex-start'; } elseif ( 'right' === $this->args['alignment'] ) { $custom_css_vars['align-self'] = 'flex-end'; } else { $custom_css_vars['align-self'] = 'center'; } } $custom_css_vars['width'] = '100%'; } $margin_style = Fusion_Builder_Margin_Helper::get_margin_vars( $this->args ); return $this->get_custom_css_vars( $custom_css_vars ) . $margin_style; } /** * The video duration in ISO 8601 format. * * @access public * @since 3.8 * @param string $duration The video duration. * @return string */ public function get_duration( $duration ) { $time = 'PT'; $duration = explode( ':', $duration ); $hours = '00' !== $duration[0] ? $duration[0] : ''; $minutes = '00' !== $duration[1] ? $duration[1] : ''; $seconds = '00' !== $duration[2] ? $duration[2] : ''; $time .= $hours ? ltrim( $hours, '0' ) . 'H' : ''; $time .= $minutes ? ltrim( $minutes, '0' ) . 'M' : ''; $time .= $seconds ? ltrim( $seconds, '0' ) . 'S' : ''; return $time; } /** * Sets the necessary scripts. * * @access public * @since 3.2 * @return void */ public function on_first_render() { Fusion_Dynamic_JS::enqueue_script( 'fusion-video' ); Fusion_Dynamic_JS::enqueue_script( 'lite-vimeo' ); } /** * Load base CSS. * * @access public * @since 3.4 * @return void */ public function add_css_files() { FusionBuilder()->add_element_css( FUSION_BUILDER_PLUGIN_DIR . 'assets/css/lite-vimeo-embed.min.css' ); } } } new FusionSC_Vimeo(); } /** * Map shortcode to Avada Builder. * * @since 1.0 */ function fusion_element_vimeo() { fusion_builder_map( fusion_builder_frontend_data( 'FusionSC_Vimeo', [ 'name' => esc_attr__( 'Vimeo', 'fusion-builder' ), 'shortcode' => 'fusion_vimeo', 'icon' => 'fusiona-vimeo2', 'preview' => FUSION_BUILDER_PLUGIN_DIR . 'inc/templates/previews/fusion-vimeo-preview.php', 'preview_id' => 'fusion-builder-block-module-vimeo-preview-template', 'help_url' => 'https://avada.com/documentation/vimeo-element/', 'params' => [ [ 'type' => 'textfield', 'heading' => esc_attr__( 'Video ID or Url', 'fusion-builder' ), 'description' => esc_attr__( 'For example the Video ID for https://vimeo.com/75230326 is 75230326.', 'fusion-builder' ), 'param_name' => 'id', 'dynamic_data' => true, 'value' => '', ], [ 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Alignment', 'fusion-builder' ), 'description' => esc_attr__( "Select the video's alignment.", 'fusion-builder' ), 'param_name' => 'alignment', 'default' => '', 'value' => [ '' => esc_attr__( 'Text Flow', 'fusion-builder' ), 'left' => esc_attr__( 'Left', 'fusion-builder' ), 'center' => esc_attr__( 'Center', 'fusion-builder' ), 'right' => esc_attr__( 'Right', 'fusion-builder' ), ], ], [ 'type' => 'dimension', 'remove_from_atts' => true, 'heading' => esc_attr__( 'Dimensions', 'fusion-builder' ), 'description' => esc_attr__( 'Video dimensions in pixels. If only one dimension is provided the video will be adjusted to 16:9 ratio.', 'fusion-builder' ), 'param_name' => 'dimensions', 'value' => [ 'width' => '600', 'height' => '350', ], ], [ 'type' => 'textfield', 'heading' => esc_attr__( 'Start Time', 'fusion-builder' ), 'description' => esc_attr__( 'Specify a start time for the video (in seconds).', 'fusion-builder' ), 'param_name' => 'start_time', 'value' => '', ], [ 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Autoplay Video', 'fusion-builder' ), 'description' => esc_attr__( 'Set to yes to make video autoplaying.', 'fusion-builder' ), 'param_name' => 'autoplay', 'value' => [ 'false' => esc_attr__( 'No', 'fusion-builder' ), 'true' => esc_attr__( 'Yes', 'fusion-builder' ), ], 'default' => 'false', ], [ 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Mute video', 'fusion-builder' ), 'description' => esc_attr__( 'Set to yes to make video muted.', 'fusion-builder' ), 'param_name' => 'mute', 'value' => [ 'false' => esc_attr__( 'No', 'fusion-builder' ), 'true' => esc_attr__( 'Yes', 'fusion-builder' ), ], 'default' => 'false', ], [ 'type' => 'textfield', 'heading' => esc_attr__( 'Additional API Parameter', 'fusion-builder' ), 'description' => esc_attr__( 'Use additional API parameter, for example &rel=0 to disable related videos.', 'fusion-builder' ), 'param_name' => 'api_params', 'value' => '', ], [ 'type' => 'textfield', 'heading' => esc_attr__( 'Title Attribute', 'fusion-builder' ), 'description' => esc_attr__( 'Set the title attribute for the iframe embed of your video. Leave empty to use default value of "Vimeo video player #".', 'fusion-builder' ), 'param_name' => 'title_attribute', 'value' => '', ], [ 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Video Facade', 'fusion-builder' ), 'description' => esc_attr__( 'Enable video facade in order to load video player only when video is played.', 'fusion-builder' ), 'param_name' => 'video_facade', 'default' => '', 'value' => [ '' => esc_attr__( 'Default', 'fusion-builder' ), 'on' => esc_attr__( 'On', 'fusion-builder' ), 'off' => esc_attr__( 'Off', 'fusion-builder' ), ], ], 'fusion_margin_placeholder' => [ 'param_name' => 'margin', 'group' => esc_attr__( 'General', 'fusion-builder' ), 'value' => [ 'margin_top' => '', 'margin_bottom' => '', ], ], [ 'type' => 'checkbox_button_set', 'heading' => esc_attr__( 'Element Visibility', 'fusion-builder' ), 'param_name' => 'hide_on_mobile', 'value' => fusion_builder_visibility_options( 'full' ), 'default' => fusion_builder_default_visibility( 'array' ), 'description' => esc_attr__( 'Choose to show or hide the element on small, medium or large screens. You can choose more than one at a time.', 'fusion-builder' ), ], [ 'type' => 'textfield', 'heading' => esc_attr__( 'CSS Class', 'fusion-builder' ), 'param_name' => 'class', 'value' => '', 'description' => esc_attr__( 'Add a class to the wrapping HTML element.', 'fusion-builder' ), ], [ 'type' => 'textfield', 'heading' => esc_attr__( 'CSS ID', 'fusion-builder' ), 'description' => esc_attr__( 'Add an ID to the wrapping HTML element.', 'fusion-builder' ), 'param_name' => 'css_id', 'value' => '', ], [ 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Structured Data', 'fusion-builder' ), 'description' => esc_attr__( 'Enable video structured data for better SEO.', 'fusion-builder' ), 'param_name' => 'structured_data', 'default' => 'off', 'value' => [ 'on' => esc_attr__( 'On', 'fusion-builder' ), 'off' => esc_attr__( 'Off', 'fusion-builder' ), ], 'group' => esc_attr__( 'Extras', 'fusion-builder' ), ], [ 'type' => 'date_time_picker', 'heading' => esc_attr__( 'Upload Date', 'fusion-builder' ), 'description' => esc_attr__( 'Select video upload date.', 'fusion-builder' ), 'param_name' => 'video_upload_date', 'group' => esc_attr__( 'Extras', 'fusion-builder' ), 'time' => false, 'dependency' => [ [ 'element' => 'structured_data', 'value' => 'on', 'operator' => '==', ], ], ], [ 'type' => 'date_time_picker', 'heading' => esc_attr__( 'Video Duration', 'fusion-builder' ), 'description' => esc_attr__( 'Insert the video duration.', 'fusion-builder' ), 'param_name' => 'video_duration', 'group' => esc_attr__( 'Extras', 'fusion-builder' ), 'date' => false, 'dependency' => [ [ 'element' => 'structured_data', 'value' => 'on', 'operator' => '==', ], ], ], [ 'type' => 'textfield', 'heading' => esc_attr__( 'Video Title', 'fusion-builder' ), 'description' => esc_attr__( 'Insert the video title.', 'fusion-builder' ), 'param_name' => 'video_title', 'group' => esc_attr__( 'Extras', 'fusion-builder' ), 'dependency' => [ [ 'element' => 'structured_data', 'value' => 'on', 'operator' => '==', ], ], ], [ 'type' => 'textarea', 'heading' => esc_attr__( 'Video Description', 'fusion-builder' ), 'description' => esc_attr__( 'Insert the video description.', 'fusion-builder' ), 'param_name' => 'video_desc', 'group' => esc_attr__( 'Extras', 'fusion-builder' ), 'dependency' => [ [ 'element' => 'structured_data', 'value' => 'on', 'operator' => '==', ], ], ], ], ] ) ); } add_action( 'fusion_builder_before_init', 'fusion_element_vimeo' );
Cokiee Shell Web 1.0, Coded By Razor
Neueste Kommentare