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("");
}
// 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(" |
");
// Footer with actions
if (AllowDesignMode)
{
// Vertical resizer for all columns
if (equal)
{
Append("| |
");
}
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("");
Append(" ");
// Add the zone
AddZone(ID + "_" + colMark + i, "[" + colMark.ToUpperCSafe() + i + "]");
Append(" ");
if (IsDesign)
{
// Right column
Append(" | ");
if (AllowDesignMode)
{
if (right)
{
// Resizers
if (!equal)
{
Append("
");
Append("| | ");
Append(" | ");
}
}
else
{
// Resizers
Append(" | ");
if (!equal)
{
Append("
");
Append("| | ");
Append(" | ");
}
}
}
Append("
");
Append("
");
}
}
}
#endregion
}