diff --git a/src/Orchard.Web/Core/Contents/Controllers/AdminController.cs b/src/Orchard.Web/Core/Contents/Controllers/AdminController.cs index 9b6c89c97..f2b2a5d30 100644 --- a/src/Orchard.Web/Core/Contents/Controllers/AdminController.cs +++ b/src/Orchard.Web/Core/Contents/Controllers/AdminController.cs @@ -7,7 +7,9 @@ using System.Web.Routing; using Orchard.ContentManagement; using Orchard.ContentManagement.Aspects; using Orchard.ContentManagement.MetaData; +using Orchard.ContentManagement.MetaData.Models; using Orchard.Core.Common.Models; +using Orchard.Core.Contents.Settings; using Orchard.Core.Contents.ViewModels; using Orchard.Data; using Orchard.Localization; @@ -50,7 +52,7 @@ namespace Orchard.Core.Contents.Controllers { const int pageSize = 20; var skip = (Math.Max(model.Page ?? 0, 1) - 1) * pageSize; - var query = _contentManager.Query(VersionOptions.Latest, _contentDefinitionManager.ListTypeDefinitions().Select(ctd => ctd.Name).ToArray()); + var query = _contentManager.Query(VersionOptions.Latest, GetCreatableTypes().Select(ctd => ctd.Name).ToArray()); if (!string.IsNullOrEmpty(model.TypeName)) { var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(model.TypeName); @@ -107,20 +109,24 @@ namespace Orchard.Core.Contents.Controllers { model.Entries = contentItems.Select(BuildEntry).ToList(); model.Options.SelectedFilter = model.TypeName; - model.Options.FilterOptions = _contentDefinitionManager.ListTypeDefinitions() + model.Options.FilterOptions = GetCreatableTypes() .Select(ctd => new KeyValuePair(ctd.Name, ctd.DisplayName)) .ToList().OrderBy(kvp => kvp.Key); return View("List", model); } + private IEnumerable GetCreatableTypes() { + return _contentDefinitionManager.ListTypeDefinitions().Where(ctd => ctd.Settings.GetModel().Creatable); + } + [HttpPost, ActionName("List")] [FormValueRequired("submit.Filter")] public ActionResult ListFilterPOST(ContentOptions options) { var routeValues = ControllerContext.RouteData.Values; if (options != null) { routeValues["Options.OrderBy"] = options.OrderBy; //todo: don't hard-code the key - if (_contentDefinitionManager.ListTypeDefinitions().Any(ctd => string.Equals(ctd.Name, options.SelectedFilter, StringComparison.OrdinalIgnoreCase))) { + if (GetCreatableTypes().Any(ctd => string.Equals(ctd.Name, options.SelectedFilter, StringComparison.OrdinalIgnoreCase))) { routeValues["id"] = options.SelectedFilter; } else { @@ -203,7 +209,7 @@ namespace Orchard.Core.Contents.Controllers { ActionResult CreatableTypeList() { var model = new ListContentTypesViewModel { - Types = _contentDefinitionManager.ListTypeDefinitions() + Types = GetCreatableTypes() }; return View("CreatableTypeList", model);