Updated tiny-mce to most recent 3.4 version
[citadel.git] / webcit / tiny_mce / plugins / media / editor_plugin_src.js
index 219d713f29fbc4af1b0ac274a87abf4f9b2a6342..ea79db18a765137be9209c32b95dbaa3aebf8e21 100644 (file)
@@ -24,6 +24,7 @@
                ["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