using System; using System.Data; using System.Collections; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.OnlineMarketing; using CMS.SettingsProvider; using CMS.UIControls; public partial class CMSModules_ContactManagement_Controls_UI_ContactGroup_List : CMSAdminListControl { #region "Variables" private int mSiteId = -1; private string mWhereCondition = null; private bool? mModifyGroupPermission; #endregion #region "Properties" /// /// Gets permission for modifying a group. /// protected bool ModifyGroupPermission { get { return (bool)(mModifyGroupPermission ?? (mModifyGroupPermission = ContactGroupHelper.AuthorizedModifyContactGroup(SiteID, false))); } } /// /// Inner grid. /// public UniGrid Grid { get { return gridElem; } } /// /// Indicates if the control should perform the operations. /// public override bool StopProcessing { get { return base.StopProcessing; } set { base.StopProcessing = value; gridElem.StopProcessing = value; } } /// /// Indicates if the control is used on the live site. /// public override bool IsLiveSite { get { return base.IsLiveSite; } set { base.IsLiveSite = value; gridElem.IsLiveSite = value; } } /// /// Gets or sets the site id. /// public int SiteID { get { return mSiteId; } set { mSiteId = value; } } /// /// Additional WHERE condition to filter data. /// public string WhereCondition { get { return mWhereCondition; } set { mWhereCondition = value; } } #endregion #region "Page events" protected void Page_Load(object sender, EventArgs e) { // Setup unigrid gridElem.OnAction += new OnActionEventHandler(gridElem_OnAction); gridElem.WhereCondition = GetWhereCondition(); gridElem.WhereCondition = SqlHelperClass.AddWhereCondition(gridElem.WhereCondition, WhereCondition); gridElem.EditActionUrl = "Frameset.aspx?groupId={0}&siteId=" + SiteID; gridElem.ZeroRowsText = GetString("om.contactgroup.notfound"); gridElem.OnBeforeDataReload += new OnBeforeDataReload(gridElem_OnBeforeDataReload); gridElem.OnExternalDataBound += new OnExternalDataBoundEventHandler(gridElem_OnExternalDataBound); if (ContactHelper.IsSiteManager) { gridElem.EditActionUrl = URLHelper.AddParameterToUrl(gridElem.EditActionUrl, "issitemanager", "1"); } } private object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter) { ImageButton btn = null; switch (sourceName.ToLowerCSafe()) { case "delete": if (!ModifyGroupPermission) { btn = (ImageButton)sender; btn.Enabled = false; btn.Attributes.Add("src", GetImageUrl("Design/Controls/UniGrid/Actions/DeleteDisabled.png")); } break; } return null; } #endregion #region "Events" /// /// Unigrid OnBeforeDataReload event handler. /// private void gridElem_OnBeforeDataReload() { gridElem.NamedColumns["sitename"].Visible = (SiteID == UniSelector.US_GLOBAL_OR_SITE_RECORD) || (SiteID == UniSelector.US_ALL_RECORDS); } /// /// Unigrid button clicked. /// 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); } } } #endregion #region "Methods" /// /// Returns where condition for unigrid. /// protected string GetWhereCondition() { string result = null; // Filter site objects if (SiteID > 0) { result = "(ContactGroupSiteID = " + SiteID.ToString() + ")"; } // Filter only global objects else if (SiteID == UniSelector.US_GLOBAL_RECORD) { result = "(ContactGroupSiteID IS NULL)"; } else if (SiteID == UniSelector.US_GLOBAL_OR_SITE_RECORD) { result = "(ContactGroupSiteID IS NULL) OR (ContactGroupSiteID = " + CMSContext.CurrentSiteID + ")"; } return result; } #endregion }