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;
                    }
                }
            }
        }
Пример #2
0
        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();
                        }
                    }
                }
            }
        }
Пример #3
0
        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);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Пример #6
0
        /// <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);
        }
Пример #7
0
        /// <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("テナント接続終了");
        }
Пример #8
0
        /// <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);
       }
     }
       }
 }