private object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        switch (sourceName.ToLowerCSafe())
        {
        case "delete":
            // Disable "delete" button for system objects
            bool iscustom = ValidationHelper.GetBoolean(((DataRowView)((GridViewRow)parameter).DataItem).Row["ActivityTypeIsCustom"], false);
            var  button   = (CMSGridActionButton)sender;
            if (!iscustom)
            {
                button.Enabled = false;
            }

            break;

        case "activitytypename":
            var activityTypeRow = parameter as DataRowView;
            if (activityTypeRow == null)
            {
                return(string.Empty);
            }

            // Create tag with activity type name and color
            var activityTypeInfo = new ActivityTypeInfo(activityTypeRow.Row);
            return(new Tag
            {
                Text = activityTypeInfo.ActivityTypeDisplayName,
                Color = activityTypeInfo.ActivityTypeColor
            });
        }
        return(sender);
    }
 /// <summary>
 /// Returns activity type description for provided activity type <paramref name="activityTypeCodeName"/>. 
 /// If no such activity type exists, returns activity code name.
 /// </summary>
 private static string GetActivityTypeDescription(object activityTypeCodeName)
 {
     ActivityTypeInfo activityTypeInfo = GetActivityTypeByCodeName(activityTypeCodeName);
     var activityTypeDescription = activityTypeInfo != null ? ResHelper.LocalizeString(activityTypeInfo.ActivityTypeDescription) :
                                                              ValidationHelper.GetString(activityTypeCodeName, null);
     return HTMLHelper.HTMLEncode(activityTypeDescription);
 }
예제 #3
0
    /// <summary>
    /// Returns activity type name for provided activity type <paramref name="activityTypeCodeName"/> and <paramref name="activityTypeInfo"/>.
    /// If no such activity type exists, returns activity code name.
    /// </summary>
    private static string GetActivityTypeName(object activityTypeCodeName, ActivityTypeInfo activityTypeInfo)
    {
        var activityTypeName = activityTypeInfo != null?ResHelper.LocalizeString(activityTypeInfo.ActivityTypeDisplayName) :
                                   ValidationHelper.GetString(activityTypeCodeName, null);

        return(HTMLHelper.HTMLEncode(activityTypeName));
    }
예제 #4
0
    /// <summary>
    /// Sets the second part of breadcrumbs (name of activity type).
    /// </summary>
    private void RefreshBreadCrumb()
    {
        ActivityTypeInfo ati = (ActivityTypeInfo)EditedObject;

        if (ati != null)
        {
            CurrentPage.SetBreadcrumb(1, ati.ActivityTypeDisplayName, null, null, null);
        }
    }
예제 #5
0
    /// <summary>
    /// Checks form field name and tries to find appropriate form control for field representation.
    /// </summary>
    /// <param name="ffi">Form field info</param>
    /// <param name="ati">Activity type info</param>
    /// <param name="selectedActivity">Activity selected in drop-down menu</param>
    /// <param name="activitiesWithValue">Collection of activities with values</param>
    /// <param name="controlName">Referring control name</param>
    /// <returns>
    /// False, if activity form control is not defined or activity should has value and is not present in given
    /// collection; true otherwise. Sets referring control name, if proper form control is found.
    /// </returns>
    private bool GetControlNameForActivities(FormFieldInfo ffi, ActivityTypeInfo ati, string selectedActivity, IEnumerable <string> activitiesWithValue, ref string controlName)
    {
        string nameToLower = ffi.Name.ToLowerInvariant();

        switch (nameToLower)
        {
        case "activityitemid":
            if (string.IsNullOrEmpty(ati.ActivityTypeMainFormControl))
            {
                return(false);
            }

            CheckFormControl(ati.ActivityTypeMainFormControl, ref controlName);
            SetCaptionToField(ffi, "activityitem." + selectedActivity);
            break;

        case "activityitemdetailid":
            if (string.IsNullOrEmpty(ati.ActivityTypeDetailFormControl))
            {
                return(false);
            }

            CheckFormControl(ati.ActivityTypeDetailFormControl, ref controlName);
            SetCaptionToField(ffi, "activityitemdetail." + selectedActivity);
            break;

        case "activitycreated":
            SetCaptionToField(ffi, "om.activity.createdbetween");
            break;

        case "activitynodeid":
            // Document selector for NodeID
            controlName = "selectdocument";
            break;

        case "activityculture":
            // Culture selector for culture
            controlName = "sitecultureselector";
            break;

        case "activityvalue":
            // Show activity value only for relevant activity types
            if ((!ati.ActivityTypeIsCustom) && (!activitiesWithValue.Contains(selectedActivity)))
            {
                return(false);
            }
            break;
        }

        return(true);
    }
