コード例 #1
0
ファイル: WorkboxForm.cs プロジェクト: NTTDATA/CWC
 /// <summary>
 /// Displays the states.
 /// </summary>
 /// <param name="workflow">
 /// The workflow.
 /// </param>
 /// <param name="placeholder">
 /// The placeholder.
 /// </param>
 protected virtual void DisplayStates(IWorkflow workflow, XmlControl placeholder)
 {
     string str;
     Assert.ArgumentNotNull(workflow, "workflow");
     Assert.ArgumentNotNull(placeholder, "placeholder");
     this.stateNames = null;
     WorkflowState[] states = workflow.GetStates();
     for (int i = 0; i < (int)states.Length; i++)
     {
         WorkflowState workflowState = states[i];
         WorkflowCommand[] workflowCommandArray = WorkflowFilterer.FilterVisibleCommands(workflow.GetCommands(workflowState.StateID));
         if ((int)workflowCommandArray.Length > 0)
         {
             DataUri[] items = this.GetItems(workflowState, workflow);
             Assert.IsNotNull(items, "items is null");
             string str1 = string.Concat(ShortID.Encode(workflow.WorkflowID), "_", ShortID.Encode(workflowState.StateID));
             Section section = new Section();
             section.ID = string.Concat(str1, "_section");
             Section icon = section;
             placeholder.AddControl(icon);
             int length = (int)items.Length;
             if (length > 0)
             {
                 str = (length != 1 ? string.Format("{0} {1}", length, Translate.Text("items")) : string.Format("1 {0}", Translate.Text("item")));
             }
             else
             {
                 str = "none";
             }
             str = string.Format("<span style=\"font-weight:normal\"> - ({0})</span>", str);
             icon.Header = string.Concat(workflowState.DisplayName, str);
             icon.Icon = workflowState.Icon;
             if (Settings.ClientFeeds.Enabled)
             {
                 FeedUrlOptions feedUrlOption = new FeedUrlOptions("/sitecore/shell/~/feed/workflowstate.aspx");
                 feedUrlOption.UseUrlAuthentication = true;
                 FeedUrlOptions workflowID = feedUrlOption;
                 workflowID.Parameters["wf"] = workflow.WorkflowID;
                 workflowID.Parameters["st"] = workflowState.StateID;
                 icon.FeedLink = workflowID.ToString();
             }
             icon.Collapsed = length <= 0;
             Border border = new Border();
             icon.Controls.Add(border);
             border.ID = string.Concat(str1, "_content");
             this.DisplayState(workflow, workflowState, items, border, 0, this.PageSize);
             this.CreateNavigator(icon, string.Concat(str1, "_navigator"), length);
         }
     }
 }
