From d2fc47eb2ddfd21631fd405fcb1e42fa30101893 Mon Sep 17 00:00:00 2001 From: Skrypt Date: Tue, 28 Apr 2015 13:49:48 -0400 Subject: [PATCH] Adding Horizontal Tab nagigation on Autoroute Patterns Localization settings. Fixing Token Picker CSS (vertical position). --- .../Orchard.Autoroute.csproj | 1 + .../Orchard.Autoroute/ResourceManifest.cs | 1 + .../Scripts/autoroute-browser.js | 26 +++++++ .../Settings/AutorouteSettings.cs | 2 +- .../Settings/AutorouteSettingsEvents.cs | 4 +- .../Styles/orchard-autoroute-settings.css | 6 +- .../AutorouteSettings.cshtml | 73 ++++++++++++------- .../Styles/orchard-tokens-admin.css | 2 +- 8 files changed, 83 insertions(+), 32 deletions(-) create mode 100644 src/Orchard.Web/Modules/Orchard.Autoroute/Scripts/autoroute-browser.js diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Orchard.Autoroute.csproj b/src/Orchard.Web/Modules/Orchard.Autoroute/Orchard.Autoroute.csproj index 48473a2fc..6f07e8eb8 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Orchard.Autoroute.csproj +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Orchard.Autoroute.csproj @@ -71,6 +71,7 @@ + diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.Autoroute/ResourceManifest.cs index 92dfb3970..b91693763 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/ResourceManifest.cs +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/ResourceManifest.cs @@ -5,6 +5,7 @@ namespace Orchard.Autoroute { public void BuildManifests(ResourceManifestBuilder builder) { var manifest = builder.Add(); manifest.DefineStyle("AutorouteSettings").SetUrl("orchard-autoroute-settings.css"); + manifest.DefineScript("AutorouteBrowser").SetUrl("autoroute-browser.js").SetDependencies("jQuery"); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Scripts/autoroute-browser.js b/src/Orchard.Web/Modules/Orchard.Autoroute/Scripts/autoroute-browser.js new file mode 100644 index 000000000..38428a53c --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Scripts/autoroute-browser.js @@ -0,0 +1,26 @@ +(function ($) { + var AutorouteCultureBrowser = function (culture) { + var self = this; + this.culture = culture; + + this.initialize = function () { + self.culture.find(".autoroute-cultures").on("click", "a.culture", function (e) { + var categoryLink = $(this); + var href = categoryLink.attr("href"); + + self.culture.find(".autoroute-cultures li").removeClass("selected"); + categoryLink.closest("li").addClass("selected"); + self.culture.find(".items").hide(); + self.culture.find(href).show(); + e.preventDefault(); + }); + + self.culture.find(".autoroute-cultures a").first().click(); + } + }; + + $(function () { + var browser = new AutorouteCultureBrowser($("#main")); + browser.initialize(); + }); +})(jQuery); \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettings.cs b/src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettings.cs index c38cc1e93..b554ee114 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettings.cs +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettings.cs @@ -26,7 +26,7 @@ namespace Orchard.Autoroute.Settings { public bool AllowCustomPattern { get; set; } public bool AutomaticAdjustmentOnEdit { get; set; } public bool? IsDefault { get; set; } - public IEnumerable SiteCultures { get; set; } + public List SiteCultures { get; set; } public string DefaultSiteCulture { get; set; } /// diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettingsEvents.cs b/src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettingsEvents.cs index a3f07d060..c474888d5 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettingsEvents.cs +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettingsEvents.cs @@ -29,7 +29,7 @@ namespace Orchard.Autoroute.Settings { var settings = definition.Settings.GetModel(); //get cultures - settings.SiteCultures = _cultureManager.ListCultures(); + settings.SiteCultures = _cultureManager.ListCultures().ToList(); //get default site culture settings.DefaultSiteCulture = _cultureManager.GetSiteCulture(); @@ -81,7 +81,7 @@ namespace Orchard.Autoroute.Settings { }; //get cultures - settings.SiteCultures = _cultureManager.ListCultures(); + settings.SiteCultures = _cultureManager.ListCultures().ToList(); if (updateModel.TryUpdateModel(settings, "AutorouteSettings", null, null)) { // remove empty patterns diff --git a/src/Orchard.Web/Modules/Orchard.Autoroute/Styles/orchard-autoroute-settings.css b/src/Orchard.Web/Modules/Orchard.Autoroute/Styles/orchard-autoroute-settings.css index 20bdf7685..3386ae775 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Styles/orchard-autoroute-settings.css +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Styles/orchard-autoroute-settings.css @@ -18,6 +18,10 @@ text-align: right; } -.autoroute-settings-patterns tr td input { +.autoroute-settings-patterns, .autoroute-settings-patterns tr td input { width: 100%; } + +.autoroute-settings-patterns td, .autoroute-settings-patterns th { + padding:10px; +} \ No newline at end of file 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 2e38c6be1..3ffc66841 100644 --- a/src/Orchard.Web/Modules/Orchard.Autoroute/Views/DefinitionTemplates/AutorouteSettings.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Autoroute/Views/DefinitionTemplates/AutorouteSettings.cshtml @@ -2,6 +2,7 @@ @using Orchard.Utility.Extensions; @{ + Script.Require("AutorouteBrowser"); Style.Require("AutorouteSettings"); int patternCount = 0; int patternCultureCount = 0; @@ -21,31 +22,49 @@ @T("This option will cause the Url to automatically be regenerated when you edit existing content and publish it again, otherwise it will always keep the old route, or you have to perform bulk update in the Autoroute admin.") -@foreach (var culture in Model.SiteCultures) { -
- - - - - - - - - - @for (int index = 0; index < Model.Patterns.Where(x => x.Culture == culture).Count(); index++) { - - - - - - - - if (Model.Patterns[patternCount].Name != null) { patternCultureCount++; } else { patternCultureCount = 0; } - patternCount++; +
+

@T("Patterns") :

+
+
+
+
    + @{ + int i = 0; } -
-
@T("Default")@T("Name")@T("Name of the pattern")@T("Pattern")@T("The definition of the pattern")@T("Description")@T("The description of the pattern, displayed in the editor") 
@Html.RadioButtonFor(m => m.DefaultPatterns[cultureCount].Culture, culture + "|" + patternCultureCount, patternCultureCount.ToString() == Model.DefaultPatterns[cultureCount].PatternIndex ? new { @checked = "checked" } : null)@Html.TextBoxFor(m => m.Patterns[patternCount].Name, new { @class = "text" })@Html.TextBoxFor(m => m.Patterns[patternCount].Pattern, new { @class = "tokenized text" })@Html.TextBoxFor(m => m.Patterns[patternCount].Description, new { @class = "text" })@Html.HiddenFor(m => m.Patterns[patternCount].Culture) 
-
- cultureCount++; -} -@Display.TokenHint() \ No newline at end of file + @foreach (var culture in Model.SiteCultures) { + var cssClass = i == 0 ? "selected first" : i == Model.SiteCultures.Count - 1 ? "last" : "middle"; +
  • @culture
  • + i++; + } + + +
    + @foreach (var culture in Model.SiteCultures) { +
    + + + + + + + + + @for (int index = 0; index < Model.Patterns.Where(x => x.Culture == culture).Count(); index++) { + + + + + + + + if (Model.Patterns[patternCount].Name != null) { patternCultureCount++; } else { patternCultureCount = 0; } + patternCount++; + } + +
    @T("Default")@T("Name")@T("Name of the pattern")@T("Pattern")@T("The definition of the pattern")@T("Description")@T("The description of the pattern, displayed in the editor") 
    @Html.RadioButtonFor(m => m.DefaultPatterns[cultureCount].Culture, culture + "|" + patternCultureCount, patternCultureCount.ToString() == Model.DefaultPatterns[cultureCount].PatternIndex ? new { @checked = "checked" } : null)@Html.TextBoxFor(m => m.Patterns[patternCount].Name, new { @class = "text" })@Html.TextBoxFor(m => m.Patterns[patternCount].Pattern, new { @class = "tokenized text" })@Html.TextBoxFor(m => m.Patterns[patternCount].Description, new { @class = "text" })@Html.HiddenFor(m => m.Patterns[patternCount].Culture) 
    +
    + cultureCount++; + } +
    + +@Display.TokenHint() diff --git a/src/Orchard.Web/Modules/Orchard.Tokens/Styles/orchard-tokens-admin.css b/src/Orchard.Web/Modules/Orchard.Tokens/Styles/orchard-tokens-admin.css index 9361a6485..c77f8e956 100644 --- a/src/Orchard.Web/Modules/Orchard.Tokens/Styles/orchard-tokens-admin.css +++ b/src/Orchard.Web/Modules/Orchard.Tokens/Styles/orchard-tokens-admin.css @@ -8,7 +8,7 @@ cursor: pointer; padding-right:8px; - margin-top:10px; + margin-top:0.15em; right:100%; }