From dfce6deaf11673b435e1a83e9f21d69698a07c55 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 4 Sep 2015 12:42:08 +0100 Subject: [PATCH] Incremental work on placeable content. --- .../Helpers/MetaDataExtensions.cs | 4 ++++ .../Orchard.Layouts/Orchard.Layouts.csproj | 10 +++++--- .../Scripts/contentpart-layouts-settings.js | 19 --------------- .../Settings/ContentPartLayoutSettings.cs | 2 +- ...s.cs => ContentPartLayoutSettingsHooks.cs} | 2 +- .../Settings/ContentTypeLayoutSettings.cs | 8 +++++++ .../ContentTypeLayoutSettingsHooks.cs | 23 +++++++++++++++++++ ...ooks.cs => LayoutTypePartSettingsHooks.cs} | 4 ++-- .../ContentPartLayoutSettings.cshtml | 4 ---- .../ContentTypeLayoutSettings.cshtml | 6 +++++ 10 files changed, 52 insertions(+), 30 deletions(-) delete mode 100644 src/Orchard.Web/Modules/Orchard.Layouts/Scripts/contentpart-layouts-settings.js rename src/Orchard.Web/Modules/Orchard.Layouts/Settings/{ContentPartSettingsHooks.cs => ContentPartLayoutSettingsHooks.cs} (91%) create mode 100644 src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentTypeLayoutSettings.cs create mode 100644 src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentTypeLayoutSettingsHooks.cs rename src/Orchard.Web/Modules/Orchard.Layouts/Settings/{LayoutSettingsHooks.cs => LayoutTypePartSettingsHooks.cs} (90%) create mode 100644 src/Orchard.Web/Modules/Orchard.Layouts/Views/DefinitionTemplates/ContentTypeLayoutSettings.cshtml diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Helpers/MetaDataExtensions.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Helpers/MetaDataExtensions.cs index 0464c6644..aebdde50e 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Helpers/MetaDataExtensions.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Helpers/MetaDataExtensions.cs @@ -5,5 +5,9 @@ namespace Orchard.Layouts.Helpers { public static ContentPartDefinitionBuilder Placeable(this ContentPartDefinitionBuilder builder, bool placeable = true) { return builder.WithSetting("ContentPartLayoutSettings.Placeable", placeable.ToString()); } + + public static ContentTypeDefinitionBuilder Placeable(this ContentTypeDefinitionBuilder builder, bool placeable = true) { + return builder.WithSetting("ContentTypeLayoutSettings.Placeable", placeable.ToString()); + } } } diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj index c1fb060d0..a8851131a 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj @@ -85,7 +85,6 @@ - @@ -394,6 +393,8 @@ + + @@ -430,9 +431,9 @@ - + - + @@ -598,6 +599,9 @@ + + + 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/contentpart-layouts-settings.js b/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/contentpart-layouts-settings.js deleted file mode 100644 index 99f4e8704..000000000 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Scripts/contentpart-layouts-settings.js +++ /dev/null @@ -1,19 +0,0 @@ -(function ($) { - var placeable = $("input[name=\"ContentPartLayoutSettings.Placeable\"]"); - - $(placeable).on("change", function (e) { - syncEnableEditorInput(); - }); - - $(function () { - syncEnableEditorInput(); - }); - - var syncEnableEditorInput = function () { - var enableEditorDialog = $("input[name=\"ContentPartLayoutSettings.EnableEditorDialog\"]"); - var isPlaceable = placeable.is(":checked"); - - enableEditorDialog.prop("disabled", !isPlaceable); - }; - -})(jQuery); \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentPartLayoutSettings.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentPartLayoutSettings.cs index 7cd2f622d..de763b862 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentPartLayoutSettings.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentPartLayoutSettings.cs @@ -1,7 +1,7 @@ namespace Orchard.Layouts.Settings { public class ContentPartLayoutSettings { /// - /// This setting is used to configure a part to be placeable on a layout. + /// This setting is used to configure a content part to be placeable on a layout. /// public bool Placeable { get; set; } } diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentPartSettingsHooks.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentPartLayoutSettingsHooks.cs similarity index 91% rename from src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentPartSettingsHooks.cs rename to src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentPartLayoutSettingsHooks.cs index 440f7e5d7..e63cbebc2 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentPartSettingsHooks.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentPartLayoutSettingsHooks.cs @@ -7,7 +7,7 @@ using Orchard.ContentManagement.ViewModels; using Orchard.Layouts.Helpers; namespace Orchard.Layouts.Settings { - public class ContentPartSettingsHooks : ContentDefinitionEditorEventsBase { + public class ContentPartLayoutSettingsHooks : ContentDefinitionEditorEventsBase { public override IEnumerable PartEditor(ContentPartDefinition definition) { var model = definition.Settings.GetModel(); diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentTypeLayoutSettings.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentTypeLayoutSettings.cs new file mode 100644 index 000000000..bf4acc405 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentTypeLayoutSettings.cs @@ -0,0 +1,8 @@ +namespace Orchard.Layouts.Settings { + public class ContentTypeLayoutSettings { + /// + /// This setting is used to configure a content type to be placeable on a layout. + /// + public bool Placeable { get; set; } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentTypeLayoutSettingsHooks.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentTypeLayoutSettingsHooks.cs new file mode 100644 index 000000000..d408c675d --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Settings/ContentTypeLayoutSettingsHooks.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using Orchard.ContentManagement; +using Orchard.ContentManagement.MetaData; +using Orchard.ContentManagement.MetaData.Builders; +using Orchard.ContentManagement.MetaData.Models; +using Orchard.ContentManagement.ViewModels; +using Orchard.Layouts.Helpers; + +namespace Orchard.Layouts.Settings { + public class ContentTypeLayoutSettingsHooks : ContentDefinitionEditorEventsBase { + public override IEnumerable TypeEditor(ContentTypeDefinition definition) { + var model = definition.Settings.GetModel(); + yield return DefinitionTemplate(model); + } + + public override IEnumerable TypeEditorUpdate(ContentTypeDefinitionBuilder builder, IUpdateModel updateModel) { + var model = new ContentTypeLayoutSettings(); + updateModel.TryUpdateModel(model, "ContentTypeLayoutSettings", null, null); + builder.Placeable(model.Placeable); + yield return DefinitionTemplate(model); + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Settings/LayoutSettingsHooks.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Settings/LayoutTypePartSettingsHooks.cs similarity index 90% rename from src/Orchard.Web/Modules/Orchard.Layouts/Settings/LayoutSettingsHooks.cs rename to src/Orchard.Web/Modules/Orchard.Layouts/Settings/LayoutTypePartSettingsHooks.cs index fb7804c2d..4e8ff7623 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Settings/LayoutSettingsHooks.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Settings/LayoutTypePartSettingsHooks.cs @@ -8,11 +8,11 @@ using Orchard.ContentManagement.ViewModels; using Orchard.Layouts.Services; namespace Orchard.Layouts.Settings { - public class LayoutSettingsHooks : ContentDefinitionEditorEventsBase { + public class LayoutTypePartSettingsHooks : ContentDefinitionEditorEventsBase { private readonly ILayoutSerializer _serializer; private readonly ILayoutManager _layoutManager; - public LayoutSettingsHooks(ILayoutSerializer serializer, ILayoutManager layoutManager) { + public LayoutTypePartSettingsHooks(ILayoutSerializer serializer, ILayoutManager layoutManager) { _serializer = serializer; _layoutManager = layoutManager; } diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Views/DefinitionTemplates/ContentPartLayoutSettings.cshtml b/src/Orchard.Web/Modules/Orchard.Layouts/Views/DefinitionTemplates/ContentPartLayoutSettings.cshtml index 9b9117ab3..755ac3a3b 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Views/DefinitionTemplates/ContentPartLayoutSettings.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Views/DefinitionTemplates/ContentPartLayoutSettings.cshtml @@ -1,8 +1,4 @@ @model Orchard.Layouts.Settings.ContentPartLayoutSettings -@{ - Script.Require("jQuery"); - Script.Include("contentpart-layouts-settings.js"); -}
@Html.CheckBoxFor(m => m.Placeable) diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Views/DefinitionTemplates/ContentTypeLayoutSettings.cshtml b/src/Orchard.Web/Modules/Orchard.Layouts/Views/DefinitionTemplates/ContentTypeLayoutSettings.cshtml new file mode 100644 index 000000000..3d6dd8cfb --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Views/DefinitionTemplates/ContentTypeLayoutSettings.cshtml @@ -0,0 +1,6 @@ +@model Orchard.Layouts.Settings.ContentTypeLayoutSettings +
+ @Html.CheckBoxFor(m => m.Placeable) + + @T("Check to allow this type to be placeable on a layout.") +
\ No newline at end of file