diff --git a/src/Orchard.Web/Core/Containers/Handlers/ContainerPartHandler.cs b/src/Orchard.Web/Core/Containers/Handlers/ContainerPartHandler.cs index 48b68ea37..6cd15ee26 100644 --- a/src/Orchard.Web/Core/Containers/Handlers/ContainerPartHandler.cs +++ b/src/Orchard.Web/Core/Containers/Handlers/ContainerPartHandler.cs @@ -26,7 +26,8 @@ namespace Orchard.Core.Containers.Handlers { _containerService = containerService; Filters.Add(StorageFilter.For(repository)); OnInitializing((context, part) => { - part.Record.ItemsShown = true; + part.Record.ItemsShown = part.Settings.GetModel().ItemsShownDefault + ?? part.PartDefinition.Settings.GetModel().ItemsShownDefault; part.Record.PageSize = part.Settings.GetModel().PageSizeDefault ?? part.PartDefinition.Settings.GetModel().PageSizeDefault; part.Record.Paginated = part.Settings.GetModel().PaginatedDefault diff --git a/src/Orchard.Web/Core/Containers/Settings/ContainerSettings.cs b/src/Orchard.Web/Core/Containers/Settings/ContainerSettings.cs index 5ed8f1e47..41a951565 100644 --- a/src/Orchard.Web/Core/Containers/Settings/ContainerSettings.cs +++ b/src/Orchard.Web/Core/Containers/Settings/ContainerSettings.cs @@ -11,12 +11,23 @@ using Orchard.Core.Containers.ViewModels; namespace Orchard.Core.Containers.Settings { public class ContainerPartSettings { + public const bool ItemsShownDefaultDefault = true; public const int PageSizeDefaultDefault = 10; public const bool PaginatedDefaultDefault = true; + private bool? _itemsShownDefault; private int? _pageSizeDefault; private bool? _paginiatedDefault; + public bool ItemsShownDefault { + get { + return _itemsShownDefault != null + ? (bool)_itemsShownDefault + : ItemsShownDefaultDefault; + } + set { _itemsShownDefault = value; } + } + public int PageSizeDefault { get { return _pageSizeDefault != null @@ -37,6 +48,7 @@ namespace Orchard.Core.Containers.Settings { } public class ContainerTypePartSettings { + public bool? ItemsShownDefault { get; set; } public int? PageSizeDefault { get; set; } public bool? PaginatedDefault { get; set; } public string RestrictedItemContentTypes { get; set; } @@ -62,6 +74,9 @@ namespace Orchard.Core.Containers.Settings { var model = definition.Settings.GetModel(); var partModel = definition.PartDefinition.Settings.GetModel(); + + if (model.ItemsShownDefault == null) + model.ItemsShownDefault = partModel.ItemsShownDefault; if (model.PageSizeDefault == null) model.PageSizeDefault = partModel.PageSizeDefault; @@ -70,6 +85,7 @@ namespace Orchard.Core.Containers.Settings { model.PaginatedDefault = partModel.PaginatedDefault; var viewModel = new ContainerTypePartSettingsViewModel { + ItemsShownDefault = model.ItemsShownDefault, PageSizeDefault = model.PageSizeDefault, PaginatedDefault = model.PaginatedDefault, RestrictedItemContentTypes = _contentDefinitionManager.ParseContentTypeDefinitions(model.RestrictedItemContentTypes).Select(x => x.Name).ToList(), @@ -99,6 +115,7 @@ namespace Orchard.Core.Containers.Settings { AvailableItemContentTypes = _containerService.GetContainableTypes().ToList() }; updateModel.TryUpdateModel(viewModel, "ContainerTypePartSettingsViewModel", null, new[] { "AvailableItemContentTypes" }); + builder.WithSetting("ContainerTypePartSettings.ItemsShownDefault", viewModel.ItemsShownDefault.ToString()); builder.WithSetting("ContainerTypePartSettings.PageSizeDefault", viewModel.PageSizeDefault.ToString()); builder.WithSetting("ContainerTypePartSettings.PaginatedDefault", viewModel.PaginatedDefault.ToString()); builder.WithSetting("ContainerTypePartSettings.RestrictedItemContentTypes", viewModel.RestrictedItemContentTypes != null ? string.Join(",", viewModel.RestrictedItemContentTypes) : ""); @@ -114,6 +131,7 @@ namespace Orchard.Core.Containers.Settings { var model = new ContainerPartSettings(); updateModel.TryUpdateModel(model, "ContainerPartSettings", null, null); + builder.WithSetting("ContainerPartSettings.ItemsShownDefault", model.ItemsShownDefault.ToString()); builder.WithSetting("ContainerPartSettings.PageSizeDefault", model.PageSizeDefault.ToString()); builder.WithSetting("ContainerPartSettings.PaginatedDefault", model.PaginatedDefault.ToString()); yield return DefinitionTemplate(model); diff --git a/src/Orchard.Web/Core/Containers/ViewModels/ContainerTypePartSettingsViewModel.cs b/src/Orchard.Web/Core/Containers/ViewModels/ContainerTypePartSettingsViewModel.cs index 04f930c7b..e37f392f7 100644 --- a/src/Orchard.Web/Core/Containers/ViewModels/ContainerTypePartSettingsViewModel.cs +++ b/src/Orchard.Web/Core/Containers/ViewModels/ContainerTypePartSettingsViewModel.cs @@ -5,6 +5,7 @@ using Orchard.Core.Containers.Services; namespace Orchard.Core.Containers.ViewModels { public class ContainerTypePartSettingsViewModel { + public bool? ItemsShownDefault { get; set; } public int? PageSizeDefault { get; set; } public bool? PaginatedDefault { get; set; } public bool RestrictItemContentTypes { get; set; } diff --git a/src/Orchard.Web/Core/Containers/Views/DefinitionTemplates/ContainerTypePartSettingsViewModel.cshtml b/src/Orchard.Web/Core/Containers/Views/DefinitionTemplates/ContainerTypePartSettingsViewModel.cshtml index d384e16f7..94af98233 100644 --- a/src/Orchard.Web/Core/Containers/Views/DefinitionTemplates/ContainerTypePartSettingsViewModel.cshtml +++ b/src/Orchard.Web/Core/Containers/Views/DefinitionTemplates/ContainerTypePartSettingsViewModel.cshtml @@ -2,6 +2,10 @@ @{ Script.Require("ShapesBase"); } +
+ + @Html.EditorFor(m => m.ItemsShownDefault) +
@Html.EditorFor(m => m.PageSizeDefault)