updated video filter module to handle https on embeded videos
This commit is contained in:
		@@ -1,4 +1,3 @@
 | 
			
		||||
 | 
			
		||||
This is a highly flexible and easy extendable filter module to embed any type
 | 
			
		||||
of video in your site using a simple tag. Other modules can add video
 | 
			
		||||
sites/formats (called codecs) using an easy plug-in architecture.
 | 
			
		||||
@@ -22,6 +21,9 @@ processed after that filter.
 | 
			
		||||
To enable WYSIWYG support, go to the WYSIWYG settings for each input format and
 | 
			
		||||
enable the Video Filter button.
 | 
			
		||||
 | 
			
		||||
To enable CKEditor (standalone) support, please see plugin instructions in:
 | 
			
		||||
editors/ckeditor/README.txt
 | 
			
		||||
 | 
			
		||||
========= Usage =========
 | 
			
		||||
 | 
			
		||||
Single video: [video:url]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,35 +1,15 @@
 | 
			
		||||
 | 
			
		||||
##############################################
 | 
			
		||||
## ONLY if you use ckeditor WITHOUT wysiwyg ##
 | 
			
		||||
##############################################
 | 
			
		||||
############################################################
 | 
			
		||||
## ONLY if with the CKEditor module, *NOT* WYSIWYG module ##
 | 
			
		||||
############################################################
 | 
			
		||||
 | 
			
		||||
Installation:
 | 
			
		||||
 | 
			
		||||
Do the following steps to add video_filter button to the CKEditor toolbar:
 | 
			
		||||
 | 
			
		||||
   1. Open ckeditor.config.js (in the ckeditor module root)
 | 
			
		||||
  1. Go to Configuration -> CKEditor (admin/config/content/ckeditor)
 | 
			
		||||
     Click "Edit" on the profile you what to use with the video filter.
 | 
			
		||||
 | 
			
		||||
   2. Scroll down to the end of the file, right before "};" insert:
 | 
			
		||||
  2. Expand "Editor appearance" and go to "Toolbar". Drag the new video_filter
 | 
			
		||||
     button from the "All Buttons" toolbar to the "Used Buttons" toolbar.
 | 
			
		||||
 | 
			
		||||
      // Video_filter plugin.
 | 
			
		||||
      config.extraPlugins += (config.extraPlugins ? ',video_filter' : 'video_filter' );
 | 
			
		||||
      CKEDITOR.plugins.addExternal('video_filter', Drupal.settings.basePath + Drupal.settings.video_filter.modulepath + '/editors/ckeditor/');
 | 
			
		||||
 | 
			
		||||
   3. Add button to the toolbar.
 | 
			
		||||
 | 
			
		||||
      3.1 Go to Configuration -> CKEditor (admin/config/content/ckeditor)
 | 
			
		||||
          Click "Edit" on the profile you what to use with Linkit.
 | 
			
		||||
 | 
			
		||||
      3.2 Expand "Editor appearance" and go to "Toolbar".
 | 
			
		||||
 | 
			
		||||
          The button name is: video_filter
 | 
			
		||||
          For example if you have a toolbar with an array of buttons defined as
 | 
			
		||||
          follows:
 | 
			
		||||
 | 
			
		||||
          ['Bold','Italic']
 | 
			
		||||
 | 
			
		||||
          simply add the button somewhere in the array:
 | 
			
		||||
 | 
			
		||||
          ['Bold','Italic','video_filter']
 | 
			
		||||
 | 
			
		||||
          (remember the single quotes).
 | 
			
		||||
  3. Go to "Plugins" on the same page. Enable the video filter plugin.
 | 
			
		||||
 
 | 
			
		||||