예제 #6
0
    protected object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        switch (sourceName)
        {
        case "view":
            ImageButton viewBtn = (ImageButton)sender;
            viewBtn.OnClientClick = string.Format("dialogParams_{0} = '{1}';{2};return false;",
                                                  ClientID,
                                                  viewBtn.CommandArgument, Page.ClientScript.GetCallbackEventReference(this, "dialogParams_" + ClientID, "ViewDetails", null));
            break;

        case "delete":
            ImageButton deleteBtn = (ImageButton)sender;
            if (!ShowRemoveButton || !modifyPermission)
            {
                deleteBtn.Enabled = false;
                deleteBtn.Attributes.Add("src", GetImageUrl("Design/Controls/UniGrid/Actions/DeleteDisabled.png"));
            }
            deleteBtn.Visible = ShowRemoveButton;
            break;

        case "acttype":
        case "acttypedesc":
            string           codeName = ValidationHelper.GetString(parameter, null);
            string           value    = null;
            ActivityTypeInfo ati      = ActivityTypeInfoProvider.GetActivityTypeInfo(codeName);
            if (ati != null)
            {
                if (sourceName == "acttype")
                {
                    value = ResHelper.LocalizeString(ati.ActivityTypeDisplayName);
                }
                else
                {
                    value = ResHelper.LocalizeString(ati.ActivityTypeDescription);
                }
                return(HTMLHelper.HTMLEncode(value));
            }
            return(HTMLHelper.HTMLEncode(codeName));
        }
        return(null);
    }
예제 #7
0
    protected void Page_Load(object sender, EventArgs e)
    {
        bool develMode = SettingsKeyProvider.DevelopmentMode;

        EditForm.OnAfterSave += new EventHandler(EditForm_OnAfterSave);
        fIsCustom.Visible     = develMode;
        ucDetailControl.ShowControlsOfType = 2;
        ucMainControl.ShowControlsOfType   = 2;

        // Hide codename textbox and "allow manual creation" checkbox for system types
        if ((EditForm.EditedObject != null) && (EditForm.EditedObject.Generalized != null))
        {
            ActivityTypeInfo ati = ActivityTypeInfoProvider.GetActivityTypeInfo(EditForm.EditedObject.Generalized.ObjectID);
            if (ati != null)
            {
                fName.Visible = develMode || ati.ActivityTypeIsCustom;
                fManualCreationAllowed.Visible = ati.ActivityTypeIsCustom;
                fEnable.Visible = develMode || ati.ActivityTypeIsCustom;
            }
        }
    }