コード例 #2
0
ファイル: WorkboxForm.cs プロジェクト: NTTDATA/CWC
 /// <summary>
 /// Creates the item.
 /// </summary>
 /// <param name="workflow">
 /// The workflow.
 /// </param>
 /// <param name="item">
 /// The item.
 /// </param>
 /// <param name="control">
 /// The control.
 /// </param>
 private void CreateItem(IWorkflow workflow, Item item, System.Web.UI.Control control)
 {
     Assert.ArgumentNotNull(workflow, "workflow");
     Assert.ArgumentNotNull(item, "item");
     Assert.ArgumentNotNull(control, "control");
     XmlControl webControl = Resource.GetWebControl("WorkboxItem") as XmlControl;
     Assert.IsNotNull(webControl, "workboxItem is null");
     control.Controls.Add(webControl);
     StringBuilder stringBuilder = new StringBuilder(" - (");
     Language language = item.Language;
     stringBuilder.Append(language.CultureInfo.DisplayName);
     stringBuilder.Append(", ");
     stringBuilder.Append(Translate.Text("version"));
     stringBuilder.Append(' ');
     stringBuilder.Append(item.Version.ToString());
     stringBuilder.Append(")");
     Assert.IsNotNull(webControl, "workboxItem");
     webControl["Header"] = item.DisplayName;
     webControl["Details"] = stringBuilder.ToString();
     webControl["Icon"] = item.Appearance.Icon;
     webControl["ShortDescription"] = item.Help.ToolTip;
     webControl["History"] = this.GetHistory(workflow, item);
     webControl["HistoryMoreID"] = Sitecore.Web.UI.HtmlControls.Control.GetUniqueID("ctl");
     object[] d = new object[] { "workflow:showhistory(id=", item.ID, ",la=", item.Language.Name, ",vs=", item.Version, ",wf=", workflow.WorkflowID, ")" };
     webControl["HistoryClick"] = string.Concat(d);
     object[] objArray = new object[] { "Preview(\"", item.ID, "\", \"", item.Language, "\", \"", item.Version, "\")" };
     webControl["PreviewClick"] = string.Concat(objArray);
     object[] d1 = new object[] { "Open(\"", item.ID, "\", \"", item.Language, "\", \"", item.Version, "\")" };
     webControl["Click"] = string.Concat(d1);
     object[] objArray1 = new object[] { "Diff(\"", item.ID, "\", \"", item.Language, "\", \"", item.Version, "\")" };
     webControl["DiffClick"] = string.Concat(objArray1);
     webControl["Display"] = "none";
     string uniqueID = Sitecore.Web.UI.HtmlControls.Control.GetUniqueID(string.Empty);
     webControl["CheckID"] = string.Concat("check_", uniqueID);
     webControl["HiddenID"] = string.Concat("hidden_", uniqueID);
     object[] d2 = new object[] { item.ID, ",", item.Language, ",", item.Version };
     webControl["CheckValue"] = string.Concat(d2);
     WorkflowCommand[] workflowCommandArray = WorkflowFilterer.FilterVisibleCommands(workflow.GetCommands(item));
     for (int i = 0; i < (int)workflowCommandArray.Length; i++)
     {
         WorkflowCommand workflowCommand = workflowCommandArray[i];
         this.CreateCommand(workflow, workflowCommand, item, webControl);
     }
 }
コード例 #3
0
 protected virtual void DisplayState(IWorkflow workflow, WorkflowState state, DataUri[] items, Control control, int offset, int pageSize)
 {
     if (items.Length > 0)
     {
         int length = offset + pageSize;
         if (length > items.Length)
         {
             length = items.Length;
         }
         for (int i = offset; i < length; i++)
         {
             DataUri uri  = items[i];
             Item    item = Context.ContentDatabase.Items[uri];
             if (item != null)
             {
                 this.CreateItem(workflow, item, control);
             }
         }
         Border child = new Border
         {
             Background = "#e9e9e9"
         };
         control.Controls.Add(child);
         child.Margin  = "0px 4px 0px 16px";
         child.Padding = "2px 8px 2px 8px";
         child.Border  = "1px solid #999999";
         foreach (WorkflowCommand command in WorkflowFilterer.FilterVisibleCommands(workflow.GetCommands(state.StateID)))
         {
             XmlControl webControl = Resource.GetWebControl("WorkboxCommand") as XmlControl;
             webControl["Header"]  = command.DisplayName + " " + Translate.Text("(selected)");
             webControl["Icon"]    = command.Icon;
             webControl["Command"] = "workflow:sendselected(command=" + command.CommandID + ",ws=" + state.StateID + ",wf=" + workflow.WorkflowID + ")";
             child.Controls.Add(webControl);
             webControl            = Resource.GetWebControl("WorkboxCommand") as XmlControl;
             webControl["Header"]  = command.DisplayName + " " + Translate.Text("(all)");
             webControl["Icon"]    = command.Icon;
             webControl["Command"] = "workflow:sendall(command=" + command.CommandID + ",ws=" + state.StateID + ",wf=" + workflow.WorkflowID + ")";
             child.Controls.Add(webControl);
         }
     }
 }
