/// <summary> /// Obtain place holder. /// </summary> /// <param name="placeholder">Object of XmlTag class.</param> /// <param name="lstWrapper">List of CustomWrapper class.</param> /// <param name="_Mode">Mode</param> /// <returns>String format of placeholder markup.</returns> public static string ProcessPlaceholder(XmlTag placeholder, List <CustomWrapper> lstWrapper, int _Mode) { Mode = _Mode; ///1.Check for outer wrappers(skipping for now) ///2.Check for the wrapper="inner,3" attribute, Split the positions and inline styles according to width and mode attribute StringBuilder sb = new StringBuilder(); foreach (XmlTag pch in placeholder.LSTChildNodes) { string[] positions = pch.InnerHtml.Split(','); int mode = Utils.GetAttributeValueByName(pch, XmlAttributeTypes.MODE) == "" ? 0 : 1; foreach (CustomWrapper start in lstWrapper) { if (start.Type == "placeholder" && Utils.GetAttributeValueByName(pch, XmlAttributeTypes.NAME).ToLower().Equals(start.Start)) { string style = string.Format("sfBlockwrap {0}", start.Class); int depth = start.Depth; for (int i = 1; i <= depth; i++) { if (i == 1) { style = start.Depth > 1 ? string.Format("sfBlockwrap sfWrap{0}{1}", start.Index, start.Class == "" ? "" : string.Format(" {0}", start.Class)) : string.Format("sfBlockwrap sfWrap{0}{1} clearfix", start.Index, start.Class == "" ? "" : string.Format(" {0}", start.Class));; sb.Append("<div class='" + style + "'>"); } else { style = start.Depth == i?string.Format("sfBlockwrap sf{0}{1} clearfix", i - 1, start.Class == ""? "" : string.Format(" {0}", start.Class)) : string.Format("sfBlockwrap sf{0}{1}", i - 1, start.Class == "" ? "" : string.Format(" {0}", start.Class)); sb.Append("<div class='" + style + "'>"); } } } } List <int> wrapperdepth = new List <int>(); sb.Append(GenerateBlockWrappers(pch, ref wrapperdepth)); switch (mode) { case 0: sb.Append(ParseNormalBlocks(pch, lstWrapper)); break; case 1: sb.Append(ParseFixedBlocks(pch, lstWrapper)); break; } sb.Append(HtmlBuilder.GenerateBlockWrappersEnd(wrapperdepth)); foreach (CustomWrapper start in lstWrapper) { string pchName = Utils.GetAttributeValueByName(pch, XmlAttributeTypes.NAME).ToLower(); if (start.Type == "placeholder" && pchName.Equals(start.End)) { for (int i = 1; i <= start.Depth; i++) { sb.Append("</div>"); } } } } return(sb.ToString()); }