예제 #8
0
    /// <summary>
    /// Loads data of specific activity.
    /// </summary>
    protected void LoadData()
    {
        if (activityId <= 0)
        {
            return;
        }

        // Load and check if object exists
        ActivityInfo ai = ActivityInfo.Provider.Get(activityId);

        EditedObject = ai;

        ActivityTypeInfo ati = ActivityTypeInfo.Provider.Get(ai.ActivityType);

        plcActivityValue.Visible = (ati == null) || ati.ActivityTypeIsCustom || (ati.ActivityTypeName == PredefinedActivityType.PAGE_VISIT) && !String.IsNullOrEmpty(ai.ActivityValue);

        string dispName = (ati != null ? ati.ActivityTypeDisplayName : GetString("general.na"));

        lblTypeVal.Text    = String.Format("{0}", HTMLHelper.HTMLEncode(dispName));
        lblContactVal.Text = HTMLHelper.HTMLEncode(ContactInfoProvider.GetContactFullName(ai.ActivityContactID));

        // Init contact detail link
        string contactURL = ApplicationUrlHelper.GetElementDialogUrl(ModuleName.CONTACTMANAGEMENT, "EditContact", ai.ActivityContactID);

        btnContact.Attributes.Add("onClick", ScriptHelper.GetModalDialogScript(contactURL, "ContactDetail"));
        btnContact.ToolTip = GetString("general.edit");

        lblDateVal.Text = (ai.ActivityCreated == DateTimeHelper.ZERO_TIME ? GetString("general.na") : HTMLHelper.HTMLEncode(ai.ActivityCreated.ToString()));

        // Get site display name
        string siteName = SiteInfoProvider.GetSiteName(ai.ActivitySiteID);

        if (String.IsNullOrEmpty(siteName))
        {
            siteName = GetString("general.na");
        }
        else
        {
            // Retrieve site info and its display name
            SiteInfo si = SiteInfo.Provider.Get(siteName);
            if (si != null)
            {
                siteName = HTMLHelper.HTMLEncode(ResHelper.LocalizeString(si.DisplayName));
            }
            else
            {
                siteName = GetString("general.na");
            }
        }
        lblSiteVal.Text = siteName;

        string url = ai.ActivityURL;

        plcCampaign.Visible = !String.IsNullOrEmpty(ai.ActivityCampaign);
        lblCampaignVal.Text = HTMLHelper.HTMLEncode(ai.ActivityCampaign);
        lblValue.Text       = HTMLHelper.HTMLEncode(String.IsNullOrEmpty(ai.ActivityValue) ? GetString("general.na") : ai.ActivityValue);

        // Init textboxes only for the first time
        if (!RequestHelper.IsPostBack())
        {
            txtComment.Value = ai.ActivityComment;
            txtTitle.Text    = ai.ActivityTitle;
            txtURLRef.Text   = ai.ActivityURLReferrer;
            if (ai.ActivityType != PredefinedActivityType.NEWSLETTER_CLICKTHROUGH)
            {
                txtURL.Text = url;
            }
        }

        cDetails.ActivityID = activityId;

        // Init link button URL
        if (ai.ActivitySiteID > 0)
        {
            SiteInfo si = SiteInfo.Provider.Get(ai.ActivitySiteID);
            if (si != null)
            {
                // Hide view button if URL is blank
                string activityUrl = ai.ActivityURL;
                if ((activityUrl != null) && !String.IsNullOrEmpty(activityUrl.Trim()))
                {
                    string appUrl = URLHelper.GetApplicationUrl(si.DomainName);
                    url                 = URLHelper.GetAbsoluteUrl(activityUrl, appUrl, appUrl, "");
                    url                 = URLHelper.AddParameterToUrl(url, URLHelper.SYSTEM_QUERY_PARAMETER, "1");
                    btnView.ToolTip     = GetString("general.view");
                    btnView.NavigateUrl = url;
                    btnView.Visible     = true;
                }
                else
                {
                    btnView.Visible = false;
                }
            }
        }
    }