@@ -7,25 +7,126 @@
 | 
			
		||||
    requires : [],
 | 
			
		||||
 | 
			
		||||
    init: function(editor) {
 | 
			
		||||
 | 
			
		||||
      // Add Button
 | 
			
		||||
      editor.ui.addButton('video_filter', {
 | 
			
		||||
        label: 'Video filter',
 | 
			
		||||
        command: 'video_filter',
 | 
			
		||||
        icon: this.path + 'video_filter.png'
 | 
			
		||||
      });
 | 
			
		||||
      // Add Command
 | 
			
		||||
      editor.addCommand('video_filter', {
 | 
			
		||||
        exec : function () {
 | 
			
		||||
          var path = (Drupal.settings.video_filter.url.wysiwyg_ckeditor) ? Drupal.settings.video_filter.url.wysiwyg_ckeditor : Drupal.settings.video_filter.url.ckeditor
 | 
			
		||||
          var media = window.showModalDialog(path, { 'opener' : window, 'editorname' : editor.name }, "dialogWidth:580px; dialogHeight:480px; center:yes; resizable:yes; help:no;");
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      // Register an extra fucntion, this will be used in the popup.
 | 
			
		||||
      editor._.video_filterFnNum = CKEDITOR.tools.addFunction(insert, editor);
 | 
			
		||||
      if(typeof window.showModalDialog !== 'undefined') {
 | 
			
		||||
        editor.addCommand('video_filter', {
 | 
			
		||||
          exec : function () {
 | 
			
		||||
            var path = (Drupal.settings.video_filter.url.wysiwyg_ckeditor) ? Drupal.settings.video_filter.url.wysiwyg_ckeditor : Drupal.settings.video_filter.url.ckeditor
 | 
			
		||||
            var media = window.showModalDialog(path, { 'opener' : window, 'editorname' : editor.name }, "dialogWidth:580px; dialogHeight:480px; center:yes; resizable:yes; help:no;");
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // Register an extra function, this will be used in the popup.
 | 
			
		||||
        editor._.video_filterFnNum = CKEDITOR.tools.addFunction(insert, editor);
 | 
			
		||||
      }
 | 
			
		||||
      else {
 | 
			
		||||
        editor.addCommand('video_filter', new CKEDITOR.dialogCommand('video_filterDialog'));
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  CKEDITOR.dialog.add('video_filterDialog', function( editor ) {
 | 
			
		||||
    var instructions_path = Drupal.settings.video_filter.instructions_url;
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
      title : 'Add Video',
 | 
			
		||||
      minWidth : 600,
 | 
			
		||||
      minHeight : 180,
 | 
			
		||||
      contents : [{
 | 
			
		||||
        id : 'general',
 | 
			
		||||
        label : 'Settings',
 | 
			
		||||
        elements : [
 | 
			
		||||
          {
 | 
			
		||||
            type : 'text',
 | 
			
		||||
            id : 'file_url',
 | 
			
		||||
            label : 'URL',
 | 
			
		||||
            validate : CKEDITOR.dialog.validate.notEmpty( 'The link must have a URL.' ),
 | 
			
		||||
            required : true,
 | 
			
		||||
            commit : function( data )
 | 
			
		||||
            {
 | 
			
		||||
              data.file_url = this.getValue();
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            type : 'text',
 | 
			
		||||
            id : 'width',
 | 
			
		||||
            label : 'Width',
 | 
			
		||||
            commit : function( data )
 | 
			
		||||
            {
 | 
			
		||||
              data.width = this.getValue();
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            type : 'text',
 | 
			
		||||
            id : 'height',
 | 
			
		||||
            label : 'Height',
 | 
			
		||||
            commit : function( data )
 | 
			
		||||
            {
 | 
			
		||||
              data.height = this.getValue();
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            type : 'select',
 | 
			
		||||
            id : 'align',
 | 
			
		||||
            label : 'Align',
 | 
			
		||||
            'default': 'none',
 | 
			
		||||
            items: [
 | 
			
		||||
              ['None', ''],
 | 
			
		||||
              ['Left', 'left'],
 | 
			
		||||
              ['Right', 'right'],
 | 
			
		||||
              ['Center', 'center']
 | 
			
		||||
            ],
 | 
			
		||||
            commit : function( data )
 | 
			
		||||
            {
 | 
			
		||||
              data.align = this.getValue();
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            type : 'checkbox',
 | 
			
		||||
            id : 'autoplay',
 | 
			
		||||
            label : 'Autoplay',
 | 
			
		||||
            'default': '',
 | 
			
		||||
            commit : function( data )
 | 
			
		||||
            {
 | 
			
		||||
              data.autoplay = this.getValue() ? 1 : 0;
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
              type: 'html',
 | 
			
		||||
              html: '<iframe src="' + instructions_path + '" style="width:100%; height: 200px;"></iframe>',
 | 
			
		||||
          },
 | 
			
		||||
        ]
 | 
			
		||||
      }],
 | 
			
		||||
      onOk : function()
 | 
			
		||||
      {
 | 
			
		||||
        var dialog = this,
 | 
			
		||||
          data = {},
 | 
			
		||||
          link = editor.document.createElement( 'p' );
 | 
			
		||||
        this.commitContent( data );
 | 
			
		||||
        var str = '[video:' + data.file_url;
 | 
			
		||||
        if (data.width) {
 | 
			
		||||
          str += ' width:' + data.width;
 | 
			
		||||
        }
 | 
			
		||||
        if (data.height) {
 | 
			
		||||
          str += ' height:' + data.height;
 | 
			
		||||
        }
 | 
			
		||||
        if (data.align) {
 | 
			
		||||
          str += ' align:' + data.align;
 | 
			
		||||
        }
 | 
			
		||||
        if (data.autoplay) {
 | 
			
		||||
          str += ' autoplay:' + data.autoplay;
 | 
			
		||||
        }
 | 
			
		||||
        str += ']';
 | 
			
		||||
        link.setHtml( str );
 | 
			
		||||
        editor.insertElement( link );
 | 
			
		||||
      }
 | 
			
		||||
    };
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  function insert(params, editor) {
 | 
			
		||||
@@ -49,6 +150,9 @@
 | 
			
		||||
    if (params.autoplay) {
 | 
			
		||||
      str += ' autoplay:' + params.autoplay;
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      str += ' autoplay:' + '0';
 | 
			
		||||
    }
 | 
			
		||||
    str += ']';
 | 
			
		||||
 | 
			
		||||
    for (var i = 0, len = ranges.length; i < len; i++) {
 | 
			
		||||
 
 | 
			
		||||
@@ -43,6 +43,9 @@ function Ok() {
 | 
			
		||||
    if ($('#edit-autoplay').is(':checked')) {
 | 
			
		||||
      str += ' autoplay:' + $('#edit-autoplay').val();
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      str += ' autoplay:' + '0';
 | 
			
		||||
    }
 | 
			
		||||
    str += ']';
 | 
			
		||||
 | 
			
		||||
    oEditor.FCKUndo.SaveUndoStep();
 | 
			
		||||
 
 | 
			
		||||
@@ -34,6 +34,9 @@ video_filter_dialog = {
 | 
			
		||||
      if ($('#edit-autoplay').is(':checked')) {
 | 
			
		||||
        str += ' autoplay:' + $('#edit-autoplay').val();
 | 
			
		||||
      }
 | 
			
		||||
      else {
 | 
			
		||||
        str += ' autoplay:' + '0';
 | 
			
		||||
      }
 | 
			
		||||
      str += ']';
 | 
			
		||||
 | 
			
		||||
      ed.execCommand('mceInsertContent', false, str);
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,70 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file
 | 
			
		||||
 * Hooks provided by the Video Filter module.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Defines video codecs and callbacks.
 | 
			
		||||
 *
 | 
			
		||||
 * @return array
 | 
			
		||||
 *   A video codec described as an associative array that may contain the
 | 
			
		||||
 *   following key-value pairs:
 | 
			
		||||
 *   - name: Required. A name for the codec.
 | 
			
		||||
 *   - sample_url: Required. An example of a URL the codec can handle.
 | 
			
		||||
 *   - callback: The function to call to generate embed code for the codec.
 | 
			
		||||
 *     Either this or html5_callback must be specified.
 | 
			
		||||
 *   - html5_callback: The function to call to generate device agnostic, HTML5
 | 
			
		||||
 *     embed code for the codec. Either this or callback must be specified.
 | 
			
		||||
 *   - instructions: Instructions for using the codec, to be displayed on the
 | 
			
		||||
 *     "Compse tips" page at filter/tips.
 | 
			
		||||
 *   - regexp: Required. A regular expression describing URLs the codec can
 | 
			
		||||
 *     handle. Multiple regular expressions may be supplied as an array.
 | 
			
		||||
 *     $video['codec']['delta'] will be set to the key of the match.
 | 
			
		||||
 *   - ratio: Required. A ratio for resizing the video within the dimensions
 | 
			
		||||
 *     optionally supplied in the token, expressed as height / width.
 | 
			
		||||
 *   - control_bar_height: The pixel height of the video player control bar, if
 | 
			
		||||
 *     applicable.
 | 
			
		||||
 */
 | 
			
		||||
function hook_codec_info() {
 | 
			
		||||
  $codecs = array();
 | 
			
		||||
 | 
			
		||||
  $codecs['minimal_example'] = array(
 | 
			
		||||
    'name' => t('Minimal Example'),
 | 
			
		||||
    'sample_url' => 'http://minimal.example.com/uN1qUeId',
 | 
			
		||||
    'callback' => 'MODULE_minimal_example',
 | 
			
		||||
    'regexp' => '/minimal\.example\.com\/([a-z0-9\-_]+)/i',
 | 
			
		||||
    'ratio' => 4 / 3,
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  $codecs['complete_example'] = array(
 | 
			
		||||
    'name' => t('Complete Example'),
 | 
			
		||||
    'sample_url' => 'http://complete.example.com/username/uN1qUeId',
 | 
			
		||||
    'callback' => 'MODULE_complete_example',
 | 
			
		||||
    'html5_callback' => 'MODULE_complete_example_html5',
 | 
			
		||||
    'instructions' => t('Your Complete Example username can be the first URL argument or a sub-subdomain.'),
 | 
			
		||||
    'regexp' => array(
 | 
			
		||||
      '/complete\.example\.com\/([a-z0-9\-_]+)\/([a-z0-9\-_]+)/i',
 | 
			
		||||
      '/([a-z0-9\-_]+)\.complete\.example\.com\/([a-z0-9\-_]+)/i',
 | 
			
		||||
    ),
 | 
			
		||||
    'ratio' => 4 / 3,
 | 
			
		||||
    'control_bar_height' => 25,
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  return $codecs;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Alters the codecs available to Video Filter.
 | 
			
		||||
 *
 | 
			
		||||
 * @param array $codecs
 | 
			
		||||
 */
 | 
			
		||||
function hook_video_filter_codec_info_alter(&$codecs) {}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Alters a video's attributes previous to rendering.
 | 
			
		||||
 *
 | 
			
		||||
 * @param array $video
 | 
			
		||||
 */
 | 
			
		||||
function hook_video_filter_video_alter(&$video) {}
 | 
			
		||||
@@ -34,6 +34,15 @@ function video_filter_codec_info() {
 | 
			
		||||
    'control_bar_height' => 30,
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  $codecs['candidcareer'] = array(
 | 
			
		||||
    'name' => t('Candid Career'),
 | 
			
		||||
    'sample_url' => 'https://www.candidcareer.com/embed.php?vkey=ed5fdd900a274930252f&shared=CandidCareer&uid=30',
 | 
			
		||||
    'callback' => 'video_filter_candidcareer',
 | 
			
		||||
    'regexp' => '/candidcareer\.com\/embed\.php\?vkey=([a-zA-Z0-9\-_&;]+)shared=([a-zA-Z0-9\-_&;]+)uid=([a-zA-Z0-9\-_&;]+)/',
 | 
			
		||||
    'ratio' => 16 / 9,
 | 
			
		||||
    'control_bar_height' => 20,
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  $codecs['capped'] = array(
 | 
			
		||||
    'name' => t('Capped'),
 | 
			
		||||
    'sample_url' => 'http://capped.tv/playeralt.php?vid=some-title',
 | 
			
		||||
@@ -196,7 +205,7 @@ function video_filter_codec_info() {
 | 
			
		||||
    'sample_url' => 'http://wistia.com/medias/9pj9n6ftlk',
 | 
			
		||||
    'callback' => 'video_filter_wistia_html5',
 | 
			
		||||
    'html5_callback' => 'video_filter_wistia_html5',
 | 
			
		||||
    'regexp' => '@https?://(.+\.)?(wistia\.com|wi\.st)/((m|medias|projects)|embed/(iframe|playlists))/([a-zA-Z0-9]+)@',
 | 
			
		||||
    'regexp' => '@https?://(.+\.)?(wistia\.(com|net)|wi\.st)/((m|medias|projects)|embed/(iframe|playlists))/([a-zA-Z0-9]+)@',
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  $codecs['youtube'] = array(
 | 
			
		||||
@@ -205,9 +214,10 @@ function video_filter_codec_info() {
 | 
			
		||||
    'callback' => 'video_filter_youtube',
 | 
			
		||||
    'html5_callback' => 'video_filter_youtube_html5',
 | 
			
		||||
    'regexp' => array(
 | 
			
		||||
      '/youtube\.com\/watch\?v=([a-z0-9\-_]+)/i',
 | 
			
		||||
      '/youtube\.com\/watch\?.*?v=([a-z0-9\-_]+)/i',
 | 
			
		||||
      '/youtu.be\/([a-z0-9\-_]+)/i',
 | 
			
		||||
      '/youtube\.com\/v\/([a-z0-9\-_]+)/i',
 | 
			
		||||
      '/youtube\.com\/embed\/([a-z0-9\-_]+)/i',
 | 
			
		||||
    ),
 | 
			
		||||
    'ratio' => 16 / 9,
 | 
			
		||||
    'control_bar_height' => 25,
 | 
			
		||||
@@ -233,7 +243,7 @@ function video_filter_codec_info() {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_archive($video) {
 | 
			
		||||
  $video['source'] = 'http://www.archive.org/embed/' . $video['codec']['matches'][1];
 | 
			
		||||
  $video['source'] = '//www.archive.org/embed/' . $video['codec']['matches'][1];
 | 
			
		||||
 | 
			
		||||
  return video_filter_iframe($video);
 | 
			
		||||
}
 | 
			
		||||
@@ -290,7 +300,7 @@ function video_filter_bliptv($video) {
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  $video['source'] = 'http://blip.tv/play/' . $id;
 | 
			
		||||
  $video['source'] = '//blip.tv/play/' . $id;
 | 
			
		||||
  $params = array(
 | 
			
		||||
    'allowscriptaccess' => 'always',
 | 
			
		||||
  );
 | 
			
		||||
@@ -298,13 +308,27 @@ function video_filter_bliptv($video) {
 | 
			
		||||
  return video_filter_flash($video, $params);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Callback for Candid Career codec.
 | 
			
		||||
 *
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_candidcareer($video) {
 | 
			
		||||
  // Their urls contain & symbols which Drupal is encoding, so decode those.
 | 
			
		||||
  $decoded = decode_entities($video['codec']['matches'][0]);
 | 
			
		||||
  $video['source'] = '//' . $decoded;
 | 
			
		||||
  $video['attributes']['marginwidth'] = 0;
 | 
			
		||||
  $video['attributes']['marginheight'] = 0;
 | 
			
		||||
  return video_filter_iframe($video);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Callback for Capped codec.
 | 
			
		||||
 *
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_capped($video) {
 | 
			
		||||
  $video['source'] = 'http://capped.micksam7.com/playeralt.swf?vid=' . $video['codec']['matches'][1];
 | 
			
		||||
  $video['source'] = '//capped.micksam7.com/playeralt.swf?vid=' . $video['codec']['matches'][1];
 | 
			
		||||
 | 
			
		||||
  return video_filter_flash($video);
 | 
			
		||||
}
 | 
			
		||||
@@ -315,7 +339,7 @@ function video_filter_capped($video) {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_collegehumor($video) {
 | 
			
		||||
  $video['source'] = 'http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=' . $video['codec']['matches'][1] . '&fullscreen=1';
 | 
			
		||||
  $video['source'] = '//www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=' . $video['codec']['matches'][1] . '&fullscreen=1';
 | 
			
		||||
 | 
			
		||||
  return video_filter_flash($video);
 | 
			
		||||
}
 | 
			
		||||
@@ -326,7 +350,7 @@ function video_filter_collegehumor($video) {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_dailymotion($video) {
 | 
			
		||||
  $video['source'] = 'http://www.dailymotion.com/swf/' . $video['codec']['matches'][1];
 | 
			
		||||
  $video['source'] = '//www.dailymotion.com/swf/' . $video['codec']['matches'][1];
 | 
			
		||||
 | 
			
		||||
  return video_filter_flash($video);
 | 
			
		||||
}
 | 
			
		||||
@@ -354,7 +378,7 @@ function video_filter_flickr_slideshows($video) {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_flickr_video($video) {
 | 
			
		||||
  $video['source'] = 'http://www.flickr.com/apps/video/stewart.swf?v=1.161';
 | 
			
		||||
  $video['source'] = '//www.flickr.com/apps/video/stewart.swf?v=1.161';
 | 
			
		||||
 | 
			
		||||
  $params['flashvars'] = '&photo_id=' . $video['codec']['matches'][2] . '&flickr_show_info_box=true';
 | 
			
		||||
 | 
			
		||||
@@ -373,7 +397,7 @@ function video_filter_gametrailers($video) {
 | 
			
		||||
  elseif (is_numeric($video['codec']['matches'][2])) {
 | 
			
		||||
    $match = $video['codec']['matches'][2];
 | 
			
		||||
  }
 | 
			
		||||
  $video['source'] = 'http://media.mtvnservices.com/embed/mgid:moses:video:gametrailers.com:' . $match;
 | 
			
		||||
  $video['source'] = '//media.mtvnservices.com/embed/mgid:moses:video:gametrailers.com:' . $match;
 | 
			
		||||
 | 
			
		||||
  return video_filter_iframe($video);
 | 
			
		||||
}
 | 
			
		||||
@@ -384,7 +408,7 @@ function video_filter_gametrailers($video) {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_gamevideos($video) {
 | 
			
		||||
  $video['source'] = 'http://gamevideos.1up.com/swf/gamevideos12.swf?embedded=1&fullscreen=1&autoplay=0&src=http://gamevideos.1up.com/do/videoListXML%3Fid%3D' . $video['codec']['matches'][1];
 | 
			
		||||
  $video['source'] = '//gamevideos.1up.com/swf/gamevideos12.swf?embedded=1&fullscreen=1&autoplay=0&src=http://gamevideos.1up.com/do/videoListXML%3Fid%3D' . $video['codec']['matches'][1];
 | 
			
		||||
 | 
			
		||||
  return video_filter_flash($video);
 | 
			
		||||
}
 | 
			
		||||
@@ -395,7 +419,7 @@ function video_filter_gamevideos($video) {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_godtube($video) {
 | 
			
		||||
  $video['source'] = 'http://www.godtube.com/embed/watch/' . $video['codec']['matches'][1];
 | 
			
		||||
  $video['source'] = '//www.godtube.com/embed/watch/' . $video['codec']['matches'][1];
 | 
			
		||||
 | 
			
		||||
  return video_filter_iframe($video);
 | 
			
		||||
}
 | 
			
		||||
@@ -406,7 +430,7 @@ function video_filter_godtube($video) {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_google($video) {
 | 
			
		||||
  $video['source'] = 'http://video.google.com/googleplayer.swf?docId=' . $video['codec']['matches'][1];
 | 
			
		||||
  $video['source'] = '//video.google.com/googleplayer.swf?docId=' . $video['codec']['matches'][1];
 | 
			
		||||
 | 
			
		||||
  return video_filter_flash($video);
 | 
			
		||||
}
 | 
			
		||||
@@ -417,7 +441,7 @@ function video_filter_google($video) {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_metacafe($video) {
 | 
			
		||||
  $video['source'] = 'http://metacafe.com/fplayer/' . $video['codec']['matches'][1] . '/' . $video['codec']['matches'][2] . '.swf';
 | 
			
		||||
  $video['source'] = '//metacafe.com/fplayer/' . $video['codec']['matches'][1] . '/' . $video['codec']['matches'][2] . '.swf';
 | 
			
		||||
 | 
			
		||||
  return video_filter_flash($video);
 | 
			
		||||
}
 | 
			
		||||
@@ -430,7 +454,7 @@ function video_filter_metacafe($video) {
 | 
			
		||||
function video_filter_myspace($video) {
 | 
			
		||||
  // The last match is the ID we need.
 | 
			
		||||
  $last = count($video['codec']['matches']);
 | 
			
		||||
  $video['source'] = 'http://mediaservices.myspace.com/services/media/embed.aspx/m=' . $video['codec']['matches'][$last - 1];
 | 
			
		||||
  $video['source'] = '//mediaservices.myspace.com/services/media/embed.aspx/m=' . $video['codec']['matches'][$last - 1];
 | 
			
		||||
 | 
			
		||||
  return video_filter_flash($video, $params);
 | 
			
		||||
}
 | 
			
		||||
@@ -441,7 +465,7 @@ function video_filter_myspace($video) {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_picasa_slideshows($video) {
 | 
			
		||||
  $video['source'] = 'http://picasaweb.google.com/s/c/bin/slideshow.swf';
 | 
			
		||||
  $video['source'] = '//picasaweb.google.com/s/c/bin/slideshow.swf';
 | 
			
		||||
 | 
			
		||||
  $user_name = $video['codec']['matches'][1];
 | 
			
		||||
  $set_id = $video['codec']['matches'][2];
 | 
			
		||||
@@ -457,7 +481,7 @@ function video_filter_picasa_slideshows($video) {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_slideshare($video) {
 | 
			
		||||
  $video['source'] = 'http://www.slideshare.net/slideshow/embed_code/' . $video['codec']['matches'][1];
 | 
			
		||||
  $video['source'] = '//www.slideshare.net/slideshow/embed_code/' . $video['codec']['matches'][1];
 | 
			
		||||
 | 
			
		||||
  return video_filter_iframe($video);
 | 
			
		||||
}
 | 
			
		||||
@@ -468,7 +492,7 @@ function video_filter_slideshare($video) {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_streamhoster($video) {
 | 
			
		||||
  $video['source'] = 'http://public.streamhoster.com/Resources/Flash/JWFLVMediaPlayer/mediaplayer.swf';
 | 
			
		||||
  $video['source'] = '//public.streamhoster.com/Resources/Flash/JWFLVMediaPlayer/mediaplayer.swf';
 | 
			
		||||
 | 
			
		||||
  $params = array('allowscriptaccess' => 'always');
 | 
			
		||||
  $protocol = $video['codec']['matches'][1];
 | 
			
		||||
@@ -496,7 +520,7 @@ function video_filter_streamhoster($video) {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_teachertube($video) {
 | 
			
		||||
  $video['source'] = 'http://www.teachertube.com/embed/player.swf';
 | 
			
		||||
  $video['source'] = '//www.teachertube.com/embed/player.swf';
 | 
			
		||||
 | 
			
		||||
  $params['flashvars'] = 'file=http://www.teachertube.com/embedFLV.php?pg=video_' . $video['codec']['matches'][1] . '&menu=false&frontcolor=ffffff&lightcolor=FF0000&logo=http://www.teachertube.com/www3/images/greylogo.swf&skin=http://www.teachertube.com/embed/overlay.swf&volume=80&controlbar=over&displayclick=link&viral.link=http://www.teachertube.com/viewVideo.php?video_id=' . $video['codec']['matches'][1] . '&stretching=exactfit&plugins=viral-2&viral.callout=none&viral.onpause=false';
 | 
			
		||||
 | 
			
		||||
@@ -509,7 +533,7 @@ function video_filter_teachertube($video) {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_vimeo($video) {
 | 
			
		||||
  $video['source'] = 'http://www.vimeo.com/moogaloop.swf?clip_id=' . $video['codec']['matches'][1] . '&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=&autoplay=' . $video['autoplay'];
 | 
			
		||||
  $video['source'] = '//www.vimeo.com/moogaloop.swf?clip_id=' . $video['codec']['matches'][1] . '&server=www.vimeo.com&fullscreen=1&show_title=1&show_byline=1&show_portrait=0&color=&autoplay=' . $video['autoplay'];
 | 
			
		||||
 | 
			
		||||
  return video_filter_flash($video);
 | 
			
		||||
}
 | 
			
		||||
@@ -520,7 +544,7 @@ function video_filter_vimeo($video) {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_vimeo_html5($video) {
 | 
			
		||||
  $video['source'] = 'http://player.vimeo.com/video/' . $video['codec']['matches'][1] . ($video['autoplay'] ? '?autoplay=1' : '');
 | 
			
		||||
  $video['source'] = '//player.vimeo.com/video/' . $video['codec']['matches'][1] . ($video['autoplay'] ? '?autoplay=1' : '');
 | 
			
		||||
 | 
			
		||||
  return video_filter_iframe($video);
 | 
			
		||||
}
 | 
			
		||||
@@ -537,7 +561,7 @@ function video_filter_youtube($video) {
 | 
			
		||||
    'fs' => 'fs=1',
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  $video['source'] = 'http://www.youtube.com/v/' . $video['codec']['matches'][1] . '?' . implode('&', $attributes);
 | 
			
		||||
  $video['source'] = '//www.youtube.com/v/' . $video['codec']['matches'][1] . '?' . implode('&', $attributes);
 | 
			
		||||
 | 
			
		||||
  $params['wmode'] = 'opaque';
 | 
			
		||||
 | 
			
		||||
@@ -551,11 +575,12 @@ function video_filter_youtube($video) {
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_youtube_html5($video) {
 | 
			
		||||
  $attributes = array(
 | 
			
		||||
    'html5' => 'html5=1',
 | 
			
		||||
    'rel' => $video['related'] ? 'rel=1' : 'rel=0',
 | 
			
		||||
    'autoplay' => $video['autoplay'] ? 'autoplay=1' : 'autoplay=0',
 | 
			
		||||
    'wmode' => 'wmode=opaque',
 | 
			
		||||
  );
 | 
			
		||||
  $video['source'] = 'http://www.youtube.com/embed/' . $video['codec']['matches'][1] . '?' . implode('&', $attributes);
 | 
			
		||||
  $video['source'] = '//www.youtube.com/embed/' . $video['codec']['matches'][1] . '?' . implode('&', $attributes);
 | 
			
		||||
 | 
			
		||||
  return video_filter_iframe($video);
 | 
			
		||||
}
 | 
			
		||||
@@ -571,7 +596,7 @@ function video_filter_youtube_playlist_html5($video) {
 | 
			
		||||
    'autoplay' => $video['autoplay'] ? 'autoplay=1' : 'autoplay=0',
 | 
			
		||||
    'wmode' => 'wmode=opaque',
 | 
			
		||||
  );
 | 
			
		||||
  $video['source'] = 'http://www.youtube.com/embed/videoseries?list=' . $video['codec']['matches'][1] . '&' . implode('&', $attributes);
 | 
			
		||||
  $video['source'] = '//www.youtube.com/embed/videoseries?list=' . $video['codec']['matches'][1] . '&' . implode('&', $attributes);
 | 
			
		||||
 | 
			
		||||
  return video_filter_iframe($video);
 | 
			
		||||
}
 | 
			
		||||
@@ -584,9 +609,9 @@ function video_filter_youtube_playlist_html5($video) {
 | 
			
		||||
 * @see video_filter_codec_info()
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_wistia_html5($video) {
 | 
			
		||||
  $video_code = $video['codec']['matches'][6];
 | 
			
		||||
  $video_code = $video['codec']['matches'][7];
 | 
			
		||||
  $matches = $video['codec']['matches'];
 | 
			
		||||
  $embed_type = ($matches[3] == 'projects' || $matches[5] == 'playlists') ? 'playlists' : 'iframe';
 | 
			
		||||
  $embed_type = ($matches[4] == 'projects' || $matches[6] == 'playlists') ? 'playlists' : 'iframe';
 | 
			
		||||
 | 
			
		||||
  // Get embed code via oEmbed.
 | 
			
		||||
  $endpoint = 'http://fast.wistia.com/oembed';
 | 
			
		||||
@@ -599,12 +624,12 @@ function video_filter_wistia_html5($video) {
 | 
			
		||||
  $html = $data['html'];
 | 
			
		||||
 | 
			
		||||
  // See if the video source is already an iframe src.
 | 
			
		||||
  $pattern = '@https?://fast.wistia.com/embed/(iframe|playlists)/[a-zA-Z0-9]+\?+.+@';
 | 
			
		||||
  $pattern = '@https?://fast.wistia.(com|net)/embed/(iframe|playlists)/[a-zA-Z0-9]+\?+.+@';
 | 
			
		||||
  $matches = array();
 | 
			
		||||
  if (preg_match($pattern, $video['source'], $matches)) {
 | 
			
		||||
    // Replace the oEmbed iframe src with that provided in the token, in order
 | 
			
		||||
    // to support embed builder URLs.
 | 
			
		||||
    $pattern = '@https?://fast.wistia.com/embed/(iframe|playlists)/[a-zA-Z0-9]+\?[^"]+@';
 | 
			
		||||
    $pattern = '@https?://fast.wistia.(com|net)/embed/(iframe|playlists)/[a-zA-Z0-9]+\?[^"]+@';
 | 
			
		||||
    $replacement = $matches[0];
 | 
			
		||||
    $html = preg_replace($pattern, $replacement, $html);
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -5,9 +5,9 @@ package = Input filters
 | 
			
		||||
 | 
			
		||||
stylesheets[all][] = video_filter.css
 | 
			
		||||
 | 
			
		||||
; Information added by drupal.org packaging script on 2012-11-14
 | 
			
		||||
version = "7.x-3.1"
 | 
			
		||||
; Information added by Drupal.org packaging script on 2015-09-24
 | 
			
		||||
version = "7.x-3.1+17-dev"
 | 
			
		||||
core = "7.x"
 | 
			
		||||
project = "video_filter"
 | 
			
		||||
datestamp = "1352915891"
 | 
			
		||||
datestamp = "1443119944"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -284,9 +284,14 @@ function theme_video_filter_flash($variables) {
 | 
			
		||||
 | 
			
		||||
  $classes = video_filter_get_classes($video);
 | 
			
		||||
 | 
			
		||||
  $output .= '<object class="' . implode(' ', $classes) . '" type="application/x-shockwave-flash" ';
 | 
			
		||||
  $attributes = '';
 | 
			
		||||
  if (!empty($video['attributes'])) {
 | 
			
		||||
    $attributes = drupal_attributes($video['attributes']);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  $output .= 'width="' . $video['width'] . '" height="' . $video['height'] . '" data="' . $video['source'] . '">' . "\n";
 | 
			
		||||
  $output .= '<div class="video-filter"><object class="' . implode(' ', $classes) . '" type="application/x-shockwave-flash" ';
 | 
			
		||||
 | 
			
		||||
  $output .= 'width="' . $video['width'] . '" height="' . $video['height'] . '" data="' . $video['source'] . '" ' . $attributes . '>' . "\n";
 | 
			
		||||
 | 
			
		||||
  $defaults = array(
 | 
			
		||||
    'movie' => $video['source'],
 | 
			
		||||
@@ -300,7 +305,7 @@ function theme_video_filter_flash($variables) {
 | 
			
		||||
    $output .= '  <param name="' . $name . '" value="' . $value . '" />' . "\n";
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  $output .= '</object>' . "\n";
 | 
			
		||||
  $output .= '</object></div>' . "\n";
 | 
			
		||||
 | 
			
		||||
  return $output;
 | 
			
		||||
}
 | 
			
		||||
@@ -312,10 +317,13 @@ function theme_video_filter_flash($variables) {
 | 
			
		||||
 */
 | 
			
		||||
function theme_video_filter_iframe($variables) {
 | 
			
		||||
  $video = $variables['video'];
 | 
			
		||||
 | 
			
		||||
  $classes = video_filter_get_classes($video);
 | 
			
		||||
  $attributes = '';
 | 
			
		||||
  if (!empty($video['attributes'])) {
 | 
			
		||||
    $attributes = drupal_attributes($video['attributes']);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  $output = '<iframe src="' . $video['source'] . '" width="' . $video['width'] . '" height="' . $video['height'] . '" class="' . implode(' ', $classes) . '" frameborder="0"></iframe>';
 | 
			
		||||
  $output = '<div class="video-filter"><iframe src="' . $video['source'] . '" width="' . $video['width'] . '" height="' . $video['height'] . '" class="' . implode(' ', $classes) . '" frameborder="0"' . $attributes . '></iframe></div>';
 | 
			
		||||
 | 
			
		||||
  return $output;
 | 
			
		||||
}
 | 
			
		||||
@@ -378,6 +386,15 @@ function video_filter_menu() {
 | 
			
		||||
    'theme callback' => '_video_filter_dashboard_theme',
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  $items['video_filter/instructions'] = array(
 | 
			
		||||
    'title' => 'Videofilter instructions',
 | 
			
		||||
    'description' => 'instructions',
 | 
			
		||||
    'page callback' => 'video_filter_instructions_page',
 | 
			
		||||
    'access arguments' => array('access content'),
 | 
			
		||||
    'type' => MENU_CALLBACK,
 | 
			
		||||
    'theme callback' => '_video_filter_dashboard_theme',
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  return $items;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -432,7 +449,19 @@ function video_filter_dashboard_page($editor) {
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  print theme('video_filter_dashboard', array('form' => render(drupal_get_form('_video_filter_form'))));
 | 
			
		||||
  $form = drupal_get_form('_video_filter_form');
 | 
			
		||||
  print theme('video_filter_dashboard', array('form' => render($form)));
 | 
			
		||||
  exit();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Creates the instructions page.
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_instructions_page() {
 | 
			
		||||
  module_invoke('admin_menu', 'suppress');
 | 
			
		||||
 | 
			
		||||
  $form = drupal_get_form('_video_filter_instructions_form');
 | 
			
		||||
  print theme('video_filter_dashboard', array('form' => render($form)));
 | 
			
		||||
  exit();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -492,6 +521,25 @@ function _video_filter_form() {
 | 
			
		||||
    '#weight' => 5,
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  $form += _video_filter_instructions_form();
 | 
			
		||||
 | 
			
		||||
  $form['cancel'] = array(
 | 
			
		||||
    '#type' => 'button',
 | 
			
		||||
    '#value' => t('Cancel'),
 | 
			
		||||
    '#weight' => 98,
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  $form['insert'] = array(
 | 
			
		||||
    '#type' => 'button',
 | 
			
		||||
    '#value' => t('Insert'),
 | 
			
		||||
    '#weight' => 99,
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  return $form;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function _video_filter_instructions_form() {
 | 
			
		||||
 | 
			
		||||
  $form['instructions'] = array(
 | 
			
		||||
    '#type' => 'fieldset',
 | 
			
		||||
    '#title' => t('Instructions'),
 | 
			
		||||
@@ -509,21 +557,28 @@ function _video_filter_form() {
 | 
			
		||||
    '#markup' => $text,
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  $form['cancel'] = array(
 | 
			
		||||
    '#type' => 'button',
 | 
			
		||||
    '#value' => t('Cancel'),
 | 
			
		||||
    '#weight' => 98,
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  $form['insert'] = array(
 | 
			
		||||
    '#type' => 'button',
 | 
			
		||||
    '#value' => t('Insert'),
 | 
			
		||||
    '#weight' => 99,
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  return $form;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Implements hook_ckeditor_plugin().
 | 
			
		||||
 */
 | 
			
		||||
function video_filter_ckeditor_plugin() {
 | 
			
		||||
  $plugins = array();
 | 
			
		||||
  $plugins['video_filter'] = array(
 | 
			
		||||
    'name' => 'video_filter',
 | 
			
		||||
    'desc' => t('Plugin to directly embed videos with the video filter module.'),
 | 
			
		||||
    'path' => drupal_get_path('module', 'video_filter') . '/editors/ckeditor/',
 | 
			
		||||
    'buttons' => array(
 | 
			
		||||
      'video_filter' => array(
 | 
			
		||||
        'label' => t('Video filter'),
 | 
			
		||||
        'icon' => 'video_filter.png',
 | 
			
		||||
      ),
 | 
			
		||||
    ),
 | 
			
		||||
  );
 | 
			
		||||
  return $plugins;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function video_filter_wysiwyg_plugin($editor, $version) {
 | 
			
		||||
  _video_filter_add_settings('wysiwyg_' . $editor);
 | 
			
		||||
 | 
			
		||||
@@ -582,7 +637,10 @@ function _video_filter_add_settings($editor) {
 | 
			
		||||
 | 
			
		||||
    // Add popup url.
 | 
			
		||||
    $settings = array(
 | 
			
		||||
      'video_filter' => array('url' => array($editor => url('video_filter/dashboard/' . $editor))),
 | 
			
		||||
      'video_filter' => array(
 | 
			
		||||
        'url' => array($editor => url('video_filter/dashboard/' . $editor)),
 | 
			
		||||
        'instructions_url' => url('video_filter/instructions'),
 | 
			
		||||
      ),
 | 
			
		||||
    );
 | 
			
		||||
    drupal_add_js($settings, 'setting');
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user