コード例 #4
0
ファイル: WorkboxForm.cs プロジェクト: NTTDATA/CWC
 /// <summary>
 /// Displays the state.
 /// </summary>
 /// <param name="workflow">
 /// The workflow.
 /// </param>
 /// <param name="state">
 /// The state.
 /// </param>
 /// <param name="items">
 /// The items.
 /// </param>
 /// <param name="control">
 /// The control.
 /// </param>
 /// <param name="offset">
 /// The offset.
 /// </param>
 /// <param name="pageSize">
 /// Size of the page.
 /// </param>
 protected virtual void DisplayState(IWorkflow workflow, WorkflowState state, DataUri[] items, System.Web.UI.Control control, int offset, int pageSize)
 {
     Assert.ArgumentNotNull(workflow, "workflow");
     Assert.ArgumentNotNull(state, "state");
     Assert.ArgumentNotNull(items, "items");
     Assert.ArgumentNotNull(control, "control");
     if ((int)items.Length > 0)
     {
         int length = offset + pageSize;
         if (length > (int)items.Length)
         {
             length = (int)items.Length;
         }
         for (int i = offset; i < length; i++)
         {
             DataUri dataUri = items[i];
             Item item = Context.ContentDatabase.Items[dataUri];
             if (item != null)
             {
                 this.CreateItem(workflow, item, control);
             }
         }
         Border border = new Border();
         border.Background = "#e9e9e9";
         Border border1 = border;
         control.Controls.Add(border1);
         border1.Margin = "0px 4px 0px 16px";
         border1.Padding = "2px 8px 2px 8px";
         border1.Border = "1px solid #999999";
         WorkflowCommand[] workflowCommandArray = WorkflowFilterer.FilterVisibleCommands(workflow.GetCommands(state.StateID));
         for (int j = 0; j < (int)workflowCommandArray.Length; j++)
         {
             WorkflowCommand workflowCommand = workflowCommandArray[j];
             XmlControl webControl = Resource.GetWebControl("WorkboxCommand") as XmlControl;
             Assert.IsNotNull(webControl, "workboxCommand is null");
             webControl["Header"] = string.Concat(workflowCommand.DisplayName, " ", Translate.Text("(selected)"));
             webControl["Icon"] = workflowCommand.Icon;
             string[] commandID = new string[] { "workflow:sendselected(command=", workflowCommand.CommandID, ",ws=", state.StateID, ",wf=", workflow.WorkflowID, ")" };
             webControl["Command"] = string.Concat(commandID);
             border1.Controls.Add(webControl);
             webControl = Resource.GetWebControl("WorkboxCommand") as XmlControl;
             Assert.IsNotNull(webControl, "workboxCommand is null");
             webControl["Header"] = string.Concat(workflowCommand.DisplayName, " ", Translate.Text("(all)"));
             webControl["Icon"] = workflowCommand.Icon;
             string[] strArrays = new string[] { "workflow:sendall(command=", workflowCommand.CommandID, ",ws=", state.StateID, ",wf=", workflow.WorkflowID, ")" };
             webControl["Command"] = string.Concat(strArrays);
             border1.Controls.Add(webControl);
         }
     }
 }
コード例 #5
0
        /// <summary>Executes the command in the specified context.</summary>
        /// <param name="context">The context.</param>
        public override void Execute(CommandContext context)
        {
            Assert.ArgumentNotNull((object)context, nameof(context));
            string   parameter1 = context.Parameters["database"];
            string   parameter2 = context.Parameters["id"];
            string   parameter3 = context.Parameters["language"];
            string   parameter4 = context.Parameters["version"];
            Database database   = Factory.GetDatabase(parameter1);

            if (database == null)
            {
                return;
            }
            Item obj = database.GetItem(parameter2, Language.Parse(parameter3), Sitecore.Data.Version.Parse(parameter4));

            if (obj == null)
            {
                return;
            }
            IWorkflow workflow = obj.Database.WorkflowProvider.GetWorkflow(obj);

            if (workflow == null)
            {
                return;
            }
            WorkflowCommand[] workflowCommandArray = WorkflowFilterer.FilterVisibleCommands(workflow.GetCommands(obj), obj);
            if (workflowCommandArray == null || workflowCommandArray.Length == 0)
            {
                return;
            }
            Menu menu = new Menu();

            SheerResponse.DisableOutput();
            foreach (WorkflowCommand command in workflowCommandArray)
            {
                string click = new WorkflowCommandBuilder(obj, workflow, command).ToString();
                //Add new logical condition to call canUserRunCommandsWithoutEdit() in Utilities class to check if user has permissions to execute
                //workflow commands without locking. The rest of the conditions are same as in default class
                menu.Add("C" + command.CommandID, command.DisplayName, command.Icon, string.Empty, click, false, string.Empty, MenuItemType.Normal).Disabled
                    = !Utilities.canUserRunCommandsWithoutLocking() && !Context.User.IsAdministrator && !obj.Locking.HasLock() && Settings.RequireLockBeforeEditing;
            }
            SheerResponse.EnableOutput();
            SheerResponse.ShowContextMenu(Context.ClientPage.ClientRequest.Control, "right", (Control)menu);
        }
