protected void EditForm_OnBeforeValidate(object sender, EventArgs e) { // Check emptyness if (String.IsNullOrEmpty(ValidationHelper.GetString(ucContact.Value, null))) { ShowErrorMessage("om.activity.contactmissing", true); return; } // Check if selected contact exists EditForm.ParentObject = ContactInfoProvider.GetContactInfo(ucContact.ContactID); if (EditForm.ParentObject == null) { ShowErrorMessage("om.activity.contactdoesnotexist", true); return; } // Check selected date if (dtCreated.SelectedDateTime == DateTimeHelper.ZERO_TIME) { ShowErrorMessage("om.sctivity.selectdatetime", true); return; } // Check if manual creation of activity of this type is allowed string activityType = tsType.SelectedValue; if (String.IsNullOrEmpty(activityType) || !ActivityTypeInfoProvider.GetActivityTypeEnabled(activityType)) { ShowErrorMessage("om.activity.manualcreationisnotallowed", true); return; } }
protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); // Disable manual creation of activity if no custom activity type is available var activityType = ActivityTypeInfoProvider.GetActivityTypes() .WhereEquals("ActivityTypeIsCustom", 1) .WhereEquals("ActivityTypeEnabled", 1) .WhereEquals("ActivityTypeManualCreationAllowed", 1) .TopN(1) .Column("ActivityTypeID") .FirstOrDefault(); bool aCustomActivityExists = (activityType != null); // Disable actions for unauthorized users if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource(ModuleName.CONTACTMANAGEMENT, "ManageActivities")) { hdrActions.Enabled = false; } // Allow new button only if custom activity exists else if (!aCustomActivityExists) { lblWarnNew.ResourceString = "om.activities.nocustomactivity"; hdrActions.Enabled = false; lblWarnNew.Visible = true; } // Allow new button only for particular sites else if (currSiteId <= 0) { lblWarnNew.ResourceString = "om.choosesite"; hdrActions.Enabled = false; lblWarnNew.Visible = true; } }
protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); // Disable manual creation of activity if no custom activity type is available DataSet ds = ActivityTypeInfoProvider.GetActivityTypes("ActivityTypeIsCustom=1 AND ActivityTypeEnabled=1 AND ActivityTypeManualCreationAllowed=1", null, 1, "ActivityTypeID"); bool aCustomActivityExists = !DataHelper.DataSourceIsEmpty(ds); // Disable actions for unauthorized users if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.ContactManagement", "ManageActivities")) { hdrActions.Enabled = false; } // Allow new button only if custom activity exists else if (!aCustomActivityExists) { lblWarnNew.ResourceString = "om.activities.nocustomactivity"; hdrActions.Enabled = false; lblWarnNew.Visible = true; } // Allow new button only for particular sites else if (currSiteId <= 0) { lblWarnNew.ResourceString = "om.choosesite"; hdrActions.Enabled = false; lblWarnNew.Visible = true; } }
protected void Page_Load(object sender, EventArgs e) { if (EditedObject != null) { ContactInfo ci = (ContactInfo)EditedObject; ucDisabledModule.TestSettingKeys = "CMSEnableOnlineMarketing;CMSCMActivitiesEnabled"; ucDisabledModule.ParentPanel = pnlDis; pnlDis.Visible = !ActivitySettingsHelper.ActivitiesEnabledAndModuleLoaded(SiteContext.CurrentSiteID); listElem.ShowSiteNameColumn = true; listElem.SiteID = UniSelector.US_ALL_RECORDS; listElem.ContactID = ci.ContactID; listElem.OrderBy = "ActivityCreated DESC"; // Init header action for new custom activities only if contact is not global, a custom activity type exists and user is authorized to manage activities if (ActivitySettingsHelper.ActivitiesEnabledAndModuleLoaded(SiteContext.CurrentSiteName) && MembershipContext.AuthenticatedUser.IsAuthorizedPerResource(ModuleName.ACTIVITIES, "ManageActivities")) { // Disable manual creation of activity if no custom activity type is available var activityType = ActivityTypeInfoProvider.GetActivityTypes() .WhereEquals("ActivityTypeIsCustom", 1) .WhereEquals("ActivityTypeEnabled", 1) .WhereEquals("ActivityTypeManualCreationAllowed", 1) .TopN(1) .Column("ActivityTypeID") .FirstOrDefault(); if (activityType != null) { // Prepare target URL string url = ResolveUrl(string.Format("~/CMSModules/Activities/Pages/Tools/Activities/Activity/New.aspx?contactId={0}", ci.ContactID)); // Init header action HeaderAction action = new HeaderAction() { Text = GetString("om.activity.newcustom"), RedirectUrl = url }; CurrentMaster.HeaderActions.ActionsList.Add(action); } } if (!RequestHelper.IsPostBack() && QueryHelper.GetBoolean("saved", false)) { // Display 'Save' message after new custom activity was created ShowChangesSaved(); } } }
void gridElem_OnAction(string actionName, object actionArgument) { switch (actionName) { case "delete": int activityTypeID = ValidationHelper.GetInteger(actionArgument, 0); var activityType = ActivityTypeInfoProvider.GetActivityTypeInfo(activityTypeID); if ((activityType == null) || !activityType.ActivityTypeIsCustom) { RedirectToInformation("general.modifynotallowed"); } if (ActivityHelper.AuthorizedManageActivity(SiteContext.CurrentSiteID, false)) { ActivityTypeInfoProvider.DeleteActivityTypeInfo(activityType); } break; } }
void gridElem_OnAction(string actionName, object actionArgument) { switch (actionName) { case "delete": int activityTypeID = ValidationHelper.GetInteger(actionArgument, 0); var activityType = ActivityTypeInfoProvider.GetActivityTypeInfo(activityTypeID); if (!TypeCanBeDeleted(activityType)) { RedirectToInformation("general.modifynotallowed"); return; } ActivityTypeInfoProvider.DeleteActivityTypeInfo(activityType); break; } }
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); }
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; } } }
/// <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); }
/// <summary> /// Loads data of specific activity. /// </summary> protected void LoadData() { if (activityId <= 0) { return; } // Load and check if object exists ActivityInfo ai = ActivityInfoProvider.GetActivityInfo(activityId); EditedObject = ai; ActivityTypeInfo ati = ActivityTypeInfoProvider.GetActivityTypeInfo(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.ActivityActiveContactID)); // Init contact detail link string contactURL = UIContextHelper.GetElementDialogUrl(ModuleName.ONLINEMARKETING, "EditContact", ai.ActivityActiveContactID, "isSiteManager=" + ContactHelper.IsSiteManager); 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 = SiteInfoProvider.GetSiteInfo(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 = SiteInfoProvider.GetSiteInfo(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; } } } }
/// <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); }
protected void Page_Load(object sender, EventArgs e) { if (EditedObject != null) { ContactInfo ci = (ContactInfo)EditedObject; // Check permission CheckReadPermission(ci.ContactSiteID); bool isGlobal = (ci.ContactSiteID == 0); bool isMerged = (ci.ContactMergedWithContactID > 0); // Show warning if activity logging is disabled string siteName = SiteInfoProvider.GetSiteName(ci.ContactSiteID); ucDisabledModule.SettingsKeys = "CMSEnableOnlineMarketing"; ucDisabledModule.InfoText = GetString("om.onlinemarketing.disabled"); ucDisabledModule.ParentPanel = pnlDis; pnlDis.Visible = !isGlobal && !ActivitySettingsHelper.ActivitiesEnabledAndModuleLoaded(siteName); // Show IP addresses if enabled listElem.ShowIPAddressColumn = ActivitySettingsHelper.IPLoggingEnabled(siteName); listElem.ShowSiteNameColumn = IsSiteManager && isGlobal; // Restrict WHERE condition for activities of current site (if not in site manager) if (!IsSiteManager) { listElem.SiteID = SiteContext.CurrentSiteID; } else { // Show all records in Site Manager listElem.SiteID = UniSelector.US_ALL_RECORDS; } listElem.ContactID = ci.ContactID; listElem.IsMergedContact = isMerged; listElem.IsGlobalContact = isGlobal; listElem.ShowContactNameColumn = isGlobal; listElem.ShowSiteNameColumn = IsSiteManager && isGlobal; listElem.ShowRemoveButton = !isMerged && !isGlobal; listElem.OrderBy = "ActivityCreated DESC"; // Init header action for new custom activities only if contact is not global, a custom activity type exists and user is authorized to manage activities if (!isGlobal && ActivitySettingsHelper.ActivitiesEnabledAndModuleLoaded(siteName) && MembershipContext.AuthenticatedUser.IsAuthorizedPerResource(ModuleName.CONTACTMANAGEMENT, "ManageActivities")) { // Disable manual creation of activity if no custom activity type is available var activityType = ActivityTypeInfoProvider.GetActivityTypes() .WhereEquals("ActivityTypeIsCustom", 1) .WhereEquals("ActivityTypeEnabled", 1) .WhereEquals("ActivityTypeManualCreationAllowed", 1) .TopN(1) .Column("ActivityTypeID") .FirstOrDefault(); if (activityType != null) { // Prepare target URL string url = ResolveUrl(string.Format("~/CMSModules/ContactManagement/Pages/Tools/Activities/Activity/New.aspx?contactId={0}", ci.ContactID)); url = AddSiteQuery(url, ci.ContactSiteID); // Init header action HeaderAction action = new HeaderAction() { Text = GetString("om.activity.newcustom"), RedirectUrl = url }; CurrentMaster.HeaderActions.ActionsList.Add(action); } } if (!RequestHelper.IsPostBack() && QueryHelper.GetBoolean("saved", false)) { // Display 'Save' message after new custom activity was created ShowChangesSaved(); } } }
/// <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.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 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", "activitymvtcombinationname" }); } 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.Settings["controlname"] = controlName; ffi.Settings["allowempty"] = controlName.EqualsCSafe("skuselector", true); } // Ensure the category if (newCategory != null) { fi.AddFormCategory(newCategory); newCategory = null; } fi.AddFormItem(ffi); } } } LoadActivityForm(fi, selectedActivity); }
/// <summary> /// Returns existing <see cref="ActivityTypeInfo"/> with corresponding <paramref name="activityTypeCodeName"/>. /// </summary> private static ActivityTypeInfo GetActivityTypeByCodeName(object activityTypeCodeName) { string activityTypeName = ValidationHelper.GetString(activityTypeCodeName, null); return ActivityTypeInfoProvider.GetActivityTypeInfo(activityTypeName); }