情報管理のサンプル アドイン (SharePoint)
Core.InformationManagement サンプルは、プロバイダー ホスト型アドインを使用してサイト上のサイト ポリシーを取得および設定する方法を示します。
このソリューションは、以下の操作を行う場合に使用します。
- カスタム サイト プロビジョニング プロセス中にポリシー設定を適用する場合。
- サイト ポリシーを新規作成したり、既存のサイト ポリシーを修正したりする場合。
- ユーザー設定の有効期限計算式を作成する場合。
はじめに
まず、Core.InformationManagement サンプル アドインを、GitHub 上の Office 365 Developer Patterns and Practices プロジェクトからダウンロードします。
注:
この記事で提供されるコードは、明示または黙示のいかなる種類の保証なしに現状のまま提供されるものであり、特定目的への適合性、商品性、権利侵害の不存在についての暗黙的な保証は一切ありません。
このアドインを実行する前に、1 つ以上のサイト ポリシーを作成してサイトに割り当てることをお勧めします。 このようにしない場合、アドインが起動したときにサンプル データが表示されません。 詳細については、「SharePoint Server のサイト ポリシーの概要」を参照してください。
Core.InformationManagement サンプル アドインを使用する
情報管理アドインを起動すると、以下の図に示す情報が開始ページに表示されます。
- サイトの閉鎖日付と有効期限。 これらの日付はサイト固有のものであり、適用されるサイト ポリシーの設定に基づくものです
- このサイトに適用可能なすべてのサイト ポリシー。
- 現在適用されているサイト ポリシー。
- このサイトのための新しいサイト ポリシーを選択して適用するためのオプション ボックス。
SharePoint サイトで [最近使用したファイル]>[Core.InformationManagement] を選択して、アドインに移動します。このアドインはリモート ホストで実行されます。 SharePoint サイトに戻るには、[サイトに戻る] を選択します。
Core.InformationManagementWeb プロジェクトの Pages\Default.aspx.cs ファイルには、前の図に示されているページのコードが含まれています。
Default.aspx.cs ページの Page_Load メソッドに含まれる以下のコードは、適用されるサイト ポリシーに基づきサイトの閉鎖日と有効期限をフェッチして表示します。 このコードは、OfficeDevPnP.Core プロジェクトの GetSiteExpirationDate および GetSiteCloseDate 拡張メソッドを呼び出します。
// Get site expiration and closure dates.
if (cc.Web.HasSitePolicyApplied())
{
lblSiteExpiration.Text = String.Format("The expiration date for the site is {0}", cc.Web.GetSiteExpirationDate());
lblSiteClosure.Text = String.Format("The closure date for the site is {0}", cc.Web.GetSiteCloseDate());
}
Default.aspx.cs ページの Page_Load メソッドに含まれる以下のコードは、サイトに適用可能なすべてのサイト ポリシー (現在適用されているサイト ポリシーも含む) の名前を表示します。 このコードは、OfficeDevPnP.Core プロジェクトの GetSitePolicies 拡張メソッドを呼び出します。
// List the defined policies.
List<SitePolicyEntity> policies = cc.Web.GetSitePolicies();
string policiesString = "";
foreach (var policy in policies)
{
policiesString += String.Format("{0} ({1}) <BR />", policy.Name, policy.Description);
}
lblSitePolicies.Text = policiesString;
};
Default.aspx.cs ページの Page_Load メソッドに含まれる以下のコードは、サイトに現在適用されているサイト ポリシーの名前を表示します。 このコードは、OfficeDevPnP.Core プロジェクトの GetAppliedSitePolicy 拡張メソッドを呼び出します。
// Show the assigned policy.
SitePolicyEntity appliedPolicy = cc.Web.GetAppliedSitePolicy();
if (appliedPolicy != null)
{
lblAppliedPolicy.Text = String.Format("{0} ({1})", appliedPolicy.Name, appliedPolicy.Description);
}
else
{
lblAppliedPolicy.Text = "No policy has been applied";
}
Default.aspx.cs ページの Page_Load メソッドに含まれる以下のコードは、使用可能なサイト ポリシー (サイトに現在割り当てられているサイト ポリシーを除く) をリストに取り込みます。
// Fill the policies combo.
foreach (var policy in policies)
{
if (appliedPolicy == null || !policy.Name.Equals(appliedPolicy.Name, StringComparison.InvariantCultureIgnoreCase))
{
drlPolicies.Items.Add(policy.Name);
}
}
btnApplyPolicy.Enabled = drlPolicies.Items.Count > 0;
Default.aspx.cs ページの以下のコードは、選択されたサイト ポリシーを対象サイトに適用します。 元のサイト ポリシーが新しいサイト ポリシーに置き換えられます。
protected void btnApplyPolicy_Click(object sender, EventArgs e)
{
if (drlPolicies.SelectedItem != null)
{
cc.Web.ApplySitePolicy(drlPolicies.SelectedItem.Text);
Page.Response.Redirect(Page.Request.Url.ToString(), true);
}
}