예제 #9
0
    /// <summary>
    /// Initializes controls for activity rule.
    /// </summary>
    private void InitActivityRuleControls(string selectedActivityType)
    {
        ucActivityType.OnSelectedIndexChanged += new EventHandler(ucActivityType_OnSelectedIndexChanged);

        // Init activity selector from  edited object if any
        string activityType = selectedActivityType;

        if ((EditForm.EditedObject != null) && !RequestHelper.IsPostBack())
        {
            ucActivityType.Value = ValidationHelper.GetString(EditForm.Data["RuleParameter"], PredefinedActivityType.ABUSE_REPORT);
            activityType         = ucActivityType.SelectedValue;
            PreviousActivityType = activityType;
        }

        // List of ignored columns
        string ignoredColumns = "|activitytype|activitysiteid|activityguid|activityactivecontactid|activityoriginalcontactid|pagevisitid|pagevisitactivityid|searchid|searchactivityid|";

        // List of activities with "ActivityValue"
        StringBuilder sb = new StringBuilder();

        sb.Append("|");
        sb.Append(PredefinedActivityType.PURCHASE);
        sb.Append("|");
        sb.Append(PredefinedActivityType.PURCHASEDPRODUCT);
        sb.Append("|");
        sb.Append(PredefinedActivityType.RATING);
        sb.Append("|");
        sb.Append(PredefinedActivityType.POLL_VOTING);
        sb.Append("|");
        sb.Append(PredefinedActivityType.PRODUCT_ADDED_TO_SHOPPINGCART);
        sb.Append("|");
        string showActivityValueFor = sb.ToString();

        // Get columns from OM_Activity (i.e. base table for all activities)
        ActivityTypeInfo ati = ActivityTypeInfoProvider.GetActivityTypeInfo(activityType);

        FormInfo fi = new FormInfo(null);

        // Get columns from additional table (if any) according to selected activity type (page visit, search)
        FormInfo additionalFieldsForm = null;
        bool     extraFieldsAtEnd     = true;

        switch (activityType)
        {
        case PredefinedActivityType.PAGE_VISIT:
        case PredefinedActivityType.LANDING_PAGE:
            // Page visits
            additionalFieldsForm = FormHelper.GetFormInfo(OnlineMarketingObjectType.PAGEVISIT, false);
            break;

        case PredefinedActivityType.INTERNAL_SEARCH:
        case PredefinedActivityType.EXTERNAL_SEARCH:
            // Search
            additionalFieldsForm = FormHelper.GetFormInfo(OnlineMarketingObjectType.SEARCH, false);
            extraFieldsAtEnd     = false;
            break;
        }

        // Get the activity form elements
        FormInfo filterFieldsForm = FormHelper.GetFormInfo(OnlineMarketingObjectType.ACTIVITY, true);
        var      elements         = filterFieldsForm.GetFormElements(true, false);

        FormCategoryInfo newCategory = null;

        string caption    = null;
        string captionKey = null;

        foreach (var elem in elements)
        {
            if (elem is FormCategoryInfo)
            {
                // Form category
                newCategory = (FormCategoryInfo)elem;
            }
            else if (elem is FormFieldInfo)
            {
                // Form field
                FormFieldInfo ffi = (FormFieldInfo)elem;

                // Skip ignored columns
                if (ignoredColumns.IndexOfCSafe("|" + ffi.Name.ToLowerCSafe() + "|") >= 0)
                {
                    continue;
                }

                string controlName = null;
                if (!ffi.PrimaryKey && (fi.GetFormField(ffi.Name) == null))
                {
                    // Set default filters
                    switch (ffi.DataType)
                    {
                    case FormFieldDataTypeEnum.Text:
                    case FormFieldDataTypeEnum.LongText:
                        controlName = "textfilter";
                        ffi.Settings["OperatorFieldName"] = ffi.Name + ".operator";
                        break;

                    case FormFieldDataTypeEnum.DateTime:
                        controlName = "datetimefilter";
                        ffi.Settings["SecondDateFieldName"] = ffi.Name + ".seconddatetime";
                        break;

                    case FormFieldDataTypeEnum.Integer:
                    case FormFieldDataTypeEnum.LongInteger:
                        controlName = "numberfilter";
                        ffi.Settings["OperatorFieldName"] = ffi.Name + ".operator";
                        break;

                    case FormFieldDataTypeEnum.GUID:
                        continue;
                    }

                    // For item ID and detail ID fields use control defined in activity type
                    if (CMSString.Compare(ffi.Name, "ActivityItemID", true) == 0)
                    {
                        if (ati.ActivityTypeMainFormControl == null)
                        {
                            continue;
                        }

                        if (ati.ActivityTypeMainFormControl != String.Empty)
                        {
                            // Check if user defined control exists
                            FormUserControlInfo fui = FormUserControlInfoProvider.GetFormUserControlInfo(ati.ActivityTypeMainFormControl);
                            if (fui != null)
                            {
                                controlName = ati.ActivityTypeMainFormControl;
                            }
                        }

                        // Set detailed caption
                        captionKey = "activityitem." + activityType;
                        caption    = GetString(captionKey);
                        if (!caption.EqualsCSafe(captionKey, true))
                        {
                            ffi.Caption = caption;
                        }
                    }
                    else if (CMSString.Compare(ffi.Name, "ActivityItemDetailID", true) == 0)
                    {
                        if (ati.ActivityTypeDetailFormControl == null)
                        {
                            continue;
                        }

                        if (ati.ActivityTypeDetailFormControl != String.Empty)
                        {
                            // Check if user defined control exists
                            FormUserControlInfo fui = FormUserControlInfoProvider.GetFormUserControlInfo(ati.ActivityTypeDetailFormControl);
                            if (fui != null)
                            {
                                controlName = ati.ActivityTypeDetailFormControl;
                            }
                        }

                        // Set detailed caption
                        captionKey = "activityitemdetail." + activityType;
                        caption    = GetString(captionKey);
                        if (!caption.EqualsCSafe(captionKey, true))
                        {
                            ffi.Caption = caption;
                        }
                    }
                    else if (CMSString.Compare(ffi.Name, "ActivityNodeID", true) == 0)
                    {
                        // Document selector for NodeID
                        controlName = "selectdocument";
                    }
                    else if (CMSString.Compare(ffi.Name, "ActivityCulture", true) == 0)
                    {
                        // Culture selector for culture
                        controlName = "sitecultureselector";
                    }
                    else if (CMSString.Compare(ffi.Name, "ActivityValue", true) == 0)
                    {
                        // Show activity value only for relevant activity types
                        if (!ati.ActivityTypeIsCustom && (showActivityValueFor.IndexOfCSafe("|" + activityType + "|", true) < 0))
                        {
                            continue;
                        }
                    }

                    if (controlName != null)
                    {
                        // SKU selector for product
                        ffi.Settings["controlname"] = controlName;
                        if (CMSString.Compare(controlName, "skuselector", true) == 0)
                        {
                            ffi.Settings["allowempty"] = true;
                        }
                    }

                    // Ensure the category
                    if (newCategory != null)
                    {
                        fi.AddFormCategory(newCategory);

                        newCategory = null;

                        // // Extra fields at the beginning
                        if (!extraFieldsAtEnd && (additionalFieldsForm != null))
                        {
                            AddExtraFields(ignoredColumns, fi, additionalFieldsForm);

                            additionalFieldsForm = null;
                        }
                    }

                    fi.AddFormField(ffi);
                }
            }
        }

        // Extra fields at end
        if (extraFieldsAtEnd && (additionalFieldsForm != null))
        {
            // Ensure the category for extra fields
            if (newCategory != null)
            {
                fi.AddFormCategory(newCategory);

                newCategory = null;
            }

            AddExtraFields(ignoredColumns, fi, additionalFieldsForm);
        }

        LoadForm(activityFormCondition, fi, activityType);
    }
