/// <summary>
    /// Fills class name selector with data.
    /// </summary>
    private void FillClassNameSelector(string assemblyName)
    {
        // Clear items
        drpClassName.DropDownList.Items.Clear();

        if (String.IsNullOrEmpty(assemblyName))
        {
            return;
        }

        if (MacroProcessor.ContainsMacro(assemblyName))
        {
            // Include macro value if specified
            drpClassName.DropDownList.Items.Add(ClassName);
            return;
        }

        var classes = ClassHelper.GetClasses(assemblyName, Settings);

        if (classes != null)
        {
            // Fill drop-down list
            foreach (string className in classes)
            {
                drpClassName.DropDownList.Items.Add(className);
            }

            // Select first item if nothing was selected
            if ((classes.Count > 0) && !AllowEmpty && (drpClassName.SelectedIndex < 0) && String.IsNullOrEmpty(drpClassName.SelectedValue))
            {
                drpClassName.SelectedIndex = 0;
            }
        }
        else
        {
            drpClassName.DropDownList.Items.Add(drpClassName.SelectedValue);
        }
    }
示例#2
0
    /// <summary>
    /// Returns true if user control is valid.
    /// </summary>
    public override bool IsValid()
    {
        string value = uniSelector.TextBoxSelect.Text.Trim();

        // If macro or special value, do not validate
        if (MacroProcessor.ContainsMacro(value) || value == string.Empty)
        {
            return(true);
        }

        try
        {
            // Check if query exists
            QueryInfoProvider.GetQueryInfo(value);
        }
        catch
        {
            ValidationError = GetString("query.queryorclassnotexist").Replace("%%code%%", value);
            return(false);
        }

        return(true);
    }
 /// <summary>
 /// Returns true if user control is valid.
 /// </summary>
 public override bool IsValid()
 {
     if (SelectionMode == SelectionModeEnum.SingleTextBox)
     {
         // If macro or special value, do not validate
         string value = uniSelector.TextBoxSelect.Text.Trim();
         if (!MacroProcessor.ContainsMacro(value) && (value != "") && (value != TreeProvider.ALL_CULTURES))
         {
             // Check if culture exists
             CultureInfo ci = CultureInfoProvider.GetCultureInfo(value);
             if (ci == null)
             {
                 ValidationError = GetString("formcontrols_selectculture.notexist").Replace("%%code%%", value);
                 return(false);
             }
             else
             {
                 return(true);
             }
         }
     }
     return(true);
 }
