#19040: Encoding alternates

Work Item: 19040

--HG--
branch : 1.x
This commit is contained in:
Sebastien Ros
2012-09-27 12:16:13 -07:00
parent 8efa6e102d
commit c922b192a5
2 changed files with 28 additions and 9 deletions

View File

@@ -16,21 +16,31 @@ namespace Orchard.Core.Contents {
// Display type > content type > specific content > display type for a content type > display type for specific content
// Content__[DisplayType] e.g. Content.Summary
displaying.ShapeMetadata.Alternates.Add("Content_" + displaying.ShapeMetadata.DisplayType);
displaying.ShapeMetadata.Alternates.Add("Content_" + EncodeAlternateElement(displaying.ShapeMetadata.DisplayType));
// Content__[ContentType] e.g. Content-BlogPost
displaying.ShapeMetadata.Alternates.Add("Content__" + contentItem.ContentType);
displaying.ShapeMetadata.Alternates.Add("Content__" + EncodeAlternateElement(contentItem.ContentType));
// Content__[Id] e.g. Content-42
displaying.ShapeMetadata.Alternates.Add("Content__" + contentItem.Id);
// Content_[DisplayType]__[ContentType] e.g. Content-BlogPost.Summary
displaying.ShapeMetadata.Alternates.Add("Content_" + displaying.ShapeMetadata.DisplayType + "__" + contentItem.ContentType);
displaying.ShapeMetadata.Alternates.Add("Content_" + displaying.ShapeMetadata.DisplayType + "__" + EncodeAlternateElement(contentItem.ContentType));
// Content_[DisplayType]__[Id] e.g. Content-42.Summary
displaying.ShapeMetadata.Alternates.Add("Content_" + displaying.ShapeMetadata.DisplayType + "__" + contentItem.Id);
}
});
}
/// <summary>
/// Encodes dashed and dots so that they don't conflict in filenames
/// </summary>
/// <param name="alternateElement"></param>
/// <returns></returns>
private string EncodeAlternateElement(string alternateElement) {
return alternateElement.Replace("-", "__").Replace(".", "_");
}
}
}

View File

@@ -156,31 +156,31 @@ namespace Orchard.ContentManagement.Drivers {
// [ShapeType__FieldName] e.g. Fields/Common.Text-Teaser
if ( !string.IsNullOrEmpty(fieldName) )
metadata.Alternates.Add(shapeType + "__" + fieldName);
metadata.Alternates.Add(shapeType + "__" + EncodeAlternateElement(fieldName));
// [ShapeType__PartName] e.g. Fields/Common.Text-TeaserPart
if ( !string.IsNullOrEmpty(partName) ) {
metadata.Alternates.Add(shapeType + "__" + partName);
metadata.Alternates.Add(shapeType + "__" + EncodeAlternateElement(partName));
}
// [ShapeType]__[ContentType]__[PartName] e.g. Fields/Common.Text-Blog-TeaserPart
if ( !string.IsNullOrEmpty(partName) && !string.IsNullOrEmpty(contentType) && !dynamicType ) {
metadata.Alternates.Add(shapeType + "__" + contentType + "__" + partName);
metadata.Alternates.Add(EncodeAlternateElement(shapeType + "__" + contentType + "__" + partName));
}
// [ShapeType]__[PartName]__[FieldName] e.g. Fields/Common.Text-TeaserPart-Teaser
if ( !string.IsNullOrEmpty(partName) && !string.IsNullOrEmpty(fieldName) ) {
metadata.Alternates.Add(shapeType + "__" + partName + "__" + fieldName);
metadata.Alternates.Add(EncodeAlternateElement(shapeType + "__" + partName + "__" + fieldName));
}
// [ShapeType]__[ContentType]__[FieldName] e.g. Fields/Common.Text-Blog-Teaser
if ( !string.IsNullOrEmpty(contentType) && !string.IsNullOrEmpty(fieldName) ) {
metadata.Alternates.Add(shapeType + "__" + contentType + "__" + fieldName);
metadata.Alternates.Add(EncodeAlternateElement(shapeType + "__" + contentType + "__" + fieldName));
}
// [ShapeType]__[ContentType]__[PartName]__[FieldName] e.g. Fields/Common.Text-Blog-TeaserPart-Teaser
if ( !string.IsNullOrEmpty(contentType) && !string.IsNullOrEmpty(partName) && !string.IsNullOrEmpty(fieldName) && !dynamicType ) {
metadata.Alternates.Add(shapeType + "__" + contentType + "__" + partName );
metadata.Alternates.Add(EncodeAlternateElement(shapeType + "__" + contentType + "__" + partName));
}
return shape;
@@ -207,5 +207,14 @@ namespace Orchard.ContentManagement.Drivers {
public CombinedResult Combined(params DriverResult[] results) {
return new CombinedResult(results);
}
/// <summary>
/// Encodes dashed and dots so that they don't conflict in filenames
/// </summary>
/// <param name="alternateElement"></param>
/// <returns></returns>
private static string EncodeAlternateElement(string alternateElement) {
return alternateElement.Replace("-", "__").Replace(".", "_");
}
}
}