mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-01-02 20:42:45 +08:00
committed by
Sébastien Ros
parent
c0d207f228
commit
b740bae395
@@ -1,7 +1,12 @@
|
|||||||
using Orchard.ContentManagement.Drivers;
|
using Orchard.ContentManagement;
|
||||||
|
using Orchard.ContentManagement.Drivers;
|
||||||
|
using Orchard.ContentManagement.FieldStorage.InfosetStorage;
|
||||||
using Orchard.MediaLibrary.Models;
|
using Orchard.MediaLibrary.Models;
|
||||||
|
using System.Xml;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace Orchard.MediaLibrary.Drivers {
|
namespace Orchard.MediaLibrary.Drivers
|
||||||
|
{
|
||||||
public class OEmbedPartDriver : ContentPartDriver<OEmbedPart> {
|
public class OEmbedPartDriver : ContentPartDriver<OEmbedPart> {
|
||||||
protected override DriverResult Display(OEmbedPart part, string displayType, dynamic shapeHelper) {
|
protected override DriverResult Display(OEmbedPart part, string displayType, dynamic shapeHelper) {
|
||||||
return Combined(
|
return Combined(
|
||||||
@@ -13,18 +18,42 @@ namespace Orchard.MediaLibrary.Drivers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected override void Exporting(OEmbedPart part, ContentManagement.Handlers.ExportContentContext context) {
|
protected override void Exporting(OEmbedPart part, ContentManagement.Handlers.ExportContentContext context) {
|
||||||
context.Element(part.PartDefinition.Name).SetAttributeValue("Source", part.Source);
|
var partName = XmlConvert.EncodeName(typeof(OEmbedPart).Name);
|
||||||
|
|
||||||
|
var infosetPart = part.As<InfosetPart>();
|
||||||
|
if (infosetPart != null) {
|
||||||
|
// OEmbedPart is not versionable thats why using Infoset.Element instead of VersionInfoset.Element
|
||||||
|
var element = infosetPart.Infoset.Element;
|
||||||
|
|
||||||
|
var partElement = element.Element(partName);
|
||||||
|
if (partElement == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
context.Element(partName).Add(partElement.Elements());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Importing(OEmbedPart part, ContentManagement.Handlers.ImportContentContext context) {
|
protected override void Importing(OEmbedPart part, ContentManagement.Handlers.ImportContentContext context) {
|
||||||
// Don't do anything if the tag is not specified.
|
var partName = XmlConvert.EncodeName(typeof(OEmbedPart).Name);
|
||||||
if (context.Data.Element(part.PartDefinition.Name) == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
context.ImportAttribute(part.PartDefinition.Name, "Source", source =>
|
// Don't do anything if the tag is not specified.
|
||||||
part.Source = source
|
var xmlElement = context.Data.Element(partName);
|
||||||
);
|
if (xmlElement == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var infosetPart = part.As<InfosetPart>();
|
||||||
|
if (infosetPart != null) {
|
||||||
|
// OEmbedPart is not versionable thats why using Infoset.Element instead of VersionInfoset.Element
|
||||||
|
var element = infosetPart.Infoset.Element;
|
||||||
|
|
||||||
|
var partElement = element.Element(partName);
|
||||||
|
if (partElement != null)
|
||||||
|
partElement.Remove();
|
||||||
|
|
||||||
|
partElement = new XElement(partName);
|
||||||
|
element.Add(partElement);
|
||||||
|
partElement.Add(xmlElement.Elements());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user