HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/RMourik/bassol.nl/CMS/CMSModules/Automation/Controls/Comment.ascx.cs
using System;
using System.Web;
using System.Text;
using System.Collections.Generic;
using System.Web.UI.WebControls;

using CMS.Automation;
using CMS.UIControls;
using CMS.WorkflowEngine;
using CMS.Helpers;
using CMS.Base;
using CMS.WorkflowEngine.Definitions;
using CMS.FormControls;
using CMS.ExtendedControls;
using CMS.DataEngine;

public partial class CMSModules_Automation_Controls_Comment : CMSUserControl
{
    #region "Variables"

    private CMSAutomationManager mAutomationManager = null;

    #endregion


    #region "Properties"

    /// <summary>
    /// Action
    /// </summary>
    public string ActionName
    {
        get;
        set;
    }


    /// <summary>
    /// Menu ID
    /// </summary>
    public string MenuID
    {
        get;
        set;
    }


    /// <summary>
    /// Automation manager control
    /// </summary>
    public CMSAutomationManager AutomationManager
    {
        get
        {
            if (mAutomationManager == null)
            {
                mAutomationManager = ControlsHelper.GetChildControl(Page, typeof(CMSAutomationManager)) as CMSAutomationManager;
                if (mAutomationManager == null)
                {
                    throw new Exception("[AutomationMenu.AutomationManager]: Missing automation manager.");
                }
            }

            return mAutomationManager;
        }
    }


    private AutomationManager Manager
    {
        get
        {
            return AutomationManager.Manager;
        }
    }


    private BaseInfo InfoObject
    {
        get
        {
            return AutomationManager.InfoObject;
        }
    }

    #endregion


    #region "Methods"

    protected void Page_Load(object sender, EventArgs e)
    {
        // Check permissions
        if (AutomationManager.IsActionAllowed(ActionName))
        {
            InitControls();
        }
        else
        {
            Visible = false;
        }
    }


    private void InitControls()
    {
        // Init list of steps
        switch (ActionName)
        {
            case ComponentEvents.AUTOMATION_MOVE_NEXT:
            case ComponentEvents.AUTOMATION_MOVE_SPEC:
            case ComponentEvents.AUTOMATION_MOVE_PREVIOUS:
                if (!InitSteps())
                {
                    ShowError("doc.nosteps");
                    pnlContainer.Visible = false;
                    return;
                }
                break;
        }

        RegisterActionScript();
    }


    private void RegisterActionScript()
    {
        string menuId = ValidationHelper.GetIdentifier(MenuID);

        // Get js functions
        string nextStr = "MoveNext_" + menuId;
        string specStr = "MoveSpecific_" + menuId;
        string previousStr = "MovePrevious_" + menuId;
        string consStr = "CheckConsistency_" + menuId;


        StringBuilder sb = new StringBuilder();
        sb.Append(@"
function ProcessAction(action) { 
    var comment = document.getElementById('", txtComment.ClientID, @"').value;
    var param = 0;
    var drpEl = document.getElementById('", drpSteps.ClientID, @"');
    if(drpEl != null) { 
        param = drpEl.value; 
    }

    switch(action) {
        case '", ComponentEvents.AUTOMATION_MOVE_NEXT, @"':
            if(wopener.", nextStr, @") { wopener.", nextStr, @"(param, comment); } else { wopener.", consStr, @"(); }
        break;

        case '", ComponentEvents.AUTOMATION_MOVE_SPEC, @"':
            if(wopener.", nextStr, @") { wopener.", specStr, @"(param, comment); } else { wopener.", consStr, @"(); }
        break;

        case '", ComponentEvents.AUTOMATION_MOVE_PREVIOUS, @"':
            if(wopener.", previousStr, @") { wopener.", previousStr, @"(param, comment); } else { wopener.", consStr, @"(); }
        break;
    }
}"
);
        ScriptHelper.RegisterClientScriptBlock(Page, typeof(string), "action", sb.ToString(), true);
    }


    private bool InitSteps()
    {
        if (AutomationManager.InfoObject == null)
        {
            return false;
        }

        bool displayDDL = false;
        List<WorkflowStepInfo> steps = null;
        int stepsCount = 0;

        switch (ActionName)
        {
            case ComponentEvents.AUTOMATION_MOVE_NEXT:
                steps = Manager.GetNextSteps(InfoObject, AutomationManager.StateObject);
                stepsCount = steps.Count;

                if (stepsCount == 0)
                {
                    return false;
                }

                if (stepsCount > 1)
                {
                    // Add all next steps
                    foreach (var step in steps)
                    {
                        drpSteps.Items.Add(new ListItem(GetActionText(AutomationManager.Step, step), step.StepID.ToString()));
                    }
                }

                displayDDL = (drpSteps.Items.Count > 0);
                break;

            case ComponentEvents.AUTOMATION_MOVE_SPEC:
                var allSteps = WorkflowStepInfoProvider.GetWorkflowSteps()
                    .Where("StepWorkflowID=" + AutomationManager.StateObject.StateWorkflowID + " AND StepType <> " + (int)WorkflowStepTypeEnum.Start)
                    .OrderBy("StepDisplayName");

                // Add all steps
                foreach (var step in allSteps)
                {
                    drpSteps.Items.Add(new ListItem(GetActionText(AutomationManager.Step, step), step.StepID.ToString()));
                }

                displayDDL = true;
                break;

            case ComponentEvents.AUTOMATION_MOVE_PREVIOUS:
                if (WorkflowStepInfoProvider.CanUserManageAutomationProcesses(CurrentUser, InfoObject.Generalized.ObjectSiteName))
                {
                    steps = Manager.GetPreviousSteps(InfoObject, AutomationManager.StateObject);
                    foreach (var step in steps)
                    {
                        drpSteps.Items.Add(new ListItem(GetActionText(AutomationManager.Step, step), step.RelatedHistoryID.ToString()));
                    }
                }

                displayDDL = (drpSteps.Items.Count > 1);
                break;
        }

        plcSteps.Visible = displayDDL;

        return true;
    }


    private string GetActionText(WorkflowStepInfo currentStep, WorkflowStepInfo nextStep)
    {
        string text = ResHelper.LocalizeString(nextStep.StepDisplayName);
        WorkflowTransitionInfo transition = nextStep.RelatedTransition;
        SourcePoint def = (transition != null) ? currentStep.GetSourcePoint(transition.TransitionSourcePointGUID) : null;
        if (def != null)
        {
            if (!string.IsNullOrEmpty(def.Text))
            {
                text = string.Format(ResHelper.LocalizeString(def.Text), text);
            }
        }

        return text;
    }

    #endregion
}