示例#1
0
        public void Exported(ExportLayoutContext context)
        {
            var elementTree = LoadElements(context.Layout).ToArray();
            var elements    = elementTree.Flatten().ToArray();

            _elementManager.Exported(elements, context);
            context.Layout.LayoutData = _serializer.Serialize(elementTree);
        }
示例#2
0
        protected override void Exported(ElementWrapperPart part, ExportContentContext context)
        {
            var describeContext = CreateDescribeContext(part);
            // Deserialize element from the version set in the Exporting method
            var currentContextValue = context.Element(part.PartDefinition.Name).Value;
            var element             = _serializer.Deserialize(currentContextValue, describeContext);

            _elementManager.Exported(new[] { element }, new ExportLayoutContext());
            var exportableData = _serializer.Serialize(element);

            context.Element(part.PartDefinition.Name).SetValue(exportableData);
        }
        protected override void Exported(ElementWrapperPart part, ExportContentContext context)
        {
            var describeContext = CreateDescribeContext(part);
            var descriptor      = _elementManager.GetElementDescriptorByTypeName(describeContext, part.ElementTypeName);
            var data            = ElementDataHelper.Deserialize(part.ElementData);
            var element         = _elementManager.ActivateElement(descriptor, e => e.Data = data);

            _elementManager.Exported(new[] { element }, new ExportLayoutContext());
            var exportableData = _serializer.Serialize(element);

            context.Element(part.PartDefinition.Name).SetValue(exportableData);
        }
示例#4
0
        public override void Build(BuildContext context)
        {
            var blueprints = _repository.Table.OrderBy(x => x.ElementTypeName).ToList();

            if (!blueprints.Any())
            {
                return;
            }

            var blueprintEntries = blueprints.Select(blueprint => {
                var describeContext = DescribeElementsContext.Empty;
                var descriptor      = _elementManager.GetElementDescriptorByTypeName(describeContext, blueprint.BaseElementTypeName);
                var baseElement     = _elementManager.ActivateElement(descriptor);
                baseElement.Data    = ElementDataHelper.Deserialize(blueprint.BaseElementState);
                return(new { Blueprint = blueprint, BaseElement = baseElement });
            }).ToList();

            var baseElements        = blueprintEntries.Select(e => e.BaseElement).ToList();
            var exportLayoutContext = new ExportLayoutContext();

            _elementManager.Exporting(baseElements, exportLayoutContext);
            _elementManager.Exported(baseElements, exportLayoutContext);

            var root = new XElement("CustomElements");

            context.RecipeDocument.Element("Orchard").Add(root);

            foreach (var blueprintEntry in blueprintEntries)
            {
                root.Add(new XElement("Element",
                                      new XAttribute("ElementTypeName", blueprintEntry.Blueprint.ElementTypeName),
                                      new XAttribute("BaseElementTypeName", blueprintEntry.Blueprint.BaseElementTypeName),
                                      new XAttribute("ElementDisplayName", blueprintEntry.Blueprint.ElementDisplayName),
                                      new XAttribute("ElementDescription", blueprintEntry.Blueprint.ElementDescription ?? ""),
                                      new XAttribute("ElementCategory", blueprintEntry.Blueprint.ElementCategory ?? ""),
                                      new XAttribute("BaseExportableData", blueprintEntry.BaseElement.ExportableData.Serialize()),
                                      new XElement("BaseElementState", new XCData(blueprintEntry.Blueprint.BaseElementState))));
            }
        }