示例#4
0
    private string Validate(string value, bool allowPreselect)
    {
        if (!string.IsNullOrEmpty(value))
        {
            // If alternative form name contains macro or is not full name, it is always valid
            if (MacroProcessor.ContainsMacro(value) || !ValidationHelper.IsFullName(value))
            {
                return(string.Empty);
            }

            // Try to get alternative form object
            AlternativeFormInfo afi = AlternativeFormInfoProvider.GetAlternativeFormInfo(value);
            if (afi == null)
            {
                if (allowPreselect)
                {
                    // Alternative form does not exist
                    DataClassInfo di = DataClassInfoProvider.GetDataClassInfo(value);
                    if ((di == null) && (value != string.Empty))
                    {
                        return(GetString("altform.selectaltform.notexist").Replace("%%code%%", value));
                    }
                    else
                    {
                        return(String.Empty);
                    }
                }
                else
                {
                    return(GetString("altforms.selectaltform.formnotexist").Replace("%%code%%", value));
                }
            }
        }

        return(string.Empty);
    }
    /// <summary>
    /// Returns true if user control is valid.
    /// </summary>
    public override bool IsValid()
    {
        bool valid = true;

        // Check 'options' validity
        if (lstOptions.SelectedIndex == ListSourceIndex)
        {
            // Some option must be included
            if (String.IsNullOrWhiteSpace(txtValue.Text))
            {
                ValidationError += GetString("TemplateDesigner.ErrorDropDownListOptionsEmpty") + " ";
                valid            = false;
            }
            else
            {
                // Parse lines
                int      lineIndex;
                string[] lines = txtValue.Text.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

                for (lineIndex = 0; lineIndex <= lines.GetUpperBound(0); lineIndex++)
                {
                    // Loop through only not-empty lines
                    string line = lines[lineIndex];
                    if (!String.IsNullOrWhiteSpace(line))
                    {
                        // Get line items
                        string[] items = line.Replace(SpecialFieldsDefinition.SEMICOLON_TO_REPLACE, SpecialFieldsDefinition.REPLACED_SEMICOLON).Split(';');

                        // Every line must have value and item element and optionally visibility macro
                        if (items.Length > 3)
                        {
                            ValidationError += GetString("TemplateDesigner.ErrorDropDownListOptionsInvalidFormat") + " ";
                            valid            = false;
                            break;
                        }

                        // Check for possible macro (with/without visibility condition)
                        if (items.Length <= 2)
                        {
                            string specialMacro = items[0].Trim();

                            // Check if special macro is used
                            if (SpecialFieldsDefinition.IsSpecialFieldMacro(specialMacro))
                            {
                                string macro = (items.Length == 2) ? items[1].Trim() : String.Empty;

                                // If special field macro used and second item isn't macro show error
                                if (!String.IsNullOrEmpty(macro) && !MacroProcessor.ContainsMacro(macro))
                                {
                                    ValidationError += string.Format(GetString("TemplateDesigner.ErrorDropDownListOptionsInvalidMacroFormat"), lineIndex + 1) + " ";
                                    valid            = false;
                                    break;
                                }
                            }
                        }

                        // Validate input value
                        var checkType = new DataTypeIntegrity(items[0], EditedFieldDataType);

                        var result = checkType.ValidateDataType();
                        if (!String.IsNullOrEmpty(result))
                        {
                            ValidationError += string.Format(GetString("TemplateDesigner.ErrorDropDownListOptionsInvalidValue"), lineIndex + 1) + " " + result + " ";
                            valid            = false;
                            break;
                        }
                    }
                }
            }
        }
        // Check SQL query validity
        else if ((lstOptions.SelectedIndex == SqlSourceIndex) && String.IsNullOrWhiteSpace(txtValue.Text))
        {
            ValidationError += GetString("TemplateDesigner.ErrorDropDownListQueryEmpty") + " ";
            valid            = false;
        }
        else if ((lstOptions.SelectedIndex == MacroSourceIndex) && String.IsNullOrWhiteSpace(txtValue.Text))
        {
            ValidationError += GetString("TemplateDesigner.ErrorDropDownListMacroEmpty") + " ";
            valid            = false;
        }

        return(valid);
    }
