From 0aeed66ad064837a94d18495538fdfb80defa633 Mon Sep 17 00:00:00 2001 From: Suha Can Date: Wed, 16 Mar 2011 11:39:46 -0700 Subject: [PATCH] Comments,tags,localization import handlers. --HG-- branch : dev --- .../Drivers/CommentPartDriver.cs | 54 +++++++++++++++++++ .../Drivers/CommentsPartDriver.cs | 15 +++++- .../Drivers/LocalizationPartDriver.cs | 21 ++++++++ .../Orchard.Tags/Drivers/TagsPartDriver.cs | 12 +++++ 4 files changed, 101 insertions(+), 1 deletion(-) diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs index 1080ee499..3ea5e766c 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs @@ -1,3 +1,4 @@ +using System; using System.Xml; using JetBrains.Annotations; using Orchard.Comments.Models; @@ -14,6 +15,59 @@ namespace Orchard.Comments.Drivers { _contentManager = contentManager; } + protected override void Importing(CommentPart part, ContentManagement.Handlers.ImportContentContext context) { + var author = context.Attribute(part.PartDefinition.Name, "Author"); + if (author != null) { + part.Record.Author = author; + } + + var siteName = context.Attribute(part.PartDefinition.Name, "SiteName"); + if (siteName != null) { + part.Record.SiteName = siteName; + } + + var userName = context.Attribute(part.PartDefinition.Name, "UserName"); + if (userName != null) { + part.Record.UserName = userName; + } + + var email = context.Attribute(part.PartDefinition.Name, "Email"); + if (email != null) { + part.Record.Email = email; + } + + var status = context.Attribute(part.PartDefinition.Name, "Status"); + if (status != null) { + part.Record.Status = (CommentStatus) Enum.Parse(typeof(CommentStatus), status); + } + + var commentDate = context.Attribute(part.PartDefinition.Name, "CommentDateUtc"); + if (commentDate != null) { + part.Record.CommentDateUtc = XmlConvert.ToDateTime(commentDate, XmlDateTimeSerializationMode.Utc); + } + + var text = context.Attribute(part.PartDefinition.Name, "CommentText"); + if (text != null) { + part.Record.CommentText = text; + } + + var commentedOn = context.Attribute(part.PartDefinition.Name, "CommentedOn"); + if (commentedOn != null) { + var contentItem = context.Session.Get(commentedOn); + if (contentItem != null) { + part.Record.CommentedOn = contentItem.Id; + } + } + + var commentedOnContainer = context.Attribute(part.PartDefinition.Name, "CommentedOnContainer"); + if (commentedOnContainer != null) { + var container = context.Session.Get(commentedOnContainer); + if (container != null) { + part.Record.CommentedOnContainer = container.Id; + } + } + } + protected override void Exporting(CommentPart part, ContentManagement.Handlers.ExportContentContext context) { context.Element(part.PartDefinition.Name).SetAttributeValue("Author", part.Record.Author); context.Element(part.PartDefinition.Name).SetAttributeValue("SiteName", part.Record.SiteName); diff --git a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs index 14feb0b84..770b72a3a 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs @@ -1,4 +1,5 @@ -using JetBrains.Annotations; +using System; +using JetBrains.Annotations; using Orchard.Comments.Models; using Orchard.ContentManagement; using Orchard.ContentManagement.Drivers; @@ -30,6 +31,18 @@ namespace Orchard.Comments.Drivers { return Editor(part, shapeHelper); } + protected override void Importing(CommentsPart part, ContentManagement.Handlers.ImportContentContext context) { + var commentsShown = context.Attribute(part.PartDefinition.Name, "CommentsShown"); + if (commentsShown != null) { + part.CommentsShown = Convert.ToBoolean(commentsShown); + } + + var commentsActive = context.Attribute(part.PartDefinition.Name, "CommentsActive"); + if (commentsActive != null) { + part.CommentsActive = Convert.ToBoolean(commentsActive); + } + } + protected override void Exporting(CommentsPart part, ContentManagement.Handlers.ExportContentContext context) { context.Element(part.PartDefinition.Name).SetAttributeValue("CommentsShown", part.CommentsShown); context.Element(part.PartDefinition.Name).SetAttributeValue("CommentsActive", part.CommentsActive); diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Drivers/LocalizationPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Localization/Drivers/LocalizationPartDriver.cs index 6a7341b02..b40e63681 100644 --- a/src/Orchard.Web/Modules/Orchard.Localization/Drivers/LocalizationPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Localization/Drivers/LocalizationPartDriver.cs @@ -78,6 +78,27 @@ namespace Orchard.Localization.Drivers { }).ToList(); } + protected override void Importing(LocalizationPart part, ContentManagement.Handlers.ImportContentContext context) { + var masterContentItem = context.Attribute(part.PartDefinition.Name, "MasterContentItem"); + if (masterContentItem != null) { + var contentItem = context.Session.Get(masterContentItem); + if (contentItem != null) { + part.MasterContentItem = contentItem; + } + } + + var culture = context.Attribute(part.PartDefinition.Name, "Culture"); + if (culture != null) { + var targetCulture = _cultureManager.GetCultureByName(culture); + // Add Culture. + if (targetCulture == null && _cultureManager.IsValidCulture(culture)) { + _cultureManager.AddCulture(culture); + targetCulture = _cultureManager.GetCultureByName(culture); + } + part.Culture = targetCulture; + } + } + protected override void Exporting(LocalizationPart part, ContentManagement.Handlers.ExportContentContext context) { if (part.MasterContentItem != null) { var masterContentItemIdentity = _contentManager.GetItemMetadata(part.MasterContentItem).Identity; diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Drivers/TagsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Tags/Drivers/TagsPartDriver.cs index 339c3128b..bdbd1cc08 100644 --- a/src/Orchard.Web/Modules/Orchard.Tags/Drivers/TagsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Tags/Drivers/TagsPartDriver.cs @@ -59,6 +59,18 @@ namespace Orchard.Tags.Drivers { }; } + protected override void Importing(TagsPart part, ImportContentContext context) { + var tagString = context.Attribute(part.PartDefinition.Name, "Tags"); + if (tagString != null) { + var tags = tagString.Split(new[] {","}, StringSplitOptions.RemoveEmptyEntries); + // Merge tags. + if (tags.Length > 0) { + var currentTags = part.CurrentTags.Select(t => t.TagName); + _tagService.UpdateTagsForContentItem(context.ContentItem, tags.Concat(currentTags)); + } + } + } + protected override void Exporting(TagsPart part, ExportContentContext context) { context.Element(part.PartDefinition.Name).SetAttributeValue("Tags", String.Join(",", part.CurrentTags.Select(t => t.TagName))); }