public static Sitemap BuildSitemap(Site site, ContentEnvironment environment, Func <CmsPage, bool> sitemapTrim) { var siteStructure = SiteStructureMapBuilder.BuildStructureMap(site); var pageRepostiory = new CmsPageRepository(); var allPages = pageRepostiory .FindContentVersions(null, environment) .Result .Where(sitemapTrim) .ToDictionary(x => x.ContentId); var sitemap = new Sitemap(); if (site.HomepageId != null && allPages.ContainsKey(site.HomepageId.Value)) { sitemap.HomePage = allPages[site.HomepageId.Value]; } AttachChildNodes(sitemap, siteStructure, string.Empty, allPages); return(sitemap); }
private static Dictionary <Guid, PermissionRuleSet> CalculatePermissionsForSite(Site site, ILookup <Guid, PermissionRule> allPermissions) { PermissionRuleSet defaultPermissions; if (site.IsFrontendSite) { defaultPermissions = new PermissionRuleSet(); var readRule = new PermissionRule { AppliesToRoleName = "Everyone", PermissionType = PermissionType.Grant, PrivilegeName = KnownPrivilegeNames.Read }; var createRule = new PermissionRule { AppliesToRoleName = "Everyone", PermissionType = PermissionType.Deny, PrivilegeName = KnownPrivilegeNames.Create }; var updateRule = new PermissionRule { AppliesToRoleName = "Everyone", PermissionType = PermissionType.Deny, PrivilegeName = KnownPrivilegeNames.Update }; var deleteRule = new PermissionRule { AppliesToRoleName = "Everyone", PermissionType = PermissionType.Deny, PrivilegeName = KnownPrivilegeNames.Delete }; defaultPermissions.Add(readRule); defaultPermissions.Add(createRule); defaultPermissions.Add(updateRule); defaultPermissions.Add(deleteRule); } else { defaultPermissions = new PermissionRuleSet(); var readRule = new PermissionRule { AppliesToRoleName = "BackendUsers", PermissionType = PermissionType.Grant, PrivilegeName = KnownPrivilegeNames.Read }; var createRule = new PermissionRule { AppliesToRoleName = "BackendUsers", PermissionType = PermissionType.Grant, PrivilegeName = KnownPrivilegeNames.Create }; var updateRule = new PermissionRule { AppliesToRoleName = "BackendUsers", PermissionType = PermissionType.Grant, PrivilegeName = KnownPrivilegeNames.Update }; var deleteRule = new PermissionRule { AppliesToRoleName = "BackendUsers", PermissionType = PermissionType.Grant, PrivilegeName = KnownPrivilegeNames.Delete }; defaultPermissions.Add(readRule); defaultPermissions.Add(createRule); defaultPermissions.Add(updateRule); defaultPermissions.Add(deleteRule); } var siteStructure = SiteStructureMapBuilder.BuildStructureMap(site); Dictionary <Guid, PermissionRuleSet> newRules = new Dictionary <Guid, PermissionRuleSet>(); foreach (var page in siteStructure.ChildNodes) { var subDict = CalculatePermissions(page, allPermissions, defaultPermissions); foreach (var kvp in subDict) { newRules.Add(kvp.Key, kvp.Value); } } return(newRules); }