Ejemplo n.º 1
0
        /// <summary>
        /// Create department sub site from site template
        /// </summary>
        /// <param name="currentWeb">SharePoint Current web</param>
        /// <param name="departmentItem">Department List Item</param>
        public void CreateDepartmentSite(Guid siteId, Guid webId, SPListItem departmentItem)
        {
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (SPSite site = new SPSite(siteId))
                {
                    using (SPWeb currentWeb = site.OpenWeb(webId))
                    {
                        var webTemplates          = currentWeb.Site.RootWeb.GetAvailableWebTemplates(1033);
                        SPWebTemplate webTemplate = null;

                        for (var i = 0; i < webTemplates.Count; i++)
                        {
                            var webTemplateSearchName = webTemplates[i].Title;

                            if (!webTemplateSearchName.Contains(DepartmentTemplateName))
                            {
                                continue;
                            }

                            webTemplate = webTemplates[i];
                            break;
                        }

                        if (webTemplate == null)
                        {
                            return;
                        }
                        var department = ParseToEntity(departmentItem);
                        // check web existed or not
                        var webExisted = currentWeb.Webs.FirstOrDefault(w => w.Title == department.Name);
                        if (webExisted != null)
                        {
                            CreateUpdateDepartmentGroup(webExisted, currentWeb, department.Name);
                            return;
                        }

                        // Default language English
                        var newSite = currentWeb.Webs.Add(department.Code, department.Name, department.Name, Convert.ToUInt16(1033), webTemplate, false, false);

                        newSite.AllowUnsafeUpdates   = true;
                        newSite.Navigation.UseShared = false;

                        //Set default home pages
                        var rootFolder         = newSite.RootFolder;
                        rootFolder.WelcomePage = "SitePages/Home.aspx";
                        rootFolder.Update();
                        //SPHelper.ActiveInstalledLanguage(newSite);

                        // Update language resource for Site title
                        CreateUpdateDepartmentGroup(newSite, currentWeb, department.Name);
                        SPHelper.ActiveInstalledLanguage(newSite);
                        foreach (var culture in newSite.SupportedUICultures)
                        {
                            switch (culture.LCID)
                            {
                            case 1066:
                                newSite.TitleResource.SetValueForUICulture(culture, department.VietnameseName);
                                break;

                            default:
                                newSite.TitleResource.SetValueForUICulture(culture, department.Name);
                                break;
                            }
                        }
                        newSite.Update();
                    }
                }
            });
        }