["Silverlight", "dfeaf541-f3e1-4c24-acac-99c30715084a", "application/x-silverlight-2"],\r
["Iframe"],\r
["Video"],\r
+ ["EmbeddedAudio"],\r
["Audio"]\r
];\r
\r
id : data.id,\r
style : data.style,\r
align : data.align,\r
+ hspace : data.hspace,\r
+ vspace : data.vspace,\r
src : self.editor.theme.url + '/img/trans.gif',\r
'class' : 'mceItemMedia mceItem' + self.getType(data.type).name,\r
'data-mce-json' : JSON.serialize(data, "'")\r
data.params.src = '';\r
}\r
\r
+ if (typeItem.name === 'EmbeddedAudio') {\r
+ embed = new Node('embed', 1);\r
+ embed.shortEnded = true;\r
+ embed.attr({\r
+ id: node.attr('id'),\r
+ width: node.attr('width'),\r
+ height: node.attr('height'),\r
+ style : style,\r
+ type: node.attr('type')\r
+ });\r
+\r
+ for (name in data.params)\r
+ embed.attr(name, data.params[name]);\r
+\r
+ tinymce.each(rootAttributes, function(name) {\r
+ if (data[name] && name != 'type')\r
+ embed.attr(name, data[name]);\r
+ });\r
+\r
+ data.params.src = '';\r
+ }\r
+\r
// Do we have a params src then we can generate object\r
if (data.params.src) {\r
// Is flv movie add player for it\r
});\r
\r
tinymce.each(rootAttributes, function(name) {\r
- if (data[name] && name != 'type')\r
- object.attr(name, data[name]);\r
+ var value = data[name];\r
+\r
+ if (name == 'class' && value)\r
+ value = value.replace(/mceItem.+ ?/g, '');\r
+\r
+ if (value && name != 'type')\r
+ object.attr(name, value);\r
});\r
\r
// Add params\r
}\r
}\r
\r
- if (video || audio || object)\r
- node.replace(video || audio || object);\r
+ var n = video || audio || object || embed;\r
+ if (n)\r
+ node.replace(n);\r
else\r
node.remove();\r
},\r
var object, embed, video, iframe, img, name, id, width, height, style, i, html,\r
param, params, source, sources, data, type, lookup = this.lookup,\r
matches, attrs, urlConverter = this.editor.settings.url_converter,\r
- urlConverterScope = this.editor.settings.url_converter_scope;\r
+ urlConverterScope = this.editor.settings.url_converter_scope,\r
+ hspace, vspace, align, bgcolor;\r
\r
function getInnerHTML(node) {\r
return new tinymce.html.Serializer({\r
}).serialize(node);\r
};\r
\r
+ function lookupAttribute(o, attr) {\r
+ return lookup[(o.attr(attr) || '').toLowerCase()];\r
+ }\r
+\r
+ function lookupExtension(src) {\r
+ var ext = src.replace(/^.*\.([^.]+)$/, '$1');\r
+ return lookup[ext.toLowerCase() || ''];\r
+ }\r
+\r
// If node isn't in document\r
if (!node.parent)\r
return;\r
height = height || object.attr('height');\r
style = style || object.attr('style');\r
id = id || object.attr('id');\r
+ hspace = hspace || object.attr('hspace');\r
+ vspace = vspace || object.attr('vspace');\r
+ align = align || object.attr('align');\r
+ bgcolor = bgcolor || object.attr('bgcolor');\r
+ data.name = object.attr('name');\r
\r
// Get all object params\r
params = object.getAll("param");\r
height = height || embed.attr('height');\r
style = style || embed.attr('style');\r
id = id || embed.attr('id');\r
+ hspace = hspace || embed.attr('hspace');\r
+ vspace = vspace || embed.attr('vspace');\r
+ align = align || embed.attr('align');\r
+ bgcolor = bgcolor || embed.attr('bgcolor');\r
\r
// Get all embed attributes\r
for (name in embed.attributes.map) {\r
height = iframe.attr('height');\r
style = style || iframe.attr('style');\r
id = iframe.attr('id');\r
+ hspace = iframe.attr('hspace');\r
+ vspace = iframe.attr('vspace');\r
+ align = iframe.attr('align');\r
+ bgcolor = iframe.attr('bgcolor');\r
\r
tinymce.each(rootAttributes, function(name) {\r
img.attr(name, iframe.attr(name));\r
}\r
\r
if (object && !type)\r
- type = (lookup[(object.attr('clsid') || '').toLowerCase()] || lookup[(object.attr('type') || '').toLowerCase()] || {}).name;\r
+ type = (lookupAttribute(object, 'clsid') || lookupAttribute(object, 'classid') || lookupAttribute(object, 'type') || {}).name;\r
\r
if (embed && !type)\r
- type = (lookup[(embed.attr('type') || '').toLowerCase()] || {}).name;\r
+ type = (lookupAttribute(embed, 'type') || lookupExtension(data.params.src) || {}).name;\r
+\r
+ // for embedded audio we preserve the original specified type\r
+ if (embed && type == 'EmbeddedAudio') {\r
+ data.params.type = embed.attr('type');\r
+ }\r
\r
// Replace the video/object/embed element with a placeholder image containing the data\r
node.replace(img);\r
data.video_html = html;\r
}\r
\r
+ data.hspace = hspace;\r
+ data.vspace = vspace;\r
+ data.align = align;\r
+ data.bgcolor = bgcolor;\r
+\r
// Set width/height of placeholder\r
img.attr({\r
id : id,\r
style : style,\r
width : width || (node.name == 'audio' ? "300" : "320"),\r
height : height || (node.name == 'audio' ? "32" : "240"),\r
+ hspace : hspace,\r
+ vspace : vspace,\r
+ align : align,\r
+ bgcolor : bgcolor,\r
"data-mce-json" : JSON.serialize(data, "'")\r
});\r
}\r
\r
// Register plugin\r
tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin);\r
-})();
\ No newline at end of file
+})();\r