This commit is contained in:
Shannon
2019-10-23 14:55:18 +11:00
parent 832803a9f6
commit 17fd09fe3d
18 changed files with 95 additions and 100 deletions

View File

@@ -42,8 +42,8 @@ namespace Umbraco.Tests.PublishedContent
var umbracoContextAccessor = Mock.Of<IUmbracoContextAccessor>();
var logger = Mock.Of<ILogger>();
var imageSourceParser = new ImageSourceParser(umbracoContextAccessor, logger, Mock.Of<IMediaService>(), Mock.Of<IContentTypeBaseServiceProvider>());
var localLinkParser = new LocalLinkParser(umbracoContextAccessor);
var imageSourceParser = new HtmlImageSourceParser(umbracoContextAccessor, logger, Mock.Of<IMediaService>(), Mock.Of<IContentTypeBaseServiceProvider>());
var localLinkParser = new HtmlLocalLinkParser(umbracoContextAccessor);
var dataTypeService = new TestObjects.TestDataTypeService(
new DataType(new RichTextPropertyEditor(logger, umbracoContextAccessor, imageSourceParser, localLinkParser)) { Id = 1 });

View File

@@ -46,13 +46,13 @@ namespace Umbraco.Tests.PublishedContent
var mediaService = Mock.Of<IMediaService>();
var contentTypeBaseServiceProvider = Mock.Of<IContentTypeBaseServiceProvider>();
var umbracoContextAccessor = Mock.Of<IUmbracoContextAccessor>();
var mediaParser = new ImageSourceParser(umbracoContextAccessor, logger, mediaService, contentTypeBaseServiceProvider);
var localLinkParser = new LocalLinkParser(umbracoContextAccessor);
var imageSourceParser = new HtmlImageSourceParser(umbracoContextAccessor, logger, mediaService, contentTypeBaseServiceProvider);
var linkParser = new HtmlLocalLinkParser(umbracoContextAccessor);
var dataTypeService = new TestObjects.TestDataTypeService(
new DataType(new VoidEditor(logger)) { Id = 1 },
new DataType(new TrueFalsePropertyEditor(logger)) { Id = 1001 },
new DataType(new RichTextPropertyEditor(logger, umbracoContextAccessor, mediaParser, localLinkParser)) { Id = 1002 },
new DataType(new RichTextPropertyEditor(logger, umbracoContextAccessor, imageSourceParser, linkParser)) { Id = 1002 },
new DataType(new IntegerPropertyEditor(logger)) { Id = 1003 },
new DataType(new TextboxPropertyEditor(logger)) { Id = 1004 },
new DataType(new MediaPickerPropertyEditor(logger)) { Id = 1005 });

View File

