Sitecore ワークボックス コマンドでは、[Suppress Comment] チェックボックスをオフに設定できます。特定のワークボックス アクションが実行されると、ポップアップでコメントが要求されます。その中で、カスタムテキストを表示することで、コメントの入力が必須であることをユーザーに知らせたいと思います。これは可能ですか?
質問する
709 次
1 に答える
2
これは、アイテムを拒否する際にコメントを必須にすることに関するブログ投稿です。目的にも簡単に使用できます。
Sitecore ワークフロー – 何かを却下する場合はコメントしてください。
ユーザーがワークフロー コマンドを実行しようとする前にメッセージを表示する必要がある場合は、SitecoreWorkbox.xml
コントロールをオーバーライドし、そのコード ビハインドでComment
メソッドをオーバーライドして、"Enter a comment:"
必要なものに変更できます。元のメソッド コードは次のとおりです。
public void Comment(ClientPipelineArgs args)
{
Assert.ArgumentNotNull((object) args, "args");
if (!args.IsPostBack)
{
Context.ClientPage.ClientResponse.Input("Enter a comment:", string.Empty);
args.WaitForPostBack();
}
else if (args.Result.Length > 2000)
{
Context.ClientPage.ClientResponse.ShowError(new Exception(string.Format("The comment is too long.\n\nYou have entered {0} characters.\nA comment cannot contain more than 2000 characters.", (object) args.Result.Length)));
Context.ClientPage.ClientResponse.Input("Enter a comment:", string.Empty);
args.WaitForPostBack();
}
else
{
if (args.Result == null || !(args.Result != "null") || !(args.Result != "undefined"))
return;
IWorkflowProvider workflowProvider = Context.ContentDatabase.WorkflowProvider;
if (workflowProvider == null)
return;
IWorkflow workflow = workflowProvider.GetWorkflow(Context.ClientPage.ServerProperties["workflowid"] as string);
if (workflow == null)
return;
Item obj = Context.ContentDatabase.Items[(Context.ClientPage.ServerProperties["id"] ?? (object) string.Empty).ToString(), Language.Parse(Context.ClientPage.ServerProperties["language"] as string), Sitecore.Data.Version.Parse(Context.ClientPage.ServerProperties["version"] as string)];
if (obj == null)
return;
try
{
workflow.Execute(Context.ClientPage.ServerProperties["command"] as string, obj, args.Result, true, new object[0]);
}
catch (WorkflowStateMissingException ex)
{
SheerResponse.Alert("One or more items could not be processed because their workflow state does not specify the next step.", new string[0]);
}
UrlString urlString = new UrlString(WebUtil.GetRawUrl());
urlString["reload"] = "1";
Context.ClientPage.ClientResponse.SetLocation(urlString.ToString());
}
}
于 2013-08-02T06:47:20.977 に答える