From 8dd8d7cc46abf4f0aa55563541a477248ffec059 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Tue, 7 May 2013 10:59:46 -0700 Subject: [PATCH] #19528: Fixing localized widgets display rule Work Item: 19528 --HG-- branch : 1.x --- .../Orchard.Widgets/Filters/WidgetFilter.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Filters/WidgetFilter.cs b/src/Orchard.Web/Modules/Orchard.Widgets/Filters/WidgetFilter.cs index 28505feca..1749b2bfa 100644 --- a/src/Orchard.Web/Modules/Orchard.Widgets/Filters/WidgetFilter.cs +++ b/src/Orchard.Web/Modules/Orchard.Widgets/Filters/WidgetFilter.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Web.Mvc; using Orchard.ContentManagement; using Orchard.ContentManagement.Aspects; +using Orchard.Core.Settings.Models; using Orchard.Localization; using Orchard.Logging; using Orchard.Mvc.Filters; @@ -65,6 +66,9 @@ namespace Orchard.Widgets.Filters { // Build and add shape to zone. var zones = workContext.Layout.Zones; + var defaultCulture = workContext.CurrentSite.As().SiteCulture; + var currentCulture = workContext.CurrentCulture; + foreach (var widgetPart in widgetParts) { var commonPart = widgetPart.As(); if (commonPart == null || commonPart.Container == null) { @@ -74,8 +78,17 @@ namespace Orchard.Widgets.Filters { // ignore widget for different cultures var localizablePart = widgetPart.As(); - if (localizablePart != null && localizablePart.Culture != workContext.CurrentCulture) { - continue; + if (localizablePart != null) { + // if localized culture is null then show if current culture is the default + // this allows a user to show a content item for the default culture only + if (localizablePart.Culture == null && defaultCulture != currentCulture) { + continue; + } + + // if culture is set, show only if current culture is the same + if (localizablePart.Culture != null && localizablePart.Culture != currentCulture) { + continue; + } } var widgetShape = _contentManager.BuildDisplay(widgetPart);