示例#6
0
    /// <summary>
    /// Sets time controls (dropdown with interval and textbox with interval value). Returns true if time controls are to be hided.
    /// </summary>
    private bool SetTimeControls()
    {
        HitsIntervalEnum interval = HitsIntervalEnumFunctions.StringToHitsConversion(mIntervalStr);

        DateTime from = DateTimeHelper.ZERO_TIME;
        DateTime to   = DateTimeHelper.ZERO_TIME;

        object dcFrom = null;
        object dcTo   = null;

        if (mParameters != null)
        {
            // Load fromdate and todate from report parameters (passed from query string)
            dcFrom = mParameters.Table.Columns["FromDate"];
            dcTo   = mParameters.Table.Columns["ToDate"];

            if (dcFrom != null)
            {
                from = ValidationHelper.GetDateTime(mParameters["FromDate"], DateTimeHelper.ZERO_TIME);
            }

            if (dcTo != null)
            {
                to = ValidationHelper.GetDateTime(mParameters["ToDate"], DateTimeHelper.ZERO_TIME);
            }
        }

        // If one contains zero time, set all time radio button. In such situation, report can maintain unlimited fromdate or todate.
        if ((from == DateTimeHelper.ZERO_TIME) || (to == DateTimeHelper.ZERO_TIME))
        {
            mCheckLast = false;
        }

        // If one is not set, hide limitdata panel
        if ((dcFrom == null) || (dcTo == null))
        {
            ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_DAY;
            return(true);
        }

        int  diff        = 0;
        bool noAddToDiff = false;

        // If interval is not known, but 'from' and 'to' is set (f.e. preview, webpart,..) - compute interval from date values
        if (interval == HitsIntervalEnum.None)
        {
            String sFrom = ValidationHelper.GetString(mParameters["FromDate"], String.Empty).ToLowerCSafe();
            String sTo   = ValidationHelper.GetString(mParameters["ToDate"], String.Empty).ToLowerCSafe();
            mCheckLast = true;

            if (MacroProcessor.ContainsMacro(sFrom) && MacroProcessor.ContainsMacro(sTo))
            {
                if (sFrom.Contains("addhours"))
                {
                    interval = HitsIntervalEnum.Hour;
                }
                else if (sFrom.Contains("adddays"))
                {
                    interval = HitsIntervalEnum.Day;
                }
                else if (sFrom.Contains("addweeks"))
                {
                    interval = HitsIntervalEnum.Week;
                }
                else if (sFrom.Contains("addmonths"))
                {
                    interval = HitsIntervalEnum.Month;
                }
                else if (sFrom.Contains("addyears"))
                {
                    interval = HitsIntervalEnum.Year;
                }

                var macroResolverSettings = new MacroSettings
                {
                    AvoidInjection = false,
                    Culture        = CultureHelper.EnglishCulture.Name
                };
                to          = DateTime.Now;
                from        = ValidationHelper.GetDateTime(MacroResolver.Resolve(sFrom, macroResolverSettings), DateTime.Now, macroResolverSettings.Culture);
                noAddToDiff = true;
            }
            else if ((from != DateTimeHelper.ZERO_TIME) && (to != DateTimeHelper.ZERO_TIME))
            {
                // Set interval as greatest possible interval (365+ days -> years, 30+days->months ,...)
                diff = (int)(to - from).TotalDays;
                if (diff >= 365)
                {
                    interval = HitsIntervalEnum.Year;
                }
                else if (diff >= 30)
                {
                    interval = HitsIntervalEnum.Month;
                }
                else if (diff >= 7)
                {
                    interval = HitsIntervalEnum.Week;
                }
                else if (diff >= 1)
                {
                    interval = HitsIntervalEnum.Day;
                }
                else
                {
                    interval = HitsIntervalEnum.Hour;
                }
            }
        }

        // Set default period and diff based on interval
        switch (interval)
        {
        case HitsIntervalEnum.Year:
            diff = to.Year - from.Year;
            ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_MONTH;
            break;

        case HitsIntervalEnum.Month:
            diff = ((to.Year - from.Year) * 12) + to.Month - from.Month;
            ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_MONTH;
            break;

        case HitsIntervalEnum.Week:
            diff = (int)(to - from).TotalDays / 7;
            ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_WEEK;
            break;

        case HitsIntervalEnum.Day:
            diff = (int)(to - from).TotalDays;
            ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_DAY;
            break;

        case HitsIntervalEnum.Hour:
            diff = (int)(to - from).TotalHours;
            ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_HOUR;
            break;

        case HitsIntervalEnum.None:
            mCheckLast = false;
            break;
        }

        // Add current
        if (!noAddToDiff)
        {
            diff++;
        }

        if (interval != HitsIntervalEnum.None)
        {
            drpLast.SelectedValue = HitsIntervalEnumFunctions.HitsConversionToString(interval);
        }

        if (!mCheckLast)
        {
            // Defaul settings for no time
            ucInterval.DefaultPeriod = SchedulingHelper.PERIOD_DAY;
        }

        if (diff != 0)
        {
            txtLast.Text = diff.ToString();
        }

        return(false);
    }
