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 @@
@foreach (var culture in Model.SiteCultures) { -
+
@@ -88,4 +81,15 @@ + + + + + + + + + + + @Display.TokenHint()
@T("Default")