private void cContactGroups_OnDrawRemoveButton(object sender, CMSModules_ContactManagement_Controls_UI_Contact_ContactGroups.DrawButtonEventArgs e) { if (sender is CMSGridActionButton) { // Enable or disable button ContactGroupInfo editedGroup = ContactGroupInfoProvider.GetContactGroupInfo((int)e.EditedObject); e.ButtonEnabled = UserCanManageGroup(editedGroup) || UserCanManageContact(editedContact); } }
/// <summary> /// Checks whether current user can edit a group or not. /// Depends on loaded permissions (else will return false). /// </summary> /// <exception cref="System.ArgumentNullException">Group is null</exception> private bool UserCanManageGroup(ContactGroupInfo group) { if (group == null) { throw new ArgumentNullException("group"); } return(group.IsGlobal ? permissions.ModifyGlobalGroup : permissions.ModifyGroup); }
protected void Page_Init(object sender, EventArgs e) { // Get edited object (contact group) if (UIContext.EditedObject != null) { cgi = (ContactGroupInfo)UIContext.EditedObject; siteID = cgi.ContactGroupSiteID; // Check permissions readSiteAccounts = AccountHelper.AuthorizedReadAccount(SiteContext.CurrentSiteID, false); modifySiteCG = ContactGroupHelper.AuthorizedModifyContactGroup(SiteContext.CurrentSiteID, false); if (siteID <= 0) { readGlobalAccounts = AccountHelper.AuthorizedReadAccount(UniSelector.US_GLOBAL_RECORD, false); modifyGlobalCG = ContactGroupHelper.AuthorizedModifyContactGroup(UniSelector.US_GLOBAL_RECORD, false); } // Setup unigrid gridElem.WhereCondition = GetWhereCondition(); gridElem.OnAction += gridElem_OnAction; gridElem.ZeroRowsText = GetString("om.account.noaccountsfound"); gridElem.OnBeforeDataReload += gridElem_OnBeforeDataReload; gridElem.OnExternalDataBound += gridElem_OnExternalDataBound; modifyCombined = ((siteID > 0) && modifySiteCG) || ((siteID <= 0) && (modifyGlobalCG)); // Initialize dropdown lists if (!RequestHelper.IsPostBack()) { // Display mass actions if (modifyCombined) { drpAction.Items.Add(new ListItem(GetString("general." + Action.SelectAction), Convert.ToInt32(Action.SelectAction).ToString())); drpAction.Items.Add(new ListItem(GetString("general.remove"), Convert.ToInt32(Action.Remove).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.account." + What.Selected), Convert.ToInt32(What.Selected).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.account." + What.All), Convert.ToInt32(What.All).ToString())); } } else { if (ControlsHelper.CausedPostBack(btnOk)) { // Set delayed reload for unigrid if mass action is performed gridElem.DelayedReload = true; } } // Initialize contact selector accountSelector.UniSelector.OnItemsSelected += UniSelector_OnItemsSelected; accountSelector.UniSelector.SelectionMode = SelectionModeEnum.MultipleButton; accountSelector.UniSelector.DialogButton.ResourceString = "om.account.addaccount"; } else { StopProcessing = true; } }
private void AddContactToContactGroup(ContactInfo contact, ContactGroupInfo contactGroup) { ContactGroupMemberInfoProvider.SetContactGroupMemberInfo(new ContactGroupMemberInfo { ContactGroupMemberContactGroupID = contactGroup.ContactGroupID, ContactGroupMemberType = ContactGroupMemberTypeEnum.Contact, ContactGroupMemberRelatedID = contact.ContactID }); }
/// <summary> /// OnBeforeSave event handler. /// </summary> protected void EditForm_OnBeforeSave(object sender, EventArgs e) { // Set site ID only when creating new object if ((EditForm.EditedObject != null)) { int groupId = EditForm.EditedObject.Generalized.ObjectID; if (groupId == 0) { if (SiteID > 0) { EditForm.Data["ContactGroupSiteID"] = SiteID; } else { EditForm.Data["ContactGroupSiteID"] = null; } } else { if (!chkDynamic.Checked) { // Remove dynamic condition EditForm.Data.SetValue("ContactGroupDynamicCondition", null); // Remove dynamically created members if (ValidationHelper.GetBoolean(hdnConfirmDelete.Value, false)) { ContactGroupMemberInfoProvider.DeleteContactGroupMembers("ContactGroupMemberContactGroupID = " + groupId + " AND (ContactGroupMemberFromCondition = 1 AND (ContactGroupMemberFromAccount = 0 OR ContactGroupMemberFromAccount IS NULL) AND (ContactGroupMemberFromManual = 0 OR ContactGroupMemberFromManual IS NULL))", groupId, false, false); } } else { // Get new condition string condition = EditForm.FieldControls["ContactGroupDynamicCondition"].Value.ToString(); // Display error if the condition is empty if (string.IsNullOrEmpty(condition)) { EditForm.StopProcessing = true; EditForm.ErrorLabel.Text = GetString("om.contactgroup.nocondition"); } else { // Get current object to compare dynamic conditions ContactGroupInfo currentGroup = ContactGroupInfoProvider.GetContactGroupInfo(EditForm.EditedObject.Generalized.ObjectID); if ((currentGroup != null) && (!condition.EqualsCSafe(currentGroup.ContactGroupDynamicCondition, true))) { // Set 'Rebuild required' status EditForm.Data["ContactGroupStatus"] = 2; } } } } } }
private void SubscribeContactGroupToIssue( IssueInfo campaignIssue, ContactGroupInfo contactGroup) { IssueContactGroupInfoProvider.SetIssueContactGroupInfo(new IssueContactGroupInfo { IssueID = campaignIssue.IssueID, ContactGroupID = contactGroup.ContactGroupID }); }
protected void Page_Load(object sender, EventArgs e) { string url = UIContextHelper.GetElementUrl("CMS.OnlineMarketing", "EditContactGroup"); url = URLHelper.AddParameterToUrl(url, "displayTitle", "false"); url = URLHelper.AddParameterToUrl(url, "objectId", "{%EditedObject.ID%}"); url = URLHelper.AddParameterToUrl(url, "saved", "1"); url = URLHelper.AddParameterToUrl(url, "siteid", SiteID.ToString()); if (ContactHelper.IsSiteManager) { url = URLHelper.AddParameterToUrl(url, "issitemanager", "1"); } EditForm.RedirectUrlAfterCreate = url; // Get edited contact group ContactGroupInfo cgi = (ContactGroupInfo)EditForm.EditedObject; // Get scheduled task if (cgi.ContactGroupScheduledTaskID > 0) { task = TaskInfoProvider.GetTaskInfo(cgi.ContactGroupScheduledTaskID); } if (!RequestHelper.IsPostBack()) { // Hide dialog for condition when creating new contact group plcUpdate.Visible = (cgi.ContactGroupID > 0); chkSchedule.Checked = schedulerInterval.Visible = ((task != null) && task.TaskEnabled); if (schedulerInterval.Visible) { // Initialize interval control schedulerInterval.ScheduleInterval = task.TaskInterval; } } // Set proper resolver to condition builder conditionBuilder.ResolverName = "ContactResolver"; if (task != null) { // Display info panel for dynamic contact group pnlInfo.Visible = true; // Display basic info about dynamic contact group InitInfoPanel(cgi, false); } }
/// <summary> /// Creates new scheduled task with basic properties set. /// </summary> /// <param name="cgi">Contact group info</param> private TaskInfo CreateScheduledTask(ContactGroupInfo cgi) { return(new TaskInfo() { TaskAssemblyName = "CMS.OnlineMarketing", TaskClass = "CMS.OnlineMarketing.ContactGroupEvaluator", TaskEnabled = true, TaskLastResult = string.Empty, TaskSiteID = cgi.ContactGroupSiteID, TaskData = cgi.ContactGroupID.ToString(), TaskDisplayName = "Contact group '" + cgi.ContactGroupDisplayName + "' rebuild", TaskName = "ContactGroupRebuild_" + cgi.ContactGroupName }); }
/// <summary> /// Unigrid button clicked. /// </summary> protected void gridElem_OnAction(string actionName, object actionArgument) { if (actionName == "delete") { int groupId = ValidationHelper.GetInteger(actionArgument, 0); ContactGroupInfo cgi = ContactGroupInfoProvider.GetContactGroupInfo(groupId); // Check permission if ((cgi != null) && ContactGroupHelper.AuthorizedModifyContactGroup(cgi.ContactGroupSiteID, true)) { // Delete contact group ContactGroupInfoProvider.DeleteContactGroupInfo(groupId); } } }
/// <summary> /// Returns scheduled task of the contact group or creates new one. /// </summary> /// <param name="cgi">Contact group info</param> private TaskInfo GetScheduledTask(ContactGroupInfo cgi) { if (cgi == null) { return(null); } if (cgi.ContactGroupScheduledTaskID > 0) { return(TaskInfoProvider.GetTaskInfo(ValidationHelper.GetInteger(cgi.ContactGroupScheduledTaskID, 0)) ?? CreateScheduledTask(cgi)); } return(CreateScheduledTask(cgi)); }
/// <summary> /// Checkbox chkDynamic event handler. /// </summary> protected void chkDynamic_CheckedChanged(object sender, EventArgs e) { plcDynamic.Visible = chkDynamic.Checked; // Set confirmation dialog if (!chkDynamic.Checked) { ContactGroupInfo cgi = ContactGroupInfoProvider.GetContactGroupInfo(EditForm.EditedObject.Generalized.ObjectID); if ((cgi != null) && (!String.IsNullOrEmpty(cgi.ContactGroupDynamicCondition))) { InitHeaderActions(true); ((CMSPage)Page).CurrentMaster.HeaderActions.ReloadData(); } } }
private void AddContactsToSubscribedContactGroup(ContactGroupInfo contactGroup) { for (var index = 0; index < _mSubscriberNames.Length; ++index) { if (index % 2 == 0) { var fromFullName = SubscriberData.CreateFromFullName(_mSubscriberNames[index]); AddContactToContactGroup(ContactInfoProvider.GetContactInfo(fromFullName.Email), contactGroup); if (index % 10 == 0) { CreateGlobalUnsubscription(fromFullName.Email); } } } }
/// <summary> /// Initializes panel with basic info. /// </summary> /// <param name="cgi">Contact group info object</param> /// <param name="forceReload">If TRUE number of group members is reloaded</param> private void InitInfoPanel(ContactGroupInfo cgi, bool forceReload) { if (cgi != null && task != null) { pnlInfo.GroupingText = GetString("om.contactgroup.info"); pnlInfo.Attributes.Add("style", "margin:0 30px;"); // Last evaluation time if (task.TaskLastRunTime != DateTimeHelper.ZERO_TIME) { lblLastEvalValue.Text = task.TaskLastRunTime.ToString(); } else { lblLastEvalValue.Text = GetString("general.na"); } // Display contact group status... switch (cgi.ContactGroupStatus) { case ContactGroupStatusEnum.Rebuilding: // Status and progress if the status is 'Rebuilding' ltrProgress.Text = String.Empty; string buildStr = GetString("om.contactgroup.rebuilding"); ltrProgress.Text = "<img style=\"width:12px;height:12px;\" src=\"" + UIHelper.GetImageUrl(this.Page, "Design/Preloaders/preload16.gif") + "\" alt=\"" + buildStr + "\" tooltip=\"" + buildStr + "\" />"; lblStatusValue.Text = "<span class=\"StatusDisabled\">" + buildStr + "</span>"; break; case ContactGroupStatusEnum.Ready: // 'Ready' status lblStatusValue.Text = "<span class=\"StatusEnabled\">" + GetString("om.contactgroup.ready") + "</span>"; break; case ContactGroupStatusEnum.ConditionChanged: // 'Condition changed' status lblStatusValue.Text = "<span class=\"StatusDisabled\">" + GetString("om.contactgroup.rebuildrequired") + "</span>"; break; } // Display current number of contacts in the group if (!RequestHelper.IsPostBack() || (cgi.ContactGroupStatus == ContactGroupStatusEnum.Rebuilding) || (DateTime.Now.Subtract(cgi.ContactGroupLastModified).TotalSeconds < 5) || forceReload) { lblNumberOfItemsValue.Text = ContactGroupMemberInfoProvider.GetNumberOfContactsInGroup(cgi.ContactGroupID, true).ToString(); } } }
/// <summary> /// Actions handler. /// </summary> protected void HeaderActions_ActionPerformed(object sender, CommandEventArgs e) { if (ContactGroupHelper.AuthorizedModifyContactGroup(this.SiteID, true)) { switch (e.CommandName.ToLower()) { case "save": // Save changes in the contact group EditForm.SaveData(null); break; case "evaluate": if (EditForm.EditedObject != null) { ContactGroupInfo cgi = (ContactGroupInfo)EditForm.EditedObject; if (cgi != null) { // Set 'Rebuilding' status cgi.ContactGroupStatus = ContactGroupStatusEnum.Rebuilding; ContactGroupInfoProvider.SetContactGroupInfo(cgi); // Evaluate the membership of the contact group ContactGroupEvaluator evaluator = new ContactGroupEvaluator(); evaluator.ContactGroupID = cgi.ContactGroupID; evaluator.Execute(null); EditForm.InfoLabel.Text = GetString("om.contactgroup.evaluationstarted"); EditForm.InfoLabel.Visible = true; // Get scheduled task and update last run time if (cgi.ContactGroupScheduledTaskID > 0) { task = TaskInfoProvider.GetTaskInfo(cgi.ContactGroupScheduledTaskID); if (task != null) { task.TaskLastRunTime = DateTime.Now; TaskInfoProvider.SetTaskInfo(task); } } // Display basic info about dynamic contact group InitInfoPanel(cgi, false); } } break; } } }
protected void Page_Init(object sender, EventArgs e) { // Get edited object (contact group) if (UIContext.EditedObject != null) { cgi = (ContactGroupInfo)UIContext.EditedObject; // Setup unigrid gridElem.WhereCondition = GetWhereCondition(); gridElem.OnAction += gridElem_OnAction; gridElem.ZeroRowsText = GetString("om.account.noaccountsfound"); gridElem.OnExternalDataBound += gridElem_OnExternalDataBound; gridElem.OnDataReload += gridElem_OnDataReload; mModifyPermission = AuthorizationHelper.AuthorizedModifyContact(false); // Initialize dropdown lists if (!RequestHelper.IsPostBack()) { // Display mass actions if (mModifyPermission) { drpAction.Items.Add(new ListItem(GetString("general." + Action.SelectAction), Convert.ToInt32(Action.SelectAction).ToString())); drpAction.Items.Add(new ListItem(GetString("general.remove"), Convert.ToInt32(Action.Remove).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.account." + What.Selected), Convert.ToInt32(What.Selected).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.account." + What.All), Convert.ToInt32(What.All).ToString())); } } else { if (ControlsHelper.CausedPostBack(btnOk)) { // Set delayed reload for unigrid if mass action is performed gridElem.DelayedReload = true; } } // Initialize account selector accountSelector.UniSelector.OnItemsSelected += UniSelector_OnItemsSelected; accountSelector.UniSelector.SelectionMode = SelectionModeEnum.MultipleButton; accountSelector.UniSelector.DialogButton.ResourceString = "om.account.addaccount"; } else { StopProcessing = true; } }
private void CreateContactGroupWithFormConsentAgreementRule() { if (ContactGroupInfo.Provider.Get(CONTACT_GROUP_NAME) != null) { return; } var contactGroup = new ContactGroupInfo { ContactGroupDisplayName = CONTACT_GROUP_DISPLAY_NAME, ContactGroupName = CONTACT_GROUP_NAME, ContactGroupDynamicCondition = GetFormConsentMacroRule(), ContactGroupEnabled = true }; ContactGroupInfo.Provider.Set(contactGroup); }
private static void CreateContactGroup(string contactGroupCodeName, string contactGroupName) { var contactGroup = ContactGroupInfo.Provider.Get(contactGroupCodeName); if (contactGroup != null) { return; } contactGroup = new ContactGroupInfo { ContactGroupDisplayName = contactGroupName, ContactGroupName = contactGroupCodeName, ContactGroupEnabled = true }; ContactGroupInfo.Provider.Set(contactGroup); }
/// <summary> /// Initializes panel with basic info. /// </summary> /// <param name="cgi">Contact group info object</param> /// <param name="forceReload">If TRUE number of group members is reloaded</param> private void InitInfoPanel(ContactGroupInfo cgi, bool forceReload) { if (cgi != null && task != null) { // Last evaluation time if (task.TaskLastRunTime != DateTimeHelper.ZERO_TIME) { lblLastEvalValue.Text = task.TaskLastRunTime.ToString(); } else { lblLastEvalValue.Text = GetString("general.na"); } // Display contact group status... switch (cgi.ContactGroupStatus) { case ContactGroupStatusEnum.Rebuilding: // Status and progress if the status is 'Rebuilding' string buildStr = GetString("om.contactgroup.rebuilding"); string statusText = "<span class=\"StatusDisabled form-control-text\">" + buildStr + "</span>"; ltrProgress.Text = ScriptHelper.GetLoaderInlineHtml(Page, statusText); lblStatusValue.Visible = false; break; case ContactGroupStatusEnum.Ready: // 'Ready' status lblStatusValue.Text = "<span class=\"StatusEnabled\">" + GetString("om.contactgroup.ready") + "</span>"; break; case ContactGroupStatusEnum.ConditionChanged: // 'Condition changed' status lblStatusValue.Text = "<span class=\"StatusDisabled\">" + GetString("om.contactgroup.rebuildrequired") + "</span>"; break; } // Display current number of contacts in the group if (!RequestHelper.IsPostBack() || (cgi.ContactGroupStatus == ContactGroupStatusEnum.Rebuilding) || (DateTime.Now.Subtract(cgi.ContactGroupLastModified).TotalSeconds < 5) || forceReload) { lblNumberOfItemsValue.Text = ContactGroupMemberInfoProvider.GetNumberOfContactsInGroup(cgi.ContactGroupID, true).ToString(); } } }
/// <summary> /// Attempt to remove user from group event handler. /// </summary> private void cContactGroups_OnRemoveFromGroup(object sender, EventArgs e) { int contactGroupID = ValidationHelper.GetInteger(sender, 0); if (contactGroupID != 0) { ContactGroupInfo removedGroup = ContactGroupInfoProvider.GetContactGroupInfo(contactGroupID); if (UserCanManageGroup(removedGroup) || UserCanManageContact(editedContact)) { // Get the relationship object ContactGroupMemberInfo mi = ContactGroupMemberInfoProvider.GetContactGroupMemberInfoByData(contactGroupID, editedContact.ContactID, ContactGroupMemberTypeEnum.Contact); if (mi != null) { ContactGroupMemberInfoProvider.DeleteContactGroupMemberInfo(mi); } } } }
private ContactGroupInfo CreateContactGroup( string contactGroupCodeName, string contactGroupName) { var contactGroupInfo = ContactGroupInfoProvider.GetContactGroupInfo(contactGroupCodeName); if (contactGroupInfo != null) { ContactGroupInfoProvider.DeleteContactGroupInfo(contactGroupInfo); } var groupObj = new ContactGroupInfo(); groupObj.ContactGroupDisplayName = contactGroupName; groupObj.ContactGroupName = contactGroupCodeName; groupObj.ContactGroupEnabled = true; ContactGroupInfoProvider.SetContactGroupInfo(groupObj); return(groupObj); }
/// <summary> /// Contact group items selected event handler. /// </summary> protected void CGSelector_OnItemsSelected(object sender, EventArgs e) { // Check permissions CheckAuthorization(); // Get new items from selector string newValues = ValidationHelper.GetString(contactGroupsSelector.Value, null); // Get added items string[] newItems = newValues.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (string item in newItems) { int contactGroupId = ValidationHelper.GetInteger(item, 0); ContactGroupInfo contactGroup = ContactGroupInfoProvider.GetContactGroupInfo(contactGroupId); mSubscriptionService.Subscribe(contactGroup, mNewsletter); } contactGroupsSelector.Value = null; UniGridSubscribers.ReloadData(); pnlUpdate.Update(); }
private static ContactGroupInfo CreateContactGroup(PersonaInfo persona) { var contactGroupInfo = ContactGroupInfoProvider.GetContactGroupInfo(CoffeeGeekPersonaContactGroupName); if (contactGroupInfo != null) { ContactGroupInfoProvider.DeleteContactGroupInfo(contactGroupInfo); } var groupObj = new ContactGroupInfo(); groupObj.ContactGroupDisplayName = "Is in persona 'Martina, the Coffee Geek'"; groupObj.ContactGroupName = CoffeeGeekPersonaContactGroupName; groupObj.ContactGroupEnabled = true; var str = MacroSecurityProcessor.AddSecurityParameters( string.Format( "{{%Rule(\"(Contact.IsInPersona(\\\"{0}\\\"))\", \"<rules><r pos=\\\"0\\\" par=\\\"\\\" op=\\\"and\\\" n=\\\"ContactIsInPersona\\\" ><p n=\\\"_is\\\"><t>is</t><v></v><r>0</r><d>select operation</d><vt>text</vt><tv>0</tv></p><p n=\\\"personaguid\\\"><t>{1}</t><v>{0}</v><r>1</r><d>select persona</d><vt>text</vt><tv>0</tv></p></r></rules>\") %}}", persona.PersonaGUID, persona.PersonaDisplayName), MacroIdentityOption.FromUserInfo(UserInfoProvider.AdministratorUser), null); groupObj.ContactGroupDynamicCondition = str; ContactGroupInfoProvider.SetContactGroupInfo(groupObj); return(groupObj); }
/// <summary> /// Creates contact group. Called when the "Create group" button is pressed. /// </summary> private bool CreateContactGroup() { // Create new contact group object ContactGroupInfo newGroup = new ContactGroupInfo() { ContactGroupDisplayName = "My new group", ContactGroupName = "MyNewGroup", ContactGroupSiteID = CMSContext.CurrentSiteID, ContactGroupDynamicCondition = "{%Contact.ContactLastName.Contains(\"My new\")%}" }; // Save the contact group to database ContactGroupInfoProvider.SetContactGroupInfo(newGroup); return true; }
/// <summary> /// Mass operation button "OK" click. /// </summary> protected void btnOk_Click(object sender, EventArgs e) { string resultMessage = string.Empty; // Get where condition depending on mass action selection string where; List <string> contactIds = null; What what = (What)ValidationHelper.GetInteger(drpWhat.SelectedValue, 0); switch (what) { // All items case What.All: // Get all contacts with scores based on filter condition var contacts = GetContactsWithScore(); if (!DataHelper.DataSourceIsEmpty(contacts)) { // Get array list with IDs contactIds = DataHelper.GetUniqueValues(contacts.Tables[0], "ContactID", true); } break; // Selected items case What.Selected: // Get selected IDs from unigrid contactIds = gridElem.SelectedItems; break; } // Prepare where condition if ((contactIds != null) && (contactIds.Count > 0)) { where = SqlHelper.GetWhereCondition <int>("ContactID", contactIds, false); } else { where = "0=1"; } Action action = (Action)ValidationHelper.GetInteger(drpAction.SelectedItem.Value, 0); switch (action) { // Action 'Change status' case Action.ChangeStatus: // Get selected status ID from hidden field int statusId = ValidationHelper.GetInteger(hdnIdentifier.Value, -1); // If status ID is 0, the status will be removed if (statusId >= 0) { ContactInfoProvider.UpdateContactStatus(statusId, where); resultMessage = GetString("om.contact.massaction.statuschanged"); } break; // Action 'Add to contact group' case Action.AddToGroup: // Get contact group ID from hidden field int groupId = ValidationHelper.GetInteger(hdnIdentifier.Value, 0); if ((groupId > 0) && (contactIds != null)) { // Add each selected contact to the contact group, skip contacts that are already members of the group foreach (string item in contactIds) { int contactId = ValidationHelper.GetInteger(item, 0); if (contactId > 0) { ContactGroupMemberInfoProvider.SetContactGroupMemberInfo(groupId, contactId, ContactGroupMemberTypeEnum.Contact, MemberAddedHowEnum.Manual); } } // Get contact group to show result message with its display name ContactGroupInfo group = ContactGroupInfoProvider.GetContactGroupInfo(groupId); if (group != null) { resultMessage = String.Format(GetString("om.contact.massaction.addedtogroup"), group.ContactGroupDisplayName); } } break; default: return; } if (!string.IsNullOrEmpty(resultMessage)) { lblInfo.Text = resultMessage; lblInfo.Visible = true; } // Reload unigrid gridElem.ClearSelectedItems(); gridElem.ReloadData(); pnlUpdate.Update(); }
protected void Page_Load(object sender, EventArgs e) { // Get edited object (contact group) if (UIContext.EditedObject != null) { cgi = (ContactGroupInfo)UIContext.EditedObject; contactGroupSiteID = cgi.ContactGroupSiteID; // Check permissions readSiteContacts = ContactHelper.AuthorizedReadContact(SiteContext.CurrentSiteID, false); modifySiteCG = ContactGroupHelper.AuthorizedModifyContactGroup(SiteContext.CurrentSiteID, false); if (contactGroupSiteID <= 0) { readGlobalContacts = ContactHelper.AuthorizedReadContact(UniSelector.US_GLOBAL_RECORD, false); modifyGlobalCG = ContactGroupHelper.AuthorizedModifyContactGroup(UniSelector.US_GLOBAL_RECORD, false); } // Setup unigrid string where = "(ContactGroupMemberContactGroupID = " + cgi.ContactGroupID + ")"; gridElem.WhereCondition = SqlHelper.AddWhereCondition(where, GetWhereCondition()); gridElem.OnAction += gridElem_OnAction; gridElem.ZeroRowsText = GetString("om.contact.nocontacts"); gridElem.OnBeforeDataReload += gridElem_OnBeforeDataReload; gridElem.OnExternalDataBound += gridElem_OnExternalDataBound; modifyCombined = ((contactGroupSiteID > 0) && modifySiteCG) || ((contactGroupSiteID <= 0) && modifyGlobalCG); if (!string.IsNullOrEmpty(cgi.ContactGroupDynamicCondition)) { // Set specific confirmation to remove grid action var removeAction = (CMS.UIControls.UniGridConfig.Action)gridElem.GridActions.Actions[1]; removeAction.Confirmation = "$om.contactgroupmember.confirmremove$"; } // Initialize dropdown lists if (!RequestHelper.IsPostBack()) { drpAction.Items.Add(new ListItem(GetString("general." + Action.SelectAction), Convert.ToInt32(Action.SelectAction).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.contact." + What.Selected), Convert.ToInt32(What.Selected).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.contact." + What.All), Convert.ToInt32(What.All).ToString())); // Display mass actions if (modifyCombined) { drpAction.Items.Add(new ListItem(GetString("general.remove"), Convert.ToInt32(Action.Remove).ToString())); } if (ContactHelper.AuthorizedModifyContact(contactGroupSiteID, false)) { drpAction.Items.Add(new ListItem(GetString("om.account." + Action.ChangeStatus), Convert.ToInt32(Action.ChangeStatus).ToString())); } if (MembershipContext.AuthenticatedUser.IsAuthorizedPerResource(ModuleName.ONLINEMARKETING, "StartProcess")) { drpAction.Items.Add(new ListItem(GetString("ma.automationprocess.select"), Convert.ToInt32(Action.StartNewProcess).ToString())); } } else { if (ControlsHelper.CausedPostBack(btnOk)) { // Set delayed reload for unigrid if mass action is performed gridElem.DelayedReload = true; } } // Initialize contact selector contactSelector.UniSelector.OnItemsSelected += UniSelector_OnItemsSelected; contactSelector.UniSelector.SelectionMode = SelectionModeEnum.MultipleButton; // Register JS scripts RegisterScripts(); } else { StopProcessing = true; } }
/// <summary> /// Mass operation button "OK" click. /// </summary> protected void btnOk_Click(object sender, EventArgs e) { // Get where condition depending on mass action selection string where = null; What what = (What)ValidationHelper.GetInteger(drpWhat.SelectedValue, 0); switch (what) { // All items case What.All: where = SqlHelper.AddWhereCondition(gridElem.WhereCondition, gridElem.WhereClause); break; // Selected items case What.Selected: where = SqlHelper.GetWhereCondition <int>("AccountID", gridElem.SelectedItems, false); break; } Action action = (Action)ValidationHelper.GetInteger(drpAction.SelectedItem.Value, 0); switch (action) { // Action 'Change status' case Action.ChangeStatus: { // Get selected status ID from hidden field int statusId = ValidationHelper.GetInteger(hdnIdentifier.Value, -1); // If status ID is 0, the status will be removed if (statusId >= 0) { AccountInfoProvider.UpdateAccountStatus(statusId, where); ShowConfirmation(GetString("om.account.massaction.statuschanged")); } } break; // Action 'Add to contact group' case Action.AddToGroup: { // Get contact group ID from hidden field int groupId = ValidationHelper.GetInteger(hdnIdentifier.Value, 0); if (groupId > 0) { IEnumerable <string> accountIds = null; switch (what) { // All items case What.All: // Get selected IDs based on where condition DataSet accounts = AccountInfoProvider.GetAccounts().Where(where).Column("AccountID"); if (!DataHelper.DataSourceIsEmpty(accounts)) { // Get array list with IDs accountIds = DataHelper.GetUniqueValues(accounts.Tables[0], "AccountID", true); } break; // Selected items case What.Selected: // Get selected IDs from UniGrid accountIds = gridElem.SelectedItems; break; } if (accountIds != null) { // Add each selected account to the contact group, skip accounts that are already members of the group foreach (string item in accountIds) { int accountId = ValidationHelper.GetInteger(item, 0); if ((accountId > 0) && (ContactGroupMemberInfoProvider.GetContactGroupMemberInfoByData(groupId, accountId, ContactGroupMemberTypeEnum.Account) == null)) { ContactGroupMemberInfoProvider.SetContactGroupMemberInfo(groupId, accountId, ContactGroupMemberTypeEnum.Account, MemberAddedHowEnum.Account); } } // Get contact group to show result message with its display name ContactGroupInfo group = ContactGroupInfoProvider.GetContactGroupInfo(groupId); if (group != null) { ShowConfirmation(String.Format(GetString("om.account.massaction.addedtogroup"), ResHelper.LocalizeString(group.ContactGroupDisplayName))); } } } } break; // Merge click case Action.Merge: DataSet selectedAccounts = AccountHelper.GetAccounListInfos(null, where, null, -1, null); if (!DataHelper.DataSourceIsEmpty(selectedAccounts)) { // Get selected account ID from hidden field int accountID = ValidationHelper.GetInteger(hdnIdentifier.Value, -1); // If account ID is 0 then new contact must be created if (accountID == 0) { int siteID; if (filter.DisplaySiteSelector || filter.DisplayGlobalOrSiteSelector) { siteID = filter.SelectedSiteID; } else { siteID = SiteID; } SetDialogParameters(selectedAccounts, AccountHelper.GetNewAccount(AccountHelper.MERGED, siteID)); } // Selected contact to be merged into else if (accountID > 0) { SetDialogParameters(selectedAccounts, AccountInfoProvider.GetAccountInfo(accountID)); } OpenWindow(); } break; default: return; } // Reload UniGrid gridElem.ResetSelection(); gridElem.ReloadData(); pnlUpdate.Update(); }
protected void Page_Load(object sender, EventArgs e) { // Get edited object (contact group) if (UIContext.EditedObject != null) { cgi = (ContactGroupInfo)UIContext.EditedObject; contactGroupSiteID = cgi.ContactGroupSiteID; // Check permissions readSiteContacts = ContactHelper.AuthorizedReadContact(SiteContext.CurrentSiteID, false); modifySiteCG = ContactGroupHelper.AuthorizedModifyContactGroup(SiteContext.CurrentSiteID, false); if (contactGroupSiteID <= 0) { readGlobalContacts = ContactHelper.AuthorizedReadContact(UniSelector.US_GLOBAL_RECORD, false); modifyGlobalCG = ContactGroupHelper.AuthorizedModifyContactGroup(UniSelector.US_GLOBAL_RECORD, false); } // Setup unigrid gridElem.WhereCondition = GetWhereCondition(); gridElem.OnAction += gridElem_OnAction; gridElem.ZeroRowsText = GetString("om.contact.nocontacts"); gridElem.OnBeforeDataReload += gridElem_OnBeforeDataReload; gridElem.OnExternalDataBound += gridElem_OnExternalDataBound; modifyCombined = ((contactGroupSiteID > 0) && modifySiteCG) || ((contactGroupSiteID <= 0) && modifyGlobalCG); if (!string.IsNullOrEmpty(cgi.ContactGroupDynamicCondition)) { // Set specific confirmation to remove grid action var removeAction = (CMS.UIControls.UniGridConfig.Action)gridElem.GridActions.Actions[1]; removeAction.Confirmation = "$om.contactgroupmember.confirmremove$"; } // Initialize dropdown lists if (!RequestHelper.IsPostBack()) { drpAction.Items.Add(new ListItem(GetString("general." + Action.SelectAction), Convert.ToInt32(Action.SelectAction).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.contact." + What.Selected), Convert.ToInt32(What.Selected).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.contact." + What.All), Convert.ToInt32(What.All).ToString())); // Display mass actions if (modifyCombined) { drpAction.Items.Add(new ListItem(GetString("general.remove"), Convert.ToInt32(Action.Remove).ToString())); } if (ContactHelper.AuthorizedModifyContact(contactGroupSiteID, false)) { drpAction.Items.Add(new ListItem(GetString("om.account." + Action.ChangeStatus), Convert.ToInt32(Action.ChangeStatus).ToString())); } if (MembershipContext.AuthenticatedUser.IsAuthorizedPerResource(ModuleName.ONLINEMARKETING, "StartProcess")) { drpAction.Items.Add(new ListItem(GetString("ma.automationprocess.select"), Convert.ToInt32(Action.StartNewProcess).ToString())); } } else { if (ControlsHelper.CausedPostBack(btnOk)) { // Set delayed reload for unigrid if mass action is performed gridElem.DelayedReload = true; } } // Initialize contact selector contactSelector.UniSelector.OnItemsSelected += UniSelector_OnItemsSelected; contactSelector.UniSelector.SelectionMode = SelectionModeEnum.MultipleButton; // Register JS scripts RegisterScripts(); } else { StopProcessing = true; } }
/// <summary> /// OnAfterSave event handler. /// </summary> protected void EditForm_OnAfterSave(object sender, EventArgs e) { // Get edited contact group ContactGroupInfo cgi = (ContactGroupInfo)EditForm.EditedObject; if (chkDynamic.Checked) { // Set info for scheduled task task = GetScheduledTask(cgi); // Update scheduled task if (chkSchedule.Checked) { if (!schedulerInterval.CheckOneDayMinimum()) { // If problem occurred while setting schedule interval EditForm.ErrorLabel.Text = GetString("Newsletter_Edit.NoDaySelected"); EditForm.ErrorLabel.Visible = true; EditForm.StopProcessing = true; return; } if (!DataTypeManager.IsValidDate(SchedulingHelper.DecodeInterval(scheduleInterval).StartTime)) { // Start date is not in valid format EditForm.ErrorLabel.Text = GetString("Newsletter.IncorrectDate"); EditForm.ErrorLabel.Visible = true; EditForm.StopProcessing = true; return; } task.TaskInterval = scheduleInterval; task.TaskNextRunTime = SchedulingHelper.GetNextTime(task.TaskInterval, new DateTime(), new DateTime()); task.TaskEnabled = true; } else { task.TaskInterval = scheduleInterval; task.TaskNextRunTime = TaskInfoProvider.NO_TIME; task.TaskEnabled = false; } TaskInfoProvider.SetTaskInfo(task); cgi.ContactGroupScheduledTaskID = task.TaskID; pnlInfo.Visible = true; InitInfoPanel(cgi, true); } else { if (cgi.ContactGroupScheduledTaskID > 0) { // Store task ID for deletion deleteScheduledTaskId = cgi.ContactGroupScheduledTaskID; } cgi.ContactGroupScheduledTaskID = 0; cgi.ContactGroupStatus = ContactGroupStatusEnum.Unspecified; schedulerInterval.Visible = false; pnlInfo.Visible = false; } // Update contact group ContactGroupInfoProvider.SetContactGroupInfo(cgi); if (deleteScheduledTaskId > 0) { // Delete scheduled task if schedule evaluation was unchecked TaskInfoProvider.DeleteTaskInfo(deleteScheduledTaskId); } InitHeaderActions(false); ((CMSPage)Page).CurrentMaster.HeaderActions.ReloadData(); // Refresh breadcrumbs var append = cgi.IsGlobal ? " " + GetString("general.global") : ""; ScriptHelper.RefreshTabHeader(Page, cgi.ContactGroupDisplayName + append); }
protected void Page_Load(object sender, EventArgs e) { // Get edited object (contact group) if (UIContext.EditedObject != null) { cgi = (ContactGroupInfo)UIContext.EditedObject; // Check permissions AuthorizationHelper.AuthorizedReadContact(true); mAuthorizedToModifyContactGroups = AuthorizationHelper.AuthorizedModifyContact(false); // Setup unigrid string where = "(ContactGroupMemberContactGroupID = " + cgi.ContactGroupID + ")"; gridElem.WhereCondition = where; gridElem.OnAction += gridElem_OnAction; gridElem.ZeroRowsText = GetString("om.contact.nocontacts"); gridElem.OnExternalDataBound += gridElem_OnExternalDataBound; if (!string.IsNullOrEmpty(cgi.ContactGroupDynamicCondition)) { // Set specific confirmation to remove grid action var removeAction = (CMS.UIControls.UniGridConfig.Action)gridElem.GridActions.Actions[1]; removeAction.Confirmation = "$om.contactgroupmember.confirmremove$"; } // Initialize dropdown lists if (!RequestHelper.IsPostBack()) { drpAction.Items.Add(new ListItem(GetString("general." + Action.SelectAction), Convert.ToInt32(Action.SelectAction).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.contact." + What.Selected), Convert.ToInt32(What.Selected).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.contact." + What.All), Convert.ToInt32(What.All).ToString())); if (mAuthorizedToModifyContactGroups) { drpAction.Items.Add(new ListItem(GetString("general.remove"), Convert.ToInt32(Action.Remove).ToString())); } if (AuthorizationHelper.AuthorizedModifyContact(false) && IsFullContactManagementAvailable()) { drpAction.Items.Add(new ListItem(GetString("om.account." + Action.ChangeStatus), Convert.ToInt32(Action.ChangeStatus).ToString())); } if (MembershipContext.AuthenticatedUser.IsAuthorizedPerResource(ModuleName.ONLINEMARKETING, "StartProcess") && IsFullContactManagementAvailable()) { drpAction.Items.Add(new ListItem(GetString("ma.automationprocess.select"), Convert.ToInt32(Action.StartNewProcess).ToString())); } } else { if (ControlsHelper.CausedPostBack(btnOk)) { // Set delayed reload for unigrid if mass action is performed gridElem.DelayedReload = true; } } // Initialize contact selector contactSelector.UniSelector.OnItemsSelected += UniSelector_OnItemsSelected; contactSelector.UniSelector.SelectionMode = SelectionModeEnum.MultipleButton; // Register JS scripts RegisterScripts(); } else { StopProcessing = true; } }
/// <summary> /// Checks whether current user can edit a group or not. /// Depends on loaded permissions (else will return false). /// </summary> /// <exception cref="System.ArgumentNullException">Group is null</exception> private bool UserCanManageGroup(ContactGroupInfo group) { if (group == null) { throw new ArgumentNullException("group"); } return group.IsGlobal ? permissions.ModifyGlobalGroup : permissions.ModifyGroup; }
protected void Page_Load(object sender, EventArgs e) { // Get edited object (contact group) if (CMSContext.EditedObject != null) { currentUser = CMSContext.CurrentUser; cgi = (ContactGroupInfo)CMSContext.EditedObject; siteID = cgi.ContactGroupSiteID; // Check permissions readSiteContacts = ContactHelper.AuthorizedReadContact(CMSContext.CurrentSiteID, false); modifySiteContacts = ContactHelper.AuthorizedModifyContact(CMSContext.CurrentSiteID, false); modifySiteCG = ContactGroupHelper.AuthorizedModifyContactGroup(CMSContext.CurrentSiteID, false); if (siteID <= 0) { readGlobalContacts = ContactHelper.AuthorizedReadContact(UniSelector.US_GLOBAL_RECORD, false); modifyGlobalContacts = ContactHelper.AuthorizedModifyContact(UniSelector.US_GLOBAL_RECORD, false); modifyGlobalCG = ContactGroupHelper.AuthorizedModifyContactGroup(UniSelector.US_GLOBAL_RECORD, false); } // Setup unigrid gridElem.WhereCondition = GetWhereCondition(); gridElem.OnAction += new OnActionEventHandler(gridElem_OnAction); gridElem.ZeroRowsText = GetString("om.contact.nocontacts"); gridElem.OnBeforeDataReload += new OnBeforeDataReload(gridElem_OnBeforeDataReload); gridElem.OnExternalDataBound += new OnExternalDataBoundEventHandler(gridElem_OnExternalDataBound); modifyCombined = // Site contact group -> only site Contacts can be added ((siteID > 0) && (modifySiteContacts || modifySiteCG)) // Global contact group -> both site and global Contacts can be added || ((siteID <= 0) && ( // User can display only global Contacts (readGlobalContacts && !readSiteContacts && (modifyGlobalContacts || modifyGlobalCG)) || // User can display only site Contacts (readSiteContacts && !readGlobalContacts && (modifySiteContacts || modifySiteCG)) || // User can display both site and global Contacts (readSiteContacts && readGlobalContacts && (modifySiteCG || modifySiteContacts) && (modifyGlobalCG || modifyGlobalContacts)) )); if (!string.IsNullOrEmpty(cgi.ContactGroupDynamicCondition)) { // Set specific confirmation to remove grid action CMS.UIControls.UniGridConfig.Action removeAction = (CMS.UIControls.UniGridConfig.Action)gridElem.GridActions.Actions[1]; removeAction.Confirmation = "$om.contactgroupmember.confirmremove$"; } // Initialize dropdown lists if (!RequestHelper.IsPostBack()) { // Display mass actions if (modifyCombined) { drpAction.Items.Add(new ListItem(GetString("general." + Action.SelectAction), Convert.ToInt32(Action.SelectAction).ToString())); drpAction.Items.Add(new ListItem(GetString("general.remove"), Convert.ToInt32(Action.Remove).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.contact." + What.Selected), Convert.ToInt32(What.Selected).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.contact." + What.All), Convert.ToInt32(What.All).ToString())); } } else { if (RequestHelper.CausedPostback(btnOk)) { // Set delayed reload for unigrid if mass action is performed gridElem.DelayedReload = true; } } // Initialize contact selector contactSelector.UniSelector.ButtonImage = GetImageUrl("/Objects/OM_Contact/add.png"); contactSelector.UniSelector.DialogImage.CssClass = "NewItemImage"; contactSelector.UniSelector.DialogLink.CssClass = "MenuItemEdit"; contactSelector.UniSelector.OnItemsSelected += UniSelector_OnItemsSelected; contactSelector.UniSelector.SelectionMode = SelectionModeEnum.MultipleButton; // Initialize contact selector processSelector.UniSelector.SelectionMode = SelectionModeEnum.SingleButton; processSelector.UniSelector.ButtonImage = GetImageUrl("/Objects/MA_AutomationState/add.png"); // Check permissions if (WorkflowStepInfoProvider.CanUserStartAutomationProcess(CurrentUser, SiteInfoProvider.GetSiteName(siteID))) { processSelector.UniSelector.SelectionConfirmation = GetString("ma.process.startgroupconfirmation"); processSelector.UniSelector.OnItemsSelected += Process_OnItemsSelected; processSelector.UniSelector.DialogImage.CssClass = "NewItemImage"; processSelector.UniSelector.DialogLink.CssClass = "MenuItemEdit"; processSelector.UniSelector.SetValue("SiteID", siteID); processSelector.IsSiteManager = ContactHelper.IsSiteManager; processSelector.Enabled = true; } else { processSelector.Enabled = false; processSelector.UniSelector.DialogImage.CssClass = "NewItemImageDisabled"; processSelector.UniSelector.DialogLink.CssClass = "MenuItemEditDisabled"; } // Register JS scripts RegisterScripts(); } else { StopProcessing = true; } }
public ContactGroupInfo GenerateContactGroup(string dynamicCondition, string displayName = null, bool global = false) { var contactGroup = new ContactGroupInfo() { ContactGroupDisplayName = displayName ?? "Contact Group #" + Guid.NewGuid(), ContactGroupName = "testCG-" + Guid.NewGuid(), ContactGroupEnabled = true, ContactGroupSiteID = global ? 0 : SiteContext.CurrentSiteID, ContactGroupStatus = ContactGroupStatusEnum.ConditionChanged, ContactGroupDynamicCondition = MacroSecurityProcessor.AddSecurityParameters(dynamicCondition, "administrator", null), }; contactGroup.Insert(); return contactGroup; }
/// <summary> /// Initializes panel with basic info. /// </summary> /// <param name="cgi">Contact group info object</param> /// <param name="forceReload">If TRUE number of group members is reloaded</param> private void InitInfoPanel(ContactGroupInfo cgi, bool forceReload) { if (cgi != null && task != null) { pnlInfo.GroupingText = GetString("om.contactgroup.info"); pnlInfo.Attributes.Add("style", "margin:0 30px;"); // Last evaluation time if (task.TaskLastRunTime != DateTimeHelper.ZERO_TIME) { lblLastEvalValue.Text = task.TaskLastRunTime.ToString(); } else { lblLastEvalValue.Text = GetString("general.na"); } // Display contact group status... switch (cgi.ContactGroupStatus) { case ContactGroupStatusEnum.Rebuilding: // Status and progress if the status is 'Rebuilding' ltrProgress.Text = String.Empty; string buildStr = GetString("om.contactgroup.rebuilding"); ltrProgress.Text = "<img style=\"width:12px;height:12px;\" src=\"" + UIHelper.GetImageUrl(Page, "Design/Preloaders/preload16.gif") + "\" alt=\"" + buildStr + "\" tooltip=\"" + buildStr + "\" />"; lblStatusValue.Text = "<span class=\"StatusDisabled\">" + buildStr + "</span>"; break; case ContactGroupStatusEnum.Ready: // 'Ready' status lblStatusValue.Text = "<span class=\"StatusEnabled\">" + GetString("om.contactgroup.ready") + "</span>"; break; case ContactGroupStatusEnum.ConditionChanged: // 'Condition changed' status lblStatusValue.Text = "<span class=\"StatusDisabled\">" + GetString("om.contactgroup.rebuildrequired") + "</span>"; break; } // Display current number of contacts in the group if (!RequestHelper.IsPostBack() || (cgi.ContactGroupStatus == ContactGroupStatusEnum.Rebuilding) || (DateTime.Now.Subtract(cgi.ContactGroupLastModified).TotalSeconds < 5) || forceReload) { lblNumberOfItemsValue.Text = ContactGroupMemberInfoProvider.GetNumberOfContactsInGroup(cgi.ContactGroupID, true).ToString(); } } }
/// <summary> /// Returns scheduled task of the contact group or creates new one. /// </summary> /// <param name="cgi">Contact group info</param> private TaskInfo GetScheduledTask(ContactGroupInfo cgi) { if (cgi == null) { return null; } if (cgi.ContactGroupScheduledTaskID > 0) { return TaskInfoProvider.GetTaskInfo(ValidationHelper.GetInteger(cgi.ContactGroupScheduledTaskID, 0)) ?? CreateScheduledTask(cgi); } else { return CreateScheduledTask(cgi); } }
/// <summary> /// Creates new scheduled task with basic properties set. /// </summary> /// <param name="cgi">Contact group info</param> private TaskInfo CreateScheduledTask(ContactGroupInfo cgi) { return new TaskInfo() { TaskAssemblyName = "CMS.OnlineMarketing", TaskClass = "CMS.OnlineMarketing.ContactGroupEvaluator", TaskEnabled = true, TaskLastResult = string.Empty, TaskSiteID = cgi.ContactGroupSiteID, TaskData = cgi.ContactGroupID.ToString(), TaskDisplayName = "Contact group '" + cgi.ContactGroupDisplayName + "' rebuild", TaskName = "ContactGroupRebuild_" + cgi.ContactGroupName, TaskType = ScheduledTaskTypeEnum.System }; }
/// <summary> /// Mass operation button "OK" click. /// </summary> protected void btnOk_Click(object sender, EventArgs e) { string resultMessage = string.Empty; // Get where condition depending on mass action selection string where = null; What what = (What)ValidationHelper.GetInteger(drpWhat.SelectedValue, 0); switch (what) { // All items case What.All: where = gridElem.WhereCondition; break; // Selected items case What.Selected: where = SqlHelperClass.GetWhereCondition <int>("ContactID", (string[])gridElem.SelectedItems.ToArray(typeof(string)), false); break; } Action action = (Action)ValidationHelper.GetInteger(drpAction.SelectedItem.Value, 0); switch (action) { // Action 'Change status' case Action.ChangeStatus: // Get selected status ID from hidden field int statusId = ValidationHelper.GetInteger(hdnIdentificator.Value, -1); // If status ID is 0, the status will be removed if (statusId >= 0) { ContactInfoProvider.UpdateContactStatus(statusId, where); resultMessage = GetString("om.contact.massaction.statuschanged"); } break; // Action 'Add to contact group' case Action.AddToGroup: // Get contact group ID from hidden field int groupId = ValidationHelper.GetInteger(hdnIdentificator.Value, 0); if (groupId > 0) { ArrayList contactIds = null; switch (what) { // All items case What.All: // Get selected IDs based on where condition DataSet contacts = ContactInfoProvider.GetContacts(where, null, 0, "ContactID"); if (!DataHelper.DataSourceIsEmpty(contacts)) { // Get array list with IDs contactIds = DataHelper.GetUniqueValues(contacts.Tables[0], "ContactID", true); } break; // Selected items case What.Selected: // Get selected IDs from unigrid contactIds = gridElem.SelectedItems; break; } if (contactIds != null) { int contactId = 0; // Add each selected contact to the contact group, skip contacts that are already members of the group foreach (string item in contactIds) { contactId = ValidationHelper.GetInteger(item, 0); if (contactId > 0) { ContactGroupMemberInfoProvider.SetContactGroupMemberInfo(groupId, contactId, ContactGroupMemberTypeEnum.Contact, MemberAddedHowEnum.Manual); } } // Get contact group to show result message with its display name ContactGroupInfo group = ContactGroupInfoProvider.GetContactGroupInfo(groupId); if (group != null) { resultMessage = String.Format(GetString("om.contact.massaction.addedtogroup"), group.ContactGroupDisplayName); } } } break; // Merge click case Action.Merge: DataSet selectedContacts = ContactHelper.GetContactListInfos(null, where, null, -1, null); if (!DataHelper.DataSourceIsEmpty(selectedContacts)) { // Get selected contact ID from hidden field int contactID = ValidationHelper.GetInteger(hdnIdentificator.Value, -1); // If contact ID is 0 then new contact must be created if (contactID == 0) { int siteID; if (filter.DisplaySiteSelector || filter.DisplayGlobalOrSiteSelector) { siteID = filter.SelectedSiteID; } else { siteID = SiteID; } SetDialogParameters(selectedContacts, ContactHelper.GetNewContact(ContactHelper.MERGED, true, siteID)); } // Selected contact to be merged into else if (contactID > 0) { SetDialogParameters(selectedContacts, ContactInfoProvider.GetContactInfo(contactID)); } OpenWindow(); } break; default: return; } if (!string.IsNullOrEmpty(resultMessage)) { lblInfo.Text = resultMessage; lblInfo.Visible = true; } // Reload unigrid gridElem.ClearSelectedItems(); gridElem.ReloadData(); pnlUpdate.Update(); }
protected void Page_Load(object sender, EventArgs e) { // Get edited object (contact group) if (CMSContext.EditedObject != null) { currentUser = CMSContext.CurrentUser; cgi = (ContactGroupInfo)CMSContext.EditedObject; siteID = cgi.ContactGroupSiteID; // Check permissions readSiteContacts = ContactHelper.AuthorizedReadContact(CMSContext.CurrentSiteID, false); modifySiteContacts = ContactHelper.AuthorizedModifyContact(CMSContext.CurrentSiteID, false); modifySiteCG = ContactGroupHelper.AuthorizedModifyContactGroup(CMSContext.CurrentSiteID, false); if (siteID <= 0) { readGlobalContacts = ContactHelper.AuthorizedReadContact(UniSelector.US_GLOBAL_RECORD, false); modifyGlobalContacts = ContactHelper.AuthorizedModifyContact(UniSelector.US_GLOBAL_RECORD, false); modifyGlobalCG = ContactGroupHelper.AuthorizedModifyContactGroup(UniSelector.US_GLOBAL_RECORD, false); } // Setup unigrid gridElem.WhereCondition = GetWhereCondition(); gridElem.OnAction += new OnActionEventHandler(gridElem_OnAction); gridElem.ZeroRowsText = GetString("om.contact.nocontacts"); gridElem.OnBeforeDataReload += new OnBeforeDataReload(gridElem_OnBeforeDataReload); gridElem.OnExternalDataBound += new OnExternalDataBoundEventHandler(gridElem_OnExternalDataBound); modifyCombined = // Site contact group -> only site Contacts can be added ((siteID > 0) && (modifySiteContacts || modifySiteCG)) // Global contact group -> both site and global Contacts can be added || ((siteID <= 0) && ( // User can display only global Contacts (readGlobalContacts && !readSiteContacts && (modifyGlobalContacts || modifyGlobalCG)) || // User can display only site Contacts (readSiteContacts && !readGlobalContacts && (modifySiteContacts || modifySiteCG)) || // User can display both site and global Contacts (readSiteContacts && readGlobalContacts && (modifySiteCG || modifySiteContacts) && (modifyGlobalCG || modifyGlobalContacts)) )); if (!string.IsNullOrEmpty(cgi.ContactGroupDynamicCondition)) { // Set specific confirmation to remove grid action CMS.UIControls.UniGridConfig.Action removeAction = (CMS.UIControls.UniGridConfig.Action)gridElem.GridActions.Actions[1]; removeAction.Confirmation = "$om.contactgroupmember.confirmremove$"; } // Initialize dropdown lists if (!RequestHelper.IsPostBack()) { // Display mass actions if (modifyCombined) { drpAction.Items.Add(new ListItem(GetString("general." + Action.SelectAction), Convert.ToInt32(Action.SelectAction).ToString())); drpAction.Items.Add(new ListItem(GetString("general.remove"), Convert.ToInt32(Action.Remove).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.contact." + What.Selected), Convert.ToInt32(What.Selected).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.contact." + What.All), Convert.ToInt32(What.All).ToString())); } } else { if (RequestHelper.CausedPostback(btnOk)) { // Set delayed reload for unigrid if mass action is performed gridElem.DelayedReload = true; } } // Initialize contact selector contactSelector.UniSelector.ButtonImage = GetImageUrl("/Objects/OM_Contact/add.png"); contactSelector.ImageDialog.CssClass = "NewItemImage"; contactSelector.UniSelector.OnItemsSelected += new EventHandler(UniSelector_OnItemsSelected); contactSelector.UniSelector.SelectionMode = SelectionModeEnum.MultipleButton; // Register JS scripts RegisterScripts(); } else { this.StopProcessing = true; } }
protected void Page_Load(object sender, EventArgs e) { // Get edited object (contact group) if (CMSContext.EditedObject != null) { currentUser = CMSContext.CurrentUser; cgi = (ContactGroupInfo)CMSContext.EditedObject; siteID = cgi.ContactGroupSiteID; // Check permissions readSiteAccounts = AccountHelper.AuthorizedReadAccount(CMSContext.CurrentSiteID, false); modifySiteAccounts = AccountHelper.AuthorizedModifyAccount(CMSContext.CurrentSiteID, false); modifySiteCG = ContactGroupHelper.AuthorizedModifyContactGroup(CMSContext.CurrentSiteID, false); if (siteID <= 0) { readGlobalAccounts = AccountHelper.AuthorizedReadAccount(UniSelector.US_GLOBAL_RECORD, false); modifyGlobalAccounts = AccountHelper.AuthorizedModifyAccount(UniSelector.US_GLOBAL_RECORD, false); modifyGlobalCG = ContactGroupHelper.AuthorizedModifyContactGroup(UniSelector.US_GLOBAL_RECORD, false); } // Setup unigrid gridElem.WhereCondition = GetWhereCondition(); gridElem.OnAction += new OnActionEventHandler(gridElem_OnAction); gridElem.ZeroRowsText = GetString("om.account.noaccountsfound"); gridElem.OnBeforeDataReload += new OnBeforeDataReload(gridElem_OnBeforeDataReload); gridElem.OnExternalDataBound += new OnExternalDataBoundEventHandler(gridElem_OnExternalDataBound); modifyCombined = // Site contact group -> only site accounts can be added ((siteID > 0) && (modifySiteAccounts || modifySiteCG)) // Global contact group -> both site and global accounts can be added || ((siteID <= 0) && ( // User can display only global accounts (readGlobalAccounts && !readSiteAccounts && (modifyGlobalAccounts || modifyGlobalCG)) || // User can display only site accounts (readSiteAccounts && !readGlobalAccounts && (modifySiteAccounts || modifySiteCG)) || // User can display both site and global accounts (readSiteAccounts && readGlobalAccounts && (modifySiteCG || modifySiteAccounts) && (modifyGlobalCG || modifyGlobalAccounts)) )); // Initialize dropdown lists if (!RequestHelper.IsPostBack()) { // Display mass actions if (modifyCombined) { drpAction.Items.Add(new ListItem(GetString("general." + Action.SelectAction), Convert.ToInt32(Action.SelectAction).ToString())); drpAction.Items.Add(new ListItem(GetString("general.remove"), Convert.ToInt32(Action.Remove).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.account." + What.Selected), Convert.ToInt32(What.Selected).ToString())); drpWhat.Items.Add(new ListItem(GetString("om.account." + What.All), Convert.ToInt32(What.All).ToString())); } } else { if (RequestHelper.CausedPostback(btnOk)) { // Set delayed reload for unigrid if mass action is performed gridElem.DelayedReload = true; } } // Initialize contact selector accountSelector.UniSelector.ButtonImage = GetImageUrl("/Objects/OM_Account/add.png"); accountSelector.UniSelector.DialogImage.CssClass = "NewItemImage"; accountSelector.UniSelector.DialogLink.CssClass = "MenuItemEdit"; accountSelector.UniSelector.DialogLabel.ResourceString = "om.account.addaccount"; accountSelector.UniSelector.OnItemsSelected += new EventHandler(UniSelector_OnItemsSelected); accountSelector.UniSelector.SelectionMode = SelectionModeEnum.MultipleButton; // Register JS scripts RegisterScripts(); } else { StopProcessing = true; } }