예제 #10
0
 private bool TypeCanBeDeleted(ActivityTypeInfo activityType)
 {
     return((activityType != null) && activityType.ActivityTypeIsCustom && CurrentUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.GlobalAdmin));
 }
예제 #11
0
    /// <summary>
    /// Initializes controls for activity rule.
    /// </summary>
    /// <param name="selectedActivity">Activity selected in drop-down menu</param>
    private void InitActivitySettings(string selectedActivity)
    {
        // Init activity selector from  edited object if any
        LoadEditedActivityRule(ref selectedActivity);

        string[] ignoredColumns =
        {
            "activitytype",
            "activitysiteid",
            "activityguid",
            "activityactivecontactid",
            "activityoriginalcontactid",
            "pagevisitid",
            "pagevisitactivityid",
            "searchid",
            "searchactivityid"
        };

        string[] activitiesWithValue =
        {
            PredefinedActivityType.PURCHASE,
            PredefinedActivityType.PURCHASEDPRODUCT,
            PredefinedActivityType.RATING,
            PredefinedActivityType.POLL_VOTING,
            PredefinedActivityType.PRODUCT_ADDED_TO_SHOPPINGCART
        };

        // Get columns from OM_Activity (i.e. base table for all activities)
        ActivityTypeInfo ati = ActivityTypeInfoProvider.GetActivityTypeInfo(selectedActivity);
        var fi = new FormInfo();

        // Get columns from additional table (if any) according to selected activity type
        bool     extraFieldsAtEnd     = true;
        FormInfo additionalFieldsForm = GetActivityAdditionalFields(selectedActivity, ref extraFieldsAtEnd);

        // Get the activity form elements
        FormInfo filterFieldsForm            = FormHelper.GetFormInfo(ActivityInfo.OBJECT_TYPE, true);
        IList <IDataDefinitionItem> elements = filterFieldsForm.GetFormElements(true, false);

        FormCategoryInfo newCategory = null;

        foreach (IDataDefinitionItem elem in elements)
        {
            if (elem is FormCategoryInfo)
            {
                // Form category
                newCategory = (FormCategoryInfo)elem;
            }
            else if (elem is FormFieldInfo)
            {
                // Form field
                var ffi = (FormFieldInfo)elem;

                // Skip ignored columns
                if (ignoredColumns.Contains(ffi.Name.ToLowerCSafe()))
                {
                    continue;
                }

                if ((!ffi.PrimaryKey) && (fi.GetFormField(ffi.Name) == null))
                {
                    // Skip fields with Guid data type
                    if (ffi.DataType == FieldDataType.Guid)
                    {
                        continue;
                    }

                    // Sets control name based on given datatype of field. Can be overwritten if more proper control is available
                    string controlName = GetControlNameForFieldDataType(ffi);
                    if (!GetControlNameForActivities(ffi, ati, selectedActivity, activitiesWithValue, ref controlName))
                    {
                        continue;
                    }

                    if (controlName != null)
                    {
                        // SKU selector for product
                        ffi.Settings["controlname"] = controlName;
                        ffi.Settings["allowempty"]  = controlName.EqualsCSafe("skuselector", true);
                    }

                    // Ensure the category
                    if (newCategory != null)
                    {
                        fi.AddFormCategory(newCategory);
                        newCategory = null;

                        // Extra fields at the beginning
                        if ((!extraFieldsAtEnd) && (additionalFieldsForm != null))
                        {
                            AddExtraActivityFields(ignoredColumns, fi, additionalFieldsForm);
                            additionalFieldsForm = null;
                        }
                    }

                    fi.AddFormItem(ffi);
                }
            }
        }

        // Extra fields at the end
        if ((extraFieldsAtEnd) && (additionalFieldsForm != null))
        {
            // Ensure the category for extra fields
            if (newCategory != null)
            {
                fi.AddFormCategory(newCategory);
            }

            AddExtraActivityFields(ignoredColumns, fi, additionalFieldsForm);
        }

        LoadActivityForm(fi, selectedActivity);
    }
