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) {
if (o is ContentItem && member.Name == "Parts") {
foreach (var part in ((ContentItem) o).Parts) {
// ignore contentparts like ContentPart<ContentItemVersionRecord>
if(part.GetType().IsGenericType) {
continue;
}
SafeCall(() => Dump(part, part.PartDefinition.Name));
}
}

View File

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

View File

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