From 2df05da7fc3b5427687edf190d2d4e6e7cb0f46b Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Fri, 22 Feb 2013 11:41:01 -0100 Subject: [PATCH] Fixes U4-1746 Duplicate image source (src) when inserting resized image in tiny mce (richtext editor) --- .../tinymce/tinyMCEImageHelper.cs | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/umbraco.editorControls/tinymce/tinyMCEImageHelper.cs b/src/umbraco.editorControls/tinymce/tinyMCEImageHelper.cs index 6072ec936f..977a85ed04 100644 --- a/src/umbraco.editorControls/tinymce/tinyMCEImageHelper.cs +++ b/src/umbraco.editorControls/tinymce/tinyMCEImageHelper.cs @@ -1,5 +1,6 @@ using System; using System.Collections; +using System.Linq; using System.Text.RegularExpressions; using System.Web; using Umbraco.Core.IO; @@ -14,7 +15,12 @@ namespace umbraco.editorControls.tinymce { public static string cleanImages(string html) { - var allowedAttributes = UmbracoSettings.ImageAllowedAttributes.ToLower().Split(','); + var allowedAttributes = UmbracoSettings.ImageAllowedAttributes.ToLower().Split(',').ToList(); + + //Always add src as it's essential to output any image at all + if (allowedAttributes.Contains("src") == false) + allowedAttributes.Add("src"); + const string pattern = @"]*>"; var tags = Regex.Matches(html + " ", pattern, RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace); foreach (Match tag in tags) @@ -43,7 +49,11 @@ namespace umbraco.editorControls.tinymce { int newWidth; int newHeight; - cleanTag += DoResize(ht, out newWidth, out newHeight); + string newSrc; + + cleanTag += DoResize(ht, out newWidth, out newHeight, out newSrc); + + ht["src"] = newSrc; } catch (Exception err) { @@ -96,7 +106,7 @@ namespace umbraco.editorControls.tinymce return html; } - private static string DoResize(IDictionary attributes, out int finalWidth, out int finalHeight) + private static string DoResize(IDictionary attributes, out int finalWidth, out int finalHeight, out string newSrc) { var fs = FileSystemProviderManager.Current.GetFileSystemProvider(); var orgSrc = HttpContext.Current.Server.HtmlDecode(helper.FindAttribute(attributes, "src").Replace("%20", " ")); @@ -106,7 +116,7 @@ namespace umbraco.editorControls.tinymce var newWidth = int.Parse(helper.FindAttribute(attributes, "width")); var newHeight = int.Parse(helper.FindAttribute(attributes, "height")); - var newSrc = ""; + newSrc = ""; if (orgHeight > 0 && orgWidth > 0 && orgSrc != "") { @@ -131,7 +141,7 @@ namespace umbraco.editorControls.tinymce finalWidth = newWidth; finalHeight = newHeight; - return " src=\"" + newSrc + "\" width=\"" + newWidth + "\" height=\"" + newHeight + "\""; + return " width=\"" + newWidth + "\" height=\"" + newHeight + "\""; } } } \ No newline at end of file