예제 #12
0
        protected void PrepareData()
        {
            const int SITE1_ID = 1;

            SiteInfo currentSite;

            Fake <SiteInfo, SiteInfoProvider>().WithData(
                currentSite = SiteInfo.New(s =>
            {
                s.SiteID   = SITE1_ID;
                s.SiteName = "Site1";
            }),
                SiteInfo.New(s =>
            {
                s.SiteID   = 2;
                s.SiteName = "Site2";
            })
                );

            siteService = Substitute.For <ISiteService>();
            siteService.CurrentSite.Returns(currentSite);

            Fake <IssueInfo, IssueInfoProvider>().WithData(
                IssueInfo.New(issue =>
            {
                issue.IssueGUID        = Guid.Parse(GUID1);
                issue.IssueDisplayName = "Test1";
                issue.IssueSiteID      = SITE1_ID;
            }),
                IssueInfo.New(issue =>
            {
                issue.IssueGUID        = Guid.NewGuid();
                issue.IssueDisplayName = "Test2";
                issue.IssueSiteID      = 2;
            })
                );

            Fake <DataClassInfo, DataClassInfoProvider>().WithData(
                DataClassInfo.New(dc =>
            {
                dc.ClassDisplayName = "Test Class 1 Display Name";
                dc.ClassName        = "TestClass1";
            }),
                DataClassInfo.New(dc =>
            {
                dc.ClassDisplayName = "Test Class 2 Display Name";
                dc.ClassName        = "TestClass2";
                dc.ClassGUID        = Guid.Parse(GUID1);
            })
                );

            Fake <ContactGroupMemberInfo, ContactGroupMemberInfoProvider>();
            Fake <ContactInfo, ContactInfoProvider>().WithData(
                ContactInfo.New(contact =>
            {
                contact.ContactEmail    = "*****@*****.**";
                contact.ContactGUID     = Guid.Parse(GUID1);
                contact.ContactLastName = "TestLastName";
            })
                );

            Fake <UserSiteInfo, UserSiteInfoProvider>().WithData(
                UserSiteInfo.New(userSite =>
            {
                userSite.UserID = 1;
                userSite.SiteID = SITE1_ID;
            })
                );

            Fake <UserInfo, UserInfoProvider>().WithData(
                UserInfo.New(user =>
            {
                user.UserName = "******";
                user.UserID   = 1;
                user.UserGUID = Guid.Parse(GUID1);
            })
                );

            Fake <ActivityTypeInfo, ActivityTypeInfoProvider>().WithData(
                ActivityTypeInfo.New(at =>
            {
                at.ActivityTypeName = "Activity1";
            })
                );
        }
