Sitecoreのコンテンツアイテムをプログラムで承認する方法はありますか?Sitecoreのコンテンツアイテムをプログラムで承認する方法
3
A
答えて
3
あなたがしたいことがあります。管理者が承認待ちを使用するかどうかを選択できるサイトごとにチェックボックスを設定します。あなたのことを確認し、ドラフト状態の下で、あなたのワークフローで
- :管理者は、単純承認(承認にドラフト)をスキップするか、ワークフロー(案> AA(承認または拒否)>承認)を維持するために未チェックのままにする]チェックボックスをチェックします承認待ちの状態に次の状態が割り当てられたサブミットコマンド があります。
- submitコマンドで、SkipOverアクションを作成します。
- VSでクラスライブラリプロジェクトを作成すると、出力がアセンブリになります。
- アセンブリでSkipActionクラスを作成します。戻るあなたのSkipOverアクションへ
- 、このようなセットアップタイプ文字列:[共有] タイプ文字列:YourAssembly.SkipAction、YourAssembly
- 後藤サイトコア>テンプレートと呼ばれるWorkflowSettingsをテンプレートに追加テンプレートセクションをSkipApprovalテンプレート
- を作成します。
- WorkflowSettingsにテンプレートフィールドを追加するには、typeの下にあるチェックボックスを選択します。
- テンプレートアイテムを保存して公開します。
- 私の場合は、セクション設定項目にSkipapprovalを追加し、新しいサイトの標準テンプレートを割り当てます。したがって、作成されたサイトごとにsectionsettingsテンプレートを追加すると、テンプレートにSkipApprovalチェックボックスが表示されます。
あなたSkipActionクラスにこのコードを追加します。
public class SkipAction { bool isSiteSettingsReached = false; /// <summary> /// This method facilitates grabbing of the skipapproval setting from setting>sectionsettings /// </summary> /// <param name="item"></param> /// <param name="fieldId"></param> /// <returns></returns> protected bool GetSkipSetting(Item item, string fieldId) { bool result = false; if (item.ID.Equals(null) || item.ID.Equals(ItemIDs.ContentRoot) || item.ID.Equals(ItemIDs.RootID)) { result=false; } if (isSkipApprovalChecked(item, fieldId)) { result = true; } if (!isSkipApprovalChecked(item, fieldId)) { result = false; } if (!isSiteSettingsReached) { result=GetSkipSetting(item.Parent, fieldId); } return result; } /// <summary> /// This method is initialized when skipaction is called /// </summary> /// <param name="args"></param> public void Process(WorkflowPipelineArgs args) { var contentItem = args.DataItem; var actionItem = args.ProcessorItem.InnerItem; var parameters = WebUtil.ParseUrlParameters(actionItem["parameters"]); var nextStateId = parameters["nextstateid"]; var skipFieldId = parameters["skipfieldid"]; if(nextStateId.IsNullOrEmpty() || skipFieldId.IsNullOrEmpty()) return; bool skip = GetSkipSetting(contentItem, skipFieldId); Sitecore.Data.Database web = Sitecore.Configuration.Factory.GetDatabase("web"); Sitecore.Data.Database production = Sitecore.Configuration.Factory.GetDatabase("production"); if (skip) { contentItem.PerformTransition(nextStateId, "auto skip"); using (new Sitecore.SecurityModel.SecurityDisabler()) { publishTo(web, contentItem); publishTo(production, contentItem); } contentItem.Locking.Unlock(); args.AbortPipeline(); } } /// <summary> /// this method is used to publish to environ by param /// </summary> /// <param name="targetToPublish"></param> /// <param name="item"></param> private void publishTo(Sitecore.Data.Database targetToPublish, Item item) { Sitecore.Data.Database sourceDB = Sitecore.Configuration.Factory.GetDatabase("master"); //// set publish options Sitecore.Publishing.PublishOptions myOptions = new Sitecore.Publishing.PublishOptions( sourceDB, targetToPublish, Sitecore.Publishing.PublishMode.Smart, item.Language, DateTime.Now); myOptions.RootItem = item; myOptions.Deep = false; Sitecore.Publishing.Publisher publisher = new Sitecore.Publishing.Publisher(myOptions); Sitecore.Jobs.Job myPublishJob = publisher.PublishAsync(); myPublishJob.Start(); } /// <summary> /// This method check the actual skip approval field in settings>sectionsettings /// </summary> /// <param name="item"></param> /// <param name="fieldId"></param> /// <returns></returns> public bool isSkipApprovalChecked(Sitecore.Data.Items.Item item, string fieldId) { if (item.HasChildren) { Sitecore.Data.Items.Item settingsItem = item.Axes.GetChild("Settings"); if (settingsItem == null) { return false; } else { isSiteSettingsReached = true; Sitecore.Data.Items.Item sectionsettingsItem = settingsItem.Axes.GetChild("SectionSettings"); if (sectionsettingsItem.DisplayName == "SectionSettings" && sectionsettingsItem[fieldId] == "1") { return true; } else { return false; } } } return false; } }
}
戻るあなたのSkipOverのアクションに、この(nextstateid =承認状態IDなどのパラメータを追加し、skipapprovalチェックボックスの=項目IDをskipfieldid )テンプレートで:
パラメータ[共有]: nextstateid = {D0F57FA8-F472-4332-89D9-E429CD111E50} & skipfieldid = {XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX}に権限を持つユーザーの下
- コンパイルとチェック「承認をスキップ」、展開、問題の管理のgotoサイトとして、サイトコアを起動、ログアウト、ログイン編集。変更を加え、[レビュー]タブ> [送信]をクリックして、承認されたため編集できることを確認します。
- 問題のサイトに移動し、[承認をスキップ]をオフにしてログアウトし、編集権限を持つユーザーの下でログインします。変更を加え、レビュータブ>提出に進み、アイテムがロックされていることを確認し、承認待ちです。
おかげで、
0
Cここでは、プログラムでのアイテムのワークフローの状態を変更する方法を説明します(かなり記述的に)というブログです: http://www.cognifide.com/blogs/sitecore/changing-workflow-state-of-sitecore-items-programmatically/ ・ホープ、このことができますが!
関連する問題
- 1. Sitecore - コンテンツアイテムにアクセスできない
- 2. Sitecore - コンテンツアイテムをツリーにパーソナライズすることは可能ですか?
- 3. Sitecoreでユーザープロファイルをプログラムで作成する方法
- 4. アンドロイドアプリでの承認方法
- 5. Githubでコミットを承認する方法
- 6. Sitecoreコンテンツアイテムのデータフィールドにデータフィールド名の空白を照会するフィールド名
- 7. オーチャード - サマリービューでコンテンツアイテムの他のフィールドを表示する方法
- 8. Sitecore - プログラムでユーザーのキャッシュをクリアする
- 9. Sitecoreのサブレイアウトをプログラムで削除する
- 10. 承認リクエストをエンコードする方法
- 11. cakephp - アセットを承認する方法は?
- 12. NSMicrophoneUsageDescriptionをプログラムで確認する方法
- 13. リリーフで認証と承認を処理する方法は?
- 14. Asp.Net 4.0で認証と承認を実装する方法は?
- 15. 継承をSitecoreテンプレートに改定する
- 16. Sitecoreアイテムをプログラムで作成する方法(アイテムとフィールドを追加する)?
- 17. UIViewのタップジェスチャ認識プログラムをプログラムで起動する方法
- 18. Sitecoreのコンテンツ配信サーバーでmasterデータベースにプログラムでアクセスする方法
- 19. sitecoreでカスタムトークンを作成する方法
- 20. Sitecoreのどこにコンテンツアイテムのバージョンに関する著者ノートを追加できますか?
- 21. sitecoreのログインページを変更する方法url/Sitecore/login
- 22. Sitecore Analyticsデータを新しいSitecoreインスタンスに取得する方法
- 23. C#windowsアプリケーションで認証と承認を行う方法は?
- 24. C#Facebook SDK - サーバー側でキャンバスアプリケーションを承認する方法
- 25. JWTでSignalR Core Hubメソッドを承認する方法
- 26. Azure ADでNode.js APIを承認する方法は?
- 27. apache camelで承認ヘッダーを設定する方法:ahc
- 28. DotNetBrowserユーザーコントロールで承認を処理する方法は?
- 29. ASP.NET Core APIユーザーを手動で承認する方法
- 30. Safariで承認ヘッダーを防止/上書きする方法は?
ワークフローのコンテンツを承認して次の状態に移行することを意味しますか? –