diff --git a/src/Umbraco.Core/Macros/MacroTagParser.cs b/src/Umbraco.Core/Macros/MacroTagParser.cs index 26f2b34ae5..857d36d2da 100644 --- a/src/Umbraco.Core/Macros/MacroTagParser.cs +++ b/src/Umbraco.Core/Macros/MacroTagParser.cs @@ -179,7 +179,7 @@ namespace Umbraco.Core.Macros // Check whether it's a single tag () or a tag with children (...) if (tag.Substring(tag.Length - 2, 1) != "/" && tag.IndexOf(" ") > -1) { - String closingTag = ""; + string closingTag = ""; // Tag with children are only used when a macro is inserted by the umbraco-editor, in the // following format: "", so we // need to delete extra information inserted which is the image-tag and the closing diff --git a/src/Umbraco.Core/Macros/XsltExtension.cs b/src/Umbraco.Core/Macros/XsltExtension.cs deleted file mode 100644 index 7bc9277ac3..0000000000 --- a/src/Umbraco.Core/Macros/XsltExtension.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Umbraco.Core.Macros -{ - /// - /// Encapsulates what an xslt extension object is when used for macros - /// - internal sealed class XsltExtension - { - public XsltExtension(string ns, object extensionObject) - { - Namespace = ns; - ExtensionObject = extensionObject; - } - - public string Namespace { get; private set; } - public object ExtensionObject { get; private set; } - } -} diff --git a/src/Umbraco.Core/Macros/XsltExtensionAttribute.cs b/src/Umbraco.Core/Macros/XsltExtensionAttribute.cs deleted file mode 100644 index 8cde062046..0000000000 --- a/src/Umbraco.Core/Macros/XsltExtensionAttribute.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Security.Permissions; -using System.Web; - -namespace Umbraco.Core.Macros -{ - /// - /// Allows App_Code XSLT extensions to be declared using the [XsltExtension] class attribute. - /// - /// - /// An optional XML namespace can be specified using [XsltExtension("MyNamespace")]. - /// - [AttributeUsage(AttributeTargets.Class)] - public class XsltExtensionAttribute : Attribute - { - public XsltExtensionAttribute() - { - Namespace = String.Empty; - } - - public XsltExtensionAttribute(string ns) - { - Namespace = ns; - } - - public string Namespace { get; set; } - - public override string ToString() - { - return Namespace; - } - } -} diff --git a/src/Umbraco.Core/Macros/XsltExtensionCollection.cs b/src/Umbraco.Core/Macros/XsltExtensionCollection.cs deleted file mode 100644 index 4d32382d06..0000000000 --- a/src/Umbraco.Core/Macros/XsltExtensionCollection.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Collections.Generic; -using Umbraco.Core.Composing; - -namespace Umbraco.Core.Macros -{ - internal class XsltExtensionCollection : BuilderCollectionBase - { - public XsltExtensionCollection(IEnumerable items) - : base(items) - { } - } -} diff --git a/src/Umbraco.Core/Macros/XsltExtensionCollectionBuilder.cs b/src/Umbraco.Core/Macros/XsltExtensionCollectionBuilder.cs deleted file mode 100644 index 45a7615e3d..0000000000 --- a/src/Umbraco.Core/Macros/XsltExtensionCollectionBuilder.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using LightInject; -using Umbraco.Core.Composing; - -namespace Umbraco.Core.Macros -{ - // that one is special since it's not initialized with XsltExtension types, but with Xslt extension object types, - // which are then wrapped in an XsltExtension object when the collection is created. so, cannot really inherit - // from (Lazy)CollectionBuilderBase and have to re-implement it. but almost everything is copied from CollectionBuilderBase. - - internal class XsltExtensionCollectionBuilder : ICollectionBuilder - { - private readonly IServiceContainer _container; - private readonly List>> _producers = new List>>(); - private readonly object _locker = new object(); - private ServiceRegistration[] _registrations; - - public XsltExtensionCollectionBuilder(IServiceContainer container) - { - _container = container; - - // register the collection - container.Register(_ => CreateCollection(), new PerContainerLifetime()); - } - - public static XsltExtensionCollectionBuilder Register(IServiceContainer container) - { - // register the builder - per container - var builderLifetime = new PerContainerLifetime(); - container.Register(builderLifetime); - return container.GetInstance(); - } - - public XsltExtensionCollectionBuilder AddExtensionObjectProducer(Func> producer) - { - lock (_locker) - { - if (_registrations != null) - throw new InvalidOperationException("Cannot configure a collection builder after its types have been resolved."); - _producers.Add(producer); - } - return this; - } - - private void RegisterTypes() - { - lock (_locker) - { - if (_registrations != null) return; - - var prefix = GetType().FullName + "_"; - var i = 0; - foreach (var type in _producers.SelectMany(x => x()).Distinct()) - { - var name = $"{prefix}{i++:00000}"; - _container.Register(type, type, name); - } - - _registrations = _container.AvailableServices - .Where(x => x.ServiceName.StartsWith(prefix)) - .OrderBy(x => x.ServiceName) - .ToArray(); - } - } - - public XsltExtensionCollection CreateCollection() - { - RegisterTypes(); // will do it only once - - var exts = _registrations.SelectMany(r => r.ServiceType.GetCustomAttributes(true) - .Select(a => new XsltExtension(a.Namespace.IfNullOrWhiteSpace(r.ServiceType.FullName), _container.GetInstance(r.ServiceType, r.ServiceName)))); - - return new XsltExtensionCollection(exts); - } - } -} diff --git a/src/Umbraco.Core/Models/IMacro.cs b/src/Umbraco.Core/Models/IMacro.cs index 1100212190..c56d3d9628 100644 --- a/src/Umbraco.Core/Models/IMacro.cs +++ b/src/Umbraco.Core/Models/IMacro.cs @@ -57,29 +57,14 @@ namespace Umbraco.Core.Models /// [DataMember] string ControlType { get; set; } - - /// - /// Gets or sets the name of the assembly, which should be used by the Macro - /// - /// Will usually only be filled if the ScriptFile is a Usercontrol - [DataMember] - [Obsolete("This is no longer used, we should remove it in v8, CustomControl macros are gone")] - string ControlAssembly { get; set; } - + /// /// Gets or set the path to the Python file in use /// /// Optional: Can only be one of three Script, Python or Xslt [DataMember] string ScriptPath { get; set; } - - /// - /// Gets or sets the path to the Xslt file in use - /// - /// Optional: Can only be one of three Script, Python or Xslt - [DataMember] - string XsltPath { get; set; } - + /// /// Gets or sets a list of Macro Properties /// diff --git a/src/Umbraco.Core/Models/Macro.cs b/src/Umbraco.Core/Models/Macro.cs index bd05abb1c1..6e72942b6e 100644 --- a/src/Umbraco.Core/Models/Macro.cs +++ b/src/Umbraco.Core/Models/Macro.cs @@ -35,13 +35,11 @@ namespace Umbraco.Core.Models /// /// /// - /// - /// /// /// /// /// - public Macro(int id, Guid key, bool useInEditor, int cacheDuration, string @alias, string name, string controlType, string controlAssembly, string xsltPath, bool cacheByPage, bool cacheByMember, bool dontRender, string scriptPath) + public Macro(int id, Guid key, bool useInEditor, int cacheDuration, string @alias, string name, string controlType, bool cacheByPage, bool cacheByMember, bool dontRender, string scriptPath) : this() { Id = id; @@ -51,8 +49,6 @@ namespace Umbraco.Core.Models Alias = alias.ToCleanString(CleanStringType.Alias); Name = name; ControlType = controlType; - ControlAssembly = controlAssembly; - XsltPath = xsltPath; CacheByPage = cacheByPage; CacheByMember = cacheByMember; DontRender = dontRender; @@ -67,16 +63,12 @@ namespace Umbraco.Core.Models /// /// /// - /// - /// /// /// /// /// public Macro(string @alias, string name, string controlType = "", - string controlAssembly = "", - string xsltPath = "", string scriptPath = "", bool cacheByPage = false, bool cacheByMember = false, @@ -90,8 +82,6 @@ namespace Umbraco.Core.Models Alias = alias.ToCleanString(CleanStringType.Alias); Name = name; ControlType = controlType; - ControlAssembly = controlAssembly; - XsltPath = xsltPath; CacheByPage = cacheByPage; CacheByMember = cacheByMember; DontRender = dontRender; @@ -125,9 +115,7 @@ namespace Umbraco.Core.Models public readonly PropertyInfo CacheByMemberSelector = ExpressionHelper.GetPropertyInfo(x => x.CacheByMember); public readonly PropertyInfo DontRenderSelector = ExpressionHelper.GetPropertyInfo(x => x.DontRender); public readonly PropertyInfo ControlPathSelector = ExpressionHelper.GetPropertyInfo(x => x.ControlType); - public readonly PropertyInfo ControlAssemblySelector = ExpressionHelper.GetPropertyInfo(x => x.ControlAssembly); public readonly PropertyInfo ScriptPathSelector = ExpressionHelper.GetPropertyInfo(x => x.ScriptPath); - public readonly PropertyInfo XsltPathSelector = ExpressionHelper.GetPropertyInfo(x => x.XsltPath); public readonly PropertyInfo PropertiesSelector = ExpressionHelper.GetPropertyInfo(x => x.Properties); } @@ -281,17 +269,6 @@ namespace Umbraco.Core.Models set { SetPropertyValueAndDetectChanges(value, ref _scriptFile, Ps.Value.ControlPathSelector); } } - /// - /// Gets or sets the name of the assembly, which should be used by the Macro - /// - /// Will usually only be filled if the ControlType is a Usercontrol - [DataMember] - public string ControlAssembly - { - get { return _scriptAssembly; } - set { SetPropertyValueAndDetectChanges(value, ref _scriptAssembly, Ps.Value.ControlAssemblySelector); } - } - /// /// Gets or set the path to the Python file in use /// @@ -303,17 +280,6 @@ namespace Umbraco.Core.Models set { SetPropertyValueAndDetectChanges(value, ref _scriptPath, Ps.Value.ScriptPathSelector); } } - /// - /// Gets or sets the path to the Xslt file in use - /// - /// Optional: Can only be one of three Script, Python or Xslt - [DataMember] - public string XsltPath - { - get { return _xslt; } - set { SetPropertyValueAndDetectChanges(value, ref _xslt, Ps.Value.XsltPathSelector); } - } - /// /// Gets or sets a list of Macro Properties /// diff --git a/src/Umbraco.Core/Models/MacroTypes.cs b/src/Umbraco.Core/Models/MacroTypes.cs index 90eacf5171..310d6ccd7c 100644 --- a/src/Umbraco.Core/Models/MacroTypes.cs +++ b/src/Umbraco.Core/Models/MacroTypes.cs @@ -10,15 +10,11 @@ namespace Umbraco.Core.Models [DataContract(IsReference = true)] public enum MacroTypes { - [EnumMember] - Xslt = 1, [EnumMember] UserControl = 3, [EnumMember] Unknown = 4, [EnumMember] - Script = 6, - [EnumMember] PartialView = 7 } } diff --git a/src/Umbraco.Core/Persistence/Dtos/MacroDto.cs b/src/Umbraco.Core/Persistence/Dtos/MacroDto.cs index 821f092b38..2bfbcaba29 100644 --- a/src/Umbraco.Core/Persistence/Dtos/MacroDto.cs +++ b/src/Umbraco.Core/Persistence/Dtos/MacroDto.cs @@ -37,15 +37,7 @@ namespace Umbraco.Core.Persistence.Dtos [Column("macroScriptType")] [NullSetting(NullSetting = NullSettings.Null)] public string ScriptType { get; set; } - - [Column("macroScriptAssembly")] - [NullSetting(NullSetting = NullSettings.Null)] - public string ScriptAssembly { get; set; } - - [Column("macroXSLT")] - [NullSetting(NullSetting = NullSettings.Null)] - public string Xslt { get; set; } - + [Column("macroCacheByPage")] [Constraint(Default = "1")] public bool CacheByPage { get; set; } diff --git a/src/Umbraco.Core/Persistence/Factories/MacroFactory.cs b/src/Umbraco.Core/Persistence/Factories/MacroFactory.cs index a854a3a65f..a85de1fa57 100644 --- a/src/Umbraco.Core/Persistence/Factories/MacroFactory.cs +++ b/src/Umbraco.Core/Persistence/Factories/MacroFactory.cs @@ -9,7 +9,7 @@ namespace Umbraco.Core.Persistence.Factories { public IMacro BuildEntity(MacroDto dto) { - var model = new Macro(dto.Id, dto.UniqueId, dto.UseInEditor, dto.RefreshRate, dto.Alias, dto.Name, dto.ScriptType, dto.ScriptAssembly, dto.Xslt, dto.CacheByPage, dto.CachePersonalized, dto.DontRender, dto.MacroFilePath); + var model = new Macro(dto.Id, dto.UniqueId, dto.UseInEditor, dto.RefreshRate, dto.Alias, dto.Name, dto.ScriptType, dto.CacheByPage, dto.CachePersonalized, dto.DontRender, dto.MacroFilePath); try { @@ -42,10 +42,8 @@ namespace Umbraco.Core.Persistence.Factories Name = entity.Name, MacroFilePath = entity.ScriptPath, RefreshRate = entity.CacheDuration, - ScriptAssembly = entity.ControlAssembly, ScriptType = entity.ControlType, UseInEditor = entity.UseInEditor, - Xslt = entity.XsltPath, MacroPropertyDtos = BuildPropertyDtos(entity) }; diff --git a/src/Umbraco.Core/Persistence/Mappers/MacroMapper.cs b/src/Umbraco.Core/Persistence/Mappers/MacroMapper.cs index c60feea9b8..07490a4cd8 100644 --- a/src/Umbraco.Core/Persistence/Mappers/MacroMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/MacroMapper.cs @@ -18,14 +18,12 @@ namespace Umbraco.Core.Persistence.Mappers CacheMap(src => src.Alias, dto => dto.Alias); CacheMap(src => src.CacheByPage, dto => dto.CacheByPage); CacheMap(src => src.CacheByMember, dto => dto.CachePersonalized); - CacheMap(src => src.ControlAssembly, dto => dto.ScriptAssembly); CacheMap(src => src.ControlType, dto => dto.ScriptType); CacheMap(src => src.DontRender, dto => dto.DontRender); CacheMap(src => src.Name, dto => dto.Name); CacheMap(src => src.CacheDuration, dto => dto.RefreshRate); CacheMap(src => src.ScriptPath, dto => dto.MacroFilePath); CacheMap(src => src.UseInEditor, dto => dto.UseInEditor); - CacheMap(src => src.XsltPath, dto => dto.Xslt); } } } diff --git a/src/Umbraco.Core/Services/EntityXmlSerializer.cs b/src/Umbraco.Core/Services/EntityXmlSerializer.cs index 72838c3d55..772d1f183d 100644 --- a/src/Umbraco.Core/Services/EntityXmlSerializer.cs +++ b/src/Umbraco.Core/Services/EntityXmlSerializer.cs @@ -296,9 +296,7 @@ namespace Umbraco.Core.Services xml.Add(new XElement("name", macro.Name)); xml.Add(new XElement("alias", macro.Alias)); xml.Add(new XElement("scriptType", macro.ControlType)); - xml.Add(new XElement("scriptAssembly", macro.ControlAssembly)); xml.Add(new XElement("scriptingFile", macro.ScriptPath)); - xml.Add(new XElement("xslt", macro.XsltPath)); xml.Add(new XElement("useInEditor", macro.UseInEditor.ToString())); xml.Add(new XElement("dontRender", macro.DontRender.ToString())); xml.Add(new XElement("refreshRate", macro.CacheDuration.ToString(CultureInfo.InvariantCulture))); diff --git a/src/Umbraco.Core/Services/Implement/MacroService.cs b/src/Umbraco.Core/Services/Implement/MacroService.cs index a28bb7ca50..1e0be6c4b3 100644 --- a/src/Umbraco.Core/Services/Implement/MacroService.cs +++ b/src/Umbraco.Core/Services/Implement/MacroService.cs @@ -31,9 +31,6 @@ namespace Umbraco.Core.Services.Implement /// internal static MacroTypes GetMacroType(IMacro macro) { - if (string.IsNullOrEmpty(macro.XsltPath) == false) - return MacroTypes.Xslt; - if (string.IsNullOrEmpty(macro.ScriptPath) == false) return MacroTypes.PartialView; diff --git a/src/Umbraco.Core/Services/Implement/PackagingService.cs b/src/Umbraco.Core/Services/Implement/PackagingService.cs index c83500c5d3..04e52833d6 100644 --- a/src/Umbraco.Core/Services/Implement/PackagingService.cs +++ b/src/Umbraco.Core/Services/Implement/PackagingService.cs @@ -1271,8 +1271,6 @@ namespace Umbraco.Core.Services.Implement var macroName = macroElement.Element("name").Value; var macroAlias = macroElement.Element("alias").Value; var controlType = macroElement.Element("scriptType").Value; - var controlAssembly = macroElement.Element("scriptAssembly").Value; - var xsltPath = macroElement.Element("xslt").Value; var scriptPath = macroElement.Element("scriptingFile").Value; //Following xml elements are treated as nullable properties @@ -1308,7 +1306,7 @@ namespace Umbraco.Core.Services.Implement } var existingMacro = _macroService.GetByAlias(macroAlias) as Macro; - var macro = existingMacro ?? new Macro(macroAlias, macroName, controlType, controlAssembly, xsltPath, scriptPath, + var macro = existingMacro ?? new Macro(macroAlias, macroName, controlType, scriptPath, cacheByPage, cacheByMember, dontRender, useInEditor, cacheDuration); var properties = macroElement.Element("properties"); diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index e9a781d560..bbb020f308 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -562,10 +562,6 @@ - - - - diff --git a/src/Umbraco.Tests/Composing/TypeFinderTests.cs b/src/Umbraco.Tests/Composing/TypeFinderTests.cs index 29458deefb..c665fc366e 100644 --- a/src/Umbraco.Tests/Composing/TypeFinderTests.cs +++ b/src/Umbraco.Tests/Composing/TypeFinderTests.cs @@ -100,70 +100,6 @@ namespace Umbraco.Tests.Composing return new ProfilingLogger(logger, profiler); } - [Ignore("fixme - ignored test")] - [Test] - public void Benchmark_Original_Finder() - { - var profilingLogger = GetTestProfilingLogger(); - using (profilingLogger.TraceDuration("Starting test", "Finished test")) - { - using (profilingLogger.TraceDuration("Starting FindClassesOfType", "Finished FindClassesOfType")) - { - for (var i = 0; i < 1000; i++) - { - Assert.Greater(TypeFinderOriginal.FindClassesOfType(_assemblies).Count(), 0); - } - } - using (profilingLogger.TraceDuration("Starting FindClassesOfTypeWithAttribute", "Finished FindClassesOfTypeWithAttribute")) - { - for (var i = 0; i < 1000; i++) - { - Assert.Greater(TypeFinderOriginal.FindClassesOfTypeWithAttribute(_assemblies).Count(), 0); - } - } - using (profilingLogger.TraceDuration("Starting FindClassesWithAttribute", "Finished FindClassesWithAttribute")) - { - for (var i = 0; i < 1000; i++) - { - Assert.Greater(TypeFinderOriginal.FindClassesWithAttribute(_assemblies).Count(), 0); - } - } - } - - } - - [Ignore("fixme - ignored test")] - [Test] - public void Benchmark_New_Finder() - { - var profilingLogger = GetTestProfilingLogger(); - using (profilingLogger.TraceDuration("Starting test", "Finished test")) - { - using (profilingLogger.TraceDuration("Starting FindClassesOfType", "Finished FindClassesOfType")) - { - for (var i = 0; i < 1000; i++) - { - Assert.Greater(TypeFinder.FindClassesOfType(_assemblies).Count(), 0); - } - } - using (profilingLogger.TraceDuration("Starting FindClassesOfTypeWithAttribute", "Finished FindClassesOfTypeWithAttribute")) - { - for (var i = 0; i < 1000; i++) - { - Assert.Greater(TypeFinder.FindClassesOfTypeWithAttribute(_assemblies).Count(), 0); - } - } - using (profilingLogger.TraceDuration("Starting FindClassesWithAttribute", "Finished FindClassesWithAttribute")) - { - for (var i = 0; i < 1000; i++) - { - Assert.Greater(TypeFinder.FindClassesWithAttribute(_assemblies).Count(), 0); - } - } - } - - } - [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] public class MyTestAttribute : Attribute { diff --git a/src/Umbraco.Tests/Composing/TypeLoaderTests.cs b/src/Umbraco.Tests/Composing/TypeLoaderTests.cs index 6fba071709..4cdd9687f5 100644 --- a/src/Umbraco.Tests/Composing/TypeLoaderTests.cs +++ b/src/Umbraco.Tests/Composing/TypeLoaderTests.cs @@ -288,14 +288,7 @@ AnotherContentFinder var types = _typeLoader.GetDataEditors(); Assert.AreEqual(43, types.Count()); } - - [Test] - public void Resolves_XsltExtensions() - { - var types = _typeLoader.GetXsltExtensions(); - Assert.AreEqual(3, types.Count()); - } - + /// /// This demonstrates this issue: http://issues.umbraco.org/issue/U4-3505 - the TypeList was returning a list of assignable types /// not explicit types which is sort of ideal but is confusing so we'll do it the less confusing way. @@ -319,12 +312,6 @@ AnotherContentFinder Assert.IsNull(shouldNotFind); } - [XsltExtension("Blah.Blah")] - public class MyXsltExtension - { - - } - public interface IFindMe : IDiscoverable { diff --git a/src/Umbraco.Tests/Composing/XsltExtensionCollectionTests.cs b/src/Umbraco.Tests/Composing/XsltExtensionCollectionTests.cs deleted file mode 100644 index 399b1df7bb..0000000000 --- a/src/Umbraco.Tests/Composing/XsltExtensionCollectionTests.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.Linq; -using LightInject; -using NUnit.Framework; -using Umbraco.Core.Macros; -using Umbraco.Web; - -namespace Umbraco.Tests.Composing -{ - [TestFixture] - public class XsltExtensionCollectionTests : ComposingTestBase - { - [Test] - public void XsltExtensionsCollectionBuilderWorks() - { - var container = new ServiceContainer(); - var builder = new XsltExtensionCollectionBuilder(container); - builder.AddExtensionObjectProducer(() => TypeLoader.GetXsltExtensions()); - var extensions = builder.CreateCollection(); - - Assert.AreEqual(3, extensions.Count()); - - Assert.IsTrue(extensions.Select(x => x.ExtensionObject.GetType()).Contains(typeof (XsltEx1))); - Assert.IsTrue(extensions.Select(x => x.ExtensionObject.GetType()).Contains(typeof(XsltEx2))); - Assert.AreEqual("test1", extensions.Single(x => x.ExtensionObject.GetType() == typeof(XsltEx1)).Namespace); - Assert.AreEqual("test2", extensions.Single(x => x.ExtensionObject.GetType() == typeof(XsltEx2)).Namespace); - } - - #region Test Objects - - [XsltExtension("test1")] - public class XsltEx1 - { } - - //test with legacy one - [umbraco.XsltExtension("test2")] - public class XsltEx2 - { } - - #endregion - } -} diff --git a/src/Umbraco.Tests/Macros/MacroTests.cs b/src/Umbraco.Tests/Macros/MacroTests.cs index e3a4db5390..98d36ca616 100644 --- a/src/Umbraco.Tests/Macros/MacroTests.cs +++ b/src/Umbraco.Tests/Macros/MacroTests.cs @@ -78,7 +78,6 @@ namespace Umbraco.Tests.Macros var model = new MacroModel { MacroType = macroType, - Xslt = "anything", ScriptName = "anything", TypeName = "anything" }; diff --git a/src/Umbraco.Tests/Models/MacroTests.cs b/src/Umbraco.Tests/Models/MacroTests.cs index 052c42942b..c1fda841c2 100644 --- a/src/Umbraco.Tests/Models/MacroTests.cs +++ b/src/Umbraco.Tests/Models/MacroTests.cs @@ -20,7 +20,7 @@ namespace Umbraco.Tests.Models [Test] public void Can_Deep_Clone() { - var macro = new Macro(1, Guid.NewGuid(), true, 3, "test", "Test", "blah", "blah", "xslt", false, true, true, "script"); + var macro = new Macro(1, Guid.NewGuid(), true, 3, "test", "Test", "blah", false, true, true, "script"); macro.Properties.Add(new MacroProperty(6, Guid.NewGuid(), "rewq", "REWQ", 1, "asdfasdf")); var clone = (Macro)macro.DeepClone(); diff --git a/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs index de013426b7..d4dbd51991 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs @@ -37,7 +37,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var repository = new MacroRepository((IScopeAccessor) provider, CacheHelper.CreateDisabledCacheHelper(), Mock.Of()); - var macro = new Macro("test1", "Test", "~/usercontrol/blah.ascx", "MyAssembly", "test.xslt", "~/views/macropartials/test.cshtml"); + var macro = new Macro("test1", "Test", "~/usercontrol/blah.ascx", "~/views/macropartials/test.cshtml"); ; Assert.Throws(() => repository.Save(macro)); @@ -94,14 +94,12 @@ namespace Umbraco.Tests.Persistence.Repositories Assert.That(macro.Alias, Is.EqualTo("test1")); Assert.That(macro.CacheByPage, Is.EqualTo(false)); Assert.That(macro.CacheByMember, Is.EqualTo(false)); - Assert.That(macro.ControlAssembly, Is.EqualTo("MyAssembly1")); Assert.That(macro.ControlType, Is.EqualTo("~/usercontrol/test1.ascx")); Assert.That(macro.DontRender, Is.EqualTo(true)); Assert.That(macro.Name, Is.EqualTo("Test1")); Assert.That(macro.CacheDuration, Is.EqualTo(0)); Assert.That(macro.ScriptPath, Is.EqualTo("~/views/macropartials/test1.cshtml")); Assert.That(macro.UseInEditor, Is.EqualTo(false)); - Assert.That(macro.XsltPath, Is.EqualTo("test1.xslt")); } @@ -171,7 +169,7 @@ namespace Umbraco.Tests.Persistence.Repositories var repository = new MacroRepository((IScopeAccessor) provider, CacheHelper.CreateDisabledCacheHelper(), Mock.Of()); // Act - var macro = new Macro("test", "Test", "~/usercontrol/blah.ascx", "MyAssembly", "test.xslt", "~/views/macropartials/test.cshtml"); + var macro = new Macro("test", "Test", "~/usercontrol/blah.ascx", "~/views/macropartials/test.cshtml"); macro.Properties.Add(new MacroProperty("test", "Test", 0, "test")); repository.Save(macro); @@ -197,12 +195,10 @@ namespace Umbraco.Tests.Persistence.Repositories macro.CacheDuration = 1234; macro.CacheByPage = true; macro.CacheByMember = true; - macro.ControlAssembly = ""; macro.ControlType = ""; macro.DontRender = false; macro.ScriptPath = "~/newpath.cshtml"; macro.UseInEditor = true; - macro.XsltPath = ""; repository.Save(macro); @@ -214,12 +210,10 @@ namespace Umbraco.Tests.Persistence.Repositories Assert.That(macroUpdated.CacheDuration, Is.EqualTo(1234)); Assert.That(macroUpdated.CacheByPage, Is.EqualTo(true)); Assert.That(macroUpdated.CacheByMember, Is.EqualTo(true)); - Assert.That(macroUpdated.ControlAssembly, Is.EqualTo("")); Assert.That(macroUpdated.ControlType, Is.EqualTo("")); Assert.That(macroUpdated.DontRender, Is.EqualTo(false)); Assert.That(macroUpdated.ScriptPath, Is.EqualTo("~/newpath.cshtml")); Assert.That(macroUpdated.UseInEditor, Is.EqualTo(true)); - Assert.That(macroUpdated.XsltPath, Is.EqualTo("")); } } @@ -299,7 +293,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var repository = new MacroRepository((IScopeAccessor) provider, CacheHelper.CreateDisabledCacheHelper(), Mock.Of()); - var macro = new Macro("newmacro", "A new macro", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml"); + var macro = new Macro("newmacro", "A new macro", "~/usercontrol/test1.ascx", "~/views/macropartials/test1.cshtml"); macro.Properties.Add(new MacroProperty("blah1", "New1", 4, "test.editor")); repository.Save(macro); @@ -324,7 +318,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var repository = new MacroRepository((IScopeAccessor) provider, CacheHelper.CreateDisabledCacheHelper(), Mock.Of()); - var macro = new Macro("newmacro", "A new macro", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml"); + var macro = new Macro("newmacro", "A new macro", "~/usercontrol/test1.ascx", "~/views/macropartials/test1.cshtml"); macro.Properties.Add(new MacroProperty("blah1", "New1", 4, "test.editor")); repository.Save(macro); @@ -348,7 +342,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var repository = new MacroRepository((IScopeAccessor) provider, CacheHelper.CreateDisabledCacheHelper(), Mock.Of()); - var macro = new Macro("newmacro", "A new macro", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml"); + var macro = new Macro("newmacro", "A new macro", "~/usercontrol/test1.ascx", "~/views/macropartials/test1.cshtml"); var prop1 = new MacroProperty("blah1", "New1", 4, "test.editor"); var prop2 = new MacroProperty("blah2", "New2", 3, "test.editor"); @@ -434,9 +428,9 @@ namespace Umbraco.Tests.Persistence.Repositories { var repository = new MacroRepository((IScopeAccessor) provider, CacheHelper.CreateDisabledCacheHelper(), Mock.Of()); - repository.Save(new Macro("test1", "Test1", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml")); - repository.Save(new Macro("test2", "Test2", "~/usercontrol/test2.ascx", "MyAssembly2", "test2.xslt", "~/views/macropartials/test2.cshtml")); - repository.Save(new Macro("test3", "Tet3", "~/usercontrol/test3.ascx", "MyAssembly3", "test3.xslt", "~/views/macropartials/test3.cshtml")); + repository.Save(new Macro("test1", "Test1", "~/usercontrol/test1.ascx", "~/views/macropartials/test1.cshtml")); + repository.Save(new Macro("test2", "Test2", "~/usercontrol/test2.ascx", "~/views/macropartials/test2.cshtml")); + repository.Save(new Macro("test3", "Tet3", "~/usercontrol/test3.ascx", "~/views/macropartials/test3.cshtml")); scope.Complete(); } diff --git a/src/Umbraco.Tests/Services/MacroServiceTests.cs b/src/Umbraco.Tests/Services/MacroServiceTests.cs index c7e2978b19..44c5596bfc 100644 --- a/src/Umbraco.Tests/Services/MacroServiceTests.cs +++ b/src/Umbraco.Tests/Services/MacroServiceTests.cs @@ -28,9 +28,9 @@ namespace Umbraco.Tests.Services { var repository = new MacroRepository((IScopeAccessor) provider, CacheHelper.CreateDisabledCacheHelper(), Mock.Of()); - repository.Save(new Macro("test1", "Test1", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml")); - repository.Save(new Macro("test2", "Test2", "~/usercontrol/test2.ascx", "MyAssembly2", "test2.xslt", "~/views/macropartials/test2.cshtml")); - repository.Save(new Macro("test3", "Tet3", "~/usercontrol/test3.ascx", "MyAssembly3", "test3.xslt", "~/views/macropartials/test3.cshtml")); + repository.Save(new Macro("test1", "Test1", "~/usercontrol/test1.ascx", "~/views/macropartials/test1.cshtml")); + repository.Save(new Macro("test2", "Test2", "~/usercontrol/test2.ascx", "~/views/macropartials/test2.cshtml")); + repository.Save(new Macro("test3", "Tet3", "~/usercontrol/test3.ascx", "~/views/macropartials/test3.cshtml")); scope.Complete(); } } diff --git a/src/Umbraco.Tests/Services/PackagingServiceTests.cs b/src/Umbraco.Tests/Services/PackagingServiceTests.cs index 17c065338d..36093e4feb 100644 --- a/src/Umbraco.Tests/Services/PackagingServiceTests.cs +++ b/src/Umbraco.Tests/Services/PackagingServiceTests.cs @@ -23,7 +23,7 @@ namespace Umbraco.Tests.Services public void PackagingService_Can_Export_Macro() { // Arrange - var macro = new Macro("test1", "Test", "~/usercontrol/blah.ascx", "MyAssembly", "test.xslt", "~/views/macropartials/test.cshtml"); + var macro = new Macro("test1", "Test", "~/usercontrol/blah.ascx", "~/views/macropartials/test.cshtml"); ServiceContext.MacroService.Save(macro); // Act diff --git a/src/Umbraco.Tests/UI/LegacyDialogTests.cs b/src/Umbraco.Tests/UI/LegacyDialogTests.cs index 5a978fb418..13503e4223 100644 --- a/src/Umbraco.Tests/UI/LegacyDialogTests.cs +++ b/src/Umbraco.Tests/UI/LegacyDialogTests.cs @@ -22,7 +22,6 @@ namespace Umbraco.Tests.UI } } - [TestCase(typeof(XsltTasks), Constants.Applications.Developer)] [TestCase(typeof(StylesheetTasks), Constants.Applications.Settings)] [TestCase(typeof(stylesheetPropertyTasks), Constants.Applications.Settings)] [TestCase(typeof(MemberGroupTasks), Constants.Applications.Members)] diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 0d964dcd21..3eb6d8ae73 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -335,7 +335,6 @@ - diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index 787742de4e..451b5c5a32 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -567,7 +567,6 @@ - diff --git a/src/Umbraco.Web.UI/Umbraco/config/lang/zh_tw.xml b/src/Umbraco.Web.UI/Umbraco/config/lang/zh_tw.xml index b1997a1c0a..c362f91df0 100644 --- a/src/Umbraco.Web.UI/Umbraco/config/lang/zh_tw.xml +++ b/src/Umbraco.Web.UI/Umbraco/config/lang/zh_tw.xml @@ -378,8 +378,6 @@ 讀取使用者控制項 %0% 錯誤 讀取使用者控制項 %0% 錯誤(組件:%0%,類別:%1%) 讀取巨集引擎腳本錯誤(檔案:%0%) - 分析XSLT檔案錯誤:%0% - 讀取XSLT檔案錯誤:%0% 請輸入標題 請選擇類型 圖片尺寸大於原始尺寸不會提高圖片品質,您確定要把圖片尺寸變大嗎? @@ -1350,4 +1348,4 @@ 轉址追蹤器已開啟。 啟動轉址追蹤器錯誤,更多資訊請參閱您的紀錄檔。 - \ No newline at end of file + diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/en.xml b/src/Umbraco.Web.UI/umbraco/config/lang/en.xml index 993f845831..50ee041e9f 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/en.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/en.xml @@ -434,8 +434,6 @@ Error loading userControl '%0%' Error loading customControl (Assembly: %0%, Type: '%1%') Error loading MacroEngine script (file: %0%) - "Error parsing XSLT file: %0% - "Error reading XSLT file: %0% Please enter a title Please choose a type You're about to make the picture larger than the original size. Are you sure that you want to proceed? diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml b/src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml index d3326c57b3..6304fda60f 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml @@ -503,8 +503,6 @@ Error loading userControl '%0%' Error loading customControl (Assembly: %0%, Type: '%1%') Error loading MacroEngine script (file: %0%) - "Error parsing XSLT file: %0% - "Error reading XSLT file: %0% Please enter a title Please choose a type You're about to make the picture larger than the original size. Are you sure that you want to proceed? diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/es.xml b/src/Umbraco.Web.UI/umbraco/config/lang/es.xml index cf44e6e955..a259c11346 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/es.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/es.xml @@ -487,8 +487,6 @@ Error cargando userControl '%0%' Error cargandog customControl (Assembly: %0%, Type: '%1%') Error cargando MacroEngine script (file: %0%) - "Error analizando archivo XSLT: %0% - "Error leyendo archivo XSLT: %0% diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/fr.xml b/src/Umbraco.Web.UI/umbraco/config/lang/fr.xml index 37a3795d12..e047ff611b 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/fr.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/fr.xml @@ -388,8 +388,6 @@ Erreur de chargement du userControl '%0%' Erreur de chargement d'un customControl (Assembly: %0%, Type: '%1%') Erreur de chargement d'un script du MacroEngine (fichier : %0%) - "Erreur de parsing d'un fichier XSLT : %0% - "Erreur de lecture d'un fichier XSLT : %0% Veuillez entrer un titre Veuillez choisir un type Vous allez définir une taille d'image supérieure à sa taille d'origine. Êtes-vous certain(e) de vouloir continuer? diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/ja.xml b/src/Umbraco.Web.UI/umbraco/config/lang/ja.xml index 36e294f1b8..1fcb8d889c 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/ja.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/ja.xml @@ -370,8 +370,6 @@ userControl の読み込みエラー '%0%' customControl の読み込みエラー (アセンブリ: %0%, タイプ: '%1%') MacroEngine スクリプトの読み込みエラー (ファイル: %0%) - XSLT ファイル解析エラー: %0% - XSLT ファイル読み込みエラー: %0% タイトルを入力してください 型を選択してください 元画像より大きくしようとしていますが、本当によろしいのですか? diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml b/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml index d398a839ec..dd7f5b58a2 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml @@ -398,8 +398,6 @@ Error bij het laden van userControl '%0%' Error bij het laden van customControl (Assembly: %0%, Type: '%1%') Error bij het laden van MacroEngine script (file: %0%) - "Error bij het parsen van XSLT file: %0% - "Error bij het laden van XSLT file: %0% Vul een titel in Selecteer een type U wilt een afbeelding groter maken dan de originele afmetingen. Weet je zeker dat je wilt doorgaan? diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/pl.xml b/src/Umbraco.Web.UI/umbraco/config/lang/pl.xml index d47b06d10e..39e70003fe 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/pl.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/pl.xml @@ -487,8 +487,6 @@ Wystąpił błąd podczas ładowania userControl '%0%' Wystąpił błąd podczas ładowania customControl (Assembly: %0%, Typ: '%1%') Wystąpił błąd podczas ładowania skryptu MacroEngine (plik: %0%) - "Wystąpił błąd podczas parsowania pliku XSLT: %0% - "Wystąpił błąd odczytu pliku XSLT: %0% Proszę podać tytuł Proszę wybrać typ Chcesz utworzyć obraz większy niż rozmiar oryginalny. Czy na pewno chcesz kontynuować? diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/ru.xml b/src/Umbraco.Web.UI/umbraco/config/lang/ru.xml index 009fbdb683..d234ab0e62 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/ru.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/ru.xml @@ -512,8 +512,6 @@ Ошибка загрузки пользовательского элемента управления '%0%' Ошибка загрузки внешнего типа (сборка: %0%, тип: '%1%') Ошибка загрузки макроса (файл: %0%) - "Ошибка разбора кода XSLT в файле: %0% - "Ошибка чтения XSLT-файла: %0% Ошибка в конфигурации типа данных, используемого для свойства, проверьте тип данных Укажите заголовок Выберите тип diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/tr.xml b/src/Umbraco.Web.UI/umbraco/config/lang/tr.xml index 8436976f9e..0439b09b3a 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/tr.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/tr.xml @@ -314,8 +314,6 @@ Error loading userControl '%0%' Error loading customControl (Assembly: %0%, Type: '%1%') Error loading MacroEngine script (Dosya: %0%) - "Error parsing XSLT file: %0% - "Error reading XSLT file: %0% Lütfen bir başlık girin Lütfen bir tür seçin Orijinal boyutundan daha resmi büyütmek üzereyiz. Devam etmek istediğinizden emin misiniz? diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/zh.xml b/src/Umbraco.Web.UI/umbraco/config/lang/zh.xml index fed9f9d057..9513536c98 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/zh.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/zh.xml @@ -393,8 +393,6 @@ 加载 userControl 时出错 '%0%' 加载 customControl 时出错(程序集: %0%, 类型: '%1%') 加载 MacroEngine 脚本时出错 (文件: %0%) - "解析 xslt 文件时出错: %0% - "读取 xslt 文件时出错: %0% 请输入标题 请选择类型 图片尺寸大于原始尺寸不会提高图片质量,您确定要把图片尺寸变大吗? diff --git a/src/Umbraco.Web.UI/umbraco/developer/Macros/EditMacro.aspx.cs b/src/Umbraco.Web.UI/umbraco/developer/Macros/EditMacro.aspx.cs index d01d9b08e7..621b2926e6 100644 --- a/src/Umbraco.Web.UI/umbraco/developer/Macros/EditMacro.aspx.cs +++ b/src/Umbraco.Web.UI/umbraco/developer/Macros/EditMacro.aspx.cs @@ -29,9 +29,9 @@ namespace Umbraco.Web.UI.Umbraco.Developer.Macros /// /// /// - protected override void PopulateFieldsOnLoad(IMacro macro, string macroAssemblyValue, string macroTypeValue) + protected override void PopulateFieldsOnLoad(IMacro macro, string macroTypeValue) { - base.PopulateFieldsOnLoad(macro, macroAssemblyValue, macroTypeValue); + base.PopulateFieldsOnLoad(macro, macroTypeValue); //check if the ScriptingFile property contains the MacroPartials path if (macro.ScriptPath.IsNullOrWhiteSpace() == false && (macro.ScriptPath.StartsWith(SystemDirectories.MvcViews + "/MacroPartials/") diff --git a/src/Umbraco.Web.UI/umbraco/developer/Macros/EditMacro.aspx.designer.cs b/src/Umbraco.Web.UI/umbraco/developer/Macros/EditMacro.aspx.designer.cs index a64101c102..a1febaa2ba 100644 --- a/src/Umbraco.Web.UI/umbraco/developer/Macros/EditMacro.aspx.designer.cs +++ b/src/Umbraco.Web.UI/umbraco/developer/Macros/EditMacro.aspx.designer.cs @@ -3,15 +3,15 @@ // This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// the code is regenerated. // //------------------------------------------------------------------------------ namespace Umbraco.Web.UI.Umbraco.Developer.Macros { - - + + public partial class EditMacro { - + /// /// CssInclude1 control. /// @@ -20,7 +20,7 @@ namespace Umbraco.Web.UI.Umbraco.Developer.Macros { /// To modify move field declaration from designer file to code-behind file. /// protected global::ClientDependency.Core.Controls.CssInclude CssInclude1; - + /// /// SelectedPartialView control. /// @@ -29,7 +29,7 @@ namespace Umbraco.Web.UI.Umbraco.Developer.Macros { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox SelectedPartialView; - + /// /// PartialViewList control. /// diff --git a/src/Umbraco.Web.UI/umbraco/developer/Macros/assemblyBrowser.aspx b/src/Umbraco.Web.UI/umbraco/developer/Macros/assemblyBrowser.aspx deleted file mode 100644 index 4aaf155fa1..0000000000 --- a/src/Umbraco.Web.UI/umbraco/developer/Macros/assemblyBrowser.aspx +++ /dev/null @@ -1,28 +0,0 @@ -<%@ Page Language="c#" MasterPageFile="../../masterpages/umbracoPage.Master" Title="Assembly Browser" Codebehind="assemblyBrowser.aspx.cs" AutoEventWireup="True" - Inherits="umbraco.developer.assemblyBrowser" %> - - -

