mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
#20261: Fixing URL and widget shape alternates. All wrappers for those shapes also get similar alternates.
Work Item: 20261
This commit is contained in:
@@ -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();
|
||||
});
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user