using System; using System.Collections; using CMS.GlobalHelper; using CMS.PortalControls; using CMS.PortalEngine; using CMS.SettingsProvider; using System.Text; public partial class CMSWebParts_Layouts_Columns : CMSAbstractLayoutWebPart { #region "Variables" /// /// List of div IDs. /// private ArrayList divIds = new ArrayList(); #endregion #region "Properties" /// /// Number of left columns. /// public int LeftColumns { get { return ValidationHelper.GetInteger(GetValue("LeftColumns"), 1); } set { SetValue("LeftColumns", value); } } /// /// Use center column. /// public bool CenterColumn { get { return ValidationHelper.GetBoolean(GetValue("CenterColumn"), true); } set { SetValue("CenterColumn", value); } } /// /// Number of right columns. /// public int RightColumns { get { return ValidationHelper.GetInteger(GetValue("RightColumns"), 1); } set { SetValue("RightColumns", value); } } /// /// Height. /// public string Height { get { return ValidationHelper.GetString(GetValue("Height"), ""); } set { SetValue("Height", value); } } /// /// Equal columns height. /// public bool EqualHeight { get { return ValidationHelper.GetBoolean(GetValue("EqualHeight"), false); } set { SetValue("EqualHeight", value); } } /// /// First left column width. /// public string LColumn1Width { get { return ValidationHelper.GetString(GetValue("LColumn1Width"), ""); } set { SetValue("LColumn1Width", value); } } /// /// First left column height. /// public string LColumn1Height { get { return ValidationHelper.GetString(GetValue("LColumn1Height"), ""); } set { SetValue("LColumn1Height", value); } } /// /// First left column CSS class. /// public string LColumn1CSSClass { get { return ValidationHelper.GetString(GetValue("LColumn1CSSClass"), ""); } set { SetValue("LColumn1CSSClass", value); } } /// /// Second left column width. /// public string LColumn2Width { get { return ValidationHelper.GetString(GetValue("LColumn2Width"), ""); } set { SetValue("LColumn2Width", value); } } /// /// Second left column height. /// public string LColumn2Height { get { return ValidationHelper.GetString(GetValue("LColumn2Height"), ""); } set { SetValue("LColumn2Height", value); } } /// /// Second left column CSS class. /// public string LColumn2CSSClass { get { return ValidationHelper.GetString(GetValue("LColumn2CSSClass"), ""); } set { SetValue("LColumn2CSSClass", value); } } /// /// Third left column width. /// public string LColumn3Width { get { return ValidationHelper.GetString(GetValue("LColumn3Width"), ""); } set { SetValue("LColumn3Width", value); } } /// /// Third left column height. /// public string LColumn3Height { get { return ValidationHelper.GetString(GetValue("LColumn3Height"), ""); } set { SetValue("LColumn3Height", value); } } /// /// Third left column CSS class. /// public string LColumn3CSSClass { get { return ValidationHelper.GetString(GetValue("LColumn3CSSClass"), ""); } set { SetValue("LColumn3CSSClass", value); } } /// /// Use center column. /// public string CenterColumnCSSClass { get { return ValidationHelper.GetString(GetValue("CenterColumnCSSClass"), ""); } set { SetValue("CenterColumnCSSClass", value); } } /// /// Center column height. /// public string CenterColumnHeight { get { return ValidationHelper.GetString(GetValue("CenterColumnHeight"), ""); } set { SetValue("CenterColumnHeight", value); } } /// /// First right column width. /// public string RColumn1Width { get { return ValidationHelper.GetString(GetValue("RColumn1Width"), ""); } set { SetValue("RColumn1Width", value); } } /// /// First right column height. /// public string RColumn1Height { get { return ValidationHelper.GetString(GetValue("RColumn1Height"), ""); } set { SetValue("RColumn1Height", value); } } /// /// First right column CSS class. /// public string RColumn1CSSClass { get { return ValidationHelper.GetString(GetValue("RColumn1CSSClass"), ""); } set { SetValue("RColumn1CSSClass", value); } } /// /// Second right column width. /// public string RColumn2Width { get { return ValidationHelper.GetString(GetValue("RColumn2Width"), ""); } set { SetValue("RColumn2Width", value); } } /// /// Second right column height. /// public string RColumn2Height { get { return ValidationHelper.GetString(GetValue("RColumn2Height"), ""); } set { SetValue("RColumn2Height", value); } } /// /// Second right column CSS class. /// public string RColumn2CSSClass { get { return ValidationHelper.GetString(GetValue("RColumn2CSSClass"), ""); } set { SetValue("RColumn2CSSClass", value); } } /// /// Third right column width. /// public string RColumn3Width { get { return ValidationHelper.GetString(GetValue("RColumn3Width"), ""); } set { SetValue("RColumn3Width", value); } } /// /// Third right column height. /// public string RColumn3Height { get { return ValidationHelper.GetString(GetValue("RColumn3Height"), ""); } set { SetValue("RColumn3Height", value); } } /// /// Third right column CSS class. /// public string RColumn3CSSClass { get { return ValidationHelper.GetString(GetValue("RColumn3CSSClass"), ""); } set { SetValue("RColumn3CSSClass", value); } } #endregion #region "Methods" /// /// Prepares the layout of the web part. /// protected override void PrepareLayout() { StartLayout(); string height = ValidationHelper.GetString(GetValue("Height"), ""); // Prepare the data for equal heights script bool equal = EqualHeight; string groupClass = null; if (equal) { groupClass = "Cols_" + InstanceGUID.ToString().Replace("-", ""); } if (IsDesign) { Append(""); if (ViewMode == ViewModeEnum.Design) { Append(""); } Append(""); // Footer with actions if (AllowDesignMode) { // Vertical resizer for all columns if (equal) { Append(""); } Append(""); } Append("
"); // Add header container AddHeaderContainer(); Append("
"); } // Prepare automatic width string autoWidth = null; int cols = LeftColumns + RightColumns; if (CenterColumn) { cols++; } if (cols > 0) { autoWidth = ((100 - cols) / cols) + "%"; } // Encapsulating div if (IsDesign && AllowDesignMode) { Append("
"); } else { Append("
"); } // Left columns CreateColumns(LeftColumns, height, equal, groupClass, autoWidth, false); // Right columns CreateColumns(RightColumns, height, equal, groupClass, autoWidth, true); // Center column if (CenterColumn) { if (IsDesign && AllowDesignMode) { Append("
"); } Append(""); // Add the zone AddZone(ID + "_center", "Center"); Append("
"); if (IsDesign) { // Vertical resizer for center column if (AllowDesignMode && !equal) { Append("
 
"); } Append("
"); } } // End of encapsulating div Append("
"); if (IsDesign) { Append("
 
"); // Pane actions Append("
"); if (LeftColumns > 0) { AppendRemoveAction(ResHelper.GetString("Layout.RemoveLeftColumn"), "LeftColumns"); Append(" "); } AppendAddAction(ResHelper.GetString("Layout.AddLeftColumn"), "LeftColumns"); Append("
"); Append("
"); if (RightColumns > 0) { AppendRemoveAction(ResHelper.GetString("Layout.RemoveRightColumn"), "RightColumns"); Append(" "); } AppendAddAction(ResHelper.GetString("Layout.AddRightColumn"), "RightColumns"); Append("
"); Append("
"); } FinishLayout(); // Enforce equal height with a javascript if (equal) { PortalHelper.RegisterLayoutsScript(this.Page); ScriptHelper.RegisterScriptFile(Page, "jquery/jquery-equalheight.js"); StringBuilder sb = new StringBuilder(); sb.Append( @" function SetAllHeight_", groupClass, @"(h) { SetAllHeight('", groupClass, @"', h); } InitEqualHeight('", groupClass, @"'); " ); ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "EqualHeight_" + groupClass, ScriptHelper.GetScript(sb.ToString())); } } /// /// Creates the columns in the layout. /// /// Number of columns /// Height /// If true, the column heights should equal /// Group class /// Automatic width /// Right columns protected void CreateColumns(int cols, string height, bool equal, string groupClass, string autoWidth, bool right) { for (int i = 1; i <= cols; i++) { string colMark = (right ? "r" : "l"); // Set the width property string widthPropertyName = colMark + "Column" + i + "Width"; string heightPropertyName = colMark + "Column" + i + "Height"; // Do not use automatic width in case of design mode if (IsDesign) { autoWidth = ""; } string width = DataHelper.GetNotEmpty(GetValue(widthPropertyName), autoWidth); if (!equal) { height = DataHelper.GetNotEmpty(GetValue(heightPropertyName), height); } Append(""); if (right) { // Width resizer if (AllowDesignMode) { Append(""); } } Append(""); if (AllowDesignMode) { if (right) { // Resizers if (!equal) { Append(""); Append(""); Append(""); } } else { // Resizers Append(""); if (!equal) { Append(""); Append(""); Append(""); } } } Append("
 "); Append(""); // Add the zone AddZone(ID + "_" + colMark + i, "[" + colMark.ToUpperCSafe() + i + "]"); Append(""); if (IsDesign) { // Right column Append("
   
  
"); Append(""); } } } #endregion }