Adding the option to activate patterns per culture or not. Falling back to the default culture pattern(s) if not activated.

This commit is contained in:
Skrypt
2015-06-03 22:37:29 -04:00
parent 61fe66d806
commit 202dbc3866
4 changed files with 53 additions and 23 deletions

View File

@@ -67,11 +67,13 @@ namespace Orchard.Autoroute.Drivers {
}
}
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
if (!settings.Patterns.Any(x => x.Culture == itemCulture)) {
@@ -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);
}
}
}

View File

@@ -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);

View File

@@ -53,7 +53,7 @@ namespace Orchard.Autoroute.Services {
if (part == null) {
throw new ArgumentNullException("part");
}
var settings = part.TypePartDefinition.Settings.GetModel<AutorouteSettings>();
var itemCulture = _cultureManager.GetSiteCulture();
//if we are editing an existing content item
@@ -66,11 +66,13 @@ namespace Orchard.Autoroute.Services {
}
}
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;

View File

@@ -38,29 +38,22 @@
<div id="local-navigation">
<ul class="autoroute-cultures localmenu group">
@{
int i = 0;
int i = 1;
string cssClass = "";
}
<li class="first selected"><a class="culture" href="#cat-@Model.DefaultSiteCulture">@Model.DefaultSiteCulture</a></li>
@foreach (var culture in Model.SiteCultures) {
cssClass = "";
if (Model.UseCulturePattern) {
cssClass = i == 0 ? "first selected" : i == Model.SiteCultures.Count - 1 ? "last" : "middle";
<li class="@cssClass"><a class="culture" href="#cat-@culture">@culture</a></li>
} else {
cssClass = i == 0 ? "first" : i == Model.SiteCultures.Count - 1 ? "last" : "middle";
if (culture == Model.DefaultSiteCulture) {
<li class="@cssClass"><a class="culture" href="#cat-@culture">@culture</a></li>
} else {
<li class="@cssClass" style="display:none;"><a class="culture" href="#cat-@culture">@culture</a></li>
}
}
if (culture != Model.DefaultSiteCulture) {
cssClass = i == Model.SiteCultures.Count - 1 ? "last" : "middle";
<li class="@cssClass" style="@(Model.UseCulturePattern == false ? "display:none;" : "")"><a class="culture" href="#cat-@culture">@culture</a></li>
i++;
}
}
</ul>
</div>
<div id="content">
@foreach (var culture in Model.SiteCultures) {
<fieldset id="cat-@culture" class="items" style="@(cultureCount == 0 ? "display:block;" : "display:none;")">
<fieldset id="cat-@culture" class="items @(culture == Model.DefaultSiteCulture ? "default" : "")" style="@(culture == Model.DefaultSiteCulture ? "display:block;" : "display:none;")">
<table class="autoroute-settings-patterns">
<tr>
<th class="autoroute-settings-default">@T("Default")</th>
@@ -88,4 +81,15 @@
</div>
</fieldset>
@Display.TokenHint()