From 1ae6aac4896b880717d081f2a2a779eeaefa038d Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 19 Sep 2013 13:35:00 +1000 Subject: [PATCH] Attempting to update the legacy macro business logic code to support the db structure changes. --- src/umbraco.cms/businesslogic/macro/Macro.cs | 38 +++-- .../businesslogic/macro/MacroProperty.cs | 147 +++++++----------- .../businesslogic/macro/macroPropertyType.cs | 66 ++------ 3 files changed, 87 insertions(+), 164 deletions(-) diff --git a/src/umbraco.cms/businesslogic/macro/Macro.cs b/src/umbraco.cms/businesslogic/macro/Macro.cs index d2f79dcecd..2da63fc04f 100644 --- a/src/umbraco.cms/businesslogic/macro/Macro.cs +++ b/src/umbraco.cms/businesslogic/macro/Macro.cs @@ -309,7 +309,7 @@ namespace umbraco.cms.businesslogic.macro { Macro m = null; - string alias = xmlHelper.GetNodeValue(n.SelectSingleNode("alias")); + string alias = XmlHelper.GetNodeValue(n.SelectSingleNode("alias")); try { //check to see if the macro alreay exists in the system @@ -319,27 +319,27 @@ namespace umbraco.cms.businesslogic.macro } catch (IndexOutOfRangeException) { - m = MakeNew(xmlHelper.GetNodeValue(n.SelectSingleNode("name"))); + m = MakeNew(XmlHelper.GetNodeValue(n.SelectSingleNode("name"))); } try { m.Alias = alias; - m.Assembly = xmlHelper.GetNodeValue(n.SelectSingleNode("scriptAssembly")); - m.Type = xmlHelper.GetNodeValue(n.SelectSingleNode("scriptType")); - m.Xslt = xmlHelper.GetNodeValue(n.SelectSingleNode("xslt")); - m.RefreshRate = int.Parse(xmlHelper.GetNodeValue(n.SelectSingleNode("refreshRate"))); + m.Assembly = XmlHelper.GetNodeValue(n.SelectSingleNode("scriptAssembly")); + m.Type = XmlHelper.GetNodeValue(n.SelectSingleNode("scriptType")); + m.Xslt = XmlHelper.GetNodeValue(n.SelectSingleNode("xslt")); + m.RefreshRate = int.Parse(XmlHelper.GetNodeValue(n.SelectSingleNode("refreshRate"))); // we need to validate if the usercontrol is missing the tilde prefix requirement introduced in v6 if (String.IsNullOrEmpty(m.Assembly) && !String.IsNullOrEmpty(m.Type) && !m.Type.StartsWith("~")) m.Type = "~/" + m.Type; if (n.SelectSingleNode("scriptingFile") != null) - m.ScriptingFile = xmlHelper.GetNodeValue(n.SelectSingleNode("scriptingFile")); + m.ScriptingFile = XmlHelper.GetNodeValue(n.SelectSingleNode("scriptingFile")); try { - m.UseInEditor = bool.Parse(xmlHelper.GetNodeValue(n.SelectSingleNode("useInEditor"))); + m.UseInEditor = bool.Parse(XmlHelper.GetNodeValue(n.SelectSingleNode("useInEditor"))); } catch (Exception macroExp) { @@ -355,9 +355,8 @@ namespace umbraco.cms.businesslogic.macro var property = m.Properties.SingleOrDefault(p => p.Alias == propertyAlias); if (property != null) { - property.Public = bool.Parse(mp.Attributes.GetNamedItem("show").Value); property.Name = mp.Attributes.GetNamedItem("name").Value; - property.Type = new MacroPropertyType(mp.Attributes.GetNamedItem("propertyType").Value); + property.ParameterEditorAlias = mp.Attributes.GetNamedItem("propertyType").Value; property.Save(); } @@ -365,10 +364,9 @@ namespace umbraco.cms.businesslogic.macro { MacroProperty.MakeNew( m, - bool.Parse(mp.Attributes.GetNamedItem("show").Value), propertyAlias, mp.Attributes.GetNamedItem("name").Value, - new MacroPropertyType(mp.Attributes.GetNamedItem("propertyType").Value) + mp.Attributes.GetNamedItem("propertyType").Value ); } } @@ -427,14 +425,14 @@ namespace umbraco.cms.businesslogic.macro XmlNode doc = xd.CreateElement("macro"); // info section - doc.AppendChild(xmlHelper.addTextNode(xd, "name", this.Name)); - doc.AppendChild(xmlHelper.addTextNode(xd, "alias", this.Alias)); - doc.AppendChild(xmlHelper.addTextNode(xd, "scriptType", this.Type)); - doc.AppendChild(xmlHelper.addTextNode(xd, "scriptAssembly", this.Assembly)); - doc.AppendChild(xmlHelper.addTextNode(xd, "xslt", this.Xslt)); - doc.AppendChild(xmlHelper.addTextNode(xd, "useInEditor", this.UseInEditor.ToString())); - doc.AppendChild(xmlHelper.addTextNode(xd, "refreshRate", this.RefreshRate.ToString())); - doc.AppendChild(xmlHelper.addTextNode(xd, "scriptingFile", this.ScriptingFile)); + doc.AppendChild(XmlHelper.AddTextNode(xd, "name", this.Name)); + doc.AppendChild(XmlHelper.AddTextNode(xd, "alias", this.Alias)); + doc.AppendChild(XmlHelper.AddTextNode(xd, "scriptType", this.Type)); + doc.AppendChild(XmlHelper.AddTextNode(xd, "scriptAssembly", this.Assembly)); + doc.AppendChild(XmlHelper.AddTextNode(xd, "xslt", this.Xslt)); + doc.AppendChild(XmlHelper.AddTextNode(xd, "useInEditor", this.UseInEditor.ToString())); + doc.AppendChild(XmlHelper.AddTextNode(xd, "refreshRate", this.RefreshRate.ToString())); + doc.AppendChild(XmlHelper.AddTextNode(xd, "scriptingFile", this.ScriptingFile)); // properties XmlNode props = xd.CreateElement("properties"); diff --git a/src/umbraco.cms/businesslogic/macro/MacroProperty.cs b/src/umbraco.cms/businesslogic/macro/MacroProperty.cs index 7316c86c66..88ed668147 100644 --- a/src/umbraco.cms/businesslogic/macro/MacroProperty.cs +++ b/src/umbraco.cms/businesslogic/macro/MacroProperty.cs @@ -2,7 +2,7 @@ using System; using System.Data; using System.Xml; using System.Runtime.CompilerServices; - +using Umbraco.Core; using umbraco.DataLayer; using umbraco.BusinessLogic; using System.Collections.Generic; @@ -20,15 +20,6 @@ namespace umbraco.cms.businesslogic.macro /// public class MacroProperty { - - int _id; - int _sortOrder; - bool _public; - string _alias; - string _name; - cms.businesslogic.macro.Macro m_macro; - cms.businesslogic.macro.MacroPropertyType _type; - protected static ISqlHelper SqlHelper { get { return Application.SqlHelper; } @@ -47,92 +38,66 @@ namespace umbraco.cms.businesslogic.macro /// Id public MacroProperty(int Id) { - _id = Id; - setup(); + this.Id = Id; + Setup(); } /// /// The sortorder /// - public int SortOrder - { - get { return _sortOrder; } - set { _sortOrder = value; } - } + public int SortOrder { get; set; } /// - /// If set to true, the user will be presented with an editor to input data. - /// - /// If not, the field can be manipulated by a default value given by the MacroPropertyType, this is s + /// This is not used for anything /// - [Obsolete] - public bool Public - { - get { return _public; } - set { _public = value; } - } + [Obsolete("This is not used for anything and will be removed in future versions")] + public bool Public { get; set; } /// - /// The alias if of the macroproperty, this is used in the special macro element - /// - /// + /// The macro property alias /// - public string Alias - { - get { return _alias; } - set { _alias = value; } - } + public string Alias { get; set; } /// /// The userfriendly name /// - public string Name - { - get { return _name; } - set { _name = value; } - } + public string Name { get; set; } /// /// Gets the id. /// /// The id. - public int Id - { - get { return _id; } - } + public int Id { get; private set; } /// /// Gets or sets the macro. /// /// The macro. - public Macro Macro - { - get { return m_macro; } - set { m_macro = value; } - } + public Macro Macro { get; set; } /// /// The basetype which defines which component is used in the UI for editing content /// - public MacroPropertyType Type - { - get { return _type; } - set { _type = value; } - } + [Obsolete("This no longer does anything and will be removed in future versions")] + public MacroPropertyType Type { get; set; } + /// + /// The macro parameter editor alias used to render the editor + /// + public string ParameterEditorAlias { get; set; } - private void setup() + private void Setup() { - using (IRecordsReader dr = SqlHelper.ExecuteReader("select macro, macroPropertyHidden, macroPropertyType, macroPropertySortOrder, macroPropertyAlias, macroPropertyName from cmsMacroProperty where id = @id", SqlHelper.CreateParameter("@id", _id))) + using (var dr = SqlHelper.ExecuteReader("select macro, macroPropertyHidden, editorAlias, macroPropertySortOrder, macroPropertyAlias, macroPropertyName from cmsMacroProperty where id = @id", SqlHelper.CreateParameter("@id", Id))) { if (dr.Read()) { - m_macro = new Macro(dr.GetInt("macro")); - _public = dr.GetBoolean("macroPropertyHidden"); - _sortOrder = (int)dr.GetByte("macroPropertySortOrder"); - _alias = dr.GetString("macroPropertyAlias"); - _name = dr.GetString("macroPropertyName"); - _type = new MacroPropertyType(dr.GetShort("macroPropertyType")); + Macro = new Macro(dr.GetInt("macro")); + SortOrder = (int)dr.GetByte("macroPropertySortOrder"); + Alias = dr.GetString("macroPropertyAlias"); + Name = dr.GetString("macroPropertyName"); + Type = null; + ParameterEditorAlias = dr.GetString("editorAlias"); } else { @@ -146,28 +111,29 @@ namespace umbraco.cms.businesslogic.macro /// public void Delete() { - SqlHelper.ExecuteNonQuery("delete from cmsMacroProperty where id = @id", SqlHelper.CreateParameter("@id", this._id)); + SqlHelper.ExecuteNonQuery("delete from cmsMacroProperty where id = @id", SqlHelper.CreateParameter("@id", this.Id)); } public void Save() { - if (_id == 0) + if (Id == 0) { MacroProperty mp = - MakeNew(m_macro, Public, Alias, Name, Type); - _id = mp.Id; + MakeNew(Macro, Public, Alias, Name, Type); + Id = mp.Id; } else { - SqlHelper.ExecuteNonQuery("UPDATE cmsMacroProperty set macro = @macro, macroPropertyHidden = @show, macropropertyAlias = @alias, macroPropertyName = @name, macroPropertyType = @type, macroPropertySortOrder = @so WHERE id = @id", - SqlHelper.CreateParameter("@id", Id), - SqlHelper.CreateParameter("@macro", Macro.Id), - SqlHelper.CreateParameter("@show", Public), - SqlHelper.CreateParameter("@alias", Alias), - SqlHelper.CreateParameter("@name", Name), - SqlHelper.CreateParameter("@type", Type.Id), - SqlHelper.CreateParameter("@so", SortOrder)); + SqlHelper.ExecuteNonQuery("UPDATE cmsMacroProperty set macro = @macro, " + + "macropropertyAlias = @alias, macroPropertyName = @name, " + + "editorAlias = @editorAlias, macroPropertySortOrder = @so WHERE id = @id", + SqlHelper.CreateParameter("@id", Id), + SqlHelper.CreateParameter("@macro", Macro.Id), + SqlHelper.CreateParameter("@alias", Alias), + SqlHelper.CreateParameter("@name", Name), + SqlHelper.CreateParameter("@editorAlias", ParameterEditorAlias), + SqlHelper.CreateParameter("@so", SortOrder)); } } @@ -180,10 +146,9 @@ namespace umbraco.cms.businesslogic.macro { XmlElement doc = xd.CreateElement("property"); - doc.Attributes.Append(xmlHelper.addAttribute(xd, "name", this.Name)); - doc.Attributes.Append(xmlHelper.addAttribute(xd, "alias", this.Alias)); - doc.Attributes.Append(xmlHelper.addAttribute(xd, "show", this.Public.ToString())); - doc.Attributes.Append(xmlHelper.addAttribute(xd, "propertyType", this.Type.Alias)); + doc.Attributes.Append(XmlHelper.AddAttribute(xd, "name", this.Name)); + doc.Attributes.Append(XmlHelper.AddAttribute(xd, "alias", this.Alias)); + doc.Attributes.Append(XmlHelper.AddAttribute(xd, "propertyType", this.ParameterEditorAlias)); return doc; } @@ -193,12 +158,12 @@ namespace umbraco.cms.businesslogic.macro /// /// Retieve all MacroProperties of a macro /// - /// Macro identifier + /// Macro identifier /// All MacroProperties of a macro - public static MacroProperty[] GetProperties(int MacroId) + public static MacroProperty[] GetProperties(int macroId) { var props = new List(); - using (IRecordsReader dr = SqlHelper.ExecuteReader("select id from cmsMacroProperty where macro = @macroId order by macroPropertySortOrder, id ASC", SqlHelper.CreateParameter("@macroId", MacroId))) + using (IRecordsReader dr = SqlHelper.ExecuteReader("select id from cmsMacroProperty where macro = @macroId order by macroPropertySortOrder, id ASC", SqlHelper.CreateParameter("@macroId", macroId))) { while (dr.Read()) { @@ -208,25 +173,31 @@ namespace umbraco.cms.businesslogic.macro } } + + [MethodImpl(MethodImplOptions.Synchronized)] + [Obsolete("This method is no longer supported because MacroPropertyType no longer has a function")] + public static MacroProperty MakeNew(Macro macro, bool show, string alias, string name, MacroPropertyType propertyType) + { + return MakeNew(macro, alias, name, propertyType.Alias); + } + /// /// Creates a new MacroProperty on a macro /// - /// The macro - /// Will the editor be able to input data + /// The macro /// The alias of the property /// Userfriendly MacroProperty name - /// The MacroPropertyType of the property + /// The Alias of the parameter editor [MethodImpl(MethodImplOptions.Synchronized)] - public static MacroProperty MakeNew(Macro M, bool show, string alias, string name, MacroPropertyType propertyType) + public static MacroProperty MakeNew(Macro macro, string alias, string name, string editorAlias) { int macroPropertyId = 0; // The method is synchronized - SqlHelper.ExecuteNonQuery("INSERT INTO cmsMacroProperty (macro, macroPropertyHidden, macropropertyAlias, macroPropertyName, macroPropertyType) VALUES (@macro, @show, @alias, @name, @type)", - SqlHelper.CreateParameter("@macro", M.Id), - SqlHelper.CreateParameter("@show", show), + SqlHelper.ExecuteNonQuery("INSERT INTO cmsMacroProperty (macro, macropropertyAlias, macroPropertyName, editorAlias) VALUES (@macro, @alias, @name, @editorAlias)", + SqlHelper.CreateParameter("@macro", macro.Id), SqlHelper.CreateParameter("@alias", alias), SqlHelper.CreateParameter("@name", name), - SqlHelper.CreateParameter("@type", propertyType.Id)); + SqlHelper.CreateParameter("@editorAlias", editorAlias)); macroPropertyId = SqlHelper.ExecuteScalar("SELECT MAX(id) FROM cmsMacroProperty"); return new MacroProperty(macroPropertyId); } diff --git a/src/umbraco.cms/businesslogic/macro/macroPropertyType.cs b/src/umbraco.cms/businesslogic/macro/macroPropertyType.cs index 58102082ec..c3b96aa4dc 100644 --- a/src/umbraco.cms/businesslogic/macro/macroPropertyType.cs +++ b/src/umbraco.cms/businesslogic/macro/macroPropertyType.cs @@ -10,15 +10,9 @@ namespace umbraco.cms.businesslogic.macro /// The MacroPropertyType class contains information on the assembly and class of the /// IMacroGuiRendering component and basedatatype /// + [Obsolete("This class is no longer used, the cmsMacroPropertyType has been removed, all methods will return empty collections and not perform any functions")] public class MacroPropertyType { - int _id; - string _alias; - string _assembly; - string _type; - string _baseType; - private static List m_allPropertyTypes = new List(); - protected static ISqlHelper SqlHelper { get { return Application.SqlHelper; } @@ -26,61 +20,41 @@ namespace umbraco.cms.businesslogic.macro public static List GetAll { - get - { - if (m_allPropertyTypes.Count == 0) - { - using (IRecordsReader dr = SqlHelper.ExecuteReader("select id from cmsMacroPropertyType order by macroPropertyTypeAlias")) - { - while (dr.Read()) - { - m_allPropertyTypes.Add(new MacroPropertyType(dr.GetShort("id"))); - } - } - } - - return m_allPropertyTypes; - } + get { return new List(); } } - /// /// Identifier /// - public int Id - { - get { return _id; } - } + public int Id { get; private set; } /// /// The alias of the MacroPropertyType /// - public string Alias { get { return _alias; } } + public string Alias { get; private set; } /// /// The assembly (without the .dll extension) used to retrieve the component at runtime /// - public string Assembly { get { return _assembly; } } + public string Assembly { get; private set; } /// /// The MacroPropertyType /// - public string Type { get { return _type; } } + public string Type { get; private set; } /// /// The IMacroGuiRendering component (namespace.namespace.Classname) /// - public string BaseType { get { return _baseType; } } - - + public string BaseType { get; private set; } + /// /// Constructor /// /// Identifier public MacroPropertyType(int Id) { - _id = Id; - setup(); + } /// @@ -89,28 +63,8 @@ namespace umbraco.cms.businesslogic.macro /// The alias of the MacroPropertyType public MacroPropertyType(string Alias) { - _id = SqlHelper.ExecuteScalar("select id from cmsMacroPropertyType where macroPropertyTypeAlias = @alias", SqlHelper.CreateParameter("@alias", Alias)); - setup(); + } - private void setup() - { - using (IRecordsReader dr = SqlHelper.ExecuteReader("select macroPropertyTypeAlias, macroPropertyTypeRenderAssembly, macroPropertyTypeRenderType, macroPropertyTypeBaseType from cmsMacroPropertyType where id = @id", SqlHelper.CreateParameter("@id", _id))) - { - if (dr.Read()) - { - _alias = dr.GetString("macroPropertyTypeAlias"); - _assembly = dr.GetString("macroPropertyTypeRenderAssembly"); - _type = dr.GetString("macroPropertyTypeRenderType"); - _baseType = dr.GetString("macroPropertyTypeBaseType"); - } - else - { - throw new ArgumentException("No macro property type found with the id specified"); - } - } - } - - } }