using System; using System.Data; using System.Web.UI.WebControls; using System.Collections.Generic; using CMS.CMSHelper; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.SiteProvider; using CMS.UIControls; using CMS.WorkflowEngine; using CMS.FormControls; using CMS.ExtendedControls; public partial class CMSModules_Automation_Controls_Process_List : CMSUserControl { #region "Private variables" // Contact site id private int contactSiteId = 0; #endregion #region "Properties" /// /// Type of object of states in list. /// public string ObjectType { get; set; } /// /// ID of object of states in list. /// public int ObjectID { get; set; } /// /// Item edit URL /// public string EditActionUrl { get; set; } /// /// Uni grid /// public UniGrid UniGrid { get { return gridState; } } #endregion #region "Page events" protected override void OnInit(EventArgs e) { base.OnInit(e); gridState.OnExternalDataBound += gridState_OnExternalDataBound; gridState.OnAction += gridState_OnAction; } protected void Page_Load(object sender, EventArgs e) { gridState.WhereCondition = String.Format("StateObjectID = {0} AND StateObjectType = '{1}'", ObjectID, SqlHelperClass.GetSafeQueryString(ObjectType)); gridState.EditActionUrl = EditActionUrl; BaseInfo contact = BaseAbstractInfoProvider.GetInfoById(PredefinedObjectType.CONTACT, ObjectID); if (contact != null) { contactSiteId = contact.Generalized.ObjectSiteID; } } #endregion #region "Grid events" private void gridState_OnAction(string actionName, object actionArgument) { switch (actionName.ToLowerCSafe()) { case "delete": int stateId = ValidationHelper.GetInteger(actionArgument, 0); AutomationManager manager = AutomationManager.GetInstance(CurrentUser); var obj = CMSObjectHelper.GetObjectById(ObjectType, ObjectID); var state = AutomationStateInfoProvider.GetAutomationStateInfo(stateId); manager.RemoveProcess(obj, state); break; } } /// /// External history binding. /// protected object gridState_OnExternalDataBound(object sender, string sourceName, object parameter) { switch (sourceName.ToLowerCSafe()) { case "stepname": return HTMLHelper.HTMLEncode(GetStep(parameter).StepDisplayName); case "processname": return HTMLHelper.HTMLEncode(GetProcess(parameter).WorkflowDisplayName); case "status": return AutomationHelper.GetProcessStatus((ProcessStatusEnum)ValidationHelper.GetInteger(parameter, 0)); case "delete": 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(contactSiteId))) { btn.Enabled = false; btn.Attributes.Add("src", GetImageUrl("Design/Controls/UniGrid/Actions/DeleteDisabled.png")); } break; } return parameter; } #endregion #region "Methods" /// /// Returns step info. /// /// Step ID /// Step info object private WorkflowStepInfo GetStep(object id) { int stepId = ValidationHelper.GetInteger(id, 0); return WorkflowStepInfoProvider.GetWorkflowStepInfo(stepId); } /// /// Returns process info. /// /// Process ID /// Workflow info object private WorkflowInfo GetProcess(object id) { int workflowID = ValidationHelper.GetInteger(id, 0); return WorkflowInfoProvider.GetWorkflowInfo(workflowID); } #endregion }