/MySQLDefault.aspx.cs
C# | 703 lines | 461 code | 115 blank | 127 comment | 27 complexity | 4f692b3860997d3b61233adfd34b72c3 MD5 | raw file
- // --------------------------------------------------------------------------------------------------------------------
- // <copyright file="MySQLDefault.aspx.cs" company="??">
- // Copyright
- // </copyright>
- // <summary>
- // Defines the _Default type.
- // </summary>
- // --------------------------------------------------------------------------------------------------------------------
-
- using System;
- using System.Configuration;
- using System.IO;
- using System.Text;
- using System.Web.UI;
-
- using MySql.Data.MySqlClient;
-
- /// <summary>
- /// Default class
- /// </summary>
- public partial class Default : Page
- {
- #region Public Methods
-
- /// <summary>
- /// Get Templates Default Doc Type
- /// </summary>
- /// <param name="nodeid">
- /// The nodeid.
- /// </param>
- /// <returns>
- /// Node ID
- /// </returns>
- public static string GetTemplatesDefaultDocType(string nodeid)
- {
- var rtnText = string.Empty;
- var strSql =
- "SELECT cmsDocumentType.contentTypeNodeId, cmsDocumentType.templateNodeId, cmsDocumentType.IsDefault, cmsContentType.alias FROM cmsDocumentType INNER JOIN cmsContentType ON cmsDocumentType.contentTypeNodeId = cmsContentType.nodeId where isDefault=1 and templateNodeId="
- + nodeid;
-
- var conn = new MySqlConnection(ConfigurationManager.AppSettings["ImportDB"]);
- var cmd = new MySqlCommand(strSql, conn);
-
- conn.Open();
-
- var reader = cmd.ExecuteReader();
-
- while (reader.Read())
- {
- rtnText = ": Vega.USiteBuilder.TemplateBase<uSiteBuilderImport.Web.DocumentTypes." + reader["alias"] + ">";
- }
-
- reader.Close();
- conn.Close();
-
- return rtnText != string.Empty ? rtnText : ": Vega.USiteBuilder.TemplateBase";
- }
-
- /// <summary>
- /// The create child doc type.
- /// </summary>
- /// <param name="nodeid">
- /// The nodeid.
- /// </param>
- /// <param name="alias">
- /// The alias.
- /// </param>
- /// <param name="path">
- /// The path.
- /// </param>
- public void CreateChildDocType(string nodeid, string alias, string path)
- {
- // string strSQL = "SELECT [pk],[nodeId],[alias],[icon],[thumbnail],[description],[masterContentType] FROM [cmsContentType] where masterContentType=" + nodeid + " order by Alias";
- var strSql =
- "SELECT cmsContentType.pk, cmsContentType.nodeId, cmsContentType.alias, cmsContentType.icon, cmsContentType.thumbnail, cmsContentType.description, "
- + "cmsContentType.masterContentType, umbracoNode.text " + "FROM cmsContentType INNER JOIN "
- + "umbracoNode ON cmsContentType.nodeId = umbracoNode.id " + "WHERE cmsContentType.masterContentType = "
- + nodeid + " ORDER BY alias";
-
- var conn = new MySqlConnection(ConfigurationManager.AppSettings["ImportDB"]);
- var cmd = new MySqlCommand(strSql, conn);
-
- conn.Open();
-
- var reader = cmd.ExecuteReader();
-
- while (reader.Read())
- {
- // Start file
- var sb = new StringBuilder();
-
- this.Response.Write("Create Doc Type for child " + reader["alias"] + " (" + reader["nodeid"] + ")<br/>");
-
- sb.AppendLine("using System;");
- sb.AppendLine("using System.Collections.Generic;");
- sb.AppendLine("using System.Linq;");
- sb.AppendLine("using System.Web;");
-
- sb.AppendLine("using Vega.USiteBuilder;");
-
- sb.AppendLine("namespace uSiteBuilderImport.Web.DocumentTypes");
- sb.AppendLine("{");
- sb.AppendLine();
- sb.Append(
- "[DocumentType(Name=\"" + reader["text"] + "\",IconUrl=\"" + reader["icon"] + "\""
- + GetAllowedTemplates(reader["nodeid"].ToString()));
- sb.Append(GetAllowedContentType(reader["nodeid"].ToString()));
- sb.Append(")]");
- sb.AppendLine();
- sb.AppendLine("public class " + reader["alias"] + " : uSiteBuilderImport.Web.DocumentTypes." + alias);
-
- sb.AppendLine("{");
-
- sb.AppendLine(CreateProperties(reader["nodeid"].ToString()));
-
- sb.AppendLine("}");
- sb.AppendLine("}");
-
- if (!Directory.Exists(this.Server.MapPath("DocTypes/")))
- {
- Directory.CreateDirectory(this.Server.MapPath("DocumentTypes/"));
- }
-
- using (var writer = new StreamWriter(path + reader["alias"] + ".cs"))
- {
- writer.Write(sb.ToString());
- }
-
- // Make recursive call
- this.CreateChildDocType(reader["nodeid"].ToString(), reader["alias"].ToString(), path);
- }
-
- reader.Close();
- conn.Close();
- }
-
- /// <summary>
- /// Create Child Master Pages
- /// </summary>
- /// <param name="nodeid">
- /// The nodeid.
- /// </param>
- /// <param name="parentAlias">
- /// The parent alias.
- /// </param>
- public void CreateChildMasterPages(string nodeid, string parentAlias)
- {
- var strSql = "SELECT pk, nodeId, master, alias, design FROM cmsTemplate WHERE master =" + nodeid;
-
- var conn = new MySqlConnection(ConfigurationManager.AppSettings["ImportDB"]);
- var cmd = new MySqlCommand(strSql, conn);
-
- conn.Open();
-
- var reader = cmd.ExecuteReader();
-
- while (reader.Read())
- {
- var alias = reader["alias"].ToString().Replace(" ", string.Empty);
-
- this.Response.Write("Creating Child MasterPage: " + alias + " (" + reader["nodeId"] + ")</br>");
-
- var sb = new StringBuilder();
-
- // Create Master Page
- sb.AppendLine(
- "<%@ Master Language=\"C#\" MasterPageFile=\"~/MasterPages/" + parentAlias
- + ".master\" AutoEventWireup=\"true\" CodeBehind=\"" + alias
- + ".master.cs\" Inherits=\"uSiteBuilderImport.Web.MasterPages." + alias + "\" %>");
-
- // Get Markup
- sb.AppendLine(GetMarkUp(reader["nodeid"].ToString()));
- using (var writer = new StreamWriter(this.Server.MapPath("MasterPages/" + alias + ".Master")))
- {
- writer.Write(sb.ToString());
- }
-
- sb.Length = 0;
-
- // Create Code behind file
- sb.AppendLine("using System;");
- sb.AppendLine("using System.Collections.Generic;");
- sb.AppendLine("using System.Linq;");
- sb.AppendLine("using System.Web;");
- sb.AppendLine("using System.Web.UI;");
- sb.AppendLine("using System.Web.UI.WebControls;");
- sb.AppendLine("namespace uSiteBuilderImport.Web.MasterPages");
- sb.AppendLine("{");
- sb.AppendLine("public partial class " + alias + GetTemplatesDefaultDocType(reader["nodeId"].ToString()));
- sb.AppendLine("{");
- sb.AppendLine(" protected void Page_Load(object sender, EventArgs e)");
- sb.AppendLine("{");
- sb.AppendLine("}");
- sb.AppendLine("}");
- sb.AppendLine("}");
- var path = this.Server.MapPath("MasterPages/");
-
- using (var writer = new StreamWriter(path + alias + ".Master.cs"))
- {
- writer.Write(sb.ToString());
- }
-
- this.CreateChildMasterPages(reader["nodeId"].ToString(), alias);
- }
-
- reader.Close();
- conn.Close();
- }
-
- /// <summary>
- /// Create Master Pages
- /// </summary>
- public void CreateMasterPages()
- {
- const string StrSql = "SELECT pk, nodeId, master, alias, design FROM cmsTemplate WHERE (master IS NULL) order by alias";
-
- var conn = new MySqlConnection(ConfigurationManager.AppSettings["ImportDB"]);
- var cmd = new MySqlCommand(StrSql, conn);
-
- conn.Open();
-
- var reader = cmd.ExecuteReader();
-
- while (reader.Read())
- {
- // string alias = dr["alias"].ToString().Replace(" ", "");
- var alias = reader["alias"].ToString();
-
- this.Response.Write(alias + " (" + reader["nodeId"] + ")</br>");
-
- var sb = new StringBuilder();
-
- // Create Master Page
- sb.AppendLine(
- "<%@ Master Language=\"C#\" AutoEventWireup=\"true\" CodeBehind=\"" + alias
- + ".master.cs\" Inherits=\"uSiteBuilderImport.Web.MasterPages." + reader["alias"] + "\" %>");
-
- // Get Markup
- sb.AppendLine(GetMarkUp(reader["nodeid"].ToString()));
-
- // Clean MarkUp
- if (!Directory.Exists(this.Server.MapPath("MasterPages/")))
- {
- Directory.CreateDirectory(this.Server.MapPath("MasterPages/"));
- }
-
- using (var writer = new StreamWriter(this.Server.MapPath("MasterPages/") + alias + ".Master"))
- {
- writer.Write(sb.ToString());
- }
-
- sb.Length = 0;
-
- // Create Code behind file
- sb.AppendLine("using System;");
- sb.AppendLine("using System.Collections.Generic;");
- sb.AppendLine("using System.Linq;");
- sb.AppendLine("using System.Web;");
- sb.AppendLine("using System.Web.UI;");
- sb.AppendLine("using System.Web.UI.WebControls;");
- sb.AppendLine("namespace uSiteBuilderImport.Web.MasterPages");
- sb.AppendLine("{");
- sb.AppendLine("public partial class " + alias + GetTemplatesDefaultDocType(reader["nodeId"].ToString()));
- sb.AppendLine("{");
- sb.AppendLine(" protected void Page_Load(object sender, EventArgs e)");
- sb.AppendLine("{");
- sb.AppendLine("}");
- sb.AppendLine("}");
- sb.AppendLine("}");
-
- using (var writer = new StreamWriter(this.Server.MapPath("MasterPages/" + alias + ".Master.cs")))
- {
- writer.Write(sb.ToString());
- }
-
- this.CreateChildMasterPages(reader["nodeId"].ToString(), alias);
- }
-
- reader.Close();
- conn.Close();
- }
-
- #endregion
-
- #region Methods
-
- /// <summary>
- /// Page Load event
- /// </summary>
- /// <param name="sender">
- /// The sender.
- /// </param>
- /// <param name="e">
- /// The event arguments
- /// </param>
- protected void Page_Load(object sender, EventArgs e)
- {
- // Clear and create Directories
- var path = this.Server.MapPath("MasterPages/");
-
- if (Directory.Exists(path))
- {
- Directory.Delete(path, true);
- }
-
- Directory.CreateDirectory(path);
-
- path = this.Server.MapPath("DocumentTypes");
-
- if (Directory.Exists(path))
- {
- Directory.Delete(path, true);
- }
-
- Directory.CreateDirectory(path);
-
- this.Response.Write("<br/>-------------------------------------------------------------<br/>");
- this.Response.Write("Creating MasterPages");
- this.Response.Write("<br/>-------------------------------------------------------------<br/><br/>");
-
- this.CreateMasterPages();
-
- this.Response.Write("<br/>-------------------------------------------------------------<br/>");
- this.Response.Write("Creating DocTypes");
- this.Response.Write("<br/>-------------------------------------------------------------<br/><br/>");
- this.CreateDocTypes();
-
- this.Response.Write("<br/>-------------------------------------------------------------<br/>");
- this.Response.Write("End");
- this.Response.Write("<br/>-------------------------------------------------------------<br/><br/>");
- }
-
- /// <summary>
- /// The get allowed content type.
- /// </summary>
- /// <param name="nodeid">
- /// The nodeid.
- /// </param>
- /// <returns>
- /// The allowed content type.
- /// </returns>
- private static string GetAllowedContentType(string nodeid)
- {
- var strSql =
- "SELECT cmsContentTypeAllowedContentType.Id, cmsContentTypeAllowedContentType.AllowedId, cmsContentType.alias "
- + "FROM cmsContentTypeAllowedContentType INNER JOIN "
- +
- "cmsContentType ON cmsContentTypeAllowedContentType.AllowedId = cmsContentType.nodeId where cmsContentTypeAllowedContentType.id ="
- + nodeid;
-
- var conn = new MySqlConnection(ConfigurationManager.AppSettings["ImportDB"]);
- var cmd = new MySqlCommand(strSql, conn);
-
- conn.Open();
-
- var reader = cmd.ExecuteReader();
- var sb = new StringBuilder();
-
- while (reader.Read())
- {
- sb.Append("typeof(" + reader["alias"] + "),");
- }
-
- reader.Close();
- conn.Close();
-
- if (sb.ToString() != string.Empty)
- {
- return ",AllowedChildNodeTypes = new Type[] {" + sb.ToString().Remove(sb.Length - 1, 1) + "}";
- }
-
- return string.Empty;
- }
-
- /// <summary>
- /// The get data type.
- /// </summary>
- /// <param name="dataTypeId">
- /// The data type id.
- /// </param>
- /// <returns>
- /// The data type.
- /// </returns>
- private static string GetDataType(int dataTypeId)
- {
- var dt = (Enums.UmbracoPropertyType)dataTypeId;
-
- if (dt.ToString() != dataTypeId.ToString())
- {
- return "UmbracoPropertyType." + dt;
- }
-
- // Custom DataType
- var strSql = "SELECT text FROM umbracoNode where id=" + dataTypeId;
-
- var conn = new MySqlConnection(ConfigurationManager.AppSettings["ImportDB"]);
- var cmd = new MySqlCommand(strSql, conn);
-
- conn.Open();
-
- var reader = cmd.ExecuteReader();
- var rtnText = string.Empty;
-
- while (reader.Read())
- {
- rtnText = reader["text"].ToString();
- }
-
- reader.Close();
- conn.Close();
-
- return "UmbracoPropertyType.Other, OtherTypeName=\"" + rtnText + "\"";
- }
-
- /// <summary>
- /// The get default template doc type.
- /// </summary>
- /// <param name="nodeid">
- /// The nodeid.
- /// </param>
- /// <returns>
- /// The default template doc type.
- /// </returns>
- private static string GetDefaultTemplateDocType(string nodeid)
- {
- // At the moment this is switched off as default Doc Types is set via the allowed templates.
- var strSql =
- "SELECT cmsDocumentType.contentTypeNodeId, cmsDocumentType.templateNodeId, cmsDocumentType.IsDefault, cmsContentType.alias "
- + "FROM cmsDocumentType INNER JOIN "
- + "cmsContentType ON cmsDocumentType.contentTypeNodeId = cmsContentType.nodeId "
- + "WHERE (cmsDocumentType.IsDefault = 1) and contentTypeNodeId=" + nodeid;
-
- var conn = new MySqlConnection(ConfigurationManager.AppSettings["ImportDB"]);
- var cmd = new MySqlCommand(strSql, conn);
-
- conn.Open();
-
- var sb = new StringBuilder();
- var reader = cmd.ExecuteReader();
-
- while (reader.Read())
- {
- sb.Append(reader["alias"].ToString());
- }
-
- reader.Close();
- conn.Close();
-
- return string.Empty;
- }
-
- /// <summary>
- /// get mark up.
- /// </summary>
- /// <param name="nodeid">
- /// The nodeid.
- /// </param>
- /// <returns>
- /// The get mark up.
- /// </returns>
- private static string GetMarkUp(string nodeid)
- {
- var rtnText = string.Empty;
- var strSql = "SELECT pk, nodeId, master, alias, design FROM cmsTemplate where nodeid=" + nodeid;
-
- var conn = new MySqlConnection(ConfigurationManager.AppSettings["ImportDB"]);
- var cmd = new MySqlCommand(strSql, conn);
-
- conn.Open();
-
- var reader = cmd.ExecuteReader();
-
- while (reader.Read())
- {
- rtnText = reader["design"].ToString();
- }
-
- reader.Close();
- conn.Close();
-
- var startPos = rtnText.IndexOf(">");
-
- return rtnText.Substring(startPos + 1);
- }
-
- /// <summary>
- /// The get tab.
- /// </summary>
- /// <param name="tabid">
- /// The tabid.
- /// </param>
- /// <returns>
- /// The tab.
- /// </returns>
- private static string GetTab(string tabid)
- {
- if (tabid != string.Empty)
- {
- var strSql = "SELECT id,text,sortorder FROM cmsTab where id=" + tabid;
-
- var conn = new MySqlConnection(ConfigurationManager.AppSettings["ImportDB"]);
- var cmd = new MySqlCommand(strSql, conn);
-
- conn.Open();
-
- var tab = string.Empty;
- var reader = cmd.ExecuteReader();
-
- while (reader.Read())
- {
- tab = reader["text"].ToString();
- }
-
- reader.Close();
- conn.Close();
-
- if (tab != string.Empty)
- {
- return ", Tab=\"" + tab + "\"";
- }
-
- return string.Empty;
- }
-
- return string.Empty;
- }
-
- /// <summary>
- /// The get validation.
- /// </summary>
- /// <param name="isMandatory">
- /// The is mandatory.
- /// </param>
- /// <param name="rgx">
- /// The rgx.
- /// </param>
- /// <returns>
- /// The validation.
- /// </returns>
- private static string GetValidation(string isMandatory, string rgx)
- {
- var sb = new StringBuilder();
-
- sb.Append(isMandatory == "True" ? ",Mandatory=true" : ",Mandatory=false");
-
- if (rgx != string.Empty)
- {
- sb.Append(",ValidationRegExp=\"" + rgx.Replace("\\", "\\\\") + "\"");
- }
-
- return sb.ToString();
- }
-
- /// <summary>
- /// The create doc types.
- /// </summary>
- private void CreateDocTypes()
- {
- var path = this.Server.MapPath("DocumentTypes");
-
- path = path + "\\";
-
- const string StrSql =
- "SELECT cmsContentType.pk, cmsContentType.nodeId, cmsContentType.alias, cmsContentType.icon, cmsContentType.thumbnail, cmsContentType.description, "
- + "cmsContentType.masterContentType, umbracoNode.text FROM cmsContentType INNER JOIN "
- + "umbracoNode ON cmsContentType.nodeId = umbracoNode.id "
- + "WHERE (cmsContentType.masterContentType = 0) or (cmsContentType.masterContentType is null) " + "ORDER BY cmsContentType.alias";
-
- var conn = new MySqlConnection(ConfigurationManager.AppSettings["ImportDB"]);
- var cmd = new MySqlCommand(StrSql, conn);
-
- conn.Open();
-
- var reader = cmd.ExecuteReader();
-
- while (reader.Read())
- {
- var sb = new StringBuilder();
- sb.AppendLine(GetAllowedContentType(reader["nodeid"].ToString()));
- this.Response.Write("Create Doc Type for " + reader["text"] + " (" + reader["nodeid"] + ")<br/>");
-
- sb.AppendLine("using System;");
- sb.AppendLine("using System.Collections.Generic;");
- sb.AppendLine("using System.Linq;");
- sb.AppendLine("using System.Web;");
-
- sb.AppendLine("using Vega.USiteBuilder;");
-
- sb.AppendLine("namespace uSiteBuilderImport.Web.DocumentTypes");
- sb.AppendLine("{");
-
- // AllowedTemplates = new string[] { "Property" }
- sb.AppendLine(
- "[DocumentType(Name=\"" + reader["text"] + "\",IconUrl=\"" + reader["icon"] + "\""
- + GetAllowedTemplates(reader["nodeid"].ToString()) + ")]");
- sb.AppendLine("public class " + reader["alias"] + " : Vega.USiteBuilder.DocumentTypeBase");
- sb.AppendLine("{");
-
- sb.AppendLine(CreateProperties(reader["nodeid"].ToString()));
-
- // Response.Write("Check if any child docs types of " + dr["nodeid"] + "<br/>");
- this.CreateChildDocType(reader["nodeid"].ToString(), reader["alias"].ToString(), path);
-
- sb.AppendLine("}");
- sb.AppendLine("}");
-
- using (var writer = new StreamWriter(path + reader["alias"] + ".cs"))
- {
- writer.Write(sb.ToString());
- }
- }
-
- reader.Close();
- conn.Close();
- }
-
- /// <summary>
- /// create properties.
- /// </summary>
- /// <param name="nodeid">
- /// The nodeid.
- /// </param>
- /// <returns>
- /// The create properties.
- /// </returns>
- private static string CreateProperties(string nodeid)
- {
- var strSql =
- "SELECT id,dataTypeId,contentTypeId,tabId,Alias,Name,helpText,sortOrder,mandatory,validationRegExp,Description FROM cmsPropertyType where contentTypeId="
- + nodeid + " order by sortOrder";
-
- var sb = new StringBuilder();
-
- var conn = new MySqlConnection(ConfigurationManager.AppSettings["ImportDB"]);
- var cmd = new MySqlCommand(strSql, conn);
-
- conn.Open();
-
- var reader = cmd.ExecuteReader();
-
- while (reader.Read())
- {
- sb.AppendLine(
- "[DocumentTypeProperty(" + GetDataType(Convert.ToInt32(reader["dataTypeId"])) + ",Name=\"" + reader["Name"]
- + "\",Description=\""
- + reader["Description"].ToString().Replace(Environment.NewLine, string.Empty).Replace("\"", "\\\"") + "\""
- + GetTab(reader["tabId"].ToString())
- + GetValidation(reader["mandatory"].ToString(), reader["validationRegExp"].ToString()) + ")]");
-
- sb.AppendLine("public string " + reader["alias"] + " { get; set; }");
- }
-
- reader.Close();
- conn.Close();
-
- return sb.ToString();
- }
-
- /// <summary>
- /// The get allowed templates.
- /// </summary>
- /// <param name="nodeid">
- /// The nodeid.
- /// </param>
- /// <returns>
- /// The allowed templates.
- /// </returns>
- private static string GetAllowedTemplates(string nodeid)
- {
- string strSql =
- "SELECT cmsDocumentType.contentTypeNodeId, cmsDocumentType.templateNodeId, cmsDocumentType.IsDefault, cmsTemplate.alias "
- + "FROM cmsDocumentType INNER JOIN "
- + "cmsTemplate ON cmsDocumentType.templateNodeId = cmsTemplate.nodeId "
- + "WHERE cmsDocumentType.contentTypeNodeId =" + nodeid + " order by isDefault desc";
-
- var conn = new MySqlConnection(ConfigurationManager.AppSettings["ImportDB"]);
- var cmd = new MySqlCommand(strSql, conn);
-
- conn.Open();
-
- var sb = new StringBuilder();
- var reader = cmd.ExecuteReader();
-
- while (reader.Read())
- {
- sb.Append("\"" + reader["alias"] + "\",");
- }
-
- reader.Close();
- conn.Close();
-
- if (sb.ToString() != string.Empty)
- {
- // If there are more than one templates we have to specify default template
- return ", AllowedTemplates = new string[] {" + sb.ToString().Remove(sb.Length - 1, 1) + "}"
- + GetDefaultTemplateDocType(nodeid);
- }
-
- return string.Empty;
- }
-
- #endregion
- }