diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Models/LocalizationPart.cs b/src/Orchard.Web/Modules/Orchard.Localization/Models/LocalizationPart.cs index d35e37189..1f226cad8 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Models/LocalizationPart.cs +++ b/src/Orchard.Web/Modules/Orchard.Localization/Models/LocalizationPart.cs @@ -1,9 +1,10 @@ using Orchard.ContentManagement; +using Orchard.ContentManagement.Aspects; using Orchard.ContentManagement.Utilities; using Orchard.Localization.Records; namespace Orchard.Localization.Models { - public sealed class LocalizationPart : ContentPart { + public sealed class LocalizationPart : ContentPart, ILocalizablePart { private readonly LazyField _culture = new LazyField(); private readonly LazyField _masterContentItem = new LazyField(); @@ -25,5 +26,9 @@ namespace Orchard.Localization.Models { return Record.MasterContentItemId != 0; } } + + string ILocalizablePart.Culture { + get { return Culture == null ? null : Culture.Culture; } + } } } diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Views/EditorTemplates/Parts/Localization.ContentTranslations.Edit.cshtml b/src/Orchard.Web/Modules/Orchard.Localization/Views/EditorTemplates/Parts/Localization.ContentTranslations.Edit.cshtml index 5325ed79a..b4e9126e9 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Views/EditorTemplates/Parts/Localization.ContentTranslations.Edit.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Localization/Views/EditorTemplates/Parts/Localization.ContentTranslations.Edit.cshtml @@ -1,7 +1,7 @@ @model Orchard.Localization.ViewModels.EditLocalizationViewModel -@if (Model.ContentItem.ContentItem.Id > 0 && Model.SelectedCulture != null && Model.ContentLocalizations.Localizations.Count() > 0) { -Style.Require("LocalizationAdmin");
+@if (Model.ContentItem.ContentItem.Id > 0 && Model.SelectedCulture != null && Model.ContentLocalizations.Localizations.Count() > 0) { + Style.Require("LocalizationAdmin");
@T("This is the {0} variation of {1}.", @@ -9,7 +9,7 @@ Style.Require("LocalizationAdmin"); Html.ItemEditLink(Model.MasterContentItem ?? Model.ContentItem))
@Html.Hidden("SelectedCulture", Model.SelectedCulture)
- @if (Model.ContentLocalizations.Localizations.Count() > 0) { + if (Model.ContentLocalizations.Localizations.Count() > 0) {
@T("Other translations:")
@@ -17,4 +17,6 @@ Style.Require("LocalizationAdmin");
} -
} \ No newline at end of file +} +
@Html.ActionLink(T("+ New translation").Text, "Translate", "Admin", new { area = "Orchard.Localization", id = Model.ContentItem.Id }, null)
+ diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Filters/WidgetFilter.cs b/src/Orchard.Web/Modules/Orchard.Widgets/Filters/WidgetFilter.cs index e7aeb6d9e..b48b65de5 100644 --- a/src/Orchard.Web/Modules/Orchard.Widgets/Filters/WidgetFilter.cs +++ b/src/Orchard.Web/Modules/Orchard.Widgets/Filters/WidgetFilter.cs @@ -70,6 +70,13 @@ namespace Orchard.Widgets.Filters { Logger.Warning("The widget '{0}' is has no assigned layer or the layer does not exist.", widgetPart.Title); continue; } + + // ignore widget for different cultures + var localizablePart = widgetPart.As(); + if (localizablePart == null || localizablePart.Culture != workContext.CurrentCulture) { + continue; + } + if (activeLayerIds.Contains(commonPart.Container.ContentItem.Id)) { var widgetShape = _contentManager.BuildDisplay(widgetPart); zones[widgetPart.Record.Zone].Add(widgetShape, widgetPart.Record.Position); diff --git a/src/Orchard/ContentManagement/Aspects/ILocalizablePart.cs b/src/Orchard/ContentManagement/Aspects/ILocalizablePart.cs new file mode 100644 index 000000000..35a3dbfe5 --- /dev/null +++ b/src/Orchard/ContentManagement/Aspects/ILocalizablePart.cs @@ -0,0 +1,5 @@ +namespace Orchard.ContentManagement.Aspects { + public interface ILocalizablePart : IContent { + string Culture { get ; } + } +} diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index e96f77bda..eff56c790 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -164,6 +164,7 @@ +