diff --git a/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/addmedia.htm b/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/addmedia.htm
new file mode 100644
index 000000000..4d8ff00a1
--- /dev/null
+++ b/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/addmedia.htm
@@ -0,0 +1,36 @@
+
+
+
+ {#addmedia_dlg.title}
+
+
+
+
+
+
+
diff --git a/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/editor_plugin.js b/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/editor_plugin.js
new file mode 100644
index 000000000..9ce4962e2
--- /dev/null
+++ b/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/editor_plugin.js
@@ -0,0 +1,68 @@
+(function() {
+ // Load plugin specific language pack
+ tinymce.PluginManager.requireLangPack('dlg');
+
+ tinymce.create('tinymce.plugins.Orchard.AddMedia', {
+ /**
+ * Initializes the plugin, this will be executed after the plugin has been created.
+ * This call is done before the editor instance has finished it's initialization so use the onInit event
+ * of the editor instance to intercept that event.
+ *
+ * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
+ * @param {string} url Absolute URL to where the plugin is located.
+ */
+ init: function(ed, url) {
+ // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
+ ed.addCommand('mceAddMedia', function() {
+ ed.windowManager.open({
+ file: url + '/addmedia.htm',
+ width: 480 + parseInt(ed.getLang('addmedia.delta_width', 0)),
+ height: 110 + parseInt(ed.getLang('addmedia.delta_height', 0)),
+ inline: 1
+ }, {
+ plugin_url: url, // Plugin absolute URL
+ });
+ });
+
+ // Register example button
+ ed.addButton('addmedia', {
+ title: 'addmedia_desc',
+ cmd: 'mceAddMedia',
+ image: url + '/img/picture_add.png'
+ });
+ },
+
+ /**
+ * Creates control instances based in the incomming name. This method is normally not
+ * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
+ * but you sometimes need to create more complex controls like listboxes, split buttons etc then this
+ * method can be used to create those.
+ *
+ * @param {String} n Name of the control to create.
+ * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
+ * @return {tinymce.ui.Control} New control instance or null if no control was created.
+ */
+ createControl: function(n, cm) {
+ return null;
+ },
+
+ /**
+ * Returns information about the plugin as a name/value array.
+ * The current keys are longname, author, authorurl, infourl and version.
+ *
+ * @return {Object} Name/value array containing information about the plugin.
+ */
+ getInfo: function() {
+ return {
+ longname: 'Orchard AddMedia Plugin',
+ author: 'Nathan Heskew',
+ authorurl: 'http://orchardproject.net',
+ infourl: 'http://orchardproject.net',
+ version: '0.1'
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('addmedia', tinymce.plugins.Orchard.AddMedia);
+})();
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/img/picture_add.png b/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/img/picture_add.png
new file mode 100644
index 000000000..9e9d5da9d
Binary files /dev/null and b/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/img/picture_add.png differ
diff --git a/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/js/addmedia.js b/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/js/addmedia.js
new file mode 100644
index 000000000..85ad2bea1
--- /dev/null
+++ b/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/js/addmedia.js
@@ -0,0 +1 @@
+tinyMCEPopup.requireLangPack();
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/langs/en_dlg.js b/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/langs/en_dlg.js
new file mode 100644
index 000000000..3a6a0b493
--- /dev/null
+++ b/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/addmedia/langs/en_dlg.js
@@ -0,0 +1,4 @@
+tinyMCE.addI18n('en.addmedia_dlg',{
+title:"Add Media",
+path_label:"Media File Path"
+});
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/TinyMce/TinyMce.csproj b/src/Orchard.Web/Modules/TinyMce/TinyMce.csproj
index 63c109849..8045c5d64 100644
--- a/src/Orchard.Web/Modules/TinyMce/TinyMce.csproj
+++ b/src/Orchard.Web/Modules/TinyMce/TinyMce.csproj
@@ -135,6 +135,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Orchard.Web/Modules/TinyMce/Views/EditorTemplates/TinyMceTextEditor.ascx b/src/Orchard.Web/Modules/TinyMce/Views/EditorTemplates/TinyMceTextEditor.ascx
index 662a464b6..8b9f14733 100644
--- a/src/Orchard.Web/Modules/TinyMce/Views/EditorTemplates/TinyMceTextEditor.ascx
+++ b/src/Orchard.Web/Modules/TinyMce/Views/EditorTemplates/TinyMceTextEditor.ascx
@@ -7,10 +7,10 @@
theme: "advanced",
mode: "specific_textareas",
editor_selector: "html",
- plugins: "fullscreen,autoresize,searchreplace",
+ plugins: "fullscreen,autoresize,searchreplace,addmedia",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
- theme_advanced_buttons1: "search,replace,|,cut,copy,paste,|,undo,redo,|,image,|,link,unlink,charmap,emoticon,codeblock,|,bold,italic,|,numlist,bullist,formatselect,|,code,fullscreen",
+ theme_advanced_buttons1: "search,replace,|,cut,copy,paste,|,undo,redo,|,image,addmedia,|,link,unlink,charmap,emoticon,codeblock,|,bold,italic,|,numlist,bullist,formatselect,|,code,fullscreen",
theme_advanced_buttons2: "",
theme_advanced_buttons3: ""
});