static string ParseNormalBlocks(XmlTag placeholder, List <CustomWrapper> lstWrapper) { StringBuilder sb = new StringBuilder(); string positions = placeholder.InnerHtml; string[] positionsAr = positions.Split(','); bool fullWidth = Utils.GetAttributeValueByName(placeholder, XmlAttributeTypes.WIDTH) == "" ? true : false; string[] arrWidth = (Utils.GetAttributeValueByName(placeholder, XmlAttributeTypes.WIDTH) == "" ? "100" : Utils.GetAttributeValueByName(placeholder, XmlAttributeTypes.WIDTH)).Split(','); if (positionsAr.Length > 1) { sb.Append("<div class='sfMoreblocks sfCurve clearfix'>"); } for (int i = 0; i < positionsAr.Length; i++) { string style = ""; if (!fullWidth) { if (arrWidth.Length > i) { style += string.Format("width:{0}%;float:left", arrWidth[i]); } else if (i == arrWidth.Length) { style += string.Format("width:{0}%;float:left", Calculator.GetRemainingWidth(arrWidth)); } } else { style += ""; } foreach (CustomWrapper start in lstWrapper) { if (start.Type == "position") { List <KeyValue> lstWidths = new List <KeyValue>(); int wrapperwidth = Calculator.CalculateWrapperWidth(positionsAr, arrWidth, start.LSTPositions.ToArray(), "normal", out lstWidths); if (start.Start.ToLower() == positionsAr[i]) { string divwidth = string.Format("{0}%", (wrapperwidth).ToString()); for (int j = 1; j <= start.Depth; j++) { if (j == 1) { string wrapstyle = start.Depth > 1 ? string.Format("sfWrap sfInnerwrap{0}{1}", start.Index, start.Class == "" ? "" : string.Format(" {0}", start.Class)) : string.Format("sfWrap sfInnerwrap{0}{1} clearfix", start.Index, start.Class == "" ? "" : string.Format(" {0}", start.Class)); string floatstyle = divwidth == "100%" ? string.Format("width:{0}", divwidth) : string.Format("width:{0};float:left", divwidth); sb.Append("<div style='" + floatstyle + "' class='" + wrapstyle + "'>"); } else { string multiplewrappers = start.Depth == j?string.Format("sfWrap {0} sf{1} clearfix", start.Class, j) : string.Format("sfWrap {0} sf{1}", start.Class == "" ? "" : string.Format(" {0}", start.Class), j); string floatstyle = divwidth == "100%" ? string.Format("width:{0}", divwidth) : string.Format("width:{0};float:left", divwidth); sb.Append("<div style='" + floatstyle + "' class='" + multiplewrappers + "'>"); } } } if (start.LSTPositions.Contains(positionsAr[i])) { style = string.Format("width:{0}%;float:left", Calculator.CalculatePostWrapWidth(start.LSTPositions.ToArray(), positionsAr[i], wrapperwidth, "normal", lstWidths)); } } } string customStyle = Utils.GetAttributeValueByName(placeholder, XmlAttributeTypes.MINHEIGHT) == "" ? string.Format("{0}", style) : string.Format("{0};min-height:{1}px", style, Utils.GetAttributeValueByName(placeholder, XmlAttributeTypes.MINHEIGHT)); sb.Append("<div style='" + customStyle + "'>"); sb.Append("<div class='sfWrapper sfCurve'>"); //sb.Append(positionsAr[i]); sb.Append(HtmlBuilder.AddPlaceholder(positionsAr[i], Mode)); sb.Append("</div></div>"); if (arrWidth.Length == i) { sb.Append("<div class='clearfix'></div>"); } foreach (CustomWrapper start in lstWrapper) { if (start.End.ToLower() == positionsAr[i] && start.Type == "position") { for (int j = 1; j <= start.Depth; j++) { sb.Append("</div>"); } } } } if (positionsAr.Length > 1) { sb.Append("</div>"); } return(sb.ToString()); }
public static string ParseFixedBlocks(XmlTag placeholder, List <CustomWrapper> lstWrapper) { StringBuilder sb = new StringBuilder(); string positions = placeholder.InnerHtml; string[] positionsAr = positions.Split(','); double spotWidth = 100 / positionsAr.Length; string width = spotWidth.ToString() + "%"; string minheight = Utils.GetAttributeValueByName(placeholder, XmlAttributeTypes.MINHEIGHT, "200px"); if (positionsAr.Length > 1) { sb.Append("<div class='sfMoreblocks sfCurve clearfix'>"); } for (int i = 0; i < positionsAr.Length; i++) { string adjustedWidth = width; string style = Utils.GetAttributeValueByName(placeholder, XmlAttributeTypes.CSSCLASS); if (i == 0) { style += " sfFirst"; } if (i == positionsAr.Length - 1) { style += " sfLast"; } foreach (CustomWrapper start in lstWrapper) { if (start.Type == "position") { List <KeyValue> lstWidths = new List <KeyValue>(); int totalwidth = Calculator.CalculateWrapperWidth(positionsAr, positionsAr, start.LSTPositions.ToArray(), "fixed", out lstWidths); if (start.Start.ToLower() == positionsAr[i]) { string wrapperwidth = string.Format("{0}%", (totalwidth).ToString()); for (int j = 1; j <= start.Depth; j++) { if (j == 1) { string wrapstyle = start.Depth > 1 ? string.Format("sfWrap sfInnerwrap{0}{1}", start.Index, start.Class == "" ? "" : string.Format(" {0}", start.Class)) : string.Format("sfWrap sfInnerwrap{0}{1} clearfix", start.Index, start.Class == "" ? "" : string.Format(" {0}", start.Class)); sb.Append("<div style='float:left;width:" + wrapperwidth + "' class='" + wrapstyle + "'>"); } else { string multiplewrappers = start.Depth == j?string.Format("sfWrap {0} sf{1} clearfix", start.Class == ""? "" : string.Format(" {0}", start.Class), j - 1) : string.Format("sfWrap {0} sf{1}", start.Class == "" ? "" : string.Format(" {0}", start.Class), j - 1); sb.Append("<div class='" + multiplewrappers + "'>"); } } } if (start.LSTPositions.Contains(positionsAr[i])) { adjustedWidth = string.Format("{0}%", Calculator.CalculatePostWrapWidth(positionsAr, positionsAr[i], totalwidth, "fixed", lstWidths).ToString()); } } } string customStyle = Utils.GetAttributeValueByName(placeholder, XmlAttributeTypes.MINHEIGHT) == "" ? string.Format("float:left;width:{0}", adjustedWidth) : string.Format("float:left;width:{0};min-height:{1}px", adjustedWidth, Utils.GetAttributeValueByName(placeholder, XmlAttributeTypes.MINHEIGHT)); sb.Append("<div style='" + customStyle + "'>"); sb.Append("<div class='sfWrapper sfCurve'>"); sb.Append(HtmlBuilder.AddPlaceholder(positionsAr[i], Mode)); sb.Append("</div></div>"); foreach (CustomWrapper start in lstWrapper) { if (start.End.ToLower() == positionsAr[i] && start.Type == "position") { for (int j = 1; j <= start.Depth; j++) { sb.Append("</div>"); } } } } if (positionsAr.Length > 1) { sb.Append("</div>"); } return(sb.ToString()); }
/// <summary> /// Calculate middle block width. /// </summary> /// <param name="middleBlock">XmlTag class containing xml details.</param> /// <returns></returns> public static List <KeyValue> CalculateMiddleBlockWidth(XmlTag middleBlock) { double left = 0.0, leftA = 0.0, leftB = 0.0; if (Decide.HasBlock(Placeholders.LEFTTOP, middleBlock) || Decide.HasBlock(Placeholders.LEFTBOTTOM, middleBlock) || (Decide.HasBlock(Placeholders.LEFTA, middleBlock) && Decide.HasBlock(Placeholders.LEFTB, middleBlock))) { if (Decide.HasBlock(Placeholders.LEFTA, middleBlock) && Decide.HasBlock(Placeholders.LEFTB, middleBlock)) { left = 2; leftA = double.Parse(Calculator.CalculateColumnWidth(middleBlock, Placeholders.LEFTA)); leftB = double.Parse(Calculator.CalculateColumnWidth(middleBlock, Placeholders.LEFTB)); } else if (Decide.HasBlock(Placeholders.LEFTA, middleBlock) && !Decide.HasBlock(Placeholders.LEFTB, middleBlock)) { left = 1; leftA = double.Parse(Calculator.CalculateColumnWidth(middleBlock, Placeholders.LEFTA)); } else if (!Decide.HasBlock(Placeholders.LEFTA, middleBlock) && Decide.HasBlock(Placeholders.LEFTB, middleBlock)) { left = 1; leftB = double.Parse(Calculator.CalculateColumnWidth(middleBlock, Placeholders.LEFTB)); } } else if (Decide.HasBlock(Placeholders.LEFTA, middleBlock)) { left = 1; leftA = double.Parse(Calculator.CalculateColumnWidth(middleBlock, Placeholders.LEFTA)); } else if (Decide.HasBlock(Placeholders.LEFTB, middleBlock)) { left = 1; leftB = double.Parse(Calculator.CalculateColumnWidth(middleBlock, Placeholders.LEFTB)); } double totalleft = left > 0 ? (leftA + leftB) / left : 0; double right = 0.0, rightA = 0.0, rightB = 0.0; if (Decide.HasBlock(Placeholders.RIGHTTOP, middleBlock) || Decide.HasBlock(Placeholders.RIGHTBOTTOM, middleBlock) || (Decide.HasBlock(Placeholders.RIGHTA, middleBlock) && Decide.HasBlock(Placeholders.RIGHTB, middleBlock))) { if (Decide.HasBlock(Placeholders.RIGHTA, middleBlock) && Decide.HasBlock(Placeholders.RIGHTB, middleBlock)) { right = 2; rightA = double.Parse(Calculator.CalculateColumnWidth(middleBlock, Placeholders.RIGHTA)); rightB = double.Parse(Calculator.CalculateColumnWidth(middleBlock, Placeholders.RIGHTB)); } else if (Decide.HasBlock(Placeholders.RIGHTA, middleBlock) && !Decide.HasBlock(Placeholders.RIGHTB, middleBlock)) { right = 1; rightA = double.Parse(Calculator.CalculateColumnWidth(middleBlock, Placeholders.RIGHTA)); } else if (!Decide.HasBlock(Placeholders.RIGHTA, middleBlock) && Decide.HasBlock(Placeholders.RIGHTB, middleBlock)) { right = 1; rightB = double.Parse(Calculator.CalculateColumnWidth(middleBlock, Placeholders.RIGHTB)); } } else if (Decide.HasBlock(Placeholders.RIGHTA, middleBlock)) { right = 1; rightA = double.Parse(Calculator.CalculateColumnWidth(middleBlock, Placeholders.RIGHTA)); } else if (Decide.HasBlock(Placeholders.RIGHTB, middleBlock)) { right = 1; rightB = double.Parse(Calculator.CalculateColumnWidth(middleBlock, Placeholders.RIGHTB)); } double totalright = right > 0 ? (rightA + rightB) / right : 0; double totalWidth = 100; rightA = (rightA * 100) / (totalright * right); rightA = rightA.ToString() == "NaN" ? 0 : rightA; rightB = totalWidth - rightA; rightB = rightB.ToString() == "NaN" ? 0 : rightB; double middle = totalWidth - totalright; middle = totalWidth - totalleft - totalright; leftA = (leftA * 100) / (totalleft * left); leftA = leftA.ToString() == "NaN" ? 0 : leftA; leftB = totalWidth - leftA; leftB = leftB.ToString() == "NaN" ? 0 : leftB; middle = totalWidth - totalleft - totalright; List <KeyValue> widthsKvp = new List <KeyValue>(); widthsKvp.Add(new KeyValue("Left", totalleft.ToString())); widthsKvp.Add(new KeyValue("LeftA", leftA.ToString())); widthsKvp.Add(new KeyValue("LeftB", leftB.ToString())); widthsKvp.Add(new KeyValue("Right", totalright.ToString())); widthsKvp.Add(new KeyValue("RightA", rightA.ToString())); widthsKvp.Add(new KeyValue("RightB", rightB.ToString())); widthsKvp.Add(new KeyValue("Center", middle.ToString())); DecreaseWidthForAdjustment(ref widthsKvp); return(widthsKvp); }