Fixing Json escaping in shape tracing

--HG--
branch : 1.x
This commit is contained in:
Sebastien Ros
2011-04-07 11:53:05 -07:00
parent 05d66c171b
commit 6b7efb2b8f
3 changed files with 17 additions and 9 deletions

View File

@@ -126,6 +126,11 @@ namespace Orchard.DesignerTools.Services {
foreach (var member in members) { foreach (var member in members) {
if (o is ContentItem && member.Name == "Parts") { if (o is ContentItem && member.Name == "Parts") {
foreach (var part in ((ContentItem) o).Parts) { foreach (var part in ((ContentItem) o).Parts) {
// ignore contentparts like ContentPart<ContentItemVersionRecord>
if(part.GetType().IsGenericType) {
continue;
}
SafeCall(() => Dump(part, part.PartDefinition.Name)); SafeCall(() => Dump(part, part.PartDefinition.Name));
} }
} }

View File

@@ -100,7 +100,7 @@ namespace Orchard.DesignerTools.Services {
var sb = new StringBuilder(); var sb = new StringBuilder();
ConvertToJSon(dump, sb); ConvertToJSon(dump, sb);
shape.Dump = sb.ToString(); shape._Dump = sb.ToString();
shape.Template = null; shape.Template = null;
shape.OriginalTemplate = descriptor.BindingSource; shape.OriginalTemplate = descriptor.BindingSource;
@@ -159,26 +159,29 @@ namespace Orchard.DesignerTools.Services {
switch (x.Name.ToString()) { switch (x.Name.ToString()) {
case "ul" : case "ul" :
var first = true;
foreach(var li in x.Elements()) { foreach(var li in x.Elements()) {
if (!first) sb.Append(",");
ConvertToJSon(li, sb); ConvertToJSon(li, sb);
sb.Append(","); first = false;
} }
break; break;
case "li": case "li":
var name = x.Element("h1").Value; var name = x.Element("h1").Value;
var value = x.Element("span").Value; var value = x.Element("span").Value;
sb.AppendFormat("name: \"{0}\", ", FormatJsonValue(name)); sb.AppendFormat("\"name\": \"{0}\", ", FormatJsonValue(name));
sb.AppendFormat("value: \"{0}\"", FormatJsonValue(value)); sb.AppendFormat("\"value\": \"{0}\"", FormatJsonValue(value));
var ul = x.Element("ul"); var ul = x.Element("ul");
if (ul != null && ul.Descendants().Any()) { if (ul != null && ul.Descendants().Any()) {
sb.Append(", children: ["); sb.Append(", \"children\": [");
first = true;
foreach (var li in ul.Elements()) { foreach (var li in ul.Elements()) {
sb.Append("{ "); sb.Append(first ? "{ " : ", {");
ConvertToJSon(li, sb); ConvertToJSon(li, sb);
sb.Append(" }"); sb.Append(" }");
sb.Append(", "); first = false;
} }
sb.Append("]"); sb.Append("]");
} }
@@ -189,7 +192,7 @@ namespace Orchard.DesignerTools.Services {
private static string FormatJsonValue(string value) { private static string FormatJsonValue(string value) {
// replace " by \" in json strings // replace " by \" in json strings
return value.Replace("\"", @"\"""); return value.Replace(@"\", @"\\").Replace("\"", @"\""").Replace("\r\n", @"\n").Replace("\n", @"\n");
} }
private static string FormatShapeFilename(string shape, string shapeType, string displayType, string themePrefix, string extension) { private static string FormatShapeFilename(string shape, string shapeType, string displayType, string themePrefix, string extension) {

View File

@@ -40,6 +40,6 @@
Wrappers: Model.Metadata.Wrappers, Wrappers: Model.Metadata.Wrappers,
ChildContent: Model.Metadata.ChildContent, ChildContent: Model.Metadata.ChildContent,
ShapeId: Model.ShapeId, ShapeId: Model.ShapeId,
Dump: Model.Dump Dump: Model._Dump
)); ));
} }