From e4b937a92f94e94ac1e1e6cfa2c27ef68554114e Mon Sep 17 00:00:00 2001 From: David Norman Date: Thu, 11 May 2006 22:17:09 +0000 Subject: XHTML improvements and ActiveX bugfix related to http://www.microsoft.com/downloads/details.aspx?familyid=B7D9801B-4FB5-492E-903E-3400ABF1D731&displaylang=en --- AC_QuickTime.js | 263 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ video.module | 71 ++++++++------- 2 files changed, 297 insertions(+), 37 deletions(-) create mode 100644 AC_QuickTime.js diff --git a/AC_QuickTime.js b/AC_QuickTime.js new file mode 100644 index 0000000..998d42c --- /dev/null +++ b/AC_QuickTime.js @@ -0,0 +1,263 @@ +/* + +File: AC_QuickTime.js + +Abstract: This file contains functions to generate OBJECT and EMBED tags for QuickTime content. + +Version: <1.1> + +Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple +Computer, Inc. ("Apple") in consideration of your agreement to the +following terms, and your use, installation, modification or +redistribution of this Apple software constitutes acceptance of these +terms. If you do not agree with these terms, please do not use, +install, modify or redistribute this Apple software. + +In consideration of your agreement to abide by the following terms, and +subject to these terms, Apple grants you a personal, non-exclusive +license, under Apple's copyrights in this original Apple software (the +"Apple Software"), to use, reproduce, modify and redistribute the Apple +Software, with or without modifications, in source and/or binary forms; +provided that if you redistribute the Apple Software in its entirety and +without modifications, you must retain this notice and the following +text and disclaimers in all such redistributions of the Apple Software. +Neither the name, trademarks, service marks or logos of Apple Computer, +Inc. may be used to endorse or promote products derived from the Apple +Software without specific prior written permission from Apple. Except +as expressly stated in this notice, no other rights or licenses, express +or implied, are granted by Apple herein, including but not limited to +any patent rights that may be infringed by your derivative works or by +other works in which the Apple Software may be incorporated. + +The Apple Software is provided by Apple on an "AS IS" basis. APPLE +MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION +THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND +OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. + +IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL +OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, +MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED +AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), +STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +Copyright © 2006 Apple Computer, Inc., All Rights Reserved + +*/ + +/* + * This file contains functions to generate OBJECT and EMBED tags for QuickTime content. + */ + +/************** LOCALIZABLE GLOBAL VARIABLES ****************/ + +var gArgCountErr = 'The "%%" function requires an even number of arguments.' + + '\nArguments should be in the form "atttributeName", "attributeValue", ...'; + +/******************** END LOCALIZABLE **********************/ + +var gTagAttrs = null; +var gQTGeneratorVersion = 1.0; + +function AC_QuickTimeVersion() { return gQTGeneratorVersion; } + +function _QTComplain(callingFcnName, errMsg) +{ + errMsg = errMsg.replace("%%", callingFcnName); + alert(errMsg); +} + +function _QTAddAttribute(prefix, slotName, tagName) +{ + var value; + + value = gTagAttrs[prefix + slotName]; + if ( null == value ) + value = gTagAttrs[slotName]; + + if ( null != value ) + { + if ( 0 == slotName.indexOf(prefix) && (null == tagName) ) + tagName = slotName.substring(prefix.length); + if ( null == tagName ) + tagName = slotName; + return tagName + '="' + value + '" '; + } + else + return ""; +} + +function _QTAddObjectAttr(slotName, tagName) +{ + // don't bother if it is only for the embed tag + if ( 0 == slotName.indexOf("emb#") ) + return ""; + + if ( 0 == slotName.indexOf("obj#") && (null == tagName) ) + tagName = slotName.substring(4); + + return _QTAddAttribute("obj#", slotName, tagName); +} + +function _QTAddEmbedAttr(slotName, tagName) +{ + // don't bother if it is only for the object tag + if ( 0 == slotName.indexOf("obj#") ) + return ""; + + if ( 0 == slotName.indexOf("emb#") && (null == tagName) ) + tagName = slotName.substring(4); + + return _QTAddAttribute("emb#", slotName, tagName); +} + + +function _QTAddObjectParam(slotName, generateXHTML) +{ + var paramValue; + var paramStr = ""; + var endTagChar = (generateXHTML) ? ' />' : '>'; + + if ( -1 == slotName.indexOf("emb#") ) + { + // look for the OBJECT-only param first. if there is none, look for a generic one + paramValue = gTagAttrs["obj#" + slotName]; + if ( null == paramValue ) + paramValue = gTagAttrs[slotName]; + + if ( 0 == slotName.indexOf("obj#") ) + slotName = slotName.substring(4); + + if ( null != paramValue ) + paramStr = ' \n' + + _QTAddObjectParam("src", generateXHTML); + var embedTag = ' \n'; +} + +// return the object/embed as a string +function QT_GenerateOBJECTText() +{ + return _QTGenerate("QT_GenerateOBJECTText", false, arguments); +} + +function QT_GenerateOBJECTText_XHTML() +{ + return _QTGenerate("QT_GenerateOBJECTText_XHTML", true, arguments); +} + +function QT_WriteOBJECT() +{ + document.writeln(_QTGenerate("QT_WriteOBJECT", false, arguments)); +} + +function QT_WriteOBJECT_XHTML() +{ + document.writeln(_QTGenerate("QT_WriteOBJECT_XHTML", true, arguments)); +} diff --git a/video.module b/video.module index f3e46a8..c49ae98 100644 --- a/video.module +++ b/video.module @@ -1169,7 +1169,7 @@ function theme_video_play_flash($node) { - + '; $output = _theme_video_format_play($output, t('http://www.macromedia.com/go/getflashplayer'), t('Link to Macromedia Flash Player Download Page'), @@ -1190,7 +1190,7 @@ function theme_video_play_swf($node) { $output = "videox\" height=\"$node->videoy\"> vidfile\" />" . _video_get_parameters($node->serialized_data) . - "vidfile\" width=\"$node->videox\" height=\"$node->videoy\"> + "vidfile\" width=\"$node->videox\" height=\"$node->videoy\" /> "; $output = _theme_video_format_play($output, t('http://www.macromedia.com/go/getflashplayer'), t('Link to Flash player download'), t('Download the latest Flash player')); return theme('page', $output); @@ -1199,6 +1199,7 @@ function theme_video_play_swf($node) { /** * Play videos from in Quicktime format * + * @see http://developer.apple.com/internet/ieembedprep.html * @param $node * object with node information * @@ -1206,14 +1207,11 @@ function theme_video_play_swf($node) { * string of content to display */ function theme_video_play_quicktime($node) { + drupal_set_html_head(''); $height = $node->videoy + 16; //Increase the height to accommodate the player controls on the bottom. - $output = ' - - - - - - '; + $output = ''; $output = _theme_video_format_play($output, t('http://www.apple.com/quicktime/download'), t('Link to QuickTime Download Page'), t('Download latest Quicktime Player')); @@ -1233,22 +1231,22 @@ function theme_video_play_realmedia($node) { // Real's embeded player includes the controls // in the height $node->videoy += 40; - $output = ' - - - - - - - - - - - - - - - + $output = ' + + + + + + + + + + + + + + + '; $output = _theme_video_format_play($output, t('http://www.real.com/'), t('Link to Real'), @@ -1269,24 +1267,23 @@ function theme_video_play_windowsmedia($node) { // Windows Media's embeded player includes the controls in the height $node->videoy += 68; $vidfile = _video_get_fileurl($node->vidfile) . basename($node->vidfile); - $output = 'videox.'" height="'.$node->videoy.'" classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject"> - - - - - - - + + + + + + - - '; + src="'.$vidfile.'" autostart="true" loop="true"> + '; $output = _theme_video_format_play($output, t('http://windowsupdate.microsoft.com/'), t('Link to Windows Update'), @@ -1309,7 +1306,7 @@ function theme_video_play_youtube($node) { $width = ($node->videox ? $node->videox : '425'); $height = ($node->videoy ? $node->videoy : '350'); $output = ' - + '; $output = _theme_video_format_play($output, t('http://www.youtube.com/help.php'), t('Link to youtube.com'), t('youtube.com')); -- cgit v1.2.3