From b36264266cb4e575d715f6eef1d29b151fe57c29 Mon Sep 17 00:00:00 2001 From: Nicholas Mayne Date: Mon, 11 Aug 2014 22:46:59 +0100 Subject: [PATCH] More work to RTL/LTR conversion --- .../Core/Shapes/Views/Document.cshtml | 6 +-- .../Services/AdminDirectionalityFactory.cs | 48 +++++++++---------- .../TinyMce/Views/Body-Html.Editor.cshtml | 2 +- .../HtmlLocalizationExtensions.cs | 30 ++++-------- 4 files changed, 36 insertions(+), 50 deletions(-) diff --git a/src/Orchard.Web/Core/Shapes/Views/Document.cshtml b/src/Orchard.Web/Core/Shapes/Views/Document.cshtml index 6e53b65a0..43ea91b09 100644 --- a/src/Orchard.Web/Core/Shapes/Views/Document.cshtml +++ b/src/Orchard.Web/Core/Shapes/Views/Document.cshtml @@ -1,4 +1,4 @@ -@using System.Globalization +@using Orchard.Localization @using Orchard.Mvc.Html; @using Orchard.UI.Resources; @{ @@ -7,10 +7,10 @@ string title = Convert.ToString(Model.Title); string siteName = Convert.ToString(WorkContext.CurrentSite.SiteName); - bool isRtl = CultureInfo.GetCultureInfo(WorkContext.CurrentCulture).TextInfo.IsRightToLeft; + bool isRtl = WorkContext.CurrentCultureInfo().TextInfo.IsRightToLeft; } - + @Html.Title(title, siteName) diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Services/AdminDirectionalityFactory.cs b/src/Orchard.Web/Modules/Orchard.Localization/Services/AdminDirectionalityFactory.cs index 0cfbe3150..2914f21da 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Services/AdminDirectionalityFactory.cs +++ b/src/Orchard.Web/Modules/Orchard.Localization/Services/AdminDirectionalityFactory.cs @@ -1,3 +1,4 @@ +using System; using System.Globalization; using System.Web.Routing; using Orchard.ContentManagement; @@ -8,7 +9,7 @@ using Orchard.UI.Admin; namespace Orchard.Localization.Services { [OrchardFeature("Orchard.Localization.CutlureSelector")] - public class AdminDirectionalityFactory : ShapeFactoryEvents { + public class AdminDirectionalityFactory : ShapeDisplayEvents { private readonly ILocalizationService _localizationService; private readonly ICultureManager _cultureManager; private readonly WorkContext _workContext; @@ -34,33 +35,32 @@ namespace Orchard.Localization.Services { return false; } - public override void Creating(ShapeCreatingContext context) { - } - - public override void Created(ShapeCreatedContext context) { - if (!IsActivable()) { - return; - } - - if (context.ShapeType != "Zone") - return; - - ContentItem contentItem = context.Shape.ContentItem; - - // if not, check for ContentPart - if (contentItem == null) { - ContentPart contentPart = context.Shape.ContentPart; - if (contentPart != null) { - contentItem = contentPart.ContentItem; + public override void Displaying(ShapeDisplayingContext context) { + context.ShapeMetadata.OnDisplaying(displayedContext => { + if (!IsActivable()) { + return; } - } + + if (context.ShapeMetadata.Type != "Zone") + return; - var culture = (contentItem != null) ? _localizationService.GetContentCulture(contentItem) : _cultureManager.GetSiteCulture(); + ContentItem contentItem = context.Shape.ContentItem; - var cultureInfo = CultureInfo.GetCultureInfo(culture); + // if not, check for ContentPart + if (contentItem == null) { + ContentPart contentPart = context.Shape.ContentPart; + if (contentPart != null) { + contentItem = contentPart.ContentItem; + } + } - if (cultureInfo.TextInfo.IsRightToLeft) - context.Shape.Attributes.Add("dir", "rtl"); + var culture = (contentItem != null) ? _localizationService.GetContentCulture(contentItem) : _cultureManager.GetSiteCulture(); + + var cultureInfo = CultureInfo.GetCultureInfo(culture); + + if (cultureInfo.TextInfo.IsRightToLeft) + _workContext.Layout.Content.Attributes.Add("dir", "rtl"); + }); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/TinyMce/Views/Body-Html.Editor.cshtml b/src/Orchard.Web/Modules/TinyMce/Views/Body-Html.Editor.cshtml index de5c3871f..7e71f508f 100644 --- a/src/Orchard.Web/Modules/TinyMce/Views/Body-Html.Editor.cshtml +++ b/src/Orchard.Web/Modules/TinyMce/Views/Body-Html.Editor.cshtml @@ -27,7 +27,7 @@ diff --git a/src/Orchard/Localization/HtmlLocalizationExtensions.cs b/src/Orchard/Localization/HtmlLocalizationExtensions.cs index 439c2f5a6..a3381f8b1 100644 --- a/src/Orchard/Localization/HtmlLocalizationExtensions.cs +++ b/src/Orchard/Localization/HtmlLocalizationExtensions.cs @@ -5,36 +5,22 @@ using Orchard.ContentManagement.Aspects; using Orchard.Mvc.Html; namespace Orchard.Localization { - public static class HtmlLocalizationExtensions { - /// - /// The dir attribute specifies the text direction. - /// - /// Returns rtl or ltr based on if your content has an ILocalizableAspect or not. - /// - /// Returns rtl or ltr - public static string Directionality(this HtmlHelper html) { - return html.Directionality(null); + public static class LocalizationExtensions { + public static CultureInfo CurrentCultureInfo(this WorkContext workContext) { + return CultureInfo.GetCultureInfo(workContext.CurrentCulture); } - /// - /// The dir attribute specifies the text direction of the element's content. - /// - /// Returns rtl or ltr based on if your content has an ILocalizableAspect or not. - /// - /// Returns rtl or ltr - public static string Directionality(this HtmlHelper html, IContent content) { - return CultureInfo.GetCultureInfo(html.ContentCulture(content)).TextInfo.IsRightToLeft ? "rtl" : "ltr"; + public static string GetTextDirection(this WorkContext workContext) { + return workContext.GetTextDirection(null); } - public static string ContentCulture(this HtmlHelper html, IContent content) { - var workContext = html.GetWorkContext(); - + public static string GetTextDirection(this WorkContext workContext, IContent content) { var culture = workContext.CurrentSite.SiteCulture; if (content != null && content.Has()) { - return content.As().Culture; + culture = content.As().Culture; } - return culture; + return CultureInfo.GetCultureInfo(culture).TextInfo.IsRightToLeft ? "rtl" : "ltr"; ; } } } \ No newline at end of file