From 202dbc3866cd5b39f14363501aed0d35ee9eb01a Mon Sep 17 00:00:00 2001 From: Skrypt Date: Wed, 3 Jun 2015 22:37:29 -0400 Subject: [PATCH] Adding the option to activate patterns per culture or not. Falling back to the default culture pattern(s) if not activated. --- .../Drivers/AutoroutePartDriver.cs | 16 +++++++--- .../Scripts/autoroute-browser.js | 16 ++++++++++ .../Services/AutorouteService.cs | 12 ++++--- .../AutorouteSettings.cshtml | 32 +++++++++++-------- 4 files changed, 53 insertions(+), 23 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Drivers/AutoroutePartDriver.cs b/src/Orchard.Web/Modules/Orchard.Autoroute/Drivers/AutoroutePartDriver.cs index b6ee05606..c19c83eaf 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Drivers/AutoroutePartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Drivers/AutoroutePartDriver.cs @@ -67,10 +67,12 @@ namespace Orchard.Autoroute.Drivers { } } - //if we are creating from a form post we use the form value for culture - HttpContextBase context = _httpContextAccessor.Current(); - if (context.Request.Form["Localization.SelectedCulture"] != null) { - itemCulture = context.Request.Form["Localization.SelectedCulture"].ToString(); + if (settings.UseCulturePattern) { + //if we are creating from a form post we use the form value for culture + HttpContextBase context = _httpContextAccessor.Current(); + if (context.Request.Form["Localization.SelectedCulture"] != null) { + itemCulture = context.Request.Form["Localization.SelectedCulture"].ToString(); + } } // if the content type has no pattern for autoroute, then use a default one @@ -155,12 +157,18 @@ namespace Orchard.Autoroute.Drivers { if (useCustomPattern != null) { part.UseCustomPattern = bool.Parse(useCustomPattern); } + + var useCulturePattern = context.Attribute(part.PartDefinition.Name, "UseCulturePattern"); + if (useCulturePattern != null) { + part.UseCulturePattern = bool.Parse(useCulturePattern); + } } protected override void Exporting(AutoroutePart part, ContentManagement.Handlers.ExportContentContext context) { context.Element(part.PartDefinition.Name).SetAttributeValue("Alias", String.IsNullOrEmpty(part.Record.DisplayAlias) ? "/" : part.Record.DisplayAlias); context.Element(part.PartDefinition.Name).SetAttributeValue("CustomPattern", part.Record.CustomPattern); context.Element(part.PartDefinition.Name).SetAttributeValue("UseCustomPattern", part.Record.UseCustomPattern); + context.Element(part.PartDefinition.Name).SetAttributeValue("UseCulturePattern", part.Record.UseCulturePattern); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Scripts/autoroute-browser.js b/src/Orchard.Web/Modules/Orchard.Autoroute/Scripts/autoroute-browser.js index 38428a53c..6361f160f 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Scripts/autoroute-browser.js +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Scripts/autoroute-browser.js @@ -19,8 +19,24 @@ } }; + $("#Parts_3__AutorouteSettings_UseCulturePattern[type=checkbox]").click(function () { + if ($(this).attr("checked") == "checked") { + $(".autoroute-cultures li:not(:first)").hide(); + $(".autoroute-cultures li").removeClass("selected"); + $(".autoroute-cultures li:first").addClass("selected"); + $("#content .items").hide(); + $("#content .items.default").show(); + $(this).removeAttr('checked'); + } else { + $(".autoroute-cultures li:not(:first)").show(); + $("#content .items.default").show(); + $(this).attr('checked', 'checked'); + } + }); + $(function () { var browser = new AutorouteCultureBrowser($("#main")); browser.initialize(); + }); })(jQuery); \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Services/AutorouteService.cs b/src/Orchard.Web/Modules/Orchard.Autoroute/Services/AutorouteService.cs index 3d5a3c0e2..7d4da146e 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Services/AutorouteService.cs +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Services/AutorouteService.cs @@ -53,7 +53,7 @@ namespace Orchard.Autoroute.Services { if (part == null) { throw new ArgumentNullException("part"); } - + var settings = part.TypePartDefinition.Settings.GetModel(); var itemCulture = _cultureManager.GetSiteCulture(); //if we are editing an existing content item @@ -66,10 +66,12 @@ namespace Orchard.Autoroute.Services { } } - //if we are creating from a form post we use the form value for culture - HttpContextBase context = _httpContextAccessor.Current(); - if (context.Request.Form["Localization.SelectedCulture"] != null) { - itemCulture = context.Request.Form["Localization.SelectedCulture"].ToString(); + if (settings.UseCulturePattern) { + //if we are creating from a form post we use the form value for culture + HttpContextBase context = _httpContextAccessor.Current(); + if (context.Request.Form["Localization.SelectedCulture"] != null) { + itemCulture = context.Request.Form["Localization.SelectedCulture"].ToString(); + } } string pattern = GetDefaultPattern(part.ContentItem.ContentType, itemCulture).Pattern; diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Views/DefinitionTemplates/AutorouteSettings.cshtml b/src/Orchard.Web/Modules/Orchard.Autoroute/Views/DefinitionTemplates/AutorouteSettings.cshtml index fa48bc71c..7c194d300 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Views/DefinitionTemplates/AutorouteSettings.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Views/DefinitionTemplates/AutorouteSettings.cshtml @@ -38,29 +38,22 @@
    @{ - int i = 0; + int i = 1; string cssClass = ""; } +
  • @Model.DefaultSiteCulture
  • @foreach (var culture in Model.SiteCultures) { - cssClass = ""; - if (Model.UseCulturePattern) { - cssClass = i == 0 ? "first selected" : i == Model.SiteCultures.Count - 1 ? "last" : "middle"; -
  • @culture
  • - } else { - cssClass = i == 0 ? "first" : i == Model.SiteCultures.Count - 1 ? "last" : "middle"; - if (culture == Model.DefaultSiteCulture) { -
  • @culture
  • - } else { - - } + if (culture != Model.DefaultSiteCulture) { + cssClass = i == Model.SiteCultures.Count - 1 ? "last" : "middle"; +
  • @culture
  • + i++; } - i++; }
@foreach (var culture in Model.SiteCultures) { -
+
@@ -88,4 +81,15 @@ + + + + + + + + + + + @Display.TokenHint()
@T("Default")