- -

The following list shows the Public Properties from the - Control. By checking the Properties and click the "Save Properties" button at - - the bottom, umbraco will create the corresponding Macro Elements.

- -

- -

-
- - -

The following Macro Parameters was added:

-
-

- Important: You might need to reload the macro to see the changes.

- -

- - -
- -
diff --git a/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx b/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx index d6291f0511..fc8aff082d 100644 --- a/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx +++ b/src/Umbraco.Web.UI/umbraco/developer/Macros/editMacro.aspx @@ -68,27 +68,12 @@ - - - - - - - + - - - - - (Assembly)
- - (Type) - -
diff --git a/src/Umbraco.Web/Composing/Current.cs b/src/Umbraco.Web/Composing/Current.cs index d2a1ee6f80..e1317a902b 100644 --- a/src/Umbraco.Web/Composing/Current.cs +++ b/src/Umbraco.Web/Composing/Current.cs @@ -124,10 +124,7 @@ namespace Umbraco.Web.Composing internal static EditorValidatorCollection EditorValidators => Container.GetInstance(); - - internal static XsltExtensionCollection XsltExtensions - => Container.GetInstance(); - + internal static UmbracoApiControllerTypeCollection UmbracoApiControllerTypes => Container.GetInstance(); @@ -143,9 +140,6 @@ namespace Umbraco.Web.Composing internal static IPublishedSnapshotService PublishedSnapshotService => Container.GetInstance(); - public static ThumbnailProviderCollection ThumbnailProviders - => Container.GetInstance(); - #endregion #region Web Constants diff --git a/src/Umbraco.Web/CompositionExtensions.cs b/src/Umbraco.Web/CompositionExtensions.cs index 881a88c05f..e172af7b8a 100644 --- a/src/Umbraco.Web/CompositionExtensions.cs +++ b/src/Umbraco.Web/CompositionExtensions.cs @@ -33,15 +33,7 @@ namespace Umbraco.Core.Components /// internal static ActionCollectionBuilder Actions(this Composition composition) => composition.Container.GetInstance(); - - /// - /// Gets the content finders collection builder. - /// - /// The composition. - /// - internal static XsltExtensionCollectionBuilder XsltExtensions(this Composition composition) - => composition.Container.GetInstance(); - + /// /// Gets the content finders collection builder. /// @@ -80,13 +72,6 @@ namespace Umbraco.Core.Components internal static ImageUrlProviderCollectionBuilder ImageUrlProviders(this Composition composition) => composition.Container.GetInstance(); - /// - /// Gets the thumbnail providers collection builder. - /// - /// The composition. - internal static ThumbnailProviderCollectionBuilder ThumbnailProviders(this Composition composition) - => composition.Container.GetInstance(); - /// /// Gets the url providers collection builder. /// diff --git a/src/Umbraco.Web/Macros/MacroModel.cs b/src/Umbraco.Web/Macros/MacroModel.cs index 4239dbc827..28aad1b777 100644 --- a/src/Umbraco.Web/Macros/MacroModel.cs +++ b/src/Umbraco.Web/Macros/MacroModel.cs @@ -19,13 +19,8 @@ namespace Umbraco.Web.Macros public MacroTypes MacroType { get; set; } - // that one was for CustomControls which are gone in v8 - //public string TypeAssembly { get; set; } - public string TypeName { get; set; } - public string Xslt { get; set; } - public string ScriptName { get; set; } public string ScriptCode { get; set; } @@ -54,9 +49,7 @@ namespace Umbraco.Web.Macros Id = macro.Id; Name = macro.Name; Alias = macro.Alias; - //TypeAssembly = macro.ControlAssembly; TypeName = macro.ControlType; - Xslt = macro.XsltPath; ScriptName = macro.ScriptPath; CacheDuration = macro.CacheDuration; CacheByPage = macro.CacheByPage; diff --git a/src/Umbraco.Web/Macros/MacroRenderer.cs b/src/Umbraco.Web/Macros/MacroRenderer.cs index 9692b73b52..c1b613e2f2 100644 --- a/src/Umbraco.Web/Macros/MacroRenderer.cs +++ b/src/Umbraco.Web/Macros/MacroRenderer.cs @@ -177,22 +177,12 @@ namespace Umbraco.Web.Macros switch (model.MacroType) { - case MacroTypes.Xslt: - filename = SystemDirectories.Xslt.EnsureEndsWith('/') + model.Xslt; - break; - //case MacroTypes.Script: - // // was "~/macroScripts/" - // filename = SystemDirectories.MacroScripts.EnsureEndsWith('/') + model.ScriptName; - // break; case MacroTypes.PartialView: filename = model.ScriptName; //partial views are saved with their full virtual path break; case MacroTypes.UserControl: filename = model.TypeName; //user controls are saved with their full virtual path break; - //case MacroTypes.Script: - //case MacroTypes.CustomControl: - //case MacroTypes.Unknown: default: // not file-based, or not supported filename = null; @@ -381,24 +371,7 @@ namespace Umbraco.Web.Macros "Executed PartialView.", () => ExecutePartialView(model), () => textService.Localize("errors/macroErrorLoadingPartialView", new[] { model.ScriptName })); - - //case MacroTypes.Script: - // return ExecuteMacroWithErrorWrapper(model, - // "Executing Script: " + (string.IsNullOrWhiteSpace(model.ScriptCode) - // ? "ScriptName=\"" + model.ScriptName + "\"" - // : "Inline, Language=\"" + model.ScriptLanguage + "\""), - // "Executed Script.", - // () => ExecuteScript(model), - // () => textService.Localize("errors/macroErrorLoadingMacroEngineScript", new[] { model.ScriptName })); - - case MacroTypes.Xslt: - return ExecuteMacroWithErrorWrapper(model, - $"Executing Xslt: TypeName=\"{model.TypeName}\", ScriptName=\"{model.Xslt}\".", - "Executed Xslt.", - () => ExecuteXslt(model, _plogger), - // cannot diff. between reading & parsing... bah - () => textService.Localize("errors/macroErrorParsingXSLTFile", new[] { model.Xslt })); - + case MacroTypes.UserControl: return ExecuteMacroWithErrorWrapper(model, $"Loading UserControl: TypeName=\"{model.TypeName}\".", @@ -447,16 +420,6 @@ namespace Umbraco.Web.Macros return engine.Execute(macro, content); } - /// - /// Renders an Xslt Macro. - /// - /// The text output of the macro execution. - public static MacroContent ExecuteXslt(MacroModel macro, ProfilingLogger plogger) - { - var engine = new XsltMacroEngine(plogger); - return engine.Execute(macro); - } - public static MacroContent ExecuteUserControl(MacroModel macro) { // add tilde for v4 defined macros diff --git a/src/Umbraco.Web/Macros/XsltMacroEngine.cs b/src/Umbraco.Web/Macros/XsltMacroEngine.cs deleted file mode 100644 index 10fd6b5305..0000000000 --- a/src/Umbraco.Web/Macros/XsltMacroEngine.cs +++ /dev/null @@ -1,687 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Net; -using System.Text; -using System.Web; -using System.Web.Caching; -using System.Xml; -using System.Xml.XPath; -using System.Xml.Xsl; -using umbraco; -using Umbraco.Core; -using Umbraco.Core.Cache; -using Umbraco.Core.Configuration; -using Umbraco.Core.IO; -using Umbraco.Core.Logging; -using Umbraco.Core.Xml.XPath; -using Umbraco.Web.Composing; -using Umbraco.Web.Templates; - -namespace Umbraco.Web.Macros -{ - /// - /// A macro engine using XSLT to execute. - /// - public class XsltMacroEngine - { - private readonly Func _getHttpContext; - private readonly Func _getUmbracoContext; - private readonly ProfilingLogger _plogger; - - public XsltMacroEngine(ProfilingLogger plogger) - { - _plogger = plogger; - - _getHttpContext = () => - { - if (HttpContext.Current == null) - throw new InvalidOperationException("The Xslt Macro Engine cannot execute with a null HttpContext.Current reference"); - return new HttpContextWrapper(HttpContext.Current); - }; - - _getUmbracoContext = () => - { - if (UmbracoContext.Current == null) - throw new InvalidOperationException("The Xslt Macro Engine cannot execute with a null UmbracoContext.Current reference"); - return UmbracoContext.Current; - }; - } - - #region Execute Xslt - - // executes the macro, relying on GetXsltTransform - // will pick XmlDocument or Navigator mode depending on the capabilities of the published caches - public MacroContent Execute(MacroModel model) - { - var hasCode = string.IsNullOrWhiteSpace(model.ScriptCode) == false; - var hasXslt = string.IsNullOrWhiteSpace(model.Xslt) == false; - - if (hasXslt == false && hasCode == false) - { - Current.Logger.Warn("Xslt is empty"); - return MacroContent.Empty; - } - - if (hasCode && model.ScriptLanguage.InvariantEquals("xslt") == false) - { - Current.Logger.Warn("Unsupported script language \"" + model.ScriptLanguage + "\"."); - return MacroContent.Empty; - } - - var msg = "Executing Xslt: " + (hasCode ? "Inline." : "Xslt=\"" + model.Xslt + "\"."); - using (_plogger.DebugDuration(msg, "ExecutedXslt.")) - { - // need these two here for error reporting - MacroNavigator macroNavigator = null; - XmlDocument macroXml = null; - - IXPathNavigable macroNavigable; - IXPathNavigable contentNavigable; - - var xmlCache = UmbracoContext.Current.ContentCache as PublishedCache.XmlPublishedCache.PublishedContentCache; - - if (xmlCache == null) - { - // a different cache - // inheriting from NavigableNavigator is required - - var contentNavigator = UmbracoContext.Current.ContentCache.CreateNavigator() as NavigableNavigator; - var mediaNavigator = UmbracoContext.Current.MediaCache.CreateNavigator() as NavigableNavigator; - - if (contentNavigator == null || mediaNavigator == null) - throw new Exception("Published caches XPathNavigator do not inherit from NavigableNavigator."); - - var parameters = new List(); - foreach (var prop in model.Properties) - AddMacroParameter(parameters, contentNavigator, mediaNavigator, prop.Key, prop.Type, prop.Value); - - macroNavigable = macroNavigator = new MacroNavigator(parameters); - contentNavigable = UmbracoContext.Current.ContentCache; - } - else - { - // the original XML cache - // render the macro on top of the Xml document - - var umbracoXml = xmlCache.GetXml(UmbracoContext.Current.InPreviewMode); - - macroXml = new XmlDocument(); - macroXml.LoadXml(""); - - foreach (var prop in model.Properties) - AddMacroXmlNode(umbracoXml, macroXml, prop.Key, prop.Type, prop.Value); - - macroNavigable = macroXml; - contentNavigable = umbracoXml; - } - - // this is somewhat ugly but eh... - var httpContext = _getHttpContext(); - if (httpContext.Request.QueryString["umbDebug"] != null && GlobalSettings.DebugMode) - { - var outerXml = macroXml?.OuterXml ?? macroNavigator.OuterXml; - var text = $"
Debug from {model.Name}
{HttpUtility.HtmlEncode(outerXml)}
"; - return new MacroContent { Text = text }; - } - - // get the transform - XslCompiledTransform transform; - if (hasCode) - { - try - { - using (var sreader = new StringReader(model.ScriptCode)) - using (var xreader = new XmlTextReader(sreader)) - { - transform = GetXsltTransform(xreader, GlobalSettings.DebugMode); - } - } - catch (Exception e) - { - throw new Exception("Failed to parse inline Xslt.", e); - } - } - else - { - try - { - transform = GetCachedXsltTransform(model.Xslt); - } - catch (Exception e) - { - throw new Exception($"Failed to read Xslt file \"{model.Xslt}\".", e); - } - } - - using (_plogger.DebugDuration("Performing transformation.", "Performed transformation.")) - { - try - { - var transformed = XsltTransform(_plogger, macroNavigable, contentNavigable, transform); - var text = TemplateUtilities.ResolveUrlsFromTextString(transformed); - return new MacroContent { Text = text }; - } - catch (Exception e) - { - throw new Exception($"Failed to exec Xslt file \"{model.Xslt}\".", e); - } - } - } - } - - /// - /// Adds the XSLT extension namespaces to the XSLT header using - /// {0} as the container for the namespace references and - /// {1} as the container for the exclude-result-prefixes - /// - /// The XSLT - /// The XSLT with {0} and {1} replaced. - /// This is done here because it needs the engine's XSLT extensions. - public static string AddXsltExtensionsToHeader(string xslt) - { - var namespaceList = new StringBuilder(); - var namespaceDeclaractions = new StringBuilder(); - foreach (var extension in GetXsltExtensions()) - { - namespaceList.Append(extension.Key).Append(' '); - namespaceDeclaractions.AppendFormat("xmlns:{0}=\"urn:{0}\" ", extension.Key); - } - - // parse xslt - xslt = xslt.Replace("{0}", namespaceDeclaractions.ToString()); - xslt = xslt.Replace("{1}", namespaceList.ToString()); - return xslt; - } - - public static string TestXsltTransform(ProfilingLogger plogger, string xsltText, int currentPageId = -1) - { - IXPathNavigable macroNavigable; - IXPathNavigable contentNavigable; - - var xmlCache = UmbracoContext.Current.ContentCache as PublishedCache.XmlPublishedCache.PublishedContentCache; - - var xslParameters = new Dictionary(); - xslParameters["currentPage"] = UmbracoContext.Current.ContentCache - .CreateNavigator() - .Select(currentPageId > 0 ? ("//* [@id=" + currentPageId + "]") : "//* [@parentID=-1]"); - - if (xmlCache == null) - { - // a different cache - // inheriting from NavigableNavigator is required - - var contentNavigator = UmbracoContext.Current.ContentCache.CreateNavigator() as NavigableNavigator; - if (contentNavigator == null) - throw new Exception("Published caches XPathNavigator do not inherit from NavigableNavigator."); - - var parameters = new List(); - macroNavigable = new MacroNavigator(parameters); - contentNavigable = UmbracoContext.Current.ContentCache; - } - else - { - // the original XML cache - // render the macro on top of the Xml document - - var umbracoXml = xmlCache.GetXml(UmbracoContext.Current.InPreviewMode); - - var macroXml = new XmlDocument(); - macroXml.LoadXml(""); - - macroNavigable = macroXml; - contentNavigable = umbracoXml; - } - - // for a test, do not try...catch - // but let the exceptions be thrown - - XslCompiledTransform transform; - using (var reader = new XmlTextReader(new StringReader(xsltText))) - { - transform = GetXsltTransform(reader, true); - } - var transformed = XsltTransform(plogger, macroNavigable, contentNavigable, transform, xslParameters); - - return transformed; - } - - public static string ExecuteItemRenderer(ProfilingLogger plogger, XslCompiledTransform transform, string itemData) - { - IXPathNavigable macroNavigable; - IXPathNavigable contentNavigable; - - var xmlCache = UmbracoContext.Current.ContentCache as PublishedCache.XmlPublishedCache.PublishedContentCache; - - if (xmlCache == null) - { - // a different cache - // inheriting from NavigableNavigator is required - - var contentNavigator = UmbracoContext.Current.ContentCache.CreateNavigator() as NavigableNavigator; - var mediaNavigator = UmbracoContext.Current.MediaCache.CreateNavigator() as NavigableNavigator; - - if (contentNavigator == null || mediaNavigator == null) - throw new Exception("Published caches XPathNavigator do not inherit from NavigableNavigator."); - - var parameters = new List(); - - macroNavigable = new MacroNavigator(parameters); - contentNavigable = UmbracoContext.Current.ContentCache; - } - else - { - // the original XML cache - // render the macro on top of the Xml document - - var umbracoXml = xmlCache.GetXml(UmbracoContext.Current.InPreviewMode); - - var macroXml = new XmlDocument(); - macroXml.LoadXml(""); - - macroNavigable = macroXml; - contentNavigable = umbracoXml; - } - - var xslParameters = new Dictionary { { "itemData", itemData } }; - return XsltTransform(plogger, macroNavigable, contentNavigable, transform, xslParameters); - } - - #endregion - - #region XsltTransform - - // running on the XML cache, document mode - // add parameters to the root node - // note: contains legacy dirty code - private static void AddMacroXmlNode(XmlDocument umbracoXml, XmlDocument macroXml, - string macroPropertyAlias, string macroPropertyType, string macroPropertyValue) - { - var macroXmlNode = macroXml.CreateNode(XmlNodeType.Element, macroPropertyAlias, string.Empty); - - // if no value is passed, then use the current "pageID" as value - var contentId = macroPropertyValue == string.Empty ? UmbracoContext.Current.PageId.ToString() : macroPropertyValue; - - Current.Logger.Info($"Xslt node adding search start ({macroPropertyAlias},{macroPropertyValue})"); - - switch (macroPropertyType) - { - case "contentTree": - var nodeId = macroXml.CreateAttribute("nodeID"); - nodeId.Value = contentId; - macroXmlNode.Attributes.SetNamedItem(nodeId); - - // Get subs - try - { - macroXmlNode.AppendChild(macroXml.ImportNode(umbracoXml.GetElementById(contentId), true)); - } - catch - { } - break; - - case "contentCurrent": - var importNode = macroPropertyValue == string.Empty - ? umbracoXml.GetElementById(contentId) - : umbracoXml.GetElementById(macroPropertyValue); - - var currentNode = macroXml.ImportNode(importNode, true); - - // remove all sub content nodes - foreach (XmlNode n in currentNode.SelectNodes("*[@isDoc]")) - currentNode.RemoveChild(n); - - macroXmlNode.AppendChild(currentNode); - - break; - - case "contentSubs": // disable that one, it does not work anyway... - //x.LoadXml(""); - //x.FirstChild.AppendChild(x.ImportNode(umbracoXml.GetElementById(contentId), true)); - //macroXmlNode.InnerXml = TransformMacroXml(x, "macroGetSubs.xsl"); - break; - - case "contentAll": - macroXmlNode.AppendChild(macroXml.ImportNode(umbracoXml.DocumentElement, true)); - break; - - case "contentRandom": - XmlNode source = umbracoXml.GetElementById(contentId); - if (source != null) - { - var sourceList = source.SelectNodes("*[@isDoc]"); - if (sourceList.Count > 0) - { - int rndNumber; - var r = library.GetRandom(); - lock (r) - { - rndNumber = r.Next(sourceList.Count); - } - var node = macroXml.ImportNode(sourceList[rndNumber], true); - // remove all sub content nodes - foreach (XmlNode n in node.SelectNodes("*[@isDoc]")) - node.RemoveChild(n); - - macroXmlNode.AppendChild(node); - } - else - Current.Logger.Warn("Error adding random node - parent (" + macroPropertyValue + ") doesn't have children!"); - } - else - Current.Logger.Warn("Error adding random node - parent (" + macroPropertyValue + ") doesn't exists!"); - break; - - case "mediaCurrent": - if (string.IsNullOrEmpty(macroPropertyValue) == false) - { - //var c = new global::umbraco.cms.businesslogic.Content(int.Parse(macroPropertyValue)); - //macroXmlNode.AppendChild(macroXml.ImportNode(c.ToXml(global::umbraco.content.Instance.XmlContent, false), true)); - var nav = UmbracoContext.Current.MediaCache.CreateNodeNavigator(int.Parse(macroPropertyValue), false); - if (nav != null) - macroXmlNode.AppendChild(macroXml.ReadNode(nav.ReadSubtree())); - } - break; - - default: - macroXmlNode.InnerText = HttpUtility.HtmlDecode(macroPropertyValue); - break; - } - macroXml.FirstChild.AppendChild(macroXmlNode); - } - - // running on a navigable cache, navigable mode - // add parameters to the macro parameters collection - private static void AddMacroParameter(ICollection parameters, - NavigableNavigator contentNavigator, NavigableNavigator mediaNavigator, - string macroPropertyAlias, string macroPropertyType, string macroPropertyValue) - { - // if no value is passed, then use the current "pageID" as value - var contentId = macroPropertyValue == string.Empty ? UmbracoContext.Current.PageId.ToString() : macroPropertyValue; - - Current.Logger.Info($"Xslt node adding search start ({macroPropertyAlias},{macroPropertyValue})"); - - // beware! do not use the raw content- or media- navigators, but clones !! - - switch (macroPropertyType) - { - case "contentTree": - parameters.Add(new MacroNavigator.MacroParameter( - macroPropertyAlias, - contentNavigator.CloneWithNewRoot(contentId), // null if not found - will be reported as empty - attributes: new Dictionary { { "nodeID", contentId } })); - - break; - - case "contentPicker": - parameters.Add(new MacroNavigator.MacroParameter( - macroPropertyAlias, - contentNavigator.CloneWithNewRoot(contentId), // null if not found - will be reported as empty - 0)); - break; - - case "contentSubs": - parameters.Add(new MacroNavigator.MacroParameter( - macroPropertyAlias, - contentNavigator.CloneWithNewRoot(contentId), // null if not found - will be reported as empty - 1)); - break; - - case "contentAll": - parameters.Add(new MacroNavigator.MacroParameter(macroPropertyAlias, contentNavigator.Clone())); - break; - - case "contentRandom": - var nav = contentNavigator.Clone(); - if (nav.MoveToId(contentId)) - { - var descendantIterator = nav.Select("./* [@isDoc]"); - if (descendantIterator.MoveNext()) - { - // not empty - and won't change - var descendantCount = descendantIterator.Count; - - int index; - var r = library.GetRandom(); - lock (r) - { - index = r.Next(descendantCount); - } - - while (index > 0 && descendantIterator.MoveNext()) - index--; - - var node = descendantIterator.Current.UnderlyingObject as INavigableContent; - if (node != null) - { - nav = contentNavigator.CloneWithNewRoot(node.Id); - parameters.Add(new MacroNavigator.MacroParameter(macroPropertyAlias, nav, 0)); - } - else - throw new InvalidOperationException("Iterator contains non-INavigableContent elements."); - } - else - Current.Logger.Warn("Error adding random node - parent (" + macroPropertyValue + ") doesn't have children!"); - } - else - Current.Logger.Warn("Error adding random node - parent (" + macroPropertyValue + ") doesn't exists!"); - break; - - case "mediaCurrent": - parameters.Add(new MacroNavigator.MacroParameter( - macroPropertyAlias, - mediaNavigator.CloneWithNewRoot(contentId), // null if not found - will be reported as empty - 0)); - break; - - default: - parameters.Add(new MacroNavigator.MacroParameter(macroPropertyAlias, HttpUtility.HtmlDecode(macroPropertyValue))); - break; - } - } - - // gets the result of the xslt transform - private static string XsltTransform(ProfilingLogger plogger, IXPathNavigable macroNavigable, IXPathNavigable contentNavigable, - XslCompiledTransform xslt, IDictionary xslParameters = null) - { - TextWriter tw = new StringWriter(); - - XsltArgumentList xslArgs; - using (plogger.DebugDuration("Adding Xslt extensions", "Added Xslt extensions")) - { - xslArgs = GetXsltArgumentListWithExtensions(); - var lib = new library(); - xslArgs.AddExtensionObject("urn:umbraco.library", lib); - } - - // add parameters - if (xslParameters == null || xslParameters.ContainsKey("currentPage") == false) - { - // note: "PageId" is a legacy stuff that might be != from what's in current PublishedContentRequest - var currentPageId = UmbracoContext.Current.PageId; - var current = contentNavigable.CreateNavigator().Select("//* [@id=" + currentPageId + "]"); - xslArgs.AddParam("currentPage", string.Empty, current); - } - if (xslParameters != null) - foreach (var parameter in xslParameters) - xslArgs.AddParam(parameter.Key, string.Empty, parameter.Value); - - // transform - using (plogger.DebugDuration("Executing Xslt transform", "Executed Xslt transform")) - { - xslt.Transform(macroNavigable, xslArgs, tw); - } - - return tw.ToString(); - } - - #endregion - - #region Manage transforms - - private static XslCompiledTransform GetCachedXsltTransform(string filename) - { - //TODO: SD: Do we really need to cache this?? - var filepath = IOHelper.MapPath(SystemDirectories.Xslt.EnsureEndsWith('/') + filename); - return Current.ApplicationCache.GetCacheItem( - CacheKeys.MacroXsltCacheKey + filename, - CacheItemPriority.Default, - new CacheDependency(filepath), - () => - { - using (var xslReader = new XmlTextReader(filepath)) - { - return GetXsltTransform(xslReader, GlobalSettings.DebugMode); - } - }); - } - - public static XslCompiledTransform GetXsltTransform(XmlTextReader xslReader, bool debugMode) - { - var transform = new XslCompiledTransform(debugMode); - var xslResolver = new XmlUrlResolver - { - Credentials = CredentialCache.DefaultCredentials - }; - - xslReader.EntityHandling = EntityHandling.ExpandEntities; - xslReader.DtdProcessing = DtdProcessing.Parse; - - try - { - transform.Load(xslReader, XsltSettings.TrustedXslt, xslResolver); - } - finally - { - xslReader.Close(); - } - - return transform; - } - - #endregion - - #region Manage extensions - - /* - private static readonly string XsltExtensionsConfig = - IOHelper.MapPath(SystemDirectories.Config + "/xsltExtensions.config"); - - private static readonly Func XsltExtensionsDependency = - () => new CacheDependency(XsltExtensionsConfig); - */ - - // creates and return an Xslt argument list with all Xslt extensions. - public static XsltArgumentList GetXsltArgumentListWithExtensions() - { - var xslArgs = new XsltArgumentList(); - - foreach (var extension in GetXsltExtensions()) - { - var extensionNamespace = "urn:" + extension.Key; - xslArgs.AddExtensionObject(extensionNamespace, extension.Value); - Current.Logger.Info($"Extension added: {extensionNamespace}, {extension.Value.GetType().Name}"); - } - - return xslArgs; - } - - /* - // gets the collection of all XSLT extensions for macros - // ie predefined, configured in the config file, and marked with the attribute - public static Dictionary GetCachedXsltExtensions() - { - // We could cache the extensions in a static variable but then the cache - // would not be refreshed when the .config file is modified. An application - // restart would be required. Better use the cache and add a dependency. - - // SD: The only reason the above statement might be true is because the xslt extension .config file is not a - // real config file!! if it was, we wouldn't have this issue. Having these in a static variable would be preferred! - // If you modify a config file, the app restarts and thus all static variables are reset. - // Having this stuff in cache just adds to the gigantic amount of cache data and will cause more cache turnover to happen. - - return ApplicationContext.Current.ApplicationCache.GetCacheItem( - "UmbracoXsltExtensions", - CacheItemPriority.NotRemovable, // NH 4.7.1, Changing to NotRemovable - null, // no refresh action - XsltExtensionsDependency(), // depends on the .config file - TimeSpan.FromDays(1), // expires in 1 day (?) - GetXsltExtensions); - } - */ - - // actually gets the collection of all XSLT extensions for macros - // ie predefined, configured in the config file, and marked with the attribute - public static Dictionary GetXsltExtensions() - { - return Current.XsltExtensions - .ToDictionary(x => x.Namespace, x => x.ExtensionObject); - - /* - // initialize the collection - // there is no "predefined" extensions anymore - var extensions = new Dictionary(); - - // Load the XSLT extensions configuration - var xsltExt = new XmlDocument(); - xsltExt.Load(XsltExtensionsConfig); - - // get the configured types - var extensionsNode = xsltExt.SelectSingleNode("/XsltExtensions"); - if (extensionsNode != null) - foreach (var attributes in extensionsNode.Cast() - .Where(x => x.NodeType == XmlNodeType.Element) - .Select(x => x.Attributes)) - { - Debug.Assert(attributes["assembly"] != null, "Extension attribute 'assembly' not specified."); - Debug.Assert(attributes["type"] != null, "Extension attribute 'type' not specified."); - Debug.Assert(attributes["alias"] != null, "Extension attribute 'alias' not specified."); - - // load the extension assembly - var extensionFile = IOHelper.MapPath(string.Format("{0}/{1}.dll", - SystemDirectories.Bin, attributes["assembly"].Value)); - - Assembly extensionAssembly; - try - { - extensionAssembly = Assembly.LoadFrom(extensionFile); - } - catch (Exception ex) - { - throw new Exception( - String.Format("Could not load assembly {0} for XSLT extension {1}. Please check config/xsltExtensions.config.", - extensionFile, attributes["alias"].Value), ex); - } - - // load the extension type - var extensionType = extensionAssembly.GetType(attributes["type"].Value); - if (extensionType == null) - throw new Exception( - String.Format("Could not load type {0} ({1}) for XSLT extension {2}. Please check config/xsltExtensions.config.", - attributes["type"].Value, extensionFile, attributes["alias"].Value)); - - // create an instance and add it to the extensions list - extensions.Add(attributes["alias"].Value, Activator.CreateInstance(extensionType)); - } - - // get types marked with XsltExtension attribute - var foundExtensions = TypeLoader.Current.ResolveXsltExtensions(); - foreach (var xsltType in foundExtensions) - { - var attributes = xsltType.GetCustomAttributes(true); - var xsltTypeName = xsltType.FullName; - foreach (var ns in attributes - .Select(attribute => string.IsNullOrEmpty(attribute.Namespace) ? attribute.Namespace : xsltTypeName)) - { - extensions.Add(ns, Activator.CreateInstance(xsltType)); - } - } - - return extensions; - */ - } - - #endregion - } -} diff --git a/src/Umbraco.Web/Media/ThumbnailProviders/ThumbnailProviderCollection.cs b/src/Umbraco.Web/Media/ThumbnailProviders/ThumbnailProviderCollection.cs deleted file mode 100644 index 1668677649..0000000000 --- a/src/Umbraco.Web/Media/ThumbnailProviders/ThumbnailProviderCollection.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Umbraco.Core.Composing; -using Umbraco.Core.Media; - -namespace Umbraco.Web.Media.ThumbnailProviders -{ - // fixme - kill entirely in v8 thumbs should be generated by ImageProcessor - public class ThumbnailProviderCollection : BuilderCollectionBase - { - public ThumbnailProviderCollection(IEnumerable items) - : base(items) - { } - - public string GetThumbnailUrl(string fileUrl) - { - var provider = this.FirstOrDefault(x => x.CanProvideThumbnail(fileUrl)); - return provider != null ? provider.GetThumbnailUrl(fileUrl) : string.Empty; - } - } -} diff --git a/src/Umbraco.Web/Media/ThumbnailProviders/ThumbnailProviderCollectionBuilder.cs b/src/Umbraco.Web/Media/ThumbnailProviders/ThumbnailProviderCollectionBuilder.cs deleted file mode 100644 index e5925ac4e7..0000000000 --- a/src/Umbraco.Web/Media/ThumbnailProviders/ThumbnailProviderCollectionBuilder.cs +++ /dev/null @@ -1,15 +0,0 @@ -using LightInject; -using Umbraco.Core.Composing; -using Umbraco.Core.Media; - -namespace Umbraco.Web.Media.ThumbnailProviders -{ - public class ThumbnailProviderCollectionBuilder : WeightedCollectionBuilderBase - { - public ThumbnailProviderCollectionBuilder(IServiceContainer container) - : base(container) - { } - - protected override ThumbnailProviderCollectionBuilder This => this; - } -} diff --git a/src/Umbraco.Web/Runtime/WebRuntimeComponent.cs b/src/Umbraco.Web/Runtime/WebRuntimeComponent.cs index 54afd0ad75..e408a46db5 100644 --- a/src/Umbraco.Web/Runtime/WebRuntimeComponent.cs +++ b/src/Umbraco.Web/Runtime/WebRuntimeComponent.cs @@ -121,9 +121,6 @@ namespace Umbraco.Web.Runtime composition.Container.EnableWebApi(GlobalConfiguration.Configuration); composition.Container.RegisterApiControllers(typeLoader, GetType().Assembly); - XsltExtensionCollectionBuilder.Register(composition.Container) - .AddExtensionObjectProducer(() => typeLoader.GetXsltExtensions()); - composition.Container.RegisterCollectionBuilder() .Add(() => typeLoader.GetTypes()); // fixme which searchable trees?! @@ -179,13 +176,7 @@ namespace Umbraco.Web.Runtime .Append(); composition.Container.RegisterSingleton(); - - composition.Container.RegisterCollectionBuilder() - .Add(typeLoader.GetThumbnailProviders()); - - composition.Container.RegisterCollectionBuilder() - .Append(typeLoader.GetImageUrlProviders()); - + composition.Container.RegisterSingleton(); // register *all* checks, except those marked [HideFromTypeFinder] of course diff --git a/src/Umbraco.Web/TypeLoaderExtensions.cs b/src/Umbraco.Web/TypeLoaderExtensions.cs index 2c7bc430ce..a1209abccf 100644 --- a/src/Umbraco.Web/TypeLoaderExtensions.cs +++ b/src/Umbraco.Web/TypeLoaderExtensions.cs @@ -63,36 +63,6 @@ namespace Umbraco.Web { return mgr.GetTypes(); } - - /// - /// Returns all classes attributed with XsltExtensionAttribute attribute - /// - /// - /// - internal static IEnumerable GetXsltExtensions(this TypeLoader mgr) - { - return mgr.GetAttributedTypes(); - } - - /// - /// Returns all IThumbnailProvider classes - /// - /// - /// - internal static IEnumerable GetThumbnailProviders(this TypeLoader mgr) - { - return mgr.GetTypes(); - } - - /// - /// Returns all IImageUrlProvider classes - /// - /// - /// - internal static IEnumerable GetImageUrlProviders(this TypeLoader mgr) - { - return mgr.GetTypes(); - } - + } } diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index 9b771f09c9..5b4da825a8 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -204,7 +204,6 @@ - @@ -217,8 +216,6 @@ - - @@ -443,6 +440,7 @@ ASPXCodeBehind + @@ -808,9 +806,6 @@ ASPXCodeBehind - - ASPXCodeBehind - @@ -1181,9 +1176,6 @@ ASPXCodeBehind - - ASPXCodeBehind - ASPXCodeBehind @@ -1200,7 +1192,6 @@ ASPXCodeBehind - @@ -1293,7 +1284,6 @@ - FeedProxy.aspx ASPXCodeBehind @@ -1327,13 +1317,6 @@ Preview.aspx - - xsltVisualize.aspx - ASPXCodeBehind - - - xsltVisualize.aspx - insertMasterpageContent.aspx ASPXCodeBehind @@ -1374,13 +1357,6 @@ Code - - assemblyBrowser.aspx - ASPXCodeBehind - - - assemblyBrowser.aspx - editPackage.aspx ASPXCodeBehind @@ -1388,24 +1364,6 @@ editPackage.aspx - - getXsltStatus.asmx - Component - - - xsltChooseExtension.aspx - ASPXCodeBehind - - - xsltChooseExtension.aspx - - - xsltInsertValueOf.aspx - ASPXCodeBehind - - - xsltInsertValueOf.aspx - exportDocumenttype.aspx ASPXCodeBehind @@ -1466,11 +1424,6 @@ - - True - True - Resources.resx - default.aspx ASPXCodeBehind @@ -1506,9 +1459,6 @@ - - XmlTree.xsd - @@ -1519,10 +1469,6 @@ CheckForUpgrade.asmx Component - - codeEditorSave.asmx - Component - legacyAjaxCalls.asmx Component @@ -1571,11 +1517,6 @@ ResXFileCodeGenerator Strings.Designer.cs - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - @@ -1593,10 +1534,6 @@
- - - - ASPXCodeBehind @@ -1604,7 +1541,6 @@ Form - @@ -1624,7 +1560,6 @@ ASPXCodeBehind - ASPXCodeBehind @@ -1655,11 +1590,6 @@ - - - - XmlTree.xsd - @@ -1685,7 +1615,6 @@ SettingsSingleFileGenerator Settings1.Designer.cs - diff --git a/src/Umbraco.Web/_Legacy/Packager/PackageInstance/PackagerUtility.cs b/src/Umbraco.Web/_Legacy/Packager/PackageInstance/PackagerUtility.cs index d887a706d5..ced330c638 100644 --- a/src/Umbraco.Web/_Legacy/Packager/PackageInstance/PackagerUtility.cs +++ b/src/Umbraco.Web/_Legacy/Packager/PackageInstance/PackagerUtility.cs @@ -132,9 +132,6 @@ namespace umbraco.cms.businesslogic.packager if (appendFile) { - if (!string.IsNullOrEmpty(mcr.XsltPath)) - AppendFileToManifest(IOHelper.ResolveUrl(SystemDirectories.Xslt) + "/" + mcr.XsltPath, packageDirectory, doc); - //TODO: Clearly the packager hasn't worked very well for packaging Partial Views to date since there is no logic in here for that //if (!string.IsNullOrEmpty(mcr.ScriptingFile)) diff --git a/src/Umbraco.Web/umbraco.presentation/XsltExtensionAttribute.cs b/src/Umbraco.Web/umbraco.presentation/XsltExtensionAttribute.cs deleted file mode 100644 index b3e0e7dce8..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/XsltExtensionAttribute.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Security.Permissions; -using System.Web; - -namespace umbraco -{ - /// - /// Allows App_Code XSLT extensions to be declared using the [XsltExtension] class attribute. - /// - /// - /// An optional XML namespace can be specified using [XsltExtension("MyNamespace")]. - /// - [AttributeUsage(AttributeTargets.Class)] - [Obsolete("Use Umbraco.Core.Macros.XsltExtensionAttribute instead")] - public class XsltExtensionAttribute : Umbraco.Core.Macros.XsltExtensionAttribute - { - public XsltExtensionAttribute() : base() - { - - } - - public XsltExtensionAttribute(string ns) : base(ns) - { - - } - - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/Trees.cd b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/Trees.cd deleted file mode 100644 index 28c6272d99..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/Trees.cd +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - umbraco\Trees\BaseTree.cs - AABUAABAAAQSAQAIAAAAQAAABRBgBEUBWDIAAMKAAyI= - - - - - - - umbraco\Trees\BaseContentTree.cs - ACAAAAAIBICAgAIIEAEAAAAAAAAAAAAAgBQAAAAAAAI= - - - - - - umbraco\Trees\loadContent.cs - AAAAAAAAAQAABAAIAAQAAAAAAABAAAABABAAAEAAAAA= - - - - - - umbraco\Trees\loadMedia.cs - AAAAAAAAAAAAAAAIAAAAAAAAAABAAAABABAAAEAAAAI= - - - - - - umbraco\Trees\FileSystemTree.cs - AAABAAAAAAAAABAAAAAAAAAAAAAAEAABABBAAAAAAAI= - - - - - - umbraco\Trees\loadXslt.cs - AAAAAAAAAAAAABAAAAAAAAAAAAAAEAABAABAAAAAAAI= - - - - - - umbraco\Trees\loadPython.cs - AAAAAAAAAAAAABAAAAAAAAAAAAAAEAABAABAAAAAAAI= - - - - - - umbraco\Trees\ContentRecycleBin.cs - AAAAAAAAAAAAAAAIEAAAAAAAAABAAAABAAIAAEAAAAA= - - - - - - umbraco\Trees\LegacyTree.cs - AAAAAAAAACAAAAAAAAAAAAABACAAAAABABAAAAAAAAI= - - - - - - umbraco\Trees\NullTree.cs - AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABABAAAAAAAAI= - - - - - - - \ No newline at end of file diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/XmlTree.xsd b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/XmlTree.xsd deleted file mode 100644 index e577da3663..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/XmlTree.xsd +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/XmlTree.xsx b/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/XmlTree.xsx deleted file mode 100644 index ff71343be3..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/Trees/XmlTree.xsx +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/create/XsltTasks.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/create/XsltTasks.cs deleted file mode 100644 index 8b9f5cb8e5..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/create/XsltTasks.cs +++ /dev/null @@ -1,120 +0,0 @@ -using System; -using System.IO; -using Umbraco.Core; -using Umbraco.Core.IO; -using Umbraco.Core.Logging; -using Umbraco.Web.UI; -using Umbraco.Core.FileResources; -using Umbraco.Core.Models; -using Umbraco.Web; -using Umbraco.Web.Composing; -using Umbraco.Web._Legacy.UI; -using File = System.IO.File; - -namespace umbraco -{ - /// - /// Summary description for standardTasks. - /// - /// - - public class XsltTasks : LegacyDialogTask - { - - public override bool PerformSave() - { - IOHelper.EnsurePathExists(SystemDirectories.Xslt); - IOHelper.EnsureFileExists(Path.Combine(IOHelper.MapPath(SystemDirectories.Xslt), "web.config"), Files.BlockingWebConfig); - - var template = Alias.Substring(0, Alias.IndexOf("|||")); - var fileName = Alias.Substring(Alias.IndexOf("|||") + 3, Alias.Length - Alias.IndexOf("|||") - 3).Replace(" ", ""); - if (fileName.ToLowerInvariant().EndsWith(".xslt") == false) - fileName += ".xslt"; - var xsltTemplateSource = IOHelper.MapPath(SystemDirectories.Umbraco + "/xslt/templates/" + template); - var xsltNewFilename = IOHelper.MapPath(SystemDirectories.Xslt + "/" + fileName); - - if (File.Exists(xsltNewFilename) == false) - { - if (fileName.Contains("/")) //if there's a / create the folder structure for it - { - var folders = fileName.Split("/".ToCharArray()); - var xsltBasePath = IOHelper.MapPath(SystemDirectories.Xslt); - for (var i = 0; i < folders.Length - 1; i++) - { - xsltBasePath = System.IO.Path.Combine(xsltBasePath, folders[i]); - System.IO.Directory.CreateDirectory(xsltBasePath); - } - } - - // update with xslt references - var xslt = ""; - using (var xsltFile = System.IO.File.OpenText(xsltTemplateSource)) - { - xslt = xsltFile.ReadToEnd(); - xsltFile.Close(); - } - - // prepare support for XSLT extensions - xslt = Umbraco.Web.Macros.XsltMacroEngine.AddXsltExtensionsToHeader(xslt); - var xsltWriter = System.IO.File.CreateText(xsltNewFilename); - xsltWriter.Write(xslt); - xsltWriter.Flush(); - xsltWriter.Close(); - - // Create macro? - if (ParentID == 1) - { - var name = Alias.Substring(Alias.IndexOf("|||") + 3, Alias.Length - Alias.IndexOf("|||") - 3); - if (name.ToLowerInvariant().EndsWith(".xslt")) - name = name.Substring(0, name.Length - 5); - - name = name.SplitPascalCasing().ToFirstUpperInvariant(); - //cms.businesslogic.macro.Macro m = - // cms.businesslogic.macro.Macro.MakeNew(name); - var m = new Macro - { - Name = name, - Alias = name.Replace(" ", String.Empty) - }; - m.XsltPath = fileName; - //m.Save(); - Current.Services.MacroService.Save(m); - } - } - - _returnUrl = string.Format(SystemDirectories.Umbraco + "/developer/xslt/editXslt.aspx?file={0}", fileName); - - return true; - } - - public override bool PerformDelete() - { - var path = IOHelper.MapPath(SystemDirectories.Xslt + "/" + Alias.TrimStart('/')); - - try - { - if(System.IO.Directory.Exists(path)) - System.IO.Directory.Delete(path); - else if(System.IO.File.Exists(path)) - System.IO.File.Delete(path); - } - catch (Exception ex) - { - Current.Logger.Error(string.Format("Could not remove XSLT file {0} - User {1}", Alias, UmbracoContext.Current.Security.GetUserId()), ex); - } - return true; - } - - private string _returnUrl = ""; - - public override string ReturnUrl - { - get { return _returnUrl; } - } - - public override string AssignedApp - { - get { return Constants.Applications.Developer.ToString(); } - } - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/create/xslt.ascx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/create/xslt.ascx.cs deleted file mode 100644 index 90ffd2101e..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/create/xslt.ascx.cs +++ /dev/null @@ -1,127 +0,0 @@ -using Umbraco.Core.Services; -using System.Web; -using System.Web.UI.WebControls; -using System.IO; -using Umbraco.Core; -using Umbraco.Web.UI; -using Umbraco.Core.IO; -using Umbraco.Web; -using Umbraco.Web.UI.Controls; -using Umbraco.Web._Legacy.UI; - -namespace umbraco.presentation.create -{ - - - /// - /// Summary description for xslt. - /// - public partial class xslt : UmbracoUserControl - { - protected System.Web.UI.WebControls.ListBox nodeType; - - protected void Page_Load(object sender, System.EventArgs e) - { - sbmt.Text = Services.TextService.Localize("create"); - foreach (string fileName in Directory.GetFiles(IOHelper.MapPath(SystemDirectories.Umbraco + GetXsltTemplatePath()), "*.xslt")) - { - FileInfo fi = new FileInfo(fileName); - if (fi.Name != "Clean.xslt") - { - var liText = fi.Name.Replace(".xslt", "").SplitPascalCasing().ToFirstUpperInvariant(); - xsltTemplate.Items.Add(new ListItem(liText, fi.Name)); - } - } - - } - - private static string GetXsltTemplatePath() - { - return "/xslt/templates/schema2"; - } - - protected void sbmt_Click(object sender, System.EventArgs e) - { - if (Page.IsValid) - { - var createMacroVal = 0; - if (createMacro.Checked) - createMacroVal = 1; - - var xsltName = Path.Combine("schema2", xsltTemplate.SelectedValue); - - - var returnUrl = LegacyDialogHandler.Create( - new HttpContextWrapper(Context), - Security.CurrentUser, - Request.GetItemAsString("nodeType"), - createMacroVal, - xsltName + "|||" + rename.Text); - - ClientTools - .ChangeContentFrameUrl(returnUrl) - .ChildNodeCreated() - .CloseModalWindow(); - - - - - } - - } - - /// - /// rename control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox rename; - - /// - /// RequiredFieldValidator1 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1; - - /// - /// xsltTemplate control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.ListBox xsltTemplate; - - /// - /// createMacro control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.CheckBox createMacro; - - /// - /// Textbox1 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox Textbox1; - - /// - /// sbmt control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Button sbmt; - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/assemblyBrowser.aspx b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/assemblyBrowser.aspx deleted file mode 100644 index 18b582707d..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/assemblyBrowser.aspx +++ /dev/null @@ -1,29 +0,0 @@ -<%@ Page Language="c#" MasterPageFile="../../masterpages/umbracoDialog.Master" Title="Assembly Browser" Codebehind="assemblyBrowser.aspx.cs" AutoEventWireup="True" - Inherits="umbraco.developer.assemblyBrowser" %> - - -

- - -

The following list shows the Public Properties from the - Control. By checking the Properties and click the "Save Properties" button at - - the bottom, umbraco will create the corresponding Macro Elements.

- -

- -

-
- - -

The following Macro Parameters was added:

-
-

- Important: You might need to reload the macro to see the changes.

- -

- - -
- -
diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/assemblyBrowser.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/assemblyBrowser.aspx.cs deleted file mode 100644 index 96b815019f..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/assemblyBrowser.aspx.cs +++ /dev/null @@ -1,204 +0,0 @@ -using System; -using System.Linq; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Reflection; -using Umbraco.Core; -using Umbraco.Core.IO; -using Umbraco.Core.Models; -using Umbraco.Web; -using Umbraco.Web.Composing; -using Umbraco.Web.UI.Pages; -using UserControl = System.Web.UI.UserControl; - -namespace umbraco.developer -{ - /// - /// Summary description for assemblyBrowser. - /// - public partial class assemblyBrowser : UmbracoEnsuredPage - { - public assemblyBrowser() - { - CurrentApp = Constants.Applications.Developer.ToString(); - } - protected void Page_Load(object sender, EventArgs e) - { - - var isUserControl = false; - var errorReadingControl = false; - - try - { - - Type type = null; - if (Request.QueryString["type"] == null) - { - isUserControl = true; - var fileName = Request.GetItemAsString("fileName"); - if (!fileName.StartsWith("~")) - { - if (fileName.StartsWith("/")) - { - fileName = "~" + fileName; - } - else - { - fileName = "~/" + fileName; - } - } - IOHelper.ValidateEditPath(fileName, SystemDirectories.UserControls); - - if (System.IO.File.Exists(IOHelper.MapPath(fileName))) - { - var oControl = (UserControl)LoadControl(fileName); - - type = oControl.GetType(); - } - else - { - errorReadingControl = true; - ChooseProperties.Visible = false; - AssemblyName.Text = "User control doesn't exist

Please verify that you've copied the file to:
" + IOHelper.MapPath("~/" + fileName); - } - } - else - { - var currentAss = IOHelper.MapPath(SystemDirectories.Bin + "/" + Request.QueryString["fileName"] + ".dll"); - var asm = Assembly.LoadFrom(currentAss); - type = asm.GetType(Request.QueryString["type"]); - } - - if (!errorReadingControl) - { - string fullControlAssemblyName; - if (isUserControl) - { - AssemblyName.Text = "Choose Properties from " + type.BaseType.Name; - fullControlAssemblyName = type.BaseType.Namespace + "." + type.BaseType.Name; - } - else - { - AssemblyName.Text = "Choose Properties from " + type.Name; - fullControlAssemblyName = type.Namespace + "." + type.Name; - } - - - if (!IsPostBack && type != null) - { - MacroProperties.Items.Clear(); - foreach (var pi in type.GetProperties()) - { - if (pi.CanWrite && ((fullControlAssemblyName == pi.DeclaringType.Namespace + "." + pi.DeclaringType.Name) || pi.DeclaringType == type)) - { - MacroProperties.Items.Add(new ListItem(pi.Name + " (" + pi.PropertyType.Name + ")", pi.PropertyType.Name)); - } - - foreach (ListItem li in MacroProperties.Items) - li.Selected = true; - } - } - - } - } - catch (Exception err) - { - AssemblyName.Text = "Error reading " + Request.CleanForXss("fileName"); - Button1.Visible = false; - ChooseProperties.Controls.Add(new LiteralControl("

" + err.ToString() + "

")); - } - - } - - protected void Button1_Click(object sender, EventArgs e) - { - var result = ""; - - // Get the macro object - var macroObject = Current.Services.MacroService.GetById(Convert.ToInt32(Request.QueryString["macroID"])); - - //// Load all macroPropertyTypes - //var macroPropertyTypes = new Hashtable(); - //var macroPropertyIds = new Hashtable(); - - //var macroPropTypes = ParameterEditorResolver.Current.ParameterEditors.ToArray(); - - //foreach (var mpt in macroPropTypes) - //{ - // macroPropertyIds.Add(mpt.Alias, mpt.Id.ToString()); - // macroPropertyTypes.Add(mpt.Alias, mpt.BaseType); - //} - var changed = false; - - foreach (ListItem li in MacroProperties.Items) - { - if (li.Selected && MacroHasProperty(macroObject, li.Text.Substring(0, li.Text.IndexOf(" ", StringComparison.Ordinal)).ToLower()) == false) - { - result += "

  • Added: " + SpaceCamelCasing(li.Text) + "
  • "; - var macroPropertyTypeAlias = GetMacroTypeFromClrType(li.Value); - - macroObject.Properties.Add(new Umbraco.Core.Models.MacroProperty - { - Name = SpaceCamelCasing(li.Text), - Alias = li.Text.Substring(0, li.Text.IndexOf(" ", StringComparison.Ordinal)), - EditorAlias = macroPropertyTypeAlias - }); - - changed = true; - } - else if (li.Selected) - { - result += "
  • Skipped: " + SpaceCamelCasing(li.Text) + " (already exists as a parameter)
  • "; - } - } - - if (changed) - { - Current.Services.MacroService.Save(macroObject); - } - - ChooseProperties.Visible = false; - ConfigProperties.Visible = true; - resultLiteral.Text = result; - } - - private static bool MacroHasProperty(IMacro macroObject, string propertyAlias) - { - return macroObject.Properties.Any(mp => mp.Alias.ToLower() == propertyAlias); - } - - private static string SpaceCamelCasing(string text) - { - var tempString = text.Substring(0, 1).ToUpper(); - for (var i = 1; i < text.Length; i++) - { - if (text.Substring(i, 1) == " ") - break; - if (text.Substring(i, 1).ToUpper() == text.Substring(i, 1)) - tempString += " "; - tempString += text.Substring(i, 1); - } - return tempString; - } - - private static string GetMacroTypeFromClrType(string baseTypeName) - { - switch (baseTypeName) - { - case "Int32": - return Constants.PropertyEditors.Aliases.Integer; - case "Decimal": - //we previously only had an integer editor too! - this would of course - // fail if someone enters a real long number - return Constants.PropertyEditors.Aliases.Integer; - case "Boolean": - return Constants.PropertyEditors.Aliases.Boolean; - case "String": - default: - return Constants.PropertyEditors.Aliases.TextBox; - } - } - - } - -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/assemblyBrowser.aspx.designer.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/assemblyBrowser.aspx.designer.cs deleted file mode 100644 index 9b8f124443..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/assemblyBrowser.aspx.designer.cs +++ /dev/null @@ -1,69 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace umbraco.developer { - - - public partial class assemblyBrowser { - - /// - /// AssemblyName control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Label AssemblyName; - - /// - /// ChooseProperties control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Panel ChooseProperties; - - /// - /// MacroProperties control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.CheckBoxList MacroProperties; - - /// - /// Button1 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Button Button1; - - /// - /// ConfigProperties control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Panel ConfigProperties; - - /// - /// resultLiteral control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Literal resultLiteral; - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs index 163e1da2b8..1f2fcf515c 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Macros/editMacro.aspx.cs @@ -47,22 +47,9 @@ namespace umbraco.cms.presentation.developer ClientTools .SyncTree("-1," + _macro.Id, false); - string tempMacroAssembly = _macro.ControlAssembly ?? ""; string tempMacroType = _macro.ControlType ?? ""; - PopulateFieldsOnLoad(_macro, tempMacroAssembly, tempMacroType); - - // Check for assemblyBrowser - if (tempMacroType.IndexOf(".ascx", StringComparison.Ordinal) > 0) - assemblyBrowserUserControl.Controls.Add( - new LiteralControl("
    ")); - else if (tempMacroType != string.Empty && tempMacroAssembly != string.Empty) - assemblyBrowser.Controls.Add( - new LiteralControl("
    ")); + PopulateFieldsOnLoad(_macro, tempMacroType); // Load elements from macro macroPropertyBind(); @@ -83,12 +70,11 @@ namespace umbraco.cms.presentation.developer /// /// /// - protected virtual void PopulateFieldsOnLoad(IMacro macro, string macroAssemblyValue, string macroTypeValue) + protected virtual void PopulateFieldsOnLoad(IMacro macro, string macroTypeValue) { macroName.Text = macro.Name; macroAlias.Text = macro.Alias; macroKey.Text = macro.Key.ToString(); - macroXslt.Text = macro.XsltPath; cachePeriod.Text = macro.CacheDuration.ToInvariantString(); macroRenderContent.Checked = macro.DontRender == false; macroEditor.Checked = macro.UseInEditor; @@ -96,9 +82,8 @@ namespace umbraco.cms.presentation.developer cachePersonalized.Checked = macro.CacheByMember; // Populate either user control or custom control - if (macroTypeValue != string.Empty && macroAssemblyValue != string.Empty) + if (macroTypeValue != string.Empty) { - macroAssembly.Text = macroAssemblyValue; macroType.Text = macroTypeValue; } else @@ -119,9 +104,7 @@ namespace umbraco.cms.presentation.developer macro.CacheDuration = macroCachePeriod; macro.Alias = macroAlias.Text; macro.Name = macroName.Text; - macro.ControlAssembly = macroAssemblyValue; macro.ControlType = macroTypeValue; - macro.XsltPath = macroXslt.Text; } private static void GetXsltFilesFromDir(string orgPath, string path, ArrayList files) @@ -229,7 +212,7 @@ namespace umbraco.cms.presentation.developer return Convert.ToBoolean(isChecked); } - public void AddChooseList(Object sender, EventArgs e) + public void AddChooseList(object sender, EventArgs e) { if (IsPostBack == false) { @@ -341,18 +324,6 @@ namespace umbraco.cms.presentation.developer ClientTools.ShowSpeechBubble(SpeechBubbleIcon.Save, "Macro saved", ""); - // Check for assemblyBrowser - if (tempMacroType.IndexOf(".ascx", StringComparison.Ordinal) > 0) - assemblyBrowserUserControl.Controls.Add( - new LiteralControl("
    ")); - else if (tempMacroType != string.Empty && tempMacroAssembly != string.Empty) - assemblyBrowser.Controls.Add( - new LiteralControl("
    ")); - macroPropertyBind(); } @@ -418,16 +389,7 @@ namespace umbraco.cms.presentation.developer /// To modify move field declaration from designer file to code-behind file. /// protected global::Umbraco.Web._Legacy.Controls.Pane Pane1_2; - - /// - /// macroXslt control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox macroXslt; - + /// /// xsltFiles control. /// @@ -454,16 +416,7 @@ namespace umbraco.cms.presentation.developer /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.DropDownList userControlList; - - /// - /// assemblyBrowserUserControl control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.PlaceHolder assemblyBrowserUserControl; - + /// /// macroAssembly control. /// @@ -481,16 +434,7 @@ namespace umbraco.cms.presentation.developer /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox macroType; - - /// - /// assemblyBrowser control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.PlaceHolder assemblyBrowser; - + /// /// Pane1_3 control. /// diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/editXslt.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/editXslt.aspx.cs deleted file mode 100644 index 82bc42a2e6..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/editXslt.aspx.cs +++ /dev/null @@ -1,198 +0,0 @@ -using Umbraco.Core.Services; -using System; -using System.Collections.Generic; -using System.IO; -using System.Web.UI; -using System.Web.UI.WebControls; -using Umbraco.Core; -using Umbraco.Core.IO; -using Umbraco.Web._Legacy.Controls; -using umbraco.cms.presentation.Trees; -using Umbraco.Web.UI.Pages; - -namespace umbraco.cms.presentation.developer -{ - /// - /// Summary description for editXslt. - /// - [WebformsPageTreeAuthorize(Constants.Trees.Xslt)] - public partial class editXslt : UmbracoEnsuredPage - { - - protected PlaceHolder buttons; - - protected MenuButton SaveButton; - - protected void Page_Load(object sender, EventArgs e) - { - if (!IsPostBack) - { - string file = Request.QueryString["file"]; - string path = BaseTree.GetTreePathFromFilePath(file, false, true); - ClientTools - .SyncTree(path, false); - } - } - - protected override void OnInit(EventArgs e) - { - base.OnInit(e); - - SaveButton = UmbracoPanel1.Menu.NewButton(); - SaveButton.ToolTip = "Save Xslt File"; - SaveButton.Text = Services.TextService.Localize("save"); - SaveButton.ButtonType = MenuButtonType.Primary; - SaveButton.ID = "save"; - SaveButton.CssClass = "client-side"; - - var code = UmbracoPanel1.NewTabPage("xslt"); - code.Controls.Add(pane1); - - var props = UmbracoPanel1.NewTabPage("properties"); - props.Controls.Add(pane2); - - var tmp = editorSource.Menu.NewIcon(); - tmp.ImageURL = IOHelper.ResolveUrl(SystemDirectories.Umbraco) + "/images/editor/insField.GIF"; - tmp.OnClickCommand = ClientTools.Scripts.OpenModalWindow(IOHelper.ResolveUrl(SystemDirectories.Umbraco) + "/developer/xslt/xsltinsertvalueof.aspx?objectId=" + editorSource.ClientID, "Insert value", 750, 250); - //"umbracoInsertField(document.getElementById('editorSource'), 'xsltInsertValueOf', '','felt', 750, 230, '');"; - tmp.AltText = "Insert xslt:value-of"; - - editorSource.Menu.InsertSplitter(); - - tmp = editorSource.Menu.NewIcon(); - tmp.ImageURL = SystemDirectories.Umbraco + "/images/editor/insMemberItem.GIF"; - tmp.OnClickCommand = "UmbEditor.Insert('\\n', '" + editorSource.ClientID + "'); return false;"; - tmp.AltText = "Insert xsl:variable"; - - editorSource.Menu.InsertSplitter(); - - tmp = editorSource.Menu.NewIcon(); - tmp.ImageURL = SystemDirectories.Umbraco + "/images/editor/insChildTemplateNew.GIF"; - tmp.OnClickCommand = "UmbEditor.Insert('\\n', '\\n\\n', '" + editorSource.ClientID + "'); return false;"; - tmp.AltText = "Insert xsl:if"; - - tmp = editorSource.Menu.NewIcon(); - tmp.ImageURL = SystemDirectories.Umbraco + "/images/editor/insChildTemplateNew.GIF"; - tmp.OnClickCommand = "UmbEditor.Insert('\\n', '\\n\\n', '" + editorSource.ClientID + "'); return false;"; - tmp.AltText = "Insert xsl:for-each"; - - editorSource.Menu.InsertSplitter(); - - tmp = editorSource.Menu.NewIcon(); - tmp.ImageURL = SystemDirectories.Umbraco + "/images/editor/insFieldByLevel.GIF"; - tmp.OnClickCommand = "UmbEditor.Insert('\\n\\n', '\\n\\n\\n\\n\\n', '" + editorSource.ClientID + "'); return false;"; - tmp.AltText = "Insert xsl:choose"; - - editorSource.Menu.InsertSplitter(); - - tmp = editorSource.Menu.NewIcon(); - tmp.ImageURL = SystemDirectories.Umbraco + "/images/editor/xslVisualize.GIF"; - tmp.OnClickCommand = "xsltVisualize();"; - tmp.AltText = "Visualize XSLT"; - - - // Add source and filename - var file = IOHelper.MapPath(SystemDirectories.Xslt + "/" + Request.QueryString["file"]); - - // validate file - IOHelper.ValidateEditPath(file, SystemDirectories.Xslt); - // validate extension - IOHelper.ValidateFileExtension(file, new List() { "xslt", "xsl" }); - - - xsltFileName.Text = file.Replace(IOHelper.MapPath(SystemDirectories.Xslt), "").Substring(1).Replace(@"\", "/"); - - StreamReader SR; - string S; - SR = File.OpenText(file); - - S = SR.ReadToEnd(); - SR.Close(); - - editorSource.Text = S; - } - - - protected override void OnPreRender(EventArgs e) - { - base.OnPreRender(e); - - ScriptManager.GetCurrent(Page).Services.Add(new ServiceReference(IOHelper.ResolveUrl(SystemDirectories.WebServices) + "/codeEditorSave.asmx")); - ScriptManager.GetCurrent(Page).Services.Add(new ServiceReference(IOHelper.ResolveUrl(SystemDirectories.WebServices) + "/legacyAjaxCalls.asmx")); - } - - - /// - /// JsInclude1 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::ClientDependency.Core.Controls.JsInclude JsInclude1; - - /// - /// UmbracoPanel1 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::Umbraco.Web._Legacy.Controls.TabView UmbracoPanel1; - - /// - /// Pane1 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::Umbraco.Web._Legacy.Controls.Pane pane1; - protected global::Umbraco.Web._Legacy.Controls.Pane pane2; - - /// - /// pp_filename control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::Umbraco.Web._Legacy.Controls.PropertyPanel pp_filename; - - /// - /// xsltFileName control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox xsltFileName; - - /// - /// pp_errorMsg control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::Umbraco.Web._Legacy.Controls.PropertyPanel pp_errorMsg; - - /// - /// editorSource control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::Umbraco.Web._Legacy.Controls.CodeArea editorSource; - - /// - /// editorJs control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Literal editorJs; - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/getXsltStatus.asmx b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/getXsltStatus.asmx deleted file mode 100644 index 7d5385af8f..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/getXsltStatus.asmx +++ /dev/null @@ -1 +0,0 @@ -<%@ WebService Language="c#" Codebehind="getXsltStatus.asmx.cs" Class="umbraco.developer.getXsltStatus" %> diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/getXsltStatus.asmx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/getXsltStatus.asmx.cs deleted file mode 100644 index 99a74b0d8c..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/getXsltStatus.asmx.cs +++ /dev/null @@ -1,88 +0,0 @@ -using System; -using System.Collections; -using System.ComponentModel; -using System.Data; -using System.Diagnostics; -using System.Web; -using System.Web.Services; -using System.Xml; -using System.IO; -using Umbraco.Core.IO; -using umbraco.presentation.webservices; -using Umbraco.Web.WebServices; - -namespace umbraco.developer -{ - /// - /// Summary description for getXsltStatus. - /// - [WebService(Namespace="http://umbraco.org/webservices")] - public class getXsltStatus : UmbracoAuthorizedWebService - { - public getXsltStatus() - { - //CODEGEN: This call is required by the ASP.NET Web Services Designer - InitializeComponent(); - } - - // TODO: Security-check - [WebMethod] - public XmlDocument FilesFromDirectory(string dir) - { - AuthorizeRequest(true); - - XmlDocument xd = new XmlDocument(); - xd.LoadXml(""); - foreach (string file in System.IO.Directory.GetFiles(IOHelper.MapPath(SystemDirectories.Umbraco + "/xslt/" + dir), "*.xsl*")) - { - FileInfo fi = new FileInfo(file); - FileAttributes fa = fi.Attributes; - XmlElement fileXml = xd.CreateElement("file"); - fileXml.SetAttribute("name", fi.Name); - //fileXml.SetAttribute("created", fi.CreationTimeUtc); - fileXml.SetAttribute("modified", fi.LastWriteTimeUtc.ToString()); - fileXml.SetAttribute("size", fi.Length.ToString()); - xd.DocumentElement.AppendChild((XmlNode) fileXml); - } - return xd; - } - - #region Component Designer generated code - - //Required by the Web Services Designer - private IContainer components = null; - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - } - - /// - /// Clean up any resources being used. - /// - protected override void Dispose( bool disposing ) - { - if(disposing && components != null) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #endregion - - // WEB SERVICE EXAMPLE - // The HelloWorld() example service returns the string Hello World - // To build, uncomment the following lines then save and build the project - // To test this web service, press F5 - -// [WebMethod] -// public string HelloWorld() -// { -// return "Hello World"; -// } - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltChooseExtension.aspx b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltChooseExtension.aspx deleted file mode 100644 index b719951aed..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltChooseExtension.aspx +++ /dev/null @@ -1,44 +0,0 @@ -<%@ Page Language="c#" Codebehind="xsltChooseExtension.aspx.cs" MasterPageFile="../../masterpages/umbracoDialog.Master" AutoEventWireup="True" - Inherits="umbraco.developer.xsltChooseExtension" %> -<%@ Register TagPrefix="cc1" Namespace="Umbraco.Web._Legacy.Controls" %> - - - - - - - - - - - - - - - - - - - -

    - <%= Services.TextService.Localize("or") %> <%= Services.TextService.Localize("cancel") %> -

    - -
    \ No newline at end of file diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltChooseExtension.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltChooseExtension.aspx.cs deleted file mode 100644 index e258a69a65..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltChooseExtension.aspx.cs +++ /dev/null @@ -1,164 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Reflection; -using System.Text; -using System.Web.UI; -using System.Web.UI.WebControls; -using Umbraco.Core; -using Umbraco.Web.UI.Pages; - -namespace umbraco.developer -{ - /// - /// Summary description for xsltChooseExtension. - /// - [WebformsPageTreeAuthorize(Constants.Trees.Xslt)] - public partial class xsltChooseExtension : UmbracoEnsuredPage - { - - protected void Page_Load(object sender, System.EventArgs e) - { - SortedList> ht = GetXsltAssembliesAndMethods(); - if (!IsPostBack) - { - assemblies.Attributes.Add("onChange", "document.forms[0].submit()"); - foreach(string s in ht.Keys) - assemblies.Items.Add(new ListItem(s)); - - // Select the umbraco extensions as default - assemblies.Items[0].Selected = true; - } - - string selectedMethod = ""; - if (methods.SelectedValue != "") - { - selectedMethod = methods.SelectedValue; - PlaceHolderParamters.Controls.Clear(); - PlaceHolderParamters.Controls.Add(new LiteralControl("
    " + assemblies.SelectedItem + ":" + methods.SelectedValue.Substring(0, methods.SelectedValue.IndexOf("(")) + "(")); - PlaceHolderParamters.Controls.Add(new LiteralControl("")); - - int counter = 0; - string[] props = methods.SelectedValue.Substring(methods.SelectedValue.IndexOf("(") + 1, methods.SelectedValue.IndexOf(")") - methods.SelectedValue.IndexOf("(") - 1).Split(','); - - foreach (string s in props) - { - if (s.Trim() != "") - { - counter++; - TextBox t = new TextBox(); - t.ID = "param" + Guid.NewGuid().ToString(); - t.Text = s.Trim(); - t.TabIndex = (short) counter; - t.Attributes.Add("onFocus", "if (this.value == '" + s.Trim() + "') this.value = '';"); - t.Attributes.Add("onBlur", "if (this.value == '') this.value = '" + s.Trim() + "'"); - t.Attributes.Add("style", "width:80px;"); - PlaceHolderParamters.Controls.Add(t); - - if(counter < props.Length) - PlaceHolderParamters.Controls.Add(new LiteralControl(",")); - } - } - - counter++; - - //PlaceHolderParamters.Controls.Add(new LiteralControl(")

    ")); - PlaceHolderParamters.Controls.Add(new LiteralControl(")")); - bt_insert.Enabled = true; - } - else - PlaceHolderParamters.Controls.Clear(); - - - if (assemblies.SelectedValue != "") - { - methods.Items.Clear(); - methods.Items.Add(new ListItem("Choose method", "")); - methods.Attributes.Add("onChange", "document.forms[0].submit()"); - List methodList = ht[assemblies.SelectedValue]; - foreach (string method in methodList) - { - ListItem li = new ListItem(method); - if (method == selectedMethod) - li.Selected = true; - methods.Items.Add(li); - } - } - } - - /// - /// Gets the XSLT assemblies and their methods. - /// - /// A list of assembly names linked to a list of method signatures. - private SortedList> GetXsltAssembliesAndMethods() - { - SortedList> _tempAssemblies = new SortedList>(); - - // add all extensions definied by macro - foreach(KeyValuePair extension in Umbraco.Web.Macros.XsltMacroEngine.GetXsltExtensions()) - _tempAssemblies.Add(extension.Key, GetStaticMethods(extension.Value.GetType())); - - // add the Umbraco library (not included in macro extensions) - _tempAssemblies.Add("umbraco.library", GetStaticMethods(typeof(umbraco.library))); - - return _tempAssemblies; - - } - - /// - /// Gets the static methods of the specified type, alphabetically sorted. - /// - /// The type. - /// A sortd list with method signatures. - private List GetStaticMethods(Type type) - { - List methods = new List(); - foreach (MethodInfo method in type.GetMethods()) - { - if (method.IsStatic) - { - // add method name to signature - StringBuilder methodSignature = new StringBuilder(method.Name); - - // add parameters to signature - methodSignature.Append('('); - ParameterInfo[] parameters = method.GetParameters(); - for(int i=0; i - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - ///
    - private void InitializeComponent() - { - } - #endregion - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltChooseExtension.aspx.designer.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltChooseExtension.aspx.designer.cs deleted file mode 100644 index 2b5efd94bf..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltChooseExtension.aspx.designer.cs +++ /dev/null @@ -1,51 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace umbraco.developer { - - - public partial class xsltChooseExtension { - - /// - /// assemblies control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.DropDownList assemblies; - - /// - /// methods control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.DropDownList methods; - - /// - /// PlaceHolderParamters control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.PlaceHolder PlaceHolderParamters; - - /// - /// bt_insert control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Button bt_insert; - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltInsertValueOf.aspx b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltInsertValueOf.aspx deleted file mode 100644 index 34142b2805..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltInsertValueOf.aspx +++ /dev/null @@ -1,61 +0,0 @@ -<%@ Page Language="c#" MasterPageFile="../../masterpages/umbracoDialog.Master" Codebehind="xsltInsertValueOf.aspx.cs" AutoEventWireup="True" Inherits="umbraco.developer.xsltInsertValueOf" %> -<%@ Register TagPrefix="umb" Namespace="ClientDependency.Core.Controls" Assembly="ClientDependency.Core" %> -<%@ Register TagPrefix="cc1" Namespace="Umbraco.Web._Legacy.Controls" %> - - - - - - - - - - - - - - - - - - - - - - -

    - <%= Services.TextService.Localize("or") %> <%= Services.TextService.Localize("cancel") %> -

    -
    \ No newline at end of file diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltInsertValueOf.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltInsertValueOf.aspx.cs deleted file mode 100644 index 1a0c1d1c90..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltInsertValueOf.aspx.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.Collections; -using System.Linq; -using System.Web.UI.WebControls; -using Umbraco.Core; -using Umbraco.Web.UI.Pages; - -namespace umbraco.developer -{ - /// - /// Summary description for xsltInsertValueOf. - /// - [WebformsPageTreeAuthorize(Constants.Trees.Xslt)] - public partial class xsltInsertValueOf : UmbracoEnsuredPage - { - protected void Page_Load(object sender, System.EventArgs e) - { - ArrayList preValuesSource = new ArrayList(); - - // Attributes - string[] attributes = {"@id", "@parentID", "@level", "@writerID", "@nodeType", "@template", "@sortOrder", "@createDate", "@creatorName", "@updateDate", "@nodeName", "@urlName", "@writerName", "@nodeTypeAlias", "@path"}; - foreach (string att in attributes) - preValuesSource.Add(att); - - // generic properties - string existingGenProps = ","; - var exclude = Constants.Conventions.Member.GetStandardPropertyTypeStubs().Select(x => x.Key).ToArray(); - - var propertyTypes = Services.ContentTypeService.GetAllPropertyTypeAliases(); - - foreach (var ptAlias in propertyTypes.Where(x => exclude.Contains(x) == false)) - { - if (!existingGenProps.Contains("," + ptAlias + ",")) - { - preValuesSource.Add(ptAlias); - - - existingGenProps += ptAlias + ","; - } - } - - - preValuesSource.Sort(); - preValues.DataSource = preValuesSource; - preValues.DataBind(); - preValues.Items.Insert(0, new ListItem("Prevalues...", "")); - - preValues.Attributes.Add("onChange", "if (this.value != '') document.getElementById('" + valueOf.ClientID + "').value = this.value"); - - if(!String.IsNullOrEmpty(Request.QueryString["value"])) - valueOf.Text = Request.QueryString["value"]; - } - - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltInsertValueOf.aspx.designer.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltInsertValueOf.aspx.designer.cs deleted file mode 100644 index d02006dd22..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltInsertValueOf.aspx.designer.cs +++ /dev/null @@ -1,51 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace umbraco.developer { - - - public partial class xsltInsertValueOf { - - /// - /// JsInclude1 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::ClientDependency.Core.Controls.JsInclude JsInclude1; - - /// - /// valueOf control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox valueOf; - - /// - /// preValues control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.DropDownList preValues; - - /// - /// disableOutputEscaping control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.CheckBox disableOutputEscaping; - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltVisualize.aspx b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltVisualize.aspx deleted file mode 100644 index 74c40eca64..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltVisualize.aspx +++ /dev/null @@ -1,55 +0,0 @@ -<%@ Page Language="C#" MasterPageFile="../../masterpages/umbracoDialog.Master" AutoEventWireup="true" - CodeBehind="xsltVisualize.aspx.cs" ValidateRequest="false" Inherits="umbraco.presentation.umbraco.developer.Xslt.xsltVisualize" %> -<%@ Register TagPrefix="cc1" Namespace="Umbraco.Web._Legacy.Controls" Assembly="Umbraco.Web" %> -<%@ Register TagPrefix="cc2" Namespace="umbraco.controls" Assembly="Umbraco.Web" %> - - - - - - - - - - - -

    - -
    -
    - -

    - -

    - - - -
    - -
    diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltVisualize.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltVisualize.aspx.cs deleted file mode 100644 index fe4bca93e5..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltVisualize.aspx.cs +++ /dev/null @@ -1,84 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -using System.Text; -using System.Xml; -using System.IO; -using Umbraco.Core; -using Umbraco.Core.IO; -using Umbraco.Web; -using Umbraco.Web.Composing; -using Umbraco.Web.UI.Pages; - -namespace umbraco.presentation.umbraco.developer.Xslt -{ - [WebformsPageTreeAuthorize(Constants.Trees.Xslt)] - public partial class xsltVisualize : UmbracoEnsuredPage - { - private const string XsltVisualizeCookieName = "UMB_XSLTVISPG"; - - protected void Page_Load(object sender, EventArgs e) - { - if (!IsPostBack) - { - // Check if cookie exists in the current request. - // zb-00004 #29956 : refactor cookies names & handling - if (Request.HasCookieValue(XsltVisualizeCookieName)) - contentPicker.Value = Request.GetCookieValue(XsltVisualizeCookieName); - } - - } - - protected void visualizeDo_Click(object sender, EventArgs e) - { - // get xslt file - string xslt; - if (xsltSelection.Value.Contains("", xsltSelection.Value); - xslt = Umbraco.Web.Macros.XsltMacroEngine.AddXsltExtensionsToHeader(xslt); - } - - int pageId; - if (int.TryParse(contentPicker.Value, out pageId) == false) - pageId = -1; - - // transform - string xsltResult; - try - { - xsltResult = Umbraco.Web.Macros.XsltMacroEngine.TestXsltTransform(Current.ProfilingLogger, xslt, pageId); - } - catch (Exception ee) - { - xsltResult = string.Format( - "

    Error parsing the XSLT:

    {0}

    ", - ee.ToString()); - } - - visualizeContainer.Visible = true; - - // update output - visualizeArea.Text = !String.IsNullOrEmpty(xsltResult) ? "
    " + xsltResult + "
    " : "

    The XSLT didn't generate any output

    "; - - - // add cookie with current page - // zb-00004 #29956 : refactor cookies names & handling - Response.Cookies.Set(new HttpCookie(XsltVisualizeCookieName, contentPicker.Value) - { - Expires = DateTime.Now + TimeSpan.FromMinutes(20) - }); - } - - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltVisualize.aspx.designer.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltVisualize.aspx.designer.cs deleted file mode 100644 index cfc124ef7a..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltVisualize.aspx.designer.cs +++ /dev/null @@ -1,87 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace umbraco.presentation.umbraco.developer.Xslt { - - - public partial class xsltVisualize { - - /// - /// Pane1 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::Umbraco.Web._Legacy.Controls.Pane Pane1; - - /// - /// PropertyPanel1 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::Umbraco.Web._Legacy.Controls.PropertyPanel PropertyPanel1; - - /// - /// xsltSelection control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.HtmlControls.HtmlInputHidden xsltSelection; - - /// - /// contentPicker control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::umbraco.controls.ContentPicker contentPicker; - - /// - /// visualizeDo control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Button visualizeDo; - - /// - /// visualizeContainer control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::Umbraco.Web._Legacy.Controls.Pane visualizeContainer; - - /// - /// visualizePanel control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::Umbraco.Web._Legacy.Controls.PropertyPanel visualizePanel; - - /// - /// visualizeArea control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Literal visualizeArea; - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/InlineXslt.xsltTemplate b/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/InlineXslt.xsltTemplate deleted file mode 100644 index b26ca5da89..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/InlineXslt.xsltTemplate +++ /dev/null @@ -1,14 +0,0 @@ - - ]> - - - - - - \ No newline at end of file diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/Item.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/Item.cs index b015fdd02a..0439cfe89d 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/Item.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/Item.cs @@ -82,42 +82,7 @@ namespace umbraco.presentation.templateControls get { return (string)ViewState["TextIfEmpty"] ?? String.Empty; } set { ViewState["TextIfEmpty"] = value; } } - - /// - /// Gets or sets the XPath expression used for the inline XSLT transformation. - /// - /// - /// The XPath expression, or an empty string to disable XSLT transformation. - /// The code {0} is used as a placeholder for the rendered field contents. - /// - [Bindable(true)] - [Category("Umbraco")] - [DefaultValue("")] - [Localizable(true)] - public string Xslt - { - get { return (string)ViewState["Xslt"] ?? String.Empty; } - set { ViewState["Xslt"] = value; } - } - - /// - /// Gets or sets a value indicating whether XML entity escaping of the XSLT transformation output is disabled. - /// - /// true HTML escaping is disabled; otherwise, false (default). - /// - /// This corresponds value to the disable-output-escaping parameter - /// of the XSLT value-of element. - /// - [Bindable(true)] - [Category("Umbraco")] - [DefaultValue(false)] - [Localizable(true)] - public bool XsltDisableEscaping - { - get { return ViewState["XsltEscape"] == null ? false : (bool)ViewState["XsltEscape"]; } - set { ViewState["XsltEscape"] = value; } - } - + [Bindable(true)] [Category("Umbraco")] [DefaultValue("")] diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/ItemRenderer.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/ItemRenderer.cs index 06c09225e2..13414c7648 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/ItemRenderer.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/ItemRenderer.cs @@ -56,12 +56,10 @@ namespace umbraco.presentation.templateControls // parse macros and execute the XSLT transformation on the result if not empty string renderOutput = renderOutputWriter.ToString(); - string xsltTransformedOutput = renderOutput.Trim().Length == 0 - ? String.Empty - : XsltTransform(item.Xslt, renderOutput, item.XsltDisableEscaping); + renderOutput = renderOutput.Trim().Length == 0 ? string.Empty : renderOutput; // handle text before/after - xsltTransformedOutput = AddBeforeAfterText(xsltTransformedOutput, helper.FindAttribute(item.LegacyAttributes, "insertTextBefore"), helper.FindAttribute(item.LegacyAttributes, "insertTextAfter")); - string finalResult = xsltTransformedOutput.Trim().Length > 0 ? xsltTransformedOutput : GetEmptyText(item); + renderOutput = AddBeforeAfterText(renderOutput, helper.FindAttribute(item.LegacyAttributes, "insertTextBefore"), helper.FindAttribute(item.LegacyAttributes, "insertTextAfter")); + string finalResult = renderOutput.Trim().Length > 0 ? renderOutput : GetEmptyText(item); //Don't parse urls if a content item is assigned since that is taken care // of with the value converters @@ -192,48 +190,6 @@ namespace umbraco.presentation.templateControls } - /// - /// Transforms the content using the XSLT attribute, if provided. - /// - /// The xpath expression. - /// The item's rendered content. - /// if set to true, escaping is disabled. - /// The transformed content if the XSLT attribute is present, otherwise the original content. - protected virtual string XsltTransform(string xpath, string itemData, bool disableEscaping) - { - if (!String.IsNullOrEmpty(xpath)) - { - // XML-encode the expression and add the itemData parameter to it - string xpathEscaped = xpath.Replace("<", "<").Replace(">", ">").Replace("\"", """); - string xpathExpression = string.Format(xpathEscaped, "$itemData"); - - // prepare support for XSLT extensions - StringBuilder namespaceList = new StringBuilder(); - StringBuilder namespaceDeclaractions = new StringBuilder(); - foreach (KeyValuePair extension in Umbraco.Web.Macros.XsltMacroEngine.GetXsltExtensions()) - { - namespaceList.Append(extension.Key).Append(' '); - namespaceDeclaractions.AppendFormat("xmlns:{0}=\"urn:{0}\" ", extension.Key); - } - - // add the XSLT expression into the full XSLT document, together with the needed parameters - string xslt = string.Format(Umbraco.Web.umbraco.presentation.umbraco.templateControls.Resources.InlineXslt, xpathExpression, disableEscaping ? "yes" : "no", - namespaceList, namespaceDeclaractions); - - // create the parameter - Dictionary parameters = new Dictionary(1); - parameters.Add("itemData", itemData); - - // apply the XSLT transformation - using (var xslReader = new XmlTextReader(new StringReader(xslt))) - { - var transform = Umbraco.Web.Macros.XsltMacroEngine.GetXsltTransform(xslReader, false); - return Umbraco.Web.Macros.XsltMacroEngine.ExecuteItemRenderer(Current.ProfilingLogger, transform, itemData); - } - } - return itemData; - } - protected string AddBeforeAfterText(string text, string before, string after) { if (!String.IsNullOrEmpty(text)) diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/Resources.Designer.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/Resources.Designer.cs deleted file mode 100644 index ab69886621..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/Resources.Designer.cs +++ /dev/null @@ -1,84 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Umbraco.Web.umbraco.presentation.umbraco.templateControls { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Umbraco.Web.umbraco.presentation.umbraco.templateControls.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized string similar to <?xml version="1.0" encoding="UTF-8"?> - ///<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]> - ///<xsl:stylesheet - /// version="1.0" - /// xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - /// xmlns:msxml="urn:schemas-microsoft-com:xslt" - /// xmlns:umbraco.library="urn:umbraco.library" - /// {3} - /// exclude-result-prefixes="msxml umbraco.library {2}"> - ///<xsl:output method="xml" omit-xml-declaration="yes"/> - ///<xsl:param name="currentPage"/> - ///<xsl:param name="itemData"/> - ///<xsl:template match="/"><xsl:value-of select="{0}" disa [rest of string was truncated]";. - /// - internal static string InlineXslt { - get { - return ResourceManager.GetString("InlineXslt", resourceCulture); - } - } - } -} diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/Resources.resx b/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/Resources.resx deleted file mode 100644 index 00bf9d42e1..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/templateControls/Resources.resx +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - inlinexslt.xsltTemplate;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8 - - \ No newline at end of file diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/codeEditorSave.asmx b/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/codeEditorSave.asmx deleted file mode 100644 index 46767336e7..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/codeEditorSave.asmx +++ /dev/null @@ -1 +0,0 @@ -<%@ WebService Language="C#" CodeBehind="codeEditorSave.asmx.cs" Class="umbraco.presentation.webservices.codeEditorSave" %> diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/codeEditorSave.asmx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/codeEditorSave.asmx.cs deleted file mode 100644 index f39dd051be..0000000000 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/webservices/codeEditorSave.asmx.cs +++ /dev/null @@ -1,188 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.IO; -using System.Text.RegularExpressions; -using System.Web.Script.Services; -using System.Web.Services; -using Umbraco.Core; -using Umbraco.Core.IO; -using Umbraco.Web.WebServices; -using Umbraco.Web.Macros; - -namespace umbraco.presentation.webservices -{ - /// - /// Summary description for codeEditorSave - /// - [WebService(Namespace = "http://tempuri.org/")] - [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] - [ToolboxItem(false)] - [ScriptService] - public class codeEditorSave : UmbracoAuthorizedWebService - { - [WebMethod] - public string SaveXslt(string fileName, string oldName, string fileContents, bool ignoreDebugging) - { - if (AuthorizeRequest(Constants.Applications.Developer.ToString())) - { - IOHelper.EnsurePathExists(SystemDirectories.Xslt); - - // validate file - IOHelper.ValidateEditPath(IOHelper.MapPath(SystemDirectories.Xslt + "/" + fileName), - SystemDirectories.Xslt); - // validate extension - IOHelper.ValidateFileExtension(IOHelper.MapPath(SystemDirectories.Xslt + "/" + fileName), - new List() { "xsl", "xslt" }); - - StreamWriter SW; - string tempFileName = IOHelper.MapPath(SystemDirectories.Xslt + "/" + DateTime.Now.Ticks + "_temp.xslt"); - SW = File.CreateText(tempFileName); - SW.Write(fileContents); - SW.Close(); - - // Test the xslt - string errorMessage = ""; - - if (ignoreDebugging == false) - { - try - { - if (UmbracoContext.ContentCache.HasContent()) - XsltMacroEngine.TestXsltTransform(ProfilingLogger, fileContents); - - /* - // Check if there's any documents yet - string xpath = "/root/*"; - if (content.Instance.XmlContent.SelectNodes(xpath).Count > 0) - { - var macroXML = new XmlDocument(); - macroXML.LoadXml(""); - - var macroXSLT = new XslCompiledTransform(); - var umbPage = new page(content.Instance.XmlContent.SelectSingleNode("//* [@parentID = -1]")); - - var xslArgs = macro.AddMacroXsltExtensions(); - var lib = new library(umbPage); - xslArgs.AddExtensionObject("urn:umbraco.library", lib); - HttpContext.Current.Trace.Write("umbracoMacro", "After adding extensions"); - - // Add the current node - xslArgs.AddParam("currentPage", "", library.GetXmlNodeById(umbPage.PageID.ToString())); - - HttpContext.Current.Trace.Write("umbracoMacro", "Before performing transformation"); - - // Create reader and load XSL file - // We need to allow custom DTD's, useful for defining an ENTITY - var readerSettings = new XmlReaderSettings(); - readerSettings.ProhibitDtd = false; - using (var xmlReader = XmlReader.Create(tempFileName, readerSettings)) - { - var xslResolver = new XmlUrlResolver(); - xslResolver.Credentials = CredentialCache.DefaultCredentials; - macroXSLT.Load(xmlReader, XsltSettings.TrustedXslt, xslResolver); - xmlReader.Close(); - // Try to execute the transformation - var macroResult = new HtmlTextWriter(new StringWriter()); - macroXSLT.Transform(macroXML, xslArgs, macroResult); - macroResult.Close(); - - File.Delete(tempFileName); - } - } - */ - else - { - //errorMessage = Services.TextService.Localize("developer/xsltErrorNoNodesPublished"); - File.Delete(tempFileName); - //base.speechBubble(speechBubbleIcon.info, Services.TextService.Localize("errors/xsltErrorHeader"), "Unable to validate xslt as no published content nodes exist."); - } - } - catch (Exception errorXslt) - { - File.Delete(tempFileName); - - errorMessage = (errorXslt.InnerException ?? errorXslt).ToString(); - - // Full error message - errorMessage = errorMessage.Replace("\n", "
    \n"); - //closeErrorMessage.Visible = true; - - // Find error - var m = Regex.Matches(errorMessage, @"\d*[^,],\d[^\)]", RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace); - foreach (Match mm in m) - { - string[] errorLine = mm.Value.Split(','); - - if (errorLine.Length > 0) - { - var theErrorLine = int.Parse(errorLine[0]); - var theErrorChar = int.Parse(errorLine[1]); - - errorMessage = "Error in XSLT at line " + errorLine[0] + ", char " + errorLine[1] + - "
    "; - errorMessage += ""; - - var xsltText = fileContents.Split("\n".ToCharArray()); - for (var i = 0; i < xsltText.Length; i++) - { - if (i >= theErrorLine - 3 && i <= theErrorLine + 1) - if (i + 1 == theErrorLine) - { - errorMessage += "" + (i + 1) + ": >>>  " + - Server.HtmlEncode(xsltText[i].Substring(0, theErrorChar)); - errorMessage += - "" + - Server.HtmlEncode( - xsltText[i].Substring(theErrorChar, - xsltText[i].Length - theErrorChar)). - Trim() + ""; - errorMessage += " <<<
    "; - } - else - errorMessage += (i + 1) + ":      " + - Server.HtmlEncode(xsltText[i]) + "
    "; - } - errorMessage += "
    "; - } - } - } - } - - if (errorMessage == "" && fileName.ToLower().EndsWith(".xslt")) - { - //Hardcoded security-check... only allow saving files in xslt directory... - var savePath = IOHelper.MapPath(SystemDirectories.Xslt + "/" + fileName); - - if (savePath.StartsWith(IOHelper.MapPath(SystemDirectories.Xslt + "/"))) - { - //deletes the old xslt file - if (fileName != oldName) - { - - var p = IOHelper.MapPath(SystemDirectories.Xslt + "/" + oldName); - if (File.Exists(p)) - File.Delete(p); - } - - SW = File.CreateText(savePath); - SW.Write(fileContents); - SW.Close(); - errorMessage = "true"; - - - } - else - { - errorMessage = "Illegal path"; - } - } - - File.Delete(tempFileName); - - return errorMessage; - } - return "false"; - } - } -}