void WebAppTreeNode_TreeNodePopulate(object sender, TreeViewCancelEventArgs e) { WebApplicationInfo webAppInfo = e.Node.Tag as WebApplicationInfo; bool preCheck = (((webAppInfo.Application.IsAdministrationWebApplication || webAppInfo.IsSRP) && InstallConfiguration.SuggestDeploymentToCentralAdminWebApplication) || ((!(webAppInfo.Application.IsAdministrationWebApplication || webAppInfo.IsSRP)) && InstallConfiguration.SuggestDeploymentToAllContentWebApplications)); if (webAppInfo != null) { if (webAppInfo.Application.Sites.Count >= SiteCollectionCountWarning) { string msg = String.Format(res.ManySitesWarning, webAppInfo.Application.Sites.Count); if (MessageBox.Show(msg, res.ManySites, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) { e.Cancel = true; } } if (!e.Cancel) { foreach (SPSite site in webAppInfo.Application.Sites) { SiteCollectionInfo siteCollInfo = new SiteCollectionInfo(site, false); ExtendedTreeNode.AddNewExtendedTreeNode(e.Node.Nodes, siteCollInfo.ToString(), siteCollInfo).Checked = preCheck; } } } }
void WebAppTreeNode_TreeNodePopulate(object sender, TreeViewCancelEventArgs e) { WebApplicationInfo webAppInfo = e.Node.Tag as WebApplicationInfo; if (webAppInfo != null) { if (webAppInfo.Application.Sites.Count >= SiteCollectionCountWarning) { string msg = String.Format(FormattedSiteCollectionCountWarningMessage, webAppInfo.Application.Sites.Count); if (MessageBox.Show(msg, "Large Number of Site Collections", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) { e.Cancel = true; } } if (!e.Cancel) { foreach (SPSite site in webAppInfo.Application.Sites) { try { SiteCollectionInfo siteCollInfo = new SiteCollectionInfo(site, false); ExtendedTreeNode.AddNewExtendedTreeNode(e.Node.Nodes, siteCollInfo.ToString(), siteCollInfo); } finally { // guarantee SPSite is released ASAP even in face of exception site.Dispose(); } } } } }
protected internal override void Close(InstallOptions options) { foreach (TreeNode webAppTreeNode in siteCollectionsTreeView.Nodes) { // Add the web application as a target if (webAppTreeNode.Checked) { WebApplicationInfo webAppInfo = webAppTreeNode.Tag as WebApplicationInfo; if (webAppInfo != null) { options.WebApplicationTargets.Add(webAppInfo.Application); ExtendedTreeNode extendedWebAppTreeNode = webAppTreeNode as ExtendedTreeNode; if (extendedWebAppTreeNode != null) { if (!extendedWebAppTreeNode.Populated) { // Add ALL site collections within the web app as targets foreach (SPSite siteCollection in webAppInfo.Application.Sites) { try { SiteLoc siteLoc = new SiteLoc(siteCollection); siteLoc.featureList.AddRange(_featureIds); // add all known features for now (be nice to let user choose) options.SiteCollectionTargets.Add(siteLoc); } finally { // guarantee SPSite is released ASAP even in face of exception siteCollection.Dispose(); } } } else { // Add the checked site collections within this web application as targets foreach (TreeNode siteCollTreeNode in webAppTreeNode.Nodes) { if (siteCollTreeNode.Checked) { SiteCollectionInfo siteCollInfo = siteCollTreeNode.Tag as SiteCollectionInfo; if (siteCollInfo != null) { SiteLoc siteLoc = new SiteLoc(siteCollInfo.SiteCollection); siteLoc.featureList.AddRange(_featureIds); // add all known features for now (be nice to let user choose) options.SiteCollectionTargets.Add(siteLoc); } } } } } } } } }
protected internal override void Close(InstallOptions options) { WebApplicationInfo webAppInfo; if (InstallConfiguration.RequireDeploymentToCentralAdminWebApplication) { foreach (TreeNode webAppTreeNode in siteCollectionsTreeView.Nodes) { if (((webAppInfo = webAppTreeNode.Tag as WebApplicationInfo) != null) && (webAppInfo.IsSRP || ((webAppInfo.Application != null) && webAppInfo.Application.IsAdministrationWebApplication))) { webAppTreeNode.Checked = true; foreach (TreeNode tn in webAppTreeNode.Nodes) { tn.Checked = true; } } } } foreach (TreeNode webAppTreeNode in siteCollectionsTreeView.Nodes) { // Add the web application as a target if (webAppTreeNode.Checked && ((webAppInfo = webAppTreeNode.Tag as WebApplicationInfo) != null)) { options.WebApplicationTargets.Add(webAppInfo.Application); ExtendedTreeNode extendedWebAppTreeNode = webAppTreeNode as ExtendedTreeNode; if (extendedWebAppTreeNode != null) { if (!extendedWebAppTreeNode.Populated) { // Add ALL site collections within the web app as targets foreach (SPSite siteCollection in webAppInfo.Application.Sites) { options.SiteCollectionTargets.Add(siteCollection); } } else { // Add the checked site collections within this web application as targets foreach (TreeNode siteCollTreeNode in webAppTreeNode.Nodes) { if (siteCollTreeNode.Checked) { SiteCollectionInfo siteCollInfo = siteCollTreeNode.Tag as SiteCollectionInfo; if (siteCollInfo != null) { options.SiteCollectionTargets.Add(siteCollInfo.SiteCollection); } } } } } } } }
protected internal override void Close(InstallOptions options) { foreach (TreeNode webAppTreeNode in siteCollectionsTreeView.Nodes) { // Add the web application as a target if (webAppTreeNode.Checked) { WebApplicationInfo webAppInfo = webAppTreeNode.Tag as WebApplicationInfo; if (webAppInfo != null) { options.WebApplicationTargets.Add(webAppInfo.Application); ExtendedTreeNode extendedWebAppTreeNode = webAppTreeNode as ExtendedTreeNode; if (extendedWebAppTreeNode != null) { if (!extendedWebAppTreeNode.Populated) { // Add ALL site collections within the web app as targets foreach (SPSite siteCollection in webAppInfo.Application.Sites) { options.SiteCollectionTargets.Add(siteCollection); } } else { // Add the checked site collections within this web application as targets foreach (TreeNode siteCollTreeNode in webAppTreeNode.Nodes) { if (siteCollTreeNode.Checked) { SiteCollectionInfo siteCollInfo = siteCollTreeNode.Tag as SiteCollectionInfo; if (siteCollInfo != null) { options.SiteCollectionTargets.Add(siteCollInfo.SiteCollection); } } } } } } } } }
/// <summary> /// サイトコレクション一覧取得 /// </summary> /// <param name="tenantConnectionInfo">テナント接続情報</param> /// <param name="msgProgress">進捗報告オブジェクト</param> /// <returns>サイトコレクション一覧</returns> public static async Task <List <SiteCollectionInfo> > GetSiteCollectionsAsync(TenantConnectionInfo tenantConnectionInfo, IProgress <string> msgProgress = null) { List <SiteCollectionInfo> ret = new List <SiteCollectionInfo>(); msgProgress?.Report("テナント接続開始"); using (var ctx = new ClientContext(tenantConnectionInfo.SPOAdminCenterUrl)) { // 認証 ctx.Credentials = new SharePointOnlineCredentials(tenantConnectionInfo.UserAccount, tenantConnectionInfo.UserSecurePassword); ctx.RequestTimeout = Timeout.Infinite; // テナント取得 var tenant = new Tenant(ctx); ctx.Load(tenant); // サイトコレクション取得 msgProgress?.Report("サイトコレクション情報取得"); var siteCollections = tenant.GetSiteCollections(0, 0, false, false); await ctx.ExecuteQueryRetryAsync().ConfigureAwait(false); // 情報の詰め替え foreach (var siteCollection in siteCollections) { msgProgress?.Report($"取得 - Title :{ siteCollection.Title } URL : { siteCollection.Url }"); var info = new SiteCollectionInfo() { Title = siteCollection.Title, Url = siteCollection.Url }; ret.Add(info); } } msgProgress?.Report("テナント接続終了"); return(ret); }
/// <summary> /// サイトコレクション作成(コミュニケーションサイト) /// </summary> /// <param name="tenantConnectionInfo">テナント接続情報</param> /// <param name="sitecollectionInfo">サイトコレクション作成情報</param> /// <param name="progress">進捗報告オブジェクト</param> public static async Task CreateCommunicationSiteCollectionAsync(TenantConnectionInfo tenantConnectionInfo, SiteCollectionInfo siteCollectionInfo, Guid design, IProgress <string> progress = null) { progress?.Report("テナント接続開始"); using (var ctx = new ClientContext(tenantConnectionInfo.SPOAdminCenterUrl)) { // 認証 ctx.Credentials = new SharePointOnlineCredentials(tenantConnectionInfo.UserAccount, tenantConnectionInfo.UserSecurePassword); ctx.RequestTimeout = Timeout.Infinite; // テナント取得 var tenant = new Tenant(ctx); // サイトコレクション作成情報 progress?.Report("サイトコレクション作成開始"); var creationInfo = new CommunicationSiteCollectionCreationInformation() { Title = siteCollectionInfo.Title, Url = siteCollectionInfo.Url, Owner = siteCollectionInfo.SiteOwnerLogin, SiteDesignId = design, Lcid = siteCollectionInfo.Lcid }; // サイトコレクション作成 progress?.Report("サイトコレクション作成完了まで待機します・・・"); var operation = await ctx.CreateSiteAsync(creationInfo); ctx.Load(tenant); await ctx.ExecuteQueryRetryAsync(); } progress?.Report("テナント接続終了"); }
/// <summary> /// サイトコレクション作成 /// </summary> /// <param name="tenantConnectionInfo">テナント接続情報</param> /// <param name="sitecollectionInfo">サイトコレクション作成情報</param> /// <param name="progress">進捗報告オブジェクト</param> public static async Task CreateSiteCollectionAsync(TenantConnectionInfo tenantConnectionInfo, SiteCollectionInfo sitecollectionInfo, IProgress <string> progress = null) { progress?.Report("テナント接続開始"); using (var ctx = new ClientContext(tenantConnectionInfo.SPOAdminCenterUrl)) { // 認証 ctx.Credentials = new SharePointOnlineCredentials(tenantConnectionInfo.UserAccount, tenantConnectionInfo.UserSecurePassword); ctx.RequestTimeout = Timeout.Infinite; // テナント取得 var tenant = new Tenant(ctx); // サイトコレクション作成情報 progress?.Report("サイトコレクション作成開始"); var creationInfo = new SiteCreationProperties() { Title = sitecollectionInfo.Title, Url = sitecollectionInfo.Url, Owner = sitecollectionInfo.SiteOwnerLogin, Template = sitecollectionInfo.Template, StorageMaximumLevel = sitecollectionInfo.StorageMaximumLevel, UserCodeMaximumLevel = 0, Lcid = sitecollectionInfo.Lcid, TimeZoneId = sitecollectionInfo.TimeZoneId, CompatibilityLevel = (int)SiteCollectionInfo.CompatibilityLevels.SPS2013 }; // サイトコレクション作成 var operation = tenant.CreateSite(creationInfo); ctx.Load(tenant); ctx.Load(operation, i => i.IsComplete); await ctx.ExecuteQueryRetryAsync(); var siteCollections = tenant.GetSiteCollections(0, 0, true, true); ctx.Load(tenant); progress?.Report("サイトコレクション作成完了まで待機します・・・"); await ctx.ExecuteQueryRetryAsync(); // 作成完了まで待機 while (!operation.IsComplete) { progress?.Report("サイトコレクション作成完了まで待機します・・・"); Thread.Sleep(30000); operation.RefreshLoad(); await ctx.ExecuteQueryRetryAsync(); } progress?.Report("サイトコレクション作成完了"); } progress?.Report("テナント接続終了"); }
void WebAppTreeNode_TreeNodePopulate(object sender, TreeViewCancelEventArgs e) { WebApplicationInfo webAppInfo = e.Node.Tag as WebApplicationInfo; if (webAppInfo != null) { if (webAppInfo.Application.Sites.Count >= SiteCollectionCountWarning) { string msg = String.Format(FormattedSiteCollectionCountWarningMessage, webAppInfo.Application.Sites.Count); if (MessageBox.Show(msg, "Large Number of Site Collections", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) { e.Cancel = true; } } if (!e.Cancel) { foreach (SPSite site in webAppInfo.Application.Sites) { SiteCollectionInfo siteCollInfo = new SiteCollectionInfo(site, false); ExtendedTreeNode.AddNewExtendedTreeNode(e.Node.Nodes, siteCollInfo.ToString(), siteCollInfo); } } } }