@@ -32,9 +32,9 @@ namespace Umbraco.Tests.Templates
var logger = Mock.Of<ILogger>();
var umbracoContextAccessor = new TestUmbracoContextAccessor();
var mediaParser = new ImageSourceParser(umbracoContextAccessor, logger, Mock.Of<IMediaService>(), Mock.Of<IContentTypeBaseServiceProvider>());
var imageSourceParser = new HtmlImageSourceParser(umbracoContextAccessor, logger, Mock.Of<IMediaService>(), Mock.Of<IContentTypeBaseServiceProvider>());
var result = mediaParser.FindUdisFromDataAttributes(input).ToList();
var result = imageSourceParser.FindUdisFromDataAttributes(input).ToList();
Assert.AreEqual(2, result.Count);
Assert.AreEqual(Udi.Parse("umb://media/D4B18427A1544721B09AC7692F35C264"), result[0]);
Assert.AreEqual(Udi.Parse("umb://media-type/B726D735E4C446D58F703F3FBCFC97A5"), result[1]);
@@ -45,9 +45,9 @@ namespace Umbraco.Tests.Templates
{
var logger = Mock.Of<ILogger>();
var umbracoContextAccessor = new TestUmbracoContextAccessor();
var mediaParser = new ImageSourceParser(umbracoContextAccessor, logger, Mock.Of<IMediaService>(), Mock.Of<IContentTypeBaseServiceProvider>());
var imageSourceParser = new HtmlImageSourceParser(umbracoContextAccessor, logger, Mock.Of<IMediaService>(), Mock.Of<IContentTypeBaseServiceProvider>());
var result = mediaParser.RemoveImageSources(@"<p>
var result = imageSourceParser.RemoveImageSources(@"<p>
<div>
<img src=""/media/12354/test.jpg"" />
</div></p>
@@ -87,9 +87,9 @@ namespace Umbraco.Tests.Templates
var mediaCache = Mock.Get(reference.UmbracoContext.Media);
mediaCache.Setup(x => x.GetById(It.IsAny<Guid>())).Returns(media.Object);
var mediaParser = new ImageSourceParser(umbracoContextAccessor, Mock.Of<ILogger>(), Mock.Of<IMediaService>(), Mock.Of<IContentTypeBaseServiceProvider>());
var imageSourceParser = new HtmlImageSourceParser(umbracoContextAccessor, Mock.Of<ILogger>(), Mock.Of<IMediaService>(), Mock.Of<IContentTypeBaseServiceProvider>());
var result = mediaParser.EnsureImageSources(@"<p>
var result = imageSourceParser.EnsureImageSources(@"<p>
<div>
<img src="""" />
</div></p>

View File

@@ -22,7 +22,7 @@ namespace Umbraco.Tests.Templates
</p>";
var umbracoContextAccessor = new TestUmbracoContextAccessor();
var parser = new LocalLinkParser(umbracoContextAccessor);
var parser = new HtmlLocalLinkParser(umbracoContextAccessor);
var result = parser.FindUdisFromLocalLinks(input).ToList();

View File

@@ -255,7 +255,7 @@
<Compile Include="Web\Controllers\UsersControllerTests.cs" />
<Compile Include="Web\HealthChecks\HealthCheckResultsTests.cs" />
<Compile Include="Web\HttpCookieExtensionsTests.cs" />
<Compile Include="Web\InternalLinkParserTests.cs" />
<Compile Include="Web\HtmlLocalLinkParserTests.cs" />
<Compile Include="Templates\ImageSourceParserTests.cs" />
<Compile Include="Web\Mvc\HtmlStringUtilitiesTests.cs" />
<Compile Include="Web\ModelStateExtensionsTests.cs" />

View File

@@ -19,7 +19,7 @@ namespace Umbraco.Tests.Web
{
[TestFixture]
public class InternalLinkParserTests
public class HtmlLocalLinkParserTests
{
[TestCase("", "")]
[TestCase("hello href=\"{localLink:1234}\" world ", "hello href=\"/my-test-url\" world ")]
@@ -65,7 +65,7 @@ namespace Umbraco.Tests.Web
mediaCache.Setup(x => x.GetById(It.IsAny<int>())).Returns(media.Object);
mediaCache.Setup(x => x.GetById(It.IsAny<Guid>())).Returns(media.Object);
var linkParser = new LocalLinkParser(umbracoContextAccessor);
var linkParser = new HtmlLocalLinkParser(umbracoContextAccessor);
var output = linkParser.EnsureInternalLinks(input);

View File

@@ -25,20 +25,14 @@ namespace Umbraco.Web.PropertyEditors
Group = Constants.PropertyEditors.Groups.RichContent)]
public class GridPropertyEditor : DataEditor
{
private IMediaService _mediaService;
private IContentTypeBaseServiceProvider _contentTypeBaseServiceProvider;
private IUmbracoContextAccessor _umbracoContextAccessor;
private readonly ImageSourceParser _mediaParser;
private ILogger _logger;
private readonly HtmlImageSourceParser _imageSourceParser;
public GridPropertyEditor(ILogger logger, IMediaService mediaService, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider, IUmbracoContextAccessor umbracoContextAccessor, ImageSourceParser mediaParser)
public GridPropertyEditor(ILogger logger, IUmbracoContextAccessor umbracoContextAccessor, HtmlImageSourceParser imageSourceParser)
: base(logger)
{
_mediaService = mediaService;
_contentTypeBaseServiceProvider = contentTypeBaseServiceProvider;
_umbracoContextAccessor = umbracoContextAccessor;
_mediaParser = mediaParser;
_logger = logger;
_imageSourceParser = imageSourceParser;
}
public override IPropertyIndexValueFactory PropertyIndexValueFactory => new GridPropertyIndexValueFactory();
@@ -47,26 +41,20 @@ namespace Umbraco.Web.PropertyEditors
/// Overridden to ensure that the value is validated
/// </summary>
/// <returns></returns>
protected override IDataValueEditor CreateValueEditor() => new GridPropertyValueEditor(Attribute, _mediaService, _contentTypeBaseServiceProvider, _umbracoContextAccessor, _logger, _mediaParser);
protected override IDataValueEditor CreateValueEditor() => new GridPropertyValueEditor(Attribute, _umbracoContextAccessor, _imageSourceParser);
protected override IConfigurationEditor CreateConfigurationEditor() => new GridConfigurationEditor();
internal class GridPropertyValueEditor : DataValueEditor
{
private IMediaService _mediaService;
private IContentTypeBaseServiceProvider _contentTypeBaseServiceProvider;
private IUmbracoContextAccessor _umbracoContextAccessor;
private ILogger _logger;
private readonly ImageSourceParser _mediaParser;
private readonly HtmlImageSourceParser _imageSourceParser;
public GridPropertyValueEditor(DataEditorAttribute attribute, IMediaService mediaService, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider, IUmbracoContextAccessor umbracoContextAccessor, ILogger logger, ImageSourceParser _mediaParser)
public GridPropertyValueEditor(DataEditorAttribute attribute, IUmbracoContextAccessor umbracoContextAccessor, HtmlImageSourceParser imageSourceParser)
: base(attribute)
{
_mediaService = mediaService;
_contentTypeBaseServiceProvider = contentTypeBaseServiceProvider;
_umbracoContextAccessor = umbracoContextAccessor;
_logger = logger;
this._mediaParser = _mediaParser;
_imageSourceParser = imageSourceParser;
}
/// <summary>
@@ -101,8 +89,8 @@ namespace Umbraco.Web.PropertyEditors
// Parse the HTML
var html = rte.Value?.ToString();
var parseAndSavedTempImages = _mediaParser.FindAndPersistPastedTempImages(html, mediaParentId, userId);
var editorValueWithMediaUrlsRemoved = _mediaParser.RemoveImageSources(parseAndSavedTempImages);
var parseAndSavedTempImages = _imageSourceParser.FindAndPersistPastedTempImages(html, mediaParentId, userId);
var editorValueWithMediaUrlsRemoved = _imageSourceParser.RemoveImageSources(parseAndSavedTempImages);
rte.Value = editorValueWithMediaUrlsRemoved;
}
@@ -131,7 +119,7 @@ namespace Umbraco.Web.PropertyEditors
{
var html = rte.Value?.ToString();
var propertyValueWithMediaResolved = _mediaParser.EnsureImageSources(html);
var propertyValueWithMediaResolved = _imageSourceParser.EnsureImageSources(html);
rte.Value = propertyValueWithMediaResolved;
}

View File

@@ -26,18 +26,18 @@ namespace Umbraco.Web.PropertyEditors
public class RichTextPropertyEditor : DataEditor
{
private IUmbracoContextAccessor _umbracoContextAccessor;
private readonly ImageSourceParser _mediaParser;
private readonly LocalLinkParser _localLinkParser;
private readonly HtmlImageSourceParser _imageSourceParser;
private readonly HtmlLocalLinkParser _localLinkParser;
/// <summary>
/// The constructor will setup the property editor based on the attribute if one is found
/// </summary>
public RichTextPropertyEditor(ILogger logger, IUmbracoContextAccessor umbracoContextAccessor, ImageSourceParser mediaParser, LocalLinkParser localLinkParser)
public RichTextPropertyEditor(ILogger logger, IUmbracoContextAccessor umbracoContextAccessor, HtmlImageSourceParser imageSourceParser, HtmlLocalLinkParser localLinkParser)
: base(logger)
{
_umbracoContextAccessor = umbracoContextAccessor;
_mediaParser = mediaParser;
_imageSourceParser = imageSourceParser;
_localLinkParser = localLinkParser;
}
@@ -45,7 +45,7 @@ namespace Umbraco.Web.PropertyEditors
/// Create a custom value editor
/// </summary>
/// <returns></returns>
protected override IDataValueEditor CreateValueEditor() => new RichTextPropertyValueEditor(Attribute, _umbracoContextAccessor, _mediaParser, _localLinkParser);
protected override IDataValueEditor CreateValueEditor() => new RichTextPropertyValueEditor(Attribute, _umbracoContextAccessor, _imageSourceParser, _localLinkParser);
protected override IConfigurationEditor CreateConfigurationEditor() => new RichTextConfigurationEditor();
@@ -57,14 +57,14 @@ namespace Umbraco.Web.PropertyEditors
internal class RichTextPropertyValueEditor : DataValueEditor, IDataValueReference
{
private IUmbracoContextAccessor _umbracoContextAccessor;
private readonly ImageSourceParser _mediaParser;
private readonly LocalLinkParser _localLinkParser;
private readonly HtmlImageSourceParser _imageSourceParser;
private readonly HtmlLocalLinkParser _localLinkParser;
public RichTextPropertyValueEditor(DataEditorAttribute attribute, IUmbracoContextAccessor umbracoContextAccessor, ImageSourceParser mediaParser, LocalLinkParser localLinkParser)
public RichTextPropertyValueEditor(DataEditorAttribute attribute, IUmbracoContextAccessor umbracoContextAccessor, HtmlImageSourceParser imageSourceParser, HtmlLocalLinkParser localLinkParser)
: base(attribute)
{
_umbracoContextAccessor = umbracoContextAccessor;
_mediaParser = mediaParser;
_imageSourceParser = imageSourceParser;
_localLinkParser = localLinkParser;
}
@@ -97,7 +97,7 @@ namespace Umbraco.Web.PropertyEditors
if (val == null)
return null;
var propertyValueWithMediaResolved = _mediaParser.EnsureImageSources(val.ToString());
var propertyValueWithMediaResolved = _imageSourceParser.EnsureImageSources(val.ToString());
var parsed = MacroTagParser.FormatRichTextPersistedDataForEditor(propertyValueWithMediaResolved, new Dictionary<string, string>());
return parsed;
}
@@ -119,8 +119,8 @@ namespace Umbraco.Web.PropertyEditors
var mediaParent = config?.MediaParentId;
var mediaParentId = mediaParent == null ? Guid.Empty : mediaParent.Guid;
var parseAndSavedTempImages = _mediaParser.FindAndPersistPastedTempImages(editorValue.Value.ToString(), mediaParentId, userId);
var editorValueWithMediaUrlsRemoved = _mediaParser.RemoveImageSources(parseAndSavedTempImages);
var parseAndSavedTempImages = _imageSourceParser.FindAndPersistPastedTempImages(editorValue.Value.ToString(), mediaParentId, userId);
var editorValueWithMediaUrlsRemoved = _imageSourceParser.RemoveImageSources(parseAndSavedTempImages);
var parsed = MacroTagParser.FormatRichTextContentForPersistence(editorValueWithMediaUrlsRemoved);
return parsed;
@@ -135,7 +135,7 @@ namespace Umbraco.Web.PropertyEditors
{
var asString = value == null ? string.Empty : value is string str ? str : value.ToString();
foreach (var udi in _mediaParser.FindUdisFromDataAttributes(asString))
foreach (var udi in _imageSourceParser.FindUdisFromDataAttributes(asString))
yield return udi;
foreach (var udi in _localLinkParser.FindUdisFromLocalLinks(asString))

View File

@@ -12,13 +12,13 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class MarkdownEditorValueConverter : PropertyValueConverterBase
{
private readonly LocalLinkParser _localLinkParser;
private readonly UrlParser _urlResolver;
private readonly HtmlLocalLinkParser _localLinkParser;
private readonly HtmlUrlParser _urlParser;
public MarkdownEditorValueConverter(LocalLinkParser localLinkParser, UrlParser urlResolver)
public MarkdownEditorValueConverter(HtmlLocalLinkParser localLinkParser, HtmlUrlParser urlParser)
{
_localLinkParser = localLinkParser;
_urlResolver = urlResolver;
_urlParser = urlParser;
}
public override bool IsConverter(IPublishedPropertyType propertyType)
@@ -37,7 +37,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
// ensures string is parsed for {localLink} and urls are resolved correctly
sourceString = _localLinkParser.EnsureInternalLinks(sourceString, preview);
sourceString = _urlResolver.EnsureUrls(sourceString);
sourceString = _urlParser.EnsureUrls(sourceString);
return sourceString;
}

View File

@@ -24,9 +24,9 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
{
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
private readonly IMacroRenderer _macroRenderer;
private readonly LocalLinkParser _internalLinkParser;
private readonly UrlParser _urlResolver;
private readonly ImageSourceParser _mediaParser;
private readonly HtmlLocalLinkParser _linkParser;
private readonly HtmlUrlParser _urlParser;
private readonly HtmlImageSourceParser _imageSourceParser;
public override PropertyCacheLevel GetPropertyCacheLevel(IPublishedPropertyType propertyType)
{
@@ -36,13 +36,13 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
}
public RteMacroRenderingValueConverter(IUmbracoContextAccessor umbracoContextAccessor, IMacroRenderer macroRenderer,
LocalLinkParser internalLinkParser, UrlParser urlResolver, ImageSourceParser mediaParser)
HtmlLocalLinkParser linkParser, HtmlUrlParser urlParser, HtmlImageSourceParser imageSourceParser)
{
_umbracoContextAccessor = umbracoContextAccessor;
_macroRenderer = macroRenderer;
_internalLinkParser = internalLinkParser;
_urlResolver = urlResolver;
_mediaParser = mediaParser;
_linkParser = linkParser;
_urlParser = urlParser;
_imageSourceParser = imageSourceParser;
}
// NOT thread-safe over a request because it modifies the
@@ -88,9 +88,9 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
var sourceString = source.ToString();
// ensures string is parsed for {localLink} and urls and media are resolved correctly
sourceString = _internalLinkParser.EnsureInternalLinks(sourceString, preview);
sourceString = _urlResolver.EnsureUrls(sourceString);
sourceString = _mediaParser.EnsureImageSources(sourceString);
sourceString = _linkParser.EnsureInternalLinks(sourceString, preview);
sourceString = _urlParser.EnsureUrls(sourceString);
sourceString = _imageSourceParser.EnsureImageSources(sourceString);
// ensure string is parsed for macros and macros are executed correctly
sourceString = RenderRteMacros(sourceString, preview);

View File

@@ -11,9 +11,9 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
[DefaultPropertyValueConverter]
public class TextStringValueConverter : PropertyValueConverterBase
{
public TextStringValueConverter(LocalLinkParser internalLinkParser, UrlParser urlParser)
public TextStringValueConverter(HtmlLocalLinkParser linkParser, HtmlUrlParser urlParser)
{
_internalLinkParser = internalLinkParser;
_linkParser = linkParser;
_urlParser = urlParser;
}
@@ -22,8 +22,8 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
Constants.PropertyEditors.Aliases.TextBox,
Constants.PropertyEditors.Aliases.TextArea
};
private readonly LocalLinkParser _internalLinkParser;
private readonly UrlParser _urlParser;
private readonly HtmlLocalLinkParser _linkParser;
private readonly HtmlUrlParser _urlParser;
public override bool IsConverter(IPublishedPropertyType propertyType)
=> PropertyTypeAliases.Contains(propertyType.EditorAlias);
@@ -40,7 +40,7 @@ namespace Umbraco.Web.PropertyEditors.ValueConverters
var sourceString = source.ToString();
// ensures string is parsed for {localLink} and urls are resolved correctly
sourceString = _internalLinkParser.EnsureInternalLinks(sourceString, preview);
sourceString = _linkParser.EnsureInternalLinks(sourceString, preview);
sourceString = _urlParser.EnsureUrls(sourceString);
return sourceString;

View File

@@ -107,9 +107,9 @@ namespace Umbraco.Web.Runtime
composition.RegisterUnique<IMacroRenderer, MacroRenderer>();
composition.RegisterUnique<IUmbracoComponentRenderer, UmbracoComponentRenderer>();
composition.RegisterUnique<LocalLinkParser>();
composition.RegisterUnique<UrlParser>();
composition.RegisterUnique<ImageSourceParser>();
composition.RegisterUnique<HtmlLocalLinkParser>();
composition.RegisterUnique<HtmlUrlParser>();
composition.RegisterUnique<HtmlImageSourceParser>();
// register the umbraco helper - this is Transient! very important!
// also, if not level.Run, we cannot really use the helper (during upgrade...)

View File

@@ -14,9 +14,9 @@ using Umbraco.Web.Routing;
namespace Umbraco.Web.Templates
{
public sealed class ImageSourceParser
public sealed class HtmlImageSourceParser
{
public ImageSourceParser(IUmbracoContextAccessor umbracoContextAccessor, ILogger logger, IMediaService mediaService, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider)
public HtmlImageSourceParser(IUmbracoContextAccessor umbracoContextAccessor, ILogger logger, IMediaService mediaService, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider)
{
_umbracoContextAccessor = umbracoContextAccessor;
_logger = logger;
@@ -99,10 +99,17 @@ namespace Umbraco.Web.Templates
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
internal string RemoveImageSources(string text)
public string RemoveImageSources(string text)
// see comment in ResolveMediaFromTextString for group reference
=> ResolveImgPattern.Replace(text, "$1$3$4$5");
/// <summary>
/// Used by the RTE (and grid RTE) for drag/drop/persisting images
/// </summary>
/// <param name="html"></param>
/// <param name="mediaParentFolder"></param>
/// <param name="userId"></param>
/// <returns></returns>
internal string FindAndPersistPastedTempImages(string html, Guid mediaParentFolder, int userId)
{
// Find all img's that has data-tmpimg attribute
@@ -199,7 +206,7 @@ namespace Umbraco.Web.Templates
}
catch (Exception ex)
{
_logger.Error(typeof(ImageSourceParser), ex, "Could not delete temp file or folder {FileName}", absoluteTempImagePath);
_logger.Error(typeof(HtmlImageSourceParser), ex, "Could not delete temp file or folder {FileName}", absoluteTempImagePath);
}
}
}

View File

@@ -11,7 +11,7 @@ namespace Umbraco.Web.Templates
/// <summary>
/// Utility class used to parse internal links
/// </summary>
public sealed class LocalLinkParser
public sealed class HtmlLocalLinkParser
{
private static readonly Regex LocalLinkPattern = new Regex(@"href=""[/]?(?:\{|\%7B)localLink:([a-zA-Z0-9-://]+)(?:\}|\%7D)",
@@ -19,7 +19,7 @@ namespace Umbraco.Web.Templates
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
public LocalLinkParser(IUmbracoContextAccessor umbracoContextAccessor)
public HtmlLocalLinkParser(IUmbracoContextAccessor umbracoContextAccessor)
{
_umbracoContextAccessor = umbracoContextAccessor;
}

View File

@@ -5,7 +5,7 @@ using Umbraco.Core.Logging;
namespace Umbraco.Web.Templates
{
public sealed class UrlParser
public sealed class HtmlUrlParser
{
private readonly IContentSection _contentSection;
private readonly IProfilingLogger _logger;
@@ -13,7 +13,7 @@ namespace Umbraco.Web.Templates
private static readonly Regex ResolveUrlPattern = new Regex("(=[\"\']?)(\\W?\\~(?:.(?![\"\']?\\s+(?:\\S+)=|[>\"\']))+.)[\"\']?",
RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
public UrlParser(IContentSection contentSection, IProfilingLogger logger)
public HtmlUrlParser(IContentSection contentSection, IProfilingLogger logger)
{
_contentSection = contentSection;
_logger = logger;

View File

@@ -15,10 +15,10 @@ using File = System.IO.File;
namespace Umbraco.Web.Templates
{
[Obsolete("This class is obsolete, all methods have been moved to other classes such as InternalLinkHelper, UrlResolver and MediaParser")]
[Obsolete("This class is obsolete, all methods have been moved to other classes: HtmlLocalLinkParser, HtmlUrlParser and HtmlImageSourceParser")]
public static class TemplateUtilities
{
[Obsolete("Inject and use an instance of InternalLinkParser instead")]
[Obsolete("Inject and use an instance of HtmlLocalLinkParser instead")]
internal static string ParseInternalLinks(string text, bool preview, UmbracoContext umbracoContext)
{
using (umbracoContext.ForcedPreview(preview)) // force for url provider
@@ -29,28 +29,28 @@ namespace Umbraco.Web.Templates
return text;
}
[Obsolete("Inject and use an instance of InternalLinkParser instead")]
[Obsolete("Inject and use an instance of HtmlLocalLinkParser instead")]
public static string ParseInternalLinks(string text, UrlProvider urlProvider)
=> Current.Factory.GetInstance<LocalLinkParser>().EnsureInternalLinks(text);
=> Current.Factory.GetInstance<HtmlLocalLinkParser>().EnsureInternalLinks(text);
[Obsolete("Inject and use an instance of UrlResolver")]
[Obsolete("Inject and use an instance of HtmlUrlParser")]
public static string ResolveUrlsFromTextString(string text)
=> Current.Factory.GetInstance<UrlParser>().EnsureUrls(text);
=> Current.Factory.GetInstance<HtmlUrlParser>().EnsureUrls(text);
[Obsolete("Use StringExtensions.CleanForXss instead")]
public static string CleanForXss(string text, params char[] ignoreFromClean)
=> text.CleanForXss(ignoreFromClean);
[Obsolete("Use MediaParser.EnsureImageSources instead")]
[Obsolete("Use HtmlImageSourceParser.EnsureImageSources instead")]
public static string ResolveMediaFromTextString(string text)
=> Current.Factory.GetInstance<ImageSourceParser>().EnsureImageSources(text);
=> Current.Factory.GetInstance<HtmlImageSourceParser>().EnsureImageSources(text);
[Obsolete("Use MediaParser.RemoveImageSources instead")]
[Obsolete("Use HtmlImageSourceParser.RemoveImageSources instead")]
internal static string RemoveMediaUrlsFromTextString(string text)
=> Current.Factory.GetInstance<ImageSourceParser>().RemoveImageSources(text);
=> Current.Factory.GetInstance<HtmlImageSourceParser>().RemoveImageSources(text);
[Obsolete("Use MediaParser.RemoveImageSources instead")]
[Obsolete("Use HtmlImageSourceParser.FindAndPersistPastedTempImages instead")]
internal static string FindAndPersistPastedTempImages(string html, Guid mediaParentFolder, int userId, IMediaService mediaService, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider, ILogger logger)
=> Current.Factory.GetInstance<ImageSourceParser>().FindAndPersistPastedTempImages(html, mediaParentFolder, userId);
=> Current.Factory.GetInstance<HtmlImageSourceParser>().FindAndPersistPastedTempImages(html, mediaParentFolder, userId);
}
}

View File

@@ -247,9 +247,9 @@
<Compile Include="Models\Link.cs" />
<Compile Include="Models\LinkType.cs" />
<Compile Include="Models\TemplateQuery\OperatorFactory.cs" />
<Compile Include="Templates\LocalLinkParser.cs" />
<Compile Include="Templates\ImageSourceParser.cs" />
<Compile Include="Templates\UrlParser.cs" />
<Compile Include="Templates\HtmlLocalLinkParser.cs" />
<Compile Include="Templates\HtmlImageSourceParser.cs" />
<Compile Include="Templates\HtmlUrlParser.cs" />
<Compile Include="UmbracoContextFactory.cs" />
<Compile Include="UmbracoContextReference.cs" />
<Compile Include="ViewDataExtensions.cs" />

View File

@@ -27,14 +27,14 @@ namespace Umbraco.Web
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
private readonly IMacroRenderer _macroRenderer;
private readonly ITemplateRenderer _templateRenderer;
private readonly LocalLinkParser _internalLinkParser;
private readonly HtmlLocalLinkParser _linkParser;
public UmbracoComponentRenderer(IUmbracoContextAccessor umbracoContextAccessor, IMacroRenderer macroRenderer, ITemplateRenderer templateRenderer, LocalLinkParser internalLinkParser)
public UmbracoComponentRenderer(IUmbracoContextAccessor umbracoContextAccessor, IMacroRenderer macroRenderer, ITemplateRenderer templateRenderer, HtmlLocalLinkParser linkParser)
{
_umbracoContextAccessor = umbracoContextAccessor;
_macroRenderer = macroRenderer;
_templateRenderer = templateRenderer ?? throw new ArgumentNullException(nameof(templateRenderer));
_internalLinkParser = internalLinkParser;
_linkParser = linkParser;
}
/// <summary>
@@ -159,7 +159,7 @@ namespace Umbraco.Web
_umbracoContextAccessor.UmbracoContext.HttpContext.Response.ContentType = contentType;
//Now, we need to ensure that local links are parsed
html = _internalLinkParser.EnsureInternalLinks(output.ToString());
html = _linkParser.EnsureInternalLinks(output.ToString());
}
}