コード例 #6
0
 private void CreateItem(IWorkflow workflow, Item item, Control control)
 {
     XmlControl webControl = Resource.GetWebControl("WorkboxItem") as XmlControl;
     control.Controls.Add(webControl);
     StringBuilder builder = new StringBuilder(" - (");
     Language language = item.Language;
     builder.Append(language.CultureInfo.DisplayName);
     builder.Append(", ");
     builder.Append(Translate.Text("version"));
     builder.Append(' ');
     builder.Append(item.Version.ToString());
     builder.Append(")");
     Assert.IsNotNull(webControl, "workboxItem");
     webControl["Header"] = item.DisplayName;
     webControl["Details"] = builder.ToString();
     webControl["Icon"] = item.Appearance.Icon;
     webControl["ShortDescription"] = item.Help.ToolTip;
     webControl["History"] = this.GetHistory(workflow, item);
     webControl["HistoryMoreID"] = Control.GetUniqueID("ctl");
     webControl["HistoryClick"] = "workflow:showhistory(id=" + item.ID.ToString() + ",la=" + item.Language.Name + ",vs=" + item.Version.ToString() + ",wf=" + workflow.WorkflowID + ")";
     webControl["PreviewClick"] = "Preview(\"" + item.ID.ToString() + "\", \"" + item.Language.ToString() + "\", \"" + item.Version.ToString() + "\")";
     webControl["Click"] = "Open(\"" + item.ID.ToString() + "\", \"" + item.Language.ToString() + "\", \"" + item.Version.ToString() + "\")";
     webControl["DiffClick"] = "Diff(\"" + item.ID.ToString() + "\", \"" + item.Language.ToString() + "\", \"" + item.Version.ToString() + "\")";
     webControl["Display"] = "none";
     string uniqueID = Control.GetUniqueID(string.Empty);
     webControl["CheckID"] = "check_" + uniqueID;
     webControl["HiddenID"] = "hidden_" + uniqueID;
     webControl["CheckValue"] = string.Concat(new object[] { item.ID, ",", item.Language, ",", item.Version });
     foreach (WorkflowCommand command in WorkflowFilterer.FilterVisibleCommands(workflow.GetCommands(item)))
     {
         this.CreateCommand(workflow, command, item, webControl);
     }
 }
コード例 #7
0
 protected virtual void DisplayStates(IWorkflow workflow, XmlControl placeholder)
 {
     this._stateNames = null;
     foreach (WorkflowState state in workflow.GetStates())
     {
         if (WorkflowFilterer.FilterVisibleCommands(workflow.GetCommands(state.StateID)).Length > 0)
         {
             string str2;
             DataUri[] items = this.GetItems(state, workflow);
             string str = ShortID.Encode(workflow.WorkflowID) + "_" + ShortID.Encode(state.StateID);
             Section section2 = new Section
             {
                 ID = str + "_section"
             };
             Section control = section2;
             control.Attributes["Width"] = "100%";
             placeholder.AddControl(control);
             int length = items.Length;
             if (length <= 0)
             {
                 str2 = Translate.Text("None");
             }
             else if (length == 1)
             {
                 str2 = string.Format("1 {0}", Translate.Text("item"));
             }
             else
             {
                 str2 = string.Format("{0} {1}", length, Translate.Text("items"));
             }
             str2 = string.Format("<span style=\"font-weight:normal\"> - ({0})</span>", str2);
             control.Header = state.DisplayName + str2;
             control.Icon = state.Icon;
             if (Settings.ClientFeeds.Enabled)
             {
                 FeedUrlOptions options2 = new FeedUrlOptions("/sitecore/shell/~/feed/workflowstate.aspx")
                 {
                     UseUrlAuthentication = true
                 };
                 FeedUrlOptions options = options2;
                 options.Parameters["wf"] = workflow.WorkflowID;
                 options.Parameters["st"] = state.StateID;
                 control.FeedLink = options.ToString();
             }
             control.Collapsed = length <= 0;
             Border child = new Border();
             control.Controls.Add(child);
             child.ID = str + "_content";
             this.DisplayState(workflow, state, items, child, 0, this.PageSize);
             this.CreateNavigator(control, str + "_navigator", length);
         }
     }
 }
