Implementing deep cloning for ImageProfilePart + code styling in ImageProfilePartDriver

This commit is contained in:
Benedek Farkas
2025-10-11 23:21:29 +02:00
parent 3faffc655e
commit 59860177c6
@@ -28,17 +28,17 @@ namespace Orchard.MediaProcessing.Drivers {
get { return "MediaProcessing"; } get { return "MediaProcessing"; }
} }
protected override DriverResult Display(ImageProfilePart part, string displayType, dynamic shapeHelper) { protected override DriverResult Display(ImageProfilePart part, string displayType, dynamic shapeHelper) =>
return ContentShape("Parts_MediaProcessing_ImageProfile", ContentShape("Parts_MediaProcessing_ImageProfile", () =>
() => shapeHelper.Parts_MediaProcessing_ImageProfile(Name: part.Name)); shapeHelper.Parts_MediaProcessing_ImageProfile(Name: part.Name));
}
protected override DriverResult Editor(ImageProfilePart part, dynamic shapeHelper) { protected override DriverResult Editor(ImageProfilePart part, dynamic shapeHelper) {
var viewModel = new ImageProfileViewModel { var viewModel = new ImageProfileViewModel {
Name = part.Name Name = part.Name
}; };
return ContentShape("Parts_MediaProcessing_ImageProfile_Edit",
() => shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: viewModel, Prefix: Prefix)); return ContentShape("Parts_MediaProcessing_ImageProfile_Edit", () =>
shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: viewModel, Prefix: Prefix));
} }
protected override DriverResult Editor(ImageProfilePart part, IUpdateModel updater, dynamic shapeHelper) { protected override DriverResult Editor(ImageProfilePart part, IUpdateModel updater, dynamic shapeHelper) {
@@ -47,7 +47,7 @@ namespace Orchard.MediaProcessing.Drivers {
// It would be nice if IUpdateModel provided access to the IsValid property of the Controller, instead of having to track a local flag. // It would be nice if IUpdateModel provided access to the IsValid property of the Controller, instead of having to track a local flag.
var isValid = updater.TryUpdateModel(viewModel, Prefix, null, null); var isValid = updater.TryUpdateModel(viewModel, Prefix, null, null);
if (String.IsNullOrWhiteSpace(viewModel.Name)) { if (string.IsNullOrWhiteSpace(viewModel.Name)) {
updater.AddModelError("Name", T("The Name can't be empty.")); updater.AddModelError("Name", T("The Name can't be empty."));
isValid = false; isValid = false;
} }
@@ -72,17 +72,17 @@ namespace Orchard.MediaProcessing.Drivers {
element.Add( element.Add(
new XAttribute("Name", part.Name), new XAttribute("Name", part.Name),
new XElement("Filters", new XElement("Filters",
part.Filters.Select(filter => part.Filters.Select(filter =>
new XElement("Filter", new XElement("Filter",
new XAttribute("Description", filter.Description ?? ""), new XAttribute("Description", filter.Description ?? ""),
new XAttribute("Category", filter.Category ?? ""), new XAttribute("Category", filter.Category ?? ""),
new XAttribute("Type", filter.Type ?? ""), new XAttribute("Type", filter.Type ?? ""),
new XAttribute("Position", filter.Position), new XAttribute("Position", filter.Position),
new XAttribute("State", filter.State ?? "") new XAttribute("State", filter.State ?? "")
) )
)
) )
); )
);
} }
protected override void Importing(ImageProfilePart part, ImportContentContext context) { protected override void Importing(ImageProfilePart part, ImportContentContext context) {
@@ -111,8 +111,17 @@ namespace Orchard.MediaProcessing.Drivers {
protected override void Cloning(ImageProfilePart originalPart, ImageProfilePart clonePart, CloneContentContext context) { protected override void Cloning(ImageProfilePart originalPart, ImageProfilePart clonePart, CloneContentContext context) {
clonePart.Name = originalPart.Name; clonePart.Name = originalPart.Name;
clonePart.ModifiedUtc = originalPart.ModifiedUtc; clonePart.ModifiedUtc = originalPart.ModifiedUtc;
clonePart.Record.Filters = originalPart.Filters;
clonePart.Record.FileNames = new List<FileNameRecord>(); clonePart.Record.FileNames = new List<FileNameRecord>();
clonePart.Record.Filters = originalPart.Filters.Select(filter =>
new FilterRecord {
Description = filter.Description,
Category = filter.Category,
Type = filter.Type,
Position = filter.Position,
State = filter.State,
ImageProfilePartRecord = clonePart.Record
}).ToList(
);
} }
} }
} }