#20261: Fixing URL and widget shape alternates. All wrappers for those shapes also get similar alternates.

Work Item: 20261
This commit is contained in:
Piotr Szmyd
2013-11-08 04:43:35 +01:00
parent a294c9e450
commit ff67e7917d
3 changed files with 7 additions and 3 deletions

View File

@@ -56,13 +56,15 @@ namespace Orchard.DesignerTools.Services {
return;
}
var type = displayedContext.ShapeMetadata.WrapperType ?? displayedContext.ShapeMetadata.Type;
// appends Url alternates to current ones
displayedContext.ShapeMetadata.Alternates = displayedContext.ShapeMetadata.Alternates.SelectMany(
alternate => new [] { alternate }.Union(_urlAlternates.Value.Select(a => alternate + "__url__" + a))
).ToList();
// appends [ShapeType]__url__[Url] alternates
displayedContext.ShapeMetadata.Alternates = _urlAlternates.Value.Select(url => displayedContext.ShapeMetadata.Type + "__url__" + url)
displayedContext.ShapeMetadata.Alternates = _urlAlternates.Value.Select(url => type + "__url__" + url)
.Union(displayedContext.ShapeMetadata.Alternates)
.ToList();
});

View File

@@ -26,7 +26,7 @@ namespace Orchard.DesignerTools.Services {
var widgetPart = contentItem.As<WidgetPart>();
if (widgetPart != null) {
var zoneName = widgetPart.Zone;
var shapeName = displayedContext.ShapeMetadata.Type;
var shapeName = displayedContext.ShapeMetadata.WrapperType ?? displayedContext.ShapeMetadata.Type;
var contentTypeName = contentItem.ContentType;
// Add 2 alternates for flexible widget shape naming:

View File

@@ -49,7 +49,7 @@ namespace Orchard.DisplayManagement.Implementation {
var shapeMetadata = shape.Metadata;
// can't really cope with a shape that has no type information
if (shapeMetadata == null || string.IsNullOrEmpty(shapeMetadata.Type))
if (shapeMetadata == null || (string.IsNullOrEmpty(shapeMetadata.Type) && string.IsNullOrEmpty(shapeMetadata.WrapperType)))
return CoerceHtmlString(context.Value);
var workContext = _workContextAccessor.GetContext(context.ViewContext);
@@ -95,6 +95,7 @@ namespace Orchard.DisplayManagement.Implementation {
}
}
// storing current shape metadata so it won't get altered by wrappers' display process
var wrappers = shape.Metadata.Wrappers;
var alternates = shape.Metadata.Alternates;
var bindingSources = shape.Metadata.BindingSources;
@@ -110,6 +111,7 @@ namespace Orchard.DisplayManagement.Implementation {
shape.Metadata.ChildContent = Execute(context);
}
// restoring original shape metadata
shape.Metadata.WrapperType = currentWrapperType;
shape.Metadata.BindingSources = bindingSources;
shape.Metadata.Wrappers = wrappers;