Ejemplo n.º 1
0
        private void CommandDatasourceItem(string message, Item componentItem, CommandRenderingDatasourceOptions options)
        {
            var workflow = componentItem.State.GetWorkflow();

            if (!ItemInExpectedWorkflowState(componentItem, workflow, options))
            {
                return;
            }

            workflow.Execute(options.CommandId.ToString(), componentItem, message, false);
        }
Ejemplo n.º 2
0
        protected virtual CommandRenderingDatasourceOptions BuildOptions(NameValueCollection parameters)
        {
            var options = new CommandRenderingDatasourceOptions();

            ComponentWorkflowAction type;

            options.Type = Enum.TryParse(parameters["type"], true, out type) ? type : ComponentWorkflowAction.Approve;

            if (string.IsNullOrWhiteSpace(parameters["commandid"]) || !ID.IsID(parameters["commandid"]))
            {
                switch (options.Type)
                {
                case ComponentWorkflowAction.Submit:
                    options.CommandId = WorkflowIDs.SubmitCommand;
                    break;

                case ComponentWorkflowAction.Reject:
                    options.CommandId = WorkflowIDs.RejectCommand;
                    break;

                case ComponentWorkflowAction.Approve:
                    options.CommandId = WorkflowIDs.ApproveCommand;
                    break;

                default:
                    options.CommandId = ID.Null;
                    break;
                }
            }
            else
            {
                options.CommandId = ID.Parse(parameters["commandid"]);
            }

            if (!string.IsNullOrWhiteSpace(parameters["workflowid"]) && ID.IsID(parameters["workflowid"]))
            {
                options.WorkflowId = ID.Parse(parameters["workflowid"]);
            }
            else
            {
                options.WorkflowId = WorkflowIDs.RelatedItemWorkflow;
            }

            return(options);
        }
Ejemplo n.º 3
0
        protected virtual bool ItemInExpectedWorkflowState(Item componentItem, IWorkflow workflow, CommandRenderingDatasourceOptions options)
        {
            if (workflow == null || workflow.WorkflowID != options.WorkflowId.ToString())
            {
                return(false);
            }

            var workflowState = componentItem.State.GetWorkflowState();

            if (workflowState == null || workflowState.FinalState)
            {
                return(false);
            }

            var commandItem = componentItem.Database.GetItem(options.CommandId);

            return(commandItem != null && commandItem.Parent.ParentID == options.WorkflowId);
        }