mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-22 03:37:25 +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 System.Xml;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Orchard.MediaLibrary.Drivers {
|
||||
namespace Orchard.MediaLibrary.Drivers
|
||||
{
|
||||
public class OEmbedPartDriver : ContentPartDriver<OEmbedPart> {
|
||||
protected override DriverResult Display(OEmbedPart part, string displayType, dynamic shapeHelper) {
|
||||
return Combined(
|
||||
@@ -13,18 +18,42 @@ namespace Orchard.MediaLibrary.Drivers {
|
||||
}
|
||||
|
||||
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) {
|
||||
// Don't do anything if the tag is not specified.
|
||||
if (context.Data.Element(part.PartDefinition.Name) == null) {
|
||||
return;
|
||||
}
|
||||
var partName = XmlConvert.EncodeName(typeof(OEmbedPart).Name);
|
||||
|
||||
context.ImportAttribute(part.PartDefinition.Name, "Source", source =>
|
||||
part.Source = source
|
||||
);
|
||||
// Don't do anything if the tag is not specified.
|
||||
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