From d30b5b0b2c356c2c3cd8e5bca9b6722bbd302dda Mon Sep 17 00:00:00 2001 From: "Matt@MBP13-PC" Date: Tue, 21 Aug 2012 06:42:01 -0100 Subject: [PATCH] Updatedt TinyMCEWebControl.cs to use IFileSystem --- src/Umbraco.Core/IO/PhysicalFileSystem.cs | 3 +- .../tinyMCE3/webcontrol/TinyMCEWebControl.cs | 28 +++++++++++-------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Core/IO/PhysicalFileSystem.cs b/src/Umbraco.Core/IO/PhysicalFileSystem.cs index 9b836cd2cf..4c7dd42f5e 100644 --- a/src/Umbraco.Core/IO/PhysicalFileSystem.cs +++ b/src/Umbraco.Core/IO/PhysicalFileSystem.cs @@ -157,7 +157,8 @@ namespace Umbraco.Core.IO { return _rootUrl.TrimEnd("/") + "/" + path .TrimStart(Path.DirectorySeparatorChar) - .Replace(Path.DirectorySeparatorChar, '/'); + .Replace(Path.DirectorySeparatorChar, '/') + .TrimEnd("/"); } public DateTimeOffset GetLastModified(string path) diff --git a/src/umbraco.editorControls/tinyMCE3/webcontrol/TinyMCEWebControl.cs b/src/umbraco.editorControls/tinyMCE3/webcontrol/TinyMCEWebControl.cs index 46c50ca504..94b076c208 100644 --- a/src/umbraco.editorControls/tinyMCE3/webcontrol/TinyMCEWebControl.cs +++ b/src/umbraco.editorControls/tinyMCE3/webcontrol/TinyMCEWebControl.cs @@ -7,7 +7,7 @@ using System.Collections; using System.Collections.Specialized; using System.IO; using System.Text.RegularExpressions; - +using Umbraco.Core.IO; using umbraco.BusinessLogic; using umbraco.cms.businesslogic.macro; using umbraco.cms.businesslogic.media; @@ -21,6 +21,7 @@ namespace umbraco.editorControls.tinyMCE3.webcontrol { public class TinyMCEWebControl : System.Web.UI.WebControls.TextBox { + internal readonly IMediaFileSystem _fs; public NameValueCollection config = new NameValueCollection(); private string temp; @@ -66,6 +67,8 @@ namespace umbraco.editorControls.tinyMCE3.webcontrol public TinyMCEWebControl() : base() { + _fs = FileSystemProviderManager.Current.GetFileSystemProvider(); + base.TextMode = TextBoxMode.MultiLine; base.Attributes.Add("style", "visibility: hidden"); config.Add("mode", "exact"); @@ -284,14 +287,15 @@ namespace umbraco.editorControls.tinyMCE3.webcontrol private string formatMedia(string html) { - // Local media path - string localMediaPath = IOHelper.ResolveUrl(SystemDirectories.Media); + // root media url + var rootMediaUrl = _fs.GetUrl(""); // Find all media images - string pattern = String.Format("]*src=\"(?{0}[^\"]*)\" [^>]*>", localMediaPath); + var pattern = String.Format("]*src=\"(?{0}[^\"]*)\" [^>]*>", rootMediaUrl); MatchCollection tags = Regex.Matches(html, pattern, RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace); + foreach (Match tag in tags) if (tag.Groups.Count > 0) { @@ -331,7 +335,7 @@ namespace umbraco.editorControls.tinyMCE3.webcontrol IOHelper.ResolveUrl(orgSrc.Replace("%20", " ")); // Check for either id or guid from media - string mediaId = getIdFromSource(orgSrc, localMediaPath); + string mediaId = getIdFromSource(orgSrc, rootMediaUrl); Media imageMedia = null; @@ -381,18 +385,18 @@ namespace umbraco.editorControls.tinyMCE3.webcontrol return html; } - private string getIdFromSource(string src, string localMediaPath) + private string getIdFromSource(string src, string rootMediaUrl) { - if (!localMediaPath.EndsWith("/")) - localMediaPath += "/"; + if (!rootMediaUrl.EndsWith("/")) + rootMediaUrl += "/"; - // important - remove out the umbraco path + media! - src = src.Replace(localMediaPath, ""); + // important - remove out the rootMediaUrl! + src = src.Replace(rootMediaUrl, ""); string _id = ""; // Check for directory id naming - if (src.Length - src.Replace("/", "").Length > 0) + if (src.Contains("/")) { string[] dirSplit = src.Split("/".ToCharArray()); string tempId = dirSplit[0]; @@ -409,7 +413,7 @@ namespace umbraco.editorControls.tinyMCE3.webcontrol } else { - string[] fileSplit = src.Replace("/media/", "").Split("-".ToCharArray()); + string[] fileSplit = src.Split("-".ToCharArray()); // guid or id if (fileSplit.Length > 3)