Merge branch 'dev' into feature/widget-elements

Conflicts:
	src/Orchard.Web/Modules/Orchard.Layouts/Scripts/Lib.js
	src/Orchard.Web/Modules/Orchard.Layouts/Scripts/dialog.js
	src/Orchard.Web/Modules/Orchard.Layouts/Styles/LayoutEditor.css
	src/Orchard.Web/Modules/Orchard.Layouts/Styles/Lib.css
This commit is contained in:
Sipke Schoorstra
2015-11-11 13:12:18 +01:00
219 changed files with 14980 additions and 6729 deletions

View File

@@ -1,4 +1,6 @@
using System.Linq;
using System;
using System.Diagnostics.Eventing.Reader;
using System.Linq;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.ContentManagement.Handlers;
@@ -87,7 +89,37 @@ namespace Orchard.Layouts.Drivers {
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);
}
protected override void Importing(ElementWrapperPart part, ImportContentContext context) {
HandleImportEvent(part, context, (describeContext, element) => {
_elementManager.Importing(new[] { element }, new ImportLayoutContext { Session = new ImportContentContextWrapper(context) });
});
}
protected override void Imported(ElementWrapperPart part, ImportContentContext context) {
HandleImportEvent(part, context, (describeContext, element) => {
_elementManager.Imported(new[] { element }, new ImportLayoutContext { Session = new ImportContentContextWrapper(context) });
});
}
protected override void ImportCompleted(ElementWrapperPart part, ImportContentContext context) {
HandleImportEvent(part, context, (describeContext, element) => {
_elementManager.ImportCompleted(new[] { element }, new ImportLayoutContext { Session = new ImportContentContextWrapper(context) });
});
}
private void HandleImportEvent(ElementWrapperPart part, ImportContentContext context, Action<DescribeElementsContext, Element> callback) {
var root = context.Data.Element(part.PartDefinition.Name);
if (root == null)
@@ -97,7 +129,7 @@ namespace Orchard.Layouts.Drivers {
var describeContext = CreateDescribeContext(part);
var element = _serializer.Deserialize(exportedData, describeContext);
_elementManager.Importing(new[]{element}, new ImportLayoutContext { Session = new ImportContentContextWrapper(context)});
callback(describeContext, element);
part.ElementData = element.Data.Serialize();
}

View File

@@ -136,9 +136,7 @@ namespace Orchard.Layouts.Drivers {
protected override void Exporting(LayoutPart part, ExportContentContext context) {
_layoutManager.Exporting(new ExportLayoutContext { Layout = part });
context.Element(part.PartDefinition.Name).SetElementValue("LayoutData", part.LayoutData);
if (part.TemplateId != null) {
var template = part.ContentItem.ContentManager.Get(part.TemplateId.Value);
@@ -147,23 +145,45 @@ namespace Orchard.Layouts.Drivers {
context.Element(part.PartDefinition.Name).SetAttributeValue("TemplateId", templateIdentity);
}
}
context.Element(part.PartDefinition.Name).SetElementValue("LayoutData", part.LayoutData);
}
protected override void Exported(LayoutPart part, ExportContentContext context) {
_layoutManager.Exported(new ExportLayoutContext { Layout = part });
context.Element(part.PartDefinition.Name).SetElementValue("LayoutData", part.LayoutData);
}
protected override void Importing(LayoutPart part, ImportContentContext context) {
HandleImportEvent(part, context, importLayoutContext => {
context.ImportChildEl(part.PartDefinition.Name, "LayoutData", s => {
part.LayoutData = s;
_layoutManager.Importing(importLayoutContext);
});
context.ImportAttribute(part.PartDefinition.Name, "TemplateId", s => part.TemplateId = GetTemplateId(context, s));
});
}
protected override void Imported(LayoutPart part, ImportContentContext context) {
HandleImportEvent(part, context, importLayoutContext => _layoutManager.Imported(importLayoutContext));
}
protected override void ImportCompleted(LayoutPart part, ImportContentContext context) {
HandleImportEvent(part, context, importLayoutContext => _layoutManager.ImportCompleted(importLayoutContext));
}
private void HandleImportEvent(LayoutPart part, ImportContentContext context, Action<ImportLayoutContext> callback) {
// Don't do anything if the tag is not specified.
if (context.Data.Element(part.PartDefinition.Name) == null) {
return;
}
context.ImportChildEl(part.PartDefinition.Name, "LayoutData", s => {
part.LayoutData = s;
_layoutManager.Importing(new ImportLayoutContext {
Layout = part,
Session = new ImportContentContextWrapper(context)
});
callback(new ImportLayoutContext {
Layout = part,
Session = new ImportContentContextWrapper(context)
});
context.ImportAttribute(part.PartDefinition.Name, "TemplateId", s => part.TemplateId = GetTemplateId(context, s));
}
private static int? GetTemplateId(ImportContentContext context, string templateIdentity) {

View File

@@ -298,7 +298,7 @@ namespace Orchard.Layouts.Drivers {
}
}
protected override void OnImporting(Projection element, ImportElementContext context) {
protected override void OnImportCompleted(Projection element, ImportElementContext context) {
var queryIdentity = context.ExportableData.Get("QueryId");
var query = queryIdentity != null ? context.Session.GetItemFromSession(queryIdentity) : default(ContentManagement.ContentItem);

View File

@@ -4,7 +4,6 @@ using System.Linq;
using Orchard.ContentManagement;
using Orchard.DisplayManagement;
using Orchard.Layouts.Elements;
using Orchard.Layouts.Framework.Drivers;
using Orchard.Layouts.Framework.Elements;
using Orchard.Layouts.Services;
using Orchard.UI.Zones;
@@ -12,7 +11,7 @@ using Orchard.Utility.Extensions;
using ContentItem = Orchard.ContentManagement.ContentItem;
namespace Orchard.Layouts.Framework.Display {
public class ElementDisplay : IElementDisplay {
public class ElementDisplay : Component, IElementDisplay {
private readonly IShapeFactory _shapeFactory;
private readonly IElementEventHandler _elementEventHandlerHandler;
@@ -37,7 +36,7 @@ namespace Orchard.Layouts.Framework.Display {
};
_elementEventHandlerHandler.CreatingDisplay(createShapeContext);
InvokeDrivers(drivers, driver => driver.CreatingDisplay(createShapeContext));
drivers.Invoke(driver => driver.CreatingDisplay(createShapeContext), Logger);
if (element.Descriptor.CreatingDisplay != null)
element.Descriptor.CreatingDisplay(createShapeContext);
@@ -62,7 +61,7 @@ namespace Orchard.Layouts.Framework.Display {
};
_elementEventHandlerHandler.Displaying(displayingContext);
InvokeDrivers(drivers, driver => driver.Displaying(displayingContext));
drivers.Invoke(driver => driver.Displaying(displayingContext), Logger);
if (element.Descriptor.Displaying != null)
element.Descriptor.Displaying(displayingContext);
@@ -92,7 +91,7 @@ namespace Orchard.Layouts.Framework.Display {
};
_elementEventHandlerHandler.Displayed(displayedContext);
InvokeDrivers(drivers, driver => driver.Displayed(displayedContext));
drivers.Invoke(driver => driver.Displayed(displayedContext), Logger);
if (element.Descriptor.Displayed != null)
element.Descriptor.Displayed(displayedContext);
@@ -122,11 +121,5 @@ namespace Orchard.Layouts.Framework.Display {
return Arguments.From(dictionary);
}
private void InvokeDrivers(IEnumerable<IElementDriver> drivers, Action<IElementDriver> driverAction) {
foreach (var driver in drivers) {
driverAction(driver);
}
}
}
}

View File

@@ -41,10 +41,22 @@ namespace Orchard.Layouts.Framework.Drivers {
OnExporting((TElement)context.Element, context);
}
public void Exported(ExportElementContext context) {
OnExported((TElement)context.Element, context);
}
public void Importing(ImportElementContext context) {
OnImporting((TElement)context.Element, context);
}
public void Imported(ImportElementContext context) {
OnImported((TElement)context.Element, context);
}
public void ImportCompleted(ImportElementContext context) {
OnImportCompleted((TElement)context.Element, context);
}
protected virtual EditorResult OnBuildEditor(TElement element, ElementEditorContext context) {
return null;
}
@@ -71,9 +83,18 @@ namespace Orchard.Layouts.Framework.Drivers {
protected virtual void OnExporting(TElement element, ExportElementContext context) {
}
protected virtual void OnExported(TElement element, ExportElementContext context) {
}
protected virtual void OnImporting(TElement element, ImportElementContext context) {
}
protected virtual void OnImported(TElement element, ImportElementContext context) {
}
protected virtual void OnImportCompleted(TElement element, ImportElementContext context) {
}
protected EditorResult Editor(ElementEditorContext context, params dynamic[] editorShapes) {
foreach (var editorShape in editorShapes) {
if (String.IsNullOrWhiteSpace(editorShape.Metadata.Position)) {

View File

@@ -12,6 +12,9 @@ namespace Orchard.Layouts.Framework.Drivers {
void LayoutSaving(ElementSavingContext context);
void Removing(ElementRemovingContext context);
void Exporting(ExportElementContext context);
void Exported(ExportElementContext context);
void Importing(ImportElementContext context);
void Imported(ImportElementContext context);
void ImportCompleted(ImportElementContext context);
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -172,12 +172,12 @@
case "cancel":
self.close();
break;
case "save": {
var frameDoc = self.frame.getDocument();
var form = frameDoc.find(".zone-content form:first");
form.attr("isSubmitting", true);
form.trigger("submit");
}
case "save":
{
var frameWindow = self.frame.getWindow();
var form = frameWindow.$("form:first");
form.submit();
}
break;
}
});

View File

@@ -166,13 +166,26 @@ namespace Orchard.Layouts.Services {
InvokeDriver(elements, (driver, element) => {
var exportElementContext = new ExportElementContext {
Layout = context.Layout,
Element = element
Element = element,
ExportableData = element.ExportableData
};
driver.Exporting(exportElementContext);
element.ExportableData = new ElementDataDictionary(exportElementContext.ExportableData);
});
}
public void Exported(IEnumerable<Element> elements, ExportLayoutContext context) {
InvokeDriver(elements, (driver, element) => {
var exportElementContext = new ExportElementContext {
Layout = context.Layout,
Element = element,
ExportableData = element.ExportableData
};
driver.Exported(exportElementContext);
element.ExportableData = new ElementDataDictionary(exportElementContext.ExportableData);
});
}
public void Importing(IEnumerable<Element> elements, ImportLayoutContext context) {
InvokeDriver(elements, (driver, element) => {
var importElementContext = new ImportElementContext {
@@ -185,6 +198,30 @@ namespace Orchard.Layouts.Services {
});
}
public void Imported(IEnumerable<Element> elements, ImportLayoutContext context) {
InvokeDriver(elements, (driver, element) => {
var importElementContext = new ImportElementContext {
Layout = context.Layout,
Element = element,
ExportableData = element.ExportableData,
Session = context.Session
};
driver.Imported(importElementContext);
});
}
public void ImportCompleted(IEnumerable<Element> elements, ImportLayoutContext context) {
InvokeDriver(elements, (driver, element) => {
var importElementContext = new ImportElementContext {
Layout = context.Layout,
Element = element,
ExportableData = element.ExportableData,
Session = context.Session
};
driver.ImportCompleted(importElementContext);
});
}
private IDictionary<string, Category> GetCategories() {
var providers = _categoryProviders.Value;
var categories = providers.SelectMany(x => x.GetCategories());

View File

@@ -23,6 +23,9 @@ namespace Orchard.Layouts.Services {
void Saving(LayoutSavingContext context);
void Removing(LayoutSavingContext context);
void Exporting(IEnumerable<Element> elements, ExportLayoutContext context);
void Exported(IEnumerable<Element> elements, ExportLayoutContext context);
void Importing(IEnumerable<Element> elements, ImportLayoutContext context);
void Imported(IEnumerable<Element> elements, ImportLayoutContext context);
void ImportCompleted(IEnumerable<Element> elements, ImportLayoutContext context);
}
}

View File

@@ -54,6 +54,9 @@ namespace Orchard.Layouts.Services {
IEnumerable<LayoutPart> GetTemplateClients(int templateId, VersionOptions versionOptions);
IEnumerable<Element> CreateDefaultLayout();
void Exporting(ExportLayoutContext context);
void Exported(ExportLayoutContext context);
void Importing(ImportLayoutContext context);
void Imported(ImportLayoutContext context);
void ImportCompleted(ImportLayoutContext context);
}
}

View File

@@ -67,6 +67,14 @@ namespace Orchard.Layouts.Services {
context.Layout.LayoutData = _serializer.Serialize(elementTree);
}
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);
}
public void Importing(ImportLayoutContext context) {
var elementTree = LoadElements(context.Layout).ToArray();
var elements = elementTree.Flatten().ToArray();
@@ -75,6 +83,22 @@ namespace Orchard.Layouts.Services {
context.Layout.LayoutData = _serializer.Serialize(elementTree);
}
public void Imported(ImportLayoutContext context) {
var elementTree = LoadElements(context.Layout).ToArray();
var elements = elementTree.Flatten().ToArray();
_elementManager.Imported(elements, context);
context.Layout.LayoutData = _serializer.Serialize(elementTree);
}
public void ImportCompleted(ImportLayoutContext context) {
var elementTree = LoadElements(context.Layout).ToArray();
var elements = elementTree.Flatten().ToArray();
_elementManager.ImportCompleted(elements, context);
context.Layout.LayoutData = _serializer.Serialize(elementTree);
}
public dynamic RenderLayout(string data, string displayType = null, IContent content = null) {
var elements = _serializer.Deserialize(data, new DescribeElementsContext { Content = content });
var layoutRoot = _elementDisplay.DisplayElements(elements, content, displayType);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long