コード例 #8
0
 protected virtual void DisplayState(IWorkflow workflow, WorkflowState state, DataUri[] items, Control control, int offset, int pageSize)
 {
     if (items.Length > 0)
     {
         int length = offset + pageSize;
         if (length > items.Length)
         {
             length = items.Length;
         }
         for (int i = offset; i < length; i++)
         {
             DataUri uri = items[i];
             Item item = Context.ContentDatabase.Items[uri];
             if (item != null)
             {
                 this.CreateItem(workflow, item, control);
             }
         }
         Border child = new Border
         {
             Background = "#e9e9e9"
         };
         control.Controls.Add(child);
         child.Margin = "0px 4px 0px 16px";
         child.Padding = "2px 8px 2px 8px";
         child.Border = "1px solid #999999";
         foreach (WorkflowCommand command in WorkflowFilterer.FilterVisibleCommands(workflow.GetCommands(state.StateID)))
         {
             XmlControl webControl = Resource.GetWebControl("WorkboxCommand") as XmlControl;
             webControl["Header"] = command.DisplayName + " " + Translate.Text("(selected)");
             webControl["Icon"] = command.Icon;
             webControl["Command"] = "workflow:sendselected(command=" + command.CommandID + ",ws=" + state.StateID + ",wf=" + workflow.WorkflowID + ")";
             child.Controls.Add(webControl);
             webControl = Resource.GetWebControl("WorkboxCommand") as XmlControl;
             webControl["Header"] = command.DisplayName + " " + Translate.Text("(all)");
             webControl["Icon"] = command.Icon;
             webControl["Command"] = "workflow:sendall(command=" + command.CommandID + ",ws=" + state.StateID + ",wf=" + workflow.WorkflowID + ")";
             child.Controls.Add(webControl);
         }
     }
 }
コード例 #9
0
        /// <summary>Executes the command in the specified context.</summary>
        /// <param name="context">The context.</param>
        public override void Execute(CommandContext context)
        {
            Assert.ArgumentNotNull((object)context, "context");
            string   name1    = context.Parameters["database"];
            string   path     = context.Parameters["id"];
            string   name2    = context.Parameters["language"];
            string   str      = context.Parameters["version"];
            Database database = Factory.GetDatabase(name1);

            if (database == null)
            {
                return;
            }
            Item obj = database.GetItem(path, Language.Parse(name2), Sitecore.Data.Version.Parse(str));

            if (obj == null)
            {
                return;
            }
            IWorkflow workflow = obj.Database.WorkflowProvider.GetWorkflow(obj);

            if (workflow == null)
            {
                return;
            }
            WorkflowCommand[] workflowCommandArray = WorkflowFilterer.FilterVisibleCommands(workflow.GetCommands(obj), obj);

            var repository = new WorxboxItemsRepository(workflow);

            if (workflowCommandArray == null || workflowCommandArray.Length == 0)
            {
                return;
            }
            Menu menu = new Menu();

            SheerResponse.DisableOutput();
            foreach (WorkflowCommand command in workflowCommandArray)
            {
                string @string = new WorkflowCommandBuilder(obj, workflow, command).ToString();
                menu.Add("C" + command.CommandID, command.DisplayName, command.Icon, string.Empty, @string, false, string.Empty, MenuItemType.Normal).Disabled =
                    !Context.User.IsAdministrator && !obj.Locking.HasLock();

                if (repository.IsWorxboxItem(obj.State.GetWorkflowState(), new DataUri(obj.Uri)) &&
                    repository.GetWorkflowCommandIDs().Contains(ID.Parse(command.CommandID)))
                {
                    @string = new WorxBoxWorkflowCommandBuilder(obj, workflow, command).ToString();
                    menu.Add("C" + command.CommandID, "WorxBox " + command.DisplayName, command.Icon, string.Empty, @string, false, string.Empty, MenuItemType.Normal).Disabled =
                        !Context.User.IsAdministrator && !obj.Locking.HasLock();
                }
            }
            SheerResponse.EnableOutput();
            SheerResponse.ShowContextMenu(Context.ClientPage.ClientRequest.Control, "right", (Control)menu);
        }