'swfobject2_replace', 'module' => 'swfobject2', 'shared_file' => 'swfobject2/swfobject.js', 'title' => t('SWFObject 2 - JavaScript'), 'download' => 'http://code.google.com/p/swfobject/', ); return $methods; } /** * Implementation of swftools_embed hook * Returns the markup for the page, plus set necessary javascript. * * $methods and $vars should never be empty - unless the only reason for this call * is to push the javascript into the header of the page in which case you don't * add any paramters as all. This is useful for filtered nodes where the body is * not regenerated every time. */ function swfobject2_swftools_embed($action = 'add_js', $methods = FALSE, $vars = FALSE, $html_alt = '') { // Set flag to indicate if the javascript has been added to the header static $swfobject2_has_run; // Output javascript to the header to load the SWF Object code if (!$swfobject2_has_run) { // Add swfobject.js drupal_add_js(swftools_get_player_path() . '/swfobject2/swfobject.js'); $swfobject2_has_run = TRUE; if ($action == 'add_js') { // Exit early having put the javascript in the header. return; } } // Initialise a counter to give each div a unique id static $unique_id = 0; $unique_id++; // Construct a unique id for each div by using time() combined with $unique_id // This is necessary to prevent clashes between cached content $id = time() . $unique_id; // Anything in $vars->params will be output - we don't want src_path unset($vars->params['src_path']); // Unset flashvars string - we can use the array format and let drupal_to_js handle things unset($vars->params['flashvars']); // Generate js string ready for output to the page header // swfObject takes parameters swfURL, id, width, height, version, expressinstall, flashvars, params, attributes // At the moment expressInstall isn't enabled $swf_js = t('swfobject.embedSWF("!url", "!id", "!width", "!height", "!version", "", !flashvars, !params, !attributes);', array( '!url' => $vars->params['src'], '!id' => 'swfobject2-id-'. $id, '!width' => $vars->params['width'], '!height' => $vars->params['height'], '!version' => $vars->params['version'], '!flashvars' => drupal_to_js($vars->flashvars), '!params' => drupal_to_js($vars->params), '!attributes' => drupal_to_js(array('id' => 'swf'.$id)), )); // Generate the html markup ready to receive the substitution $html = '
' . "\n"; $html .= $html_alt . "\n"; $html .= '
' . "\n"; // Although SWF Object 2 recommends adding js to the page header that will prevent cached filters being used // So we add js to the page body in order that it gets cached too $html .= '' . "\n"; // Return html markup return $html; }