From f333723f8a1d4df54c7cf0d03b37db275efe4ace Mon Sep 17 00:00:00 2001 From: Dave Reed Date: Mon, 28 Mar 2011 16:26:39 -0700 Subject: [PATCH] 17368: Multiple tinymce editors on a page broken in some browsers. Problem was due to multiple init calls. We now no longer need any dynamic content in the init script, allowing this script to become a library and only included once. Also made the tinymce init selection more specific to tinymce in case any other modules use the 'html' class at the same time as this. --HG-- branch : 1.x --- .../Modules/TinyMce/ResourceManifest.cs | 4 ++- .../TinyMce/Scripts/orchard-tinymce.js | 13 ++++++++ .../plugins/mediapicker/editor_plugin_src.js | 4 +-- .../Modules/TinyMce/TinyMce.csproj | 1 + .../TinyMce/Views/Body-Html.Editor.cshtml | 30 +++++-------------- 5 files changed, 26 insertions(+), 26 deletions(-) create mode 100644 src/Orchard.Web/Modules/TinyMce/Scripts/orchard-tinymce.js diff --git a/src/Orchard.Web/Modules/TinyMce/ResourceManifest.cs b/src/Orchard.Web/Modules/TinyMce/ResourceManifest.cs index 49bcbbbbe..43fbfd8b4 100644 --- a/src/Orchard.Web/Modules/TinyMce/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/TinyMce/ResourceManifest.cs @@ -3,7 +3,9 @@ using Orchard.UI.Resources; namespace TinyMce { public class ResourceManifest : IResourceManifestProvider { public void BuildManifests(ResourceManifestBuilder builder) { - builder.Add().DefineScript("TinyMce").SetUrl("tiny_mce.js", "tiny_mce_src.js"); + var manifest = builder.Add(); + manifest.DefineScript("TinyMce").SetUrl("tiny_mce.js", "tiny_mce_src.js"); + manifest.DefineScript("OrchardTinyMce").SetUrl("orchard-tinymce.js").SetDependencies("TinyMce"); } } } diff --git a/src/Orchard.Web/Modules/TinyMce/Scripts/orchard-tinymce.js b/src/Orchard.Web/Modules/TinyMce/Scripts/orchard-tinymce.js new file mode 100644 index 000000000..c4d2c3762 --- /dev/null +++ b/src/Orchard.Web/Modules/TinyMce/Scripts/orchard-tinymce.js @@ -0,0 +1,13 @@ +tinyMCE.init({ + theme: "advanced", + mode: "specific_textareas", + editor_selector: "tinymce", + plugins: "fullscreen,autoresize,searchreplace,mediapicker", + theme_advanced_toolbar_location: "top", + theme_advanced_toolbar_align: "left", + theme_advanced_buttons1: "search,replace,|,cut,copy,paste,|,undo,redo,|,mediapicker,|,link,unlink,charmap,emoticon,codeblock,|,bold,italic,|,numlist,bullist,formatselect,|,code,fullscreen", + theme_advanced_buttons2: "", + theme_advanced_buttons3: "", + convert_urls: false, + valid_elements: "*[*]" +}); diff --git a/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/mediapicker/editor_plugin_src.js b/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/mediapicker/editor_plugin_src.js index ee375f6fc..2db7e41b3 100644 --- a/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/mediapicker/editor_plugin_src.js +++ b/src/Orchard.Web/Modules/TinyMce/Scripts/plugins/mediapicker/editor_plugin_src.js @@ -39,7 +39,7 @@ } jQuery("#" + ed.id).trigger("orchard-admin-pickimage-open", { img: editImage, - uploadMediaPath: ed.getParam("mediapicker_uploadpath"), + uploadMediaPath: jQuery("#" + ed.id).data("mediapicker-uploadpath"), //ed.getParam("mediapicker_uploadpath"), callback: function (data) { ed.focus(); ed.selection.setContent(data.img.html); @@ -49,7 +49,7 @@ // Register media button ed.addButton('mediapicker', { - title: ed.getParam("mediapicker_title"), + title: jQuery("#" + ed.id).data("mediapicker-title"), //ed.getParam("mediapicker_title"), cmd: 'mceMediaPicker', image: url + '/img/picture_add.png' }); diff --git a/src/Orchard.Web/Modules/TinyMce/TinyMce.csproj b/src/Orchard.Web/Modules/TinyMce/TinyMce.csproj index 4e79433f8..b61d94c07 100644 --- a/src/Orchard.Web/Modules/TinyMce/TinyMce.csproj +++ b/src/Orchard.Web/Modules/TinyMce/TinyMce.csproj @@ -50,6 +50,7 @@ + diff --git a/src/Orchard.Web/Modules/TinyMce/Views/Body-Html.Editor.cshtml b/src/Orchard.Web/Modules/TinyMce/Views/Body-Html.Editor.cshtml index df6283a98..ae225fce5 100644 --- a/src/Orchard.Web/Modules/TinyMce/Views/Body-Html.Editor.cshtml +++ b/src/Orchard.Web/Modules/TinyMce/Views/Body-Html.Editor.cshtml @@ -1,25 +1,9 @@ @{ - Script.Require("TinyMce"); + Script.Require("OrchardTinyMce"); } -@using(Script.Foot()) { - -} -@Html.TextArea("Text", (string)Model.Text, 25, 80, new { @class = "html" }) +@Html.TextArea("Text", (string)Model.Text, 25, 80, + new Dictionary { + {"class", "html tinymce"}, + {"data-mediapicker-uploadpath",Model.AddMediaPath}, + {"data-mediapicker-title",T("Insert/Update Media")} + })