예제 #13
0
    /// <summary>
    /// Initializes controls for activity rule.
    /// </summary>
    /// <param name="selectedActivity">Activity selected in drop-down menu</param>
    private void InitActivitySettings(string selectedActivity)
    {
        // Init activity selector from  edited object if any
        LoadEditedActivityRule(ref selectedActivity);

        List <string> ignoredColumns = new List <string>
        {
            "activitytype",
            "activitysiteid",
            "activitycontactid",
        };

        string[] activitiesWithValue =
        {
            PredefinedActivityType.PURCHASE,
            PredefinedActivityType.PURCHASEDPRODUCT,
            PredefinedActivityType.PRODUCT_ADDED_TO_SHOPPINGCART
        };

        // Get columns from OM_Activity (i.e. base table for all activities)
        ActivityTypeInfo ati = ActivityTypeInfo.Provider.Get(selectedActivity);
        var fi = new FormInfo();

        // Get the activity form elements
        FormInfo filterFieldsForm            = FormHelper.GetFormInfo(ActivityInfo.OBJECT_TYPE, true);
        IList <IDataDefinitionItem> elements = filterFieldsForm.GetFormElements(true, false);

        if ((selectedActivity != PredefinedActivityType.PAGE_VISIT) && (selectedActivity != PredefinedActivityType.LANDING_PAGE))
        {
            // Show these fields only for 'Page visit' and 'Landing page'
            ignoredColumns.AddRange(new[] { "activityabvariantname" });
        }

        FormCategoryInfo newCategory = null;

        foreach (IDataDefinitionItem elem in elements)
        {
            if (elem is FormCategoryInfo)
            {
                // Form category
                newCategory = (FormCategoryInfo)elem;
            }
            else if (elem is FormFieldInfo)
            {
                // Form field
                var ffi = (FormFieldInfo)elem;

                // Skip ignored columns
                if (ignoredColumns.Contains(ffi.Name, StringComparer.InvariantCultureIgnoreCase))
                {
                    continue;
                }

                if (!ffi.PrimaryKey && (fi.GetFormField(ffi.Name) == null))
                {
                    // Skip fields with Guid data type
                    if (ffi.DataType == FieldDataType.Guid)
                    {
                        continue;
                    }

                    // Sets control name based on given datatype of field. Can be overwritten if more proper control is available
                    string controlName = GetControlNameForFieldDataType(ffi);
                    if (!GetControlNameForActivities(ffi, ati, selectedActivity, activitiesWithValue, ref controlName))
                    {
                        continue;
                    }

                    if (controlName != null)
                    {
                        // SKU selector for product
                        ffi.SetControlName(controlName);
                        ffi.Settings["allowempty"] = ffi.HasFormFieldControlWithName("skuselector");
                    }

                    // Ensure the category
                    if (newCategory != null)
                    {
                        fi.AddFormCategory(newCategory);
                        newCategory = null;
                    }

                    fi.AddFormItem(ffi);
                }
            }
        }

        LoadActivityForm(fi, selectedActivity);
    }
    /// <summary>
    /// Checks form field name and tries to find appropriate form control for field representation.
    /// </summary>
    /// <param name="ffi">Form field info</param>
    /// <param name="ati">Activity type info</param>
    /// <param name="selectedActivity">Activity selected in drop-down menu</param>
    /// <param name="activitiesWithValue">Collection of activities with values</param>
    /// <param name="controlName">Referring control name</param>
    /// <returns>
    /// False, if activity form control is not defined or activity should has value and is not present in given
    /// collection; true otherwise. Sets referring control name, if proper form control is found.
    /// </returns>
    private bool GetControlNameForActivities(FormFieldInfo ffi, ActivityTypeInfo ati, string selectedActivity, IEnumerable<string> activitiesWithValue, ref string controlName)
    {
        string nameToLower = ffi.Name.ToLowerInvariant();
        switch (nameToLower)
        {
            case "activityitemid":
                if (string.IsNullOrEmpty(ati.ActivityTypeMainFormControl))
                {
                    return false;
                }

                CheckFormControl(ati.ActivityTypeMainFormControl, ref controlName);
                SetCaptionToField(ffi, "activityitem." + selectedActivity);
                break;

            case "activityitemdetailid":
                if (string.IsNullOrEmpty(ati.ActivityTypeDetailFormControl))
                {
                    return false;
                }

                CheckFormControl(ati.ActivityTypeDetailFormControl, ref controlName);
                SetCaptionToField(ffi, "activityitemdetail." + selectedActivity);
                break;

            case "activitycreated":
                SetCaptionToField(ffi, "om.activity.createdbetween");
                break;

            case "activitynodeid":
                // Document selector for NodeID
                controlName = "selectdocument";
                break;

            case "activityculture":
                // Culture selector for culture
                controlName = "sitecultureselector";
                break;

            case "activityvalue":
                // Show activity value only for relevant activity types
                if ((!ati.ActivityTypeIsCustom) && (!activitiesWithValue.Contains(selectedActivity)))
                {
                    return false;
                }
                break;
        }

        return true;
    }