YouTube and Google Video as well as videos you host yourself, into WordPress. Credits: Owen Winkler for ButtonSnap and An-archos for help with WP 2.1+ & WPMU RTE button code Author: Viper007Bond Author URI: http://www.viper007bond.com/ */ # Nothing to see here! Please use the plugin's options page. class VipersVideoQuicktags { var $version = '4.0.0'; var $folder = 'wp-content/plugins/vipers_videoquicktags/'; // You shouldn't need to change this ;) var $fullfolderurl; var $settings = array(); var $defaultsettings = array(); // Initialization stuff function VipersVideoQuicktags() { $this->fullfolderurl = get_bloginfo('wpurl') . '/' . $this->folder; $this->defaultsettings = array( 'youtube' => array( 'button' => 'on', 'width' => '425', 'height' => '335', ), 'googlevideo' => array( 'button' => 'on', 'width' => '400', 'height' => '326', ), 'ifilm' => array( 'button' => NULL, 'width' => '448', 'height' => '365', ), 'metacafe' => array( 'button' => NULL, 'width' => '400', 'height' => '345', ), 'myspace' => array( 'button' => NULL, 'width' => '430', 'height' => '346', ), 'quicktime' => array( 'button' => 'on', ), 'videofile' => array( 'button' => 'on', ), 'flv' => array( 'button' => NULL, ), 'tinymce_linenumber' => 1, 'usewmp' => 'on', ); $this->settings = get_option('vvq_options'); if ( !is_array($this->settings['youtube']) ) { $this->settings = $this->defaultsettings; } // Load up the localization file if we're using WordPress in a different language // Place it in the "localization" folder and name it "vvq-[value in wp-config].mo" // A link to some localization files is location at the homepage of this plugin load_plugin_textdomain('vvq', $this->folder . 'localization'); // No sense in running the addbuttons() function if no buttons are to be displayed if ( TRUE === $this->anybuttons() ) add_action('init', array(&$this, 'addbuttons')); add_action('admin_menu', array(&$this, 'admin_menu')); add_action('admin_head', array(&$this, 'admin_head')); add_action('edit_form_advanced', array(&$this, 'edit_form')); add_action('edit_page_form', array(&$this, 'edit_form')); add_action('wp_head', array(&$this, 'wp_head')); add_filter('the_content', array(&$this, 'searchreplace'), 1); } // Checks to see if any buttons at all are to be displayed function anybuttons() { if ('on' == $this->settings['youtube']['button'] || 'on' == $this->settings['googlevideo']['button'] || 'on' == $this->settings['ifilm']['button'] || 'on' == $this->settings['metacafe']['button'] || 'on' == $this->settings['myspace']['button'] || 'on' == $this->settings['quicktime']['button'] || 'on' == $this->settings['videofile']['button'] || 'on' == $this->settings['flv']['button'] ) return TRUE; else return FALSE; } // Make our buttons on the write screens function addbuttons() { global $wp_db_version; // Don't bother doing this stuff if the current user lacks permissions if ( !current_user_can('edit_posts') && !current_user_can('edit_pages') ) return; // If WordPress 2.1+ (or WPMU?) and using TinyMCE, we need to insert the buttons differently if ( 3664 <= $wp_db_version && 'true' == get_user_option('rich_editing') ) { // Load and append TinyMCE external plugins add_filter('mce_plugins', array(&$this, 'mce_plugins')); if ( 1 >= $this->settings['tinymce_linenumber'] ) { add_filter('mce_buttons', array(&$this, 'mce_buttons')); } else { add_filter('mce_buttons_' . $this->settings['tinymce_linenumber'], array(&$this, 'mce_buttons')); } add_action('tinymce_before_init', array(&$this, 'tinymce_before_init')); add_action('admin_head', array(&$this, 'buttonhider')); } else { buttonsnap_separator(); if ( 'on' == $this->settings['youtube']['button'] ) buttonsnap_jsbutton($this->fullfolderurl . 'images/youtube.png', __('YouTube', 'vvq'), "VVQInsertVideoSite('" . __('YouTube', 'vvq') . "', 'http://www.youtube.com/watch?v=JzqumbhfxRo', 'youtube');"); if ( 'on' == $this->settings['googlevideo']['button'] ) buttonsnap_jsbutton($this->fullfolderurl . 'images/googlevideo.png', __('GVideo', 'vvq'), "VVQInsertVideoSite('" . __('Google Video', 'vvq') . "', 'http://video.google.com/videoplay?docid=3688185030664621355', 'googlevideo');"); if ( 'on' == $this->settings['ifilm']['button'] ) buttonsnap_jsbutton($this->fullfolderurl . 'images/ifilm.png', __('IFILM', 'vvq'), "VVQInsertVideoSite('" . __('IFILM', 'vvq') . "', 'http://www.ifilm.com/video/2710582', 'ifilm');"); if ( 'on' == $this->settings['metacafe']['button'] ) buttonsnap_jsbutton($this->fullfolderurl . 'images/metacafe.png', __('Metacafe', 'vvq'), "VVQInsertVideoSite('" . __('Metacafe', 'vvq') . "', 'http://www.metacafe.com/watch/299980/italian_police_lamborghini/', 'metacafe');"); if ( 'on' == $this->settings['myspace']['button'] ) buttonsnap_jsbutton($this->fullfolderurl . 'images/myspace.png', __('MySpace', 'vvq'), "VVQInsertVideoSite('" . __('MySpace', 'vvq') . "', 'http://vids.myspace.com/index.cfm?fuseaction=vids.individual&videoid=1387215221', 'myspace');"); if ( 'on' == $this->settings['quicktime']['button'] ) buttonsnap_jsbutton($this->fullfolderurl . 'images/quicktime.png', __('QT', 'vvq'), "VVQInsertVideoFile('" . __('Quicktime', 'vvq') . "', 'mov', 'quicktime');"); if ( 'on' == $this->settings['videofile']['button'] ) buttonsnap_jsbutton($this->fullfolderurl . 'images/videofile.png', __('Video File', 'vvq'), 'VVQInsertVideoFile();'); if ( 'on' == $this->settings['flv']['button'] ) buttonsnap_jsbutton($this->fullfolderurl . 'images/flv.png', __('FLV', 'vvq'), "VVQInsertVideoFile('" . __('FLV', 'vvq') . "', 'flv', 'flv');"); } } // Add buttons in WordPress v2.1+, thanks to An-archos function mce_plugins($plugins) { array_push($plugins, '-vipersvideoquicktags'); return $plugins; } function mce_buttons($buttons) { if ( 1 == $this->settings['tinymce_linenumber'] ) array_push($buttons, 'separator'); array_push($buttons, 'vipersvideoquicktags'); return $buttons; } function tinymce_before_init() { echo "tinyMCE.loadPlugin('vipersvideoquicktags', '" . $this->fullfolderurl . "resources/tinymce/');\n"; } // Hide buttons the user doesn't want to see in WP v2.1+ function buttonhider() { echo "\n"; } function admin_menu() { add_options_page(__("Viper's Video Quicktags Configuration", 'vvq'), str_replace(' ', ' ', __('Video Quicktags', 'vvq')), 'manage_options', basename(__FILE__), array(&$this, 'optionspage')); } // Handle form submit and add the Javascript file function admin_head() { if ( $_POST && basename(__FILE__) == $_GET['page'] ) { if ( $_POST['defaults'] ) { $this->settings = $this->defaultsettings; } else { $this->settings = array( 'youtube' => array( 'button' => $_POST['youtube']['button'], 'width' => (int) $_POST['youtube']['width'], 'height' => (int) $_POST['youtube']['height'], ), 'googlevideo' => array( 'button' => $_POST['googlevideo']['button'], 'width' => (int) $_POST['googlevideo']['width'], 'height' => (int) $_POST['googlevideo']['height'], ), 'ifilm' => array( 'button' => $_POST['ifilm']['button'], 'width' => (int) $_POST['ifilm']['width'], 'height' => (int) $_POST['ifilm']['height'], ), 'metacafe' => array( 'button' => $_POST['metacafe']['button'], 'width' => (int) $_POST['metacafe']['width'], 'height' => (int) $_POST['metacafe']['height'], ), 'myspace' => array( 'button' => $_POST['myspace']['button'], 'width' => (int) $_POST['myspace']['width'], 'height' => (int) $_POST['myspace']['height'], ), 'quicktime' => array( 'button' => $_POST['quicktime']['button'], ), 'videofile' => array( 'button' => $_POST['videofile']['button'], ), 'flv' => array( 'button' => $_POST['flv']['button'], ), 'tinymce_linenumber' => (int) $_POST['tinymce_linenumber'], 'usewmp' => $_POST['usewmp'], ); } update_option('vvq_options', $this->settings); } } // Outputs the needed Javascript (not in a .js file as it's dynamic) function edit_form() { ?>
' . __('Options reset to defaults.', 'vvq') . '
' . "\n"; elseif ($_POST) echo "\n" . '' . __('Options saved.') . '