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); }
/// <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); }