示例#7
0
    /// <summary>
    /// Save settings to the form field info.
    /// </summary>
    public bool Save()
    {
        if (FieldInfo != null)
        {
            FieldInfo.Name                  = GetAttributeName();
            FieldInfo.AllowEmpty            = AllowEmpty;
            FieldInfo.System                = IsSystem;
            FieldInfo.TranslateField        = TranslateField;
            FieldInfo.IsUnique              = IsUnique;
            FieldInfo.ReferenceToObjectType = ReferenceToObjectType;
            FieldInfo.ReferenceType         = ReferenceType;

            if (plcResolveDefaultValue.Visible)
            {
                FieldInfo.SetResolveDefaultValue(chkResolveDefaultValue.Checked);
            }

            string defaultValue = null;
            bool   isMacro;

            switch (AttributeType)
            {
            case FieldDataType.DateTime:
            case FieldDataType.Date:
            {
                string datetimevalue = ValidationHelper.GetString(datetimeDefaultValue.Value, string.Empty);
                isMacro = datetimeDefaultValue.IsMacro;

                if (isMacro || MacroProcessor.ContainsMacro(datetimevalue))
                {
                    defaultValue = datetimevalue;
                }
                else if (DateTimeHelper.IsNowOrToday(datetimevalue))
                {
                    defaultValue = datetimevalue;
                }
                else if (ValidationHelper.GetDateTime(datetimevalue, DateTime.MinValue) == DateTimeHelper.ZERO_TIME)
                {
                    defaultValue = string.Empty;
                }
                else
                {
                    defaultValue = datetimevalue;
                }
            }
            break;

            case FieldDataType.Boolean:
                if (AllowEmpty && SystemContext.DevelopmentMode)
                {
                    isMacro = rbDefaultValue.IsMacro;
                    if (isMacro)
                    {
                        defaultValue = ValidationHelper.GetString(rbDefaultValue.Value, string.Empty);
                    }
                    else
                    {
                        // Positive choice checked - based on ThreeStateCheckBox.ascx
                        if (rbDefaultValue.Value.Equals(1))
                        {
                            defaultValue = "true";
                        }
                        // Negative choice checked - based on ThreeStateCheckBox.ascx
                        if (rbDefaultValue.Value.Equals(0))
                        {
                            defaultValue = "false";
                        }
                    }
                }
                else
                {
                    isMacro      = chkDefaultValue.IsMacro;
                    defaultValue = ValidationHelper.GetString(chkDefaultValue.Value, string.Empty);
                }
                break;

            case FieldDataType.LongText:
                defaultValue = ValidationHelper.GetString(txtLargeDefaultValue.Value, string.Empty).Trim();
                isMacro      = txtLargeDefaultValue.IsMacro;
                break;

            case FormFieldControlTypeCode.DOCUMENT_ATTACHMENTS:
                string defValue = ValidationHelper.GetString(txtDefaultValue.Value, string.Empty).Trim();
                isMacro      = txtDefaultValue.IsMacro;
                defaultValue = (string.IsNullOrEmpty(defValue)) ? null : defValue;
                break;

            default:
                if (txtDefaultValue.Visible)
                {
                    defaultValue = ValidationHelper.GetString(txtDefaultValue.Value, string.Empty).Trim();
                    isMacro      = txtDefaultValue.IsMacro;
                }
                else
                {
                    isMacro = false;
                }
                break;
            }
            FieldInfo.SetPropertyValue(FormFieldPropertyEnum.DefaultValue, defaultValue, isMacro);

            return(true);
        }
        return(false);
    }
