using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using CMS.GlobalHelper;
using CMS.UIControls;
using CMS.SettingsProvider;
using CMS.CMSHelper;
public partial class CMSAdminControls_UI_Macros_MacroBoolExpression : MacroBoolExpression
{
#region "Properties"
///
/// Enables or disables the control.
///
public bool Enabled
{
get
{
return drpOperator.Enabled;
}
set
{
drpOperator.Enabled = value;
leftOperand.Enabled = value;
rightOperand.Enabled = value;
}
}
///
/// Gets or sets the left part of the expression.
///
public override string LeftExpression
{
get
{
return leftOperand.Text;
}
set
{
leftOperand.Text = value;
}
}
///
/// Gets or sets the left part of the expression.
///
public override string RightExpression
{
get
{
return rightOperand.Text;
}
set
{
rightOperand.Text = value;
}
}
///
/// Gets or sets the left part of the expression.
///
public override string Operator
{
get
{
return (string.IsNullOrEmpty(drpOperator.SelectedValue) ? "--" : drpOperator.SelectedValue);
}
set
{
EnsureOperators();
drpOperator.SelectedValue = value.ToLowerCSafe();
pnlRightOperand.Style["display"] = (value.EndsWithCSafe("--") ? "none" : "block");
}
}
///
/// Resolver to use.
///
public override string ResolverName
{
get
{
return leftOperand.ResolverName;
}
set
{
leftOperand.ResolverName = value;
rightOperand.ResolverName = value;
}
}
#endregion
#region "Page events"
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
EnsureOperators();
leftOperand.Editor.UseSmallFonts = true;
rightOperand.Editor.UseSmallFonts = true;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
string script = @"
function ShowHideRightOperand(elementId, drpId) {
var ddl = document.getElementById(drpId);
var e = document.getElementById(elementId);
if ((e != null) && (ddl != null)) {
if ((ddl.value == '--') || (ddl.value == '!--')) {
e.style.display = 'none';
} else {
e.style.display = 'block';
}
}
}";
// Hide right side for unary operators
if (drpOperator.SelectedValue.EndsWithCSafe("--"))
{
pnlRightOperand.Style.Add("display", "none");
}
drpOperator.Attributes.Add("onchange", "ShowHideRightOperand('" + pnlRightOperand.ClientID + "', '" + drpOperator.ClientID + "');");
ScriptHelper.RegisterStartupScript(Page, typeof(string), "ShowHideRightOperand", script, true);
}
#endregion
///
/// Loads the DDL with operators.
///
private void EnsureOperators()
{
if (drpOperator.Items.Count == 0)
{
drpOperator.Items.Add(new ListItem(GetString("macrodesigner.istrue"), "--"));
drpOperator.Items.Add(new ListItem(GetString("macrodesigner.isfalse"), "!--"));
drpOperator.Items.Add(new ListItem(GetString("macrodesigner.equals"), "=="));
drpOperator.Items.Add(new ListItem(GetString("macrodesigner.notequals"), "!="));
drpOperator.Items.Add(new ListItem(GetString("macrodesigner.greaterthan"), ">"));
drpOperator.Items.Add(new ListItem(GetString("macrodesigner.lessthan"), "<"));
drpOperator.Items.Add(new ListItem(GetString("macrodesigner.greaterorequal"), ">="));
drpOperator.Items.Add(new ListItem(GetString("macrodesigner.lessorequal"), "<="));
drpOperator.Items.Add(new ListItem(GetString("macrodesigner.contains"), "contains"));
drpOperator.Items.Add(new ListItem(GetString("macrodesigner.notcontains"), "!contains"));
drpOperator.Items.Add(new ListItem(GetString("macrodesigner.endswith"), "endswith"));
drpOperator.Items.Add(new ListItem(GetString("macrodesigner.notendswith"), "!endswith"));
drpOperator.Items.Add(new ListItem(GetString("macrodesigner.startswith"), "startswith"));
drpOperator.Items.Add(new ListItem(GetString("macrodesigner.notstartswith"), "!startswith"));
}
}
}