using System;
using System.Data;
using System.Web.UI.WebControls;
using CMS.UIControls;
using CMS.SettingsProvider;
using CMS.WorkflowEngine;
using CMS.GlobalHelper;
using CMS.OnlineMarketing;
using CMS.SiteProvider;
using CMS.CMSHelper;
public partial class CMSModules_ContactManagement_Controls_UI_Automation_Contacts : CMSAdminEditControl
{
#region "Public properties"
///
/// Gets or sets current identifier.
///
public int ProcessID
{
get;
set;
}
///
/// Gets or sets current site id.
///
public int SiteID
{
get;
set;
}
#endregion
#region "Page events"
protected void Page_Load(object sender, EventArgs e)
{
if (!StopProcessing)
{
SetupControl();
}
else
{
listElem.StopProcessing = true;
}
}
///
/// Setup control.
///
private void SetupControl()
{
// Show site column only for these two values from selector
if ((SiteID != UniSelector.US_GLOBAL_OR_SITE_RECORD) && (SiteID != UniSelector.US_ALL_RECORDS))
{
// Site column
listElem.GridColumns.Columns[5].Visible = false;
}
listElem.EditActionUrl += "&siteid=" + SiteID;
if (ProcessID > 0)
{
listElem.WhereCondition = "(StateWorkflowID = " + ProcessID + ") ";
}
// Prepare site filtering
string siteCondition = "AND (StateSiteID {0})";
switch (SiteID)
{
case UniSelector.US_GLOBAL_RECORD:
siteCondition = String.Format(siteCondition, "IS NULL");
break;
case UniSelector.US_GLOBAL_OR_SITE_RECORD:
siteCondition = String.Format(siteCondition, "IS NULL OR StateSiteID = " + CurrentSite.SiteID);
break;
case UniSelector.US_ALL_RECORDS:
siteCondition = String.Empty;
break;
default:
siteCondition = String.Format(siteCondition, "= " + SiteID);
break;
}
listElem.WhereCondition += siteCondition;
listElem.OnExternalDataBound += listElem_OnExternalDataBound;
listElem.RememberStateByParam = String.Empty;
// Register scripts for contact details dialog
ScriptHelper.RegisterDialogScript(Page);
ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "ViewContactDetails", ScriptHelper.GetScript(
"function Refresh() {" +
"__doPostBack('" + this.ClientID + @"', '');" +
"}" +
"function viewContactDetails(contactId) {" +
" modalDialog('" + URLHelper.ResolveUrl("~/CMSModules/ContactManagement/Pages/Tools/Account/Contact_Detail.aspx") + "?isSiteManager=" + ContactHelper.IsSiteManager + "&contactId=' + contactId, 'ViewContactDetails', '1024', '700');" +
"}"));
}
protected object listElem_OnExternalDataBound(object sender, string sourceName, object parameter)
{
switch (sourceName.ToLowerCSafe())
{
// Delete action
case "delete":
int siteId = SiteID;
if (SiteID == UniSelector.US_GLOBAL_OR_SITE_RECORD)
{
DataRowView drv = (parameter as GridViewRow).DataItem as DataRowView;
int contactSiteId = ValidationHelper.GetInteger(drv["StateSiteID"], 0);
if (contactSiteId > 0)
{
siteId = contactSiteId;
}
}
ImageButton btn = (ImageButton)sender;
btn.OnClientClick = "if(!confirm(" + ScriptHelper.GetString(string.Format(ResHelper.GetString("autoMenu.RemoveStateConfirmation"), HTMLHelper.HTMLEncode(ResHelper.GetString(TypeHelper.GetObjectTypeResourceKey(PredefinedObjectType.CONTACT)).ToLowerCSafe()))) + ")) { return false; }";
if (!WorkflowStepInfoProvider.CanUserRemoveAutomationProcess(CurrentUser, SiteInfoProvider.GetSiteName(siteId)))
{
if (btn != null)
{
btn.Enabled = false;
btn.Attributes.Add("src", GetImageUrl("Design/Controls/UniGrid/Actions/DeleteDisabled.png"));
}
}
break;
// Process status column
case "statestatus":
return AutomationHelper.GetProcessStatus((ProcessStatusEnum)ValidationHelper.GetInteger(parameter, 0));
}
return null;
}
#endregion
#region "Methods"
///
/// Reloads data in listing.
///
/// Whether to force complete reload
public override void ReloadData(bool forceReload)
{
listElem.ReloadData();
}
#endregion
}