示例#8
0
    /// <summary>
    /// Sets default value according to attribute type.
    /// </summary>
    public void SetDefaultValue()
    {
        txtDefaultValue.Value      = String.Empty;
        txtLargeDefaultValue.Value = String.Empty;
        chkDefaultValue.Value      = false;
        datetimeDefaultValue.Value = DateTimeHelper.ZERO_TIME;

        if (FieldInfo != null)
        {
            bool   isMacro;
            string defaultValue = FieldInfo.GetPropertyValue(FormFieldPropertyEnum.DefaultValue, out isMacro);

            switch (AttributeType)
            {
            case FieldDataType.DateTime:
            case FieldDataType.Date:
            {
                if (isMacro || MacroProcessor.ContainsMacro(defaultValue))
                {
                    datetimeDefaultValue.SetValue(defaultValue, isMacro);
                }
                else if (DateTimeHelper.IsNowOrToday(defaultValue))
                {
                    datetimeDefaultValue.SetValue(defaultValue);
                }
                else if (string.IsNullOrEmpty(defaultValue))
                {
                    datetimeDefaultValue.Value = String.Empty;
                }
                else
                {
                    datetimeDefaultValue.SetValue(ValidationHelper.GetDateTimeSystem(defaultValue, DateTimeHelper.ZERO_TIME));
                }
            }
            break;

            case FieldDataType.Boolean:
                if (AllowEmpty && SystemContext.DevelopmentMode)
                {
                    if (isMacro)
                    {
                        rbDefaultValue.SetValue(defaultValue, true);
                    }
                    else
                    {
                        // Set three state checkbox
                        bool?value = ValidationHelper.GetNullableBoolean(defaultValue, null);
                        if (value.HasValue)
                        {
                            rbDefaultValue.SetValue(value.Value ? 1 : 0);
                        }
                        else
                        {
                            rbDefaultValue.SetValue(-1);
                        }
                    }
                }
                else
                {
                    chkDefaultValue.SetValue(defaultValue, isMacro);
                }
                break;

            case FieldDataType.LongText:
                txtLargeDefaultValue.SetValue(defaultValue, isMacro);
                break;

            case FieldDataType.Double:
            case FieldDataType.Decimal:
                if (isMacro || MacroProcessor.ContainsMacro(defaultValue))
                {
                    txtDefaultValue.SetValue(defaultValue, isMacro);
                }
                else
                {
                    Double dblVal = ValidationHelper.GetDoubleSystem(defaultValue, Double.NaN);
                    txtDefaultValue.SetValue(!Double.IsNaN(dblVal) ? dblVal.ToString() : null);
                }
                break;

            default:
                txtDefaultValue.SetValue(defaultValue, isMacro);
                break;
            }
        }
    }
示例#9
0
    /// <summary>
    /// Save button is clicked.
    /// </summary>
    protected void lnkSave_Click(object sender, EventArgs e)
    {
        // Check 'EditForm' permission
        if (!currentUser.IsAuthorizedPerResource("cms.form", "EditForm"))
        {
            RedirectToAccessDenied("cms.form", "EditForm");
        }

        // Validate form
        string errorMessage = new Validator().NotEmpty(txtEmailFrom.Text.Trim(), GetString("bizform_edit_autoresponder.emptyemail")).NotEmpty(txtEmailSubject.Text.Trim(), GetString("bizform_edit_autoresponder.emptysubject")).Result;

        // Check if from e-mail contains macro expression or e-mails separated by semicolon
        if (string.IsNullOrEmpty(errorMessage) && !MacroProcessor.ContainsMacro(txtEmailFrom.Text.Trim()) && !ValidationHelper.IsEmail(txtEmailFrom.Text.Trim()))
        {
            errorMessage = GetString("bizform_edit_autoresponder.emptyemail");
        }

        if ((string.IsNullOrEmpty(errorMessage)) || (!pnlCustomLayout.Visible))
        {
            errorMessage = String.Empty;
            if (formInfo != null)
            {
                // Save custom layout
                if (!string.IsNullOrEmpty(drpEmailField.SelectedValue))
                {
                    formInfo.FormConfirmationTemplate      = htmlEditor.ResolvedValue.Trim();
                    formInfo.FormConfirmationEmailField    = drpEmailField.SelectedValue;
                    formInfo.FormConfirmationEmailSubject  = txtEmailSubject.Text.Trim();
                    formInfo.FormConfirmationSendFromEmail = txtEmailFrom.Text.Trim();

                    try
                    {
                        BizFormInfoProvider.SetBizFormInfo(formInfo);
                        ShowChangesSaved();
                        EnableDisableForm(formInfo.FormConfirmationTemplate);
                    }
                    catch (Exception ex)
                    {
                        errorMessage = ex.Message;
                    }
                }
                // Delete custom layout if exists
                else
                {
                    formInfo.FormConfirmationTemplate      = null;
                    formInfo.FormConfirmationEmailField    = drpEmailField.SelectedValue;
                    formInfo.FormConfirmationEmailSubject  = string.Empty;
                    formInfo.FormConfirmationSendFromEmail = string.Empty;

                    // Delete all attachments
                    MetaFileInfoProvider.DeleteFiles(formInfo.FormID, BizFormInfo.OBJECT_TYPE, ObjectAttachmentsCategories.FORMLAYOUT);

                    try
                    {
                        BizFormInfoProvider.SetBizFormInfo(formInfo);
                        if (IsLayoutSet)
                        {
                            ShowConfirmation(GetString("Bizform_Edit_Autoresponder.LayoutDeleted"));
                        }
                        else
                        {
                            ShowChangesSaved();
                        }
                        EnableDisableForm(formInfo.FormConfirmationTemplate);
                    }
                    catch (Exception ex)
                    {
                        errorMessage = ex.Message;
                    }
                }
            }
        }

        if (!string.IsNullOrEmpty(errorMessage))
        {
            ShowError(errorMessage);
        }
    }
