mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-27 04:19:04 +08:00
[Fixes 6890] Admin Menu: fix for "Content" item visibility. (#7464)
Fixes #6890
This commit is contained in:
committed by
Sébastien Ros
parent
3bda4acee1
commit
27a9bae394
@@ -3,16 +3,19 @@ using Orchard.ContentManagement;
|
|||||||
using Orchard.ContentManagement.MetaData;
|
using Orchard.ContentManagement.MetaData;
|
||||||
using Orchard.Core.Contents.Settings;
|
using Orchard.Core.Contents.Settings;
|
||||||
using Orchard.Localization;
|
using Orchard.Localization;
|
||||||
|
using Orchard.Security;
|
||||||
using Orchard.UI.Navigation;
|
using Orchard.UI.Navigation;
|
||||||
|
|
||||||
namespace Orchard.Core.Contents {
|
namespace Orchard.Core.Contents {
|
||||||
public class AdminMenu : INavigationProvider {
|
public class AdminMenu : INavigationProvider {
|
||||||
private readonly IContentDefinitionManager _contentDefinitionManager;
|
private readonly IContentDefinitionManager _contentDefinitionManager;
|
||||||
private readonly IContentManager _contentManager;
|
private readonly IContentManager _contentManager;
|
||||||
|
private readonly IAuthorizer _authorizer;
|
||||||
|
|
||||||
public AdminMenu(IContentDefinitionManager contentDefinitionManager, IContentManager contentManager) {
|
public AdminMenu(IContentDefinitionManager contentDefinitionManager, IContentManager contentManager, IAuthorizer authorizer) {
|
||||||
_contentDefinitionManager = contentDefinitionManager;
|
_contentDefinitionManager = contentDefinitionManager;
|
||||||
_contentManager = contentManager;
|
_contentManager = contentManager;
|
||||||
|
_authorizer = authorizer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Localizer T { get; set; }
|
public Localizer T { get; set; }
|
||||||
@@ -20,10 +23,17 @@ namespace Orchard.Core.Contents {
|
|||||||
|
|
||||||
public void GetNavigation(NavigationBuilder builder) {
|
public void GetNavigation(NavigationBuilder builder) {
|
||||||
var contentTypeDefinitions = _contentDefinitionManager.ListTypeDefinitions().OrderBy(d => d.Name);
|
var contentTypeDefinitions = _contentDefinitionManager.ListTypeDefinitions().OrderBy(d => d.Name);
|
||||||
builder.AddImageSet("content")
|
var listableContentTypes = contentTypeDefinitions.Where(ctd => ctd.Settings.GetModel<ContentTypeSettings>().Listable);
|
||||||
.Add(T("Content"), "1.4", menu => menu
|
ContentItem listableCi = null;
|
||||||
.Permission(Permissions.EditOwnContent)
|
foreach(var contentTypeDefinition in listableContentTypes) {
|
||||||
.Add(T("Content Items"), "1", item => item.Action("List", "Admin", new { area = "Contents", id = "" }).LocalNav()));
|
listableCi = _contentManager.New(contentTypeDefinition.Name);
|
||||||
|
if(_authorizer.Authorize(Permissions.EditContent, listableCi)) {
|
||||||
|
builder.AddImageSet("content")
|
||||||
|
.Add(T("Content"), "1.4", menu => menu
|
||||||
|
.Add(T("Content Items"), "1", item => item.Action("List", "Admin", new { area = "Contents", id = "" }).LocalNav()));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
var contentTypes = contentTypeDefinitions.Where(ctd => ctd.Settings.GetModel<ContentTypeSettings>().Creatable).OrderBy(ctd => ctd.DisplayName);
|
var contentTypes = contentTypeDefinitions.Where(ctd => ctd.Settings.GetModel<ContentTypeSettings>().Creatable).OrderBy(ctd => ctd.DisplayName);
|
||||||
if (contentTypes.Any()) {
|
if (contentTypes.Any()) {
|
||||||
builder.Add(T("New"), "-1", menu => {
|
builder.Add(T("New"), "-1", menu => {
|
||||||
|
|||||||
Reference in New Issue
Block a user