1
- using Cofoundry . Domain ;
2
- using Cofoundry . Domain . CQS ;
3
- using System . Collections . Generic ;
4
- using System . Linq ;
5
- using System . Threading . Tasks ;
1
+ namespace Cofoundry . Plugins . SiteMap ;
6
2
7
- namespace Cofoundry . Plugins . SiteMap
3
+ /// <summary>
4
+ /// Registration for resources that should appear in the xml site map file.
5
+ /// </summary>
6
+ public class CofoundryContentSiteMapResourceRegistration : IAsyncSiteMapResourceRegistration
8
7
{
9
- /// <summary>
10
- /// Registration for resources that should appear in the xml site map file.
11
- /// </summary>
12
- public class CofoundryContentSiteMapResourceRegistration : IAsyncSiteMapResourceRegistration
8
+ private readonly IQueryExecutor _queryExecutor ;
9
+ private readonly IPermissionValidationService _permissionValidationService ;
10
+ private readonly IUserContextService _userContextService ;
11
+
12
+ public CofoundryContentSiteMapResourceRegistration (
13
+ IQueryExecutor queryExecutor ,
14
+ IPermissionValidationService permissionValidationService ,
15
+ IUserContextService userContextService
16
+ )
13
17
{
14
- private readonly IQueryExecutor _queryExecutor ;
15
- private readonly IPermissionValidationService _permissionValidationService ;
16
- private readonly IUserContextService _userContextService ;
17
-
18
- public CofoundryContentSiteMapResourceRegistration (
19
- IQueryExecutor queryExecutor ,
20
- IPermissionValidationService permissionValidationService ,
21
- IUserContextService userContextService
22
- )
23
- {
24
- _queryExecutor = queryExecutor ;
25
- _permissionValidationService = permissionValidationService ;
26
- _userContextService = userContextService ;
27
- }
18
+ _queryExecutor = queryExecutor ;
19
+ _permissionValidationService = permissionValidationService ;
20
+ _userContextService = userContextService ;
21
+ }
28
22
29
- public async Task < IEnumerable < ISiteMapResource > > GetResourcesAsync ( )
30
- {
31
- var userContext = await _userContextService . GetCurrentContextAsync ( ) ;
32
- var resources = new List < SiteMapResource > ( ) ;
33
- if ( ! _permissionValidationService . HasPermission < PageReadPermission > ( userContext ) ) return resources ;
23
+ public async Task < IEnumerable < ISiteMapResource > > GetResourcesAsync ( )
24
+ {
25
+ var userContext = await _userContextService . GetCurrentContextAsync ( ) ;
26
+ var resources = new List < SiteMapResource > ( ) ;
27
+ if ( ! _permissionValidationService . HasPermission < PageReadPermission > ( userContext ) ) return resources ;
34
28
35
- var pageRoutes = await _queryExecutor . ExecuteAsync ( new GetAllPageRoutesQuery ( ) ) ;
36
- var allRules = await _queryExecutor . ExecuteAsync ( new GetAllCustomEntityRoutingRulesQuery ( ) ) ;
29
+ var pageRoutes = await _queryExecutor . ExecuteAsync ( new GetAllPageRoutesQuery ( ) ) ;
30
+ var allRules = await _queryExecutor . ExecuteAsync ( new GetAllCustomEntityRoutingRulesQuery ( ) ) ;
37
31
38
- foreach ( var pageRoute in pageRoutes . Where ( p => p . IsPublished ( ) && p . ShowInSiteMap && p . CanAccess ( userContext ) ) )
32
+ foreach ( var pageRoute in pageRoutes . Where ( p => p . IsPublished ( ) && p . ShowInSiteMap && p . CanAccess ( userContext ) ) )
33
+ {
34
+ if ( pageRoute . PageType == PageType . CustomEntityDetails )
39
35
{
40
- if ( pageRoute . PageType == PageType . CustomEntityDetails )
36
+ if ( _permissionValidationService . HasCustomEntityPermission < CustomEntityReadPermission > ( pageRoute . CustomEntityDefinitionCode , userContext ) )
41
37
{
42
- if ( _permissionValidationService . HasCustomEntityPermission < CustomEntityReadPermission > ( pageRoute . CustomEntityDefinitionCode , userContext ) )
43
- {
44
- var routesQuery = new GetCustomEntityRoutesByDefinitionCodeQuery ( pageRoute . CustomEntityDefinitionCode ) ;
45
- var allCustomEntityRoutes = await _queryExecutor . ExecuteAsync ( routesQuery ) ;
46
- var pageLocaleId = pageRoute . Locale != null ? pageRoute . Locale . LocaleId : ( int ? ) null ;
38
+ var routesQuery = new GetCustomEntityRoutesByDefinitionCodeQuery ( pageRoute . CustomEntityDefinitionCode ) ;
39
+ var allCustomEntityRoutes = await _queryExecutor . ExecuteAsync ( routesQuery ) ;
40
+ var pageLocaleId = pageRoute . Locale != null ? pageRoute . Locale . LocaleId : ( int ? ) null ;
47
41
48
- foreach ( var customEntityRoute in allCustomEntityRoutes
49
- . Where ( r => r . Locale == null ? ! pageLocaleId . HasValue : r . Locale . LocaleId == pageLocaleId ) )
42
+ foreach ( var customEntityRoute in allCustomEntityRoutes
43
+ . Where ( r => r . Locale == null ? ! pageLocaleId . HasValue : r . Locale . LocaleId == pageLocaleId ) )
44
+ {
45
+ var resource = MapCustomEntityResource ( pageRoute , customEntityRoute , allRules ) ;
46
+ if ( resource != null )
50
47
{
51
- var resource = MapCustomEntityResource ( pageRoute , customEntityRoute , allRules ) ;
52
- if ( resource != null )
53
- {
54
- resources . Add ( resource ) ;
55
- }
48
+ resources . Add ( resource ) ;
56
49
}
57
50
}
58
51
}
59
- else
60
- {
61
- resources . Add ( MapPageResource ( pageRoute ) ) ;
62
- }
63
52
}
64
-
65
- return resources ;
53
+ else
54
+ {
55
+ resources . Add ( MapPageResource ( pageRoute ) ) ;
56
+ }
66
57
}
67
58
68
- private SiteMapResource MapCustomEntityResource ( PageRoute pageRoute , CustomEntityRoute customEntityRoute , IEnumerable < ICustomEntityRoutingRule > allRules )
69
- {
70
- var version = customEntityRoute . Versions . GetVersionRouting ( PublishStatusQuery . Published ) ;
71
- if ( version == null ) return null ;
59
+ return resources ;
60
+ }
72
61
73
- var rule = allRules . FirstOrDefault ( r => r . RouteFormat == pageRoute . UrlPath ) ;
74
- if ( rule == null ) return null ;
62
+ private SiteMapResource MapCustomEntityResource ( PageRoute pageRoute , CustomEntityRoute customEntityRoute , IEnumerable < ICustomEntityRoutingRule > allRules )
63
+ {
64
+ var version = customEntityRoute . Versions . GetVersionRouting ( PublishStatusQuery . Published ) ;
65
+ if ( version == null ) return null ;
75
66
76
- var resource = new SiteMapResource ( ) ;
77
- resource . Url = rule . MakeUrl ( pageRoute , customEntityRoute ) ;
78
- resource . LastModifiedDate = customEntityRoute . LastPublishDate ;
79
- resource . Priority = GetPriority ( pageRoute ) ;
67
+ var rule = allRules . FirstOrDefault ( r => r . RouteFormat == pageRoute . UrlPath ) ;
68
+ if ( rule == null ) return null ;
80
69
81
- return resource ;
82
- }
70
+ var resource = new SiteMapResource ( ) ;
71
+ resource . Url = rule . MakeUrl ( pageRoute , customEntityRoute ) ;
72
+ resource . LastModifiedDate = customEntityRoute . LastPublishDate ;
73
+ resource . Priority = GetPriority ( pageRoute ) ;
83
74
84
- private SiteMapResource MapPageResource ( PageRoute pageRoute )
85
- {
86
- var resource = new SiteMapResource ( ) ;
87
- resource . Url = pageRoute . FullUrlPath ;
88
- resource . LastModifiedDate = pageRoute . LastPublishDate ;
89
- resource . Priority = GetPriority ( pageRoute ) ;
75
+ return resource ;
76
+ }
90
77
91
- return resource ;
92
- }
78
+ private SiteMapResource MapPageResource ( PageRoute pageRoute )
79
+ {
80
+ var resource = new SiteMapResource ( ) ;
81
+ resource . Url = pageRoute . FullUrlPath ;
82
+ resource . LastModifiedDate = pageRoute . LastPublishDate ;
83
+ resource . Priority = GetPriority ( pageRoute ) ;
93
84
94
- private decimal GetPriority ( PageRoute pageRoute )
95
- {
96
- var isDirectoryDefaultPage = pageRoute . IsDirectoryDefaultPage ( ) ;
97
- var isInSiteRoot = pageRoute . PageDirectory . IsSiteRoot ( ) ;
85
+ return resource ;
86
+ }
98
87
99
- // Site/Language root
100
- if ( isInSiteRoot && isDirectoryDefaultPage ) return 1 ;
101
- // Directory root
102
- if ( isDirectoryDefaultPage ) return 0.8m ;
88
+ private decimal GetPriority ( PageRoute pageRoute )
89
+ {
90
+ var isDirectoryDefaultPage = pageRoute . IsDirectoryDefaultPage ( ) ;
91
+ var isInSiteRoot = pageRoute . PageDirectory . IsSiteRoot ( ) ;
103
92
104
- // Directory sub pages
105
- return 0.6m ;
106
- }
93
+ // Site/Language root
94
+ if ( isInSiteRoot && isDirectoryDefaultPage ) return 1 ;
95
+ // Directory root
96
+ if ( isDirectoryDefaultPage ) return 0.8m ;
97
+
98
+ // Directory sub pages
99
+ return 0.6m ;
107
100
}
108
101
}
0 commit comments