示例#10
0
    /// <summary>
    /// Save button is clicked.
    /// </summary>
    protected void lnkSave_Click(object sender, EventArgs e)
    {
        // Check 'EditForm' permission
        if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("cms.form", "EditForm"))
        {
            RedirectToAccessDenied("cms.form", "EditForm");
        }

        string errorMessage = null;

        if (formInfo != null)
        {
            if (chkSendToEmail.Checked)
            {
                // Validate form
                errorMessage = new Validator().NotEmpty(txtFromEmail.Text, GetString("BizFormGeneral.EmptyFromEmail"))
                               .NotEmpty(txtToEmail.Text, GetString("BizFormGeneral.EmptyToEmail"))
                               .NotEmpty(txtSubject.Text, GetString("BizFormGeneral.EmptyEmailSubject")).Result;

                // Check if to e-mail contains macro expression or e-mails separated by semicolon
                if (string.IsNullOrEmpty(errorMessage) && !MacroProcessor.ContainsMacro(txtToEmail.Text.Trim()) && !txtToEmail.IsValid())
                {
                    errorMessage = GetString("BizFormGeneral.EmptyToEmail");
                }

                // Check if from e-mail contains macro expression or e-mails separated by semicolon
                if (string.IsNullOrEmpty(errorMessage) && !MacroProcessor.ContainsMacro(txtFromEmail.Text.Trim()) && !txtFromEmail.IsValid())
                {
                    errorMessage = GetString("BizFormGeneral.EmptyFromEmail");
                }

                if (string.IsNullOrEmpty(errorMessage))
                {
                    formInfo.FormSendFromEmail           = txtFromEmail.Text.Trim();
                    formInfo.FormSendToEmail             = txtToEmail.Text.Trim();
                    formInfo.FormEmailSubject            = txtSubject.Text.Trim();
                    formInfo.FormEmailAttachUploadedDocs = chkAttachDocs.Checked;
                    if (chkCustomLayout.Checked)
                    {
                        formInfo.FormEmailTemplate = htmlEditor.ResolvedValue.Trim();
                    }
                    else
                    {
                        formInfo.FormEmailTemplate = null;
                    }
                }
            }
            else
            {
                formInfo.FormSendFromEmail = null;
                formInfo.FormSendToEmail   = null;
                formInfo.FormEmailSubject  = null;
                formInfo.FormEmailTemplate = null;
                txtToEmail.Text            = string.Empty;
                txtFromEmail.Text          = string.Empty;
                txtSubject.Text            = string.Empty;
                chkAttachDocs.Checked      = true;
                htmlEditor.ResolvedValue   = string.Empty;
            }

            if (string.IsNullOrEmpty(errorMessage))
            {
                try
                {
                    BizFormInfo.Provider.Set(formInfo);
                    ShowChangesSaved();
                    EnableDisableForm(formInfo.FormEmailTemplate);
                }
                catch (Exception ex)
                {
                    errorMessage = ex.Message;
                }
            }

            if (!string.IsNullOrEmpty(errorMessage))
            {
                ShowError(errorMessage);
            }
        }
    }
示例#11
0
    /// <summary>
    /// Returns true if user control is valid.
    /// </summary>
    public override bool IsValid()
    {
        bool valid = true;

        // Check 'options' validity
        if (lstOptions.SelectedIndex == ListSourceIndex)
        {
            // Some option must be included
            if (string.IsNullOrEmpty(txtValue.Text.Trim()))
            {
                ValidationError += GetString("TemplateDesigner.ErrorDropDownListOptionsEmpty") + " ";
                valid            = false;
            }
            else
            {
                // Parse lines
                int      lineIndex = 0;
                string[] lines     = txtValue.Text.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);

                for (lineIndex = 0; lineIndex <= lines.GetUpperBound(0); lineIndex++)
                {
                    // Loop through only not-empty lines
                    if ((lines[lineIndex] != null) && (lines[lineIndex].Trim() != string.Empty))
                    {
                        // Get line items
                        string[] items = lines[lineIndex].Replace(SpecialFieldsDefinition.SEMICOLON_TO_REPLACE, SpecialFieldsDefinition.REPLACED_SEMICOLON).Split(';');

                        // Every line must have value and item element and optionally visibility macro
                        if (items.Length > 3)
                        {
                            ValidationError += GetString("TemplateDesigner.ErrorDropDownListOptionsInvalidFormat") + " ";
                            valid            = false;
                            break;
                        }
                        else
                        {
                            // Check for possible macro (with/without visibility condition)
                            if (items.Length <= 2)
                            {
                                string specialMacro = items[0].Trim();

                                // Check if special macro is used
                                if (SpecialFieldsDefinition.IsSpecialFieldMacro(specialMacro))
                                {
                                    string macro = (items.Length == 2) ? items[1].Trim() : String.Empty;

                                    // If special field macro used and second item isn't macro show error
                                    if (!String.IsNullOrEmpty(macro) && !MacroProcessor.ContainsMacro(macro))
                                    {
                                        ValidationError += string.Format(GetString("TemplateDesigner.ErrorDropDownListOptionsInvalidMacroFormat"), lineIndex + 1) + " ";
                                        valid            = false;
                                        break;
                                    }
                                }
                            }

                            // Check valid Double format
                            if (FieldInfo.DataType == FieldDataType.Double)
                            {
                                if (!ValidationHelper.IsDouble(items[0]) && !(FieldInfo.AllowEmpty && string.IsNullOrEmpty(items[0])))
                                {
                                    ValidationError += string.Format(GetString("TemplateDesigner.ErrorDropDownListOptionsInvalidDoubleFormat"), lineIndex + 1) + " ";
                                    valid            = false;
                                    break;
                                }
                            }
                            // Check valid Integer format
                            else if (FieldInfo.DataType == FieldDataType.Integer)
                            {
                                if (!ValidationHelper.IsInteger(items[0]) && !(FieldInfo.AllowEmpty && string.IsNullOrEmpty(items[0])))
                                {
                                    ValidationError += string.Format(GetString("TemplateDesigner.ErrorDropDownListOptionsInvalidIntFormat"), lineIndex + 1) + " ";
                                    valid            = false;
                                    break;
                                }
                            }
                            // Check valid Long integer format
                            else if (FieldInfo.DataType == FieldDataType.LongInteger)
                            {
                                if (!ValidationHelper.IsLong(items[0]) && !(FieldInfo.AllowEmpty && string.IsNullOrEmpty(items[0])))
                                {
                                    ValidationError += string.Format(GetString("TemplateDesigner.ErrorDropDownListOptionsInvalidLongIntFormat"), lineIndex + 1) + " ";
                                    valid            = false;
                                    break;
                                }
                            }
                            // Check valid Date time format
                            else if (FieldInfo.DataType == FieldDataType.DateTime)
                            {
                                if ((ValidationHelper.GetDateTime(items[0], DateTimeHelper.ZERO_TIME) == DateTimeHelper.ZERO_TIME) && !FieldInfo.AllowEmpty)
                                {
                                    ValidationError += string.Format(GetString("TemplateDesigner.ErrorDropDownListOptionsInvalidDateTimeFormat"), lineIndex + 1) + " ";
                                    valid            = false;
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }
        // Check SQL query validity
        else if ((lstOptions.SelectedIndex == SqlSourceIndex) && (string.IsNullOrEmpty(txtValue.Text.Trim())))
        {
            ValidationError += GetString("TemplateDesigner.ErrorDropDownListQueryEmpty") + " ";
            valid            = false;
        }
        else if ((lstOptions.SelectedIndex == MacroSourceIndex) && (string.IsNullOrEmpty(txtValue.Text.Trim())))
        {
            ValidationError += GetString("TemplateDesigner.ErrorDropDownListMacroEmpty") + " ";
            valid            = false;
        }

        return(valid);
    }