/// <summary> /// After the page is imported /// </summary> public void DataImporter_ContentImported(DataImporter dataImported, ContentImportedEventArgs e) { PageData page = null; if (!ContentReference.IsNullOrEmpty(e.ContentLink)) { page = DataFactory.Instance.Get <PageData>(e.ContentLink).CreateWritableClone(); } if (page == null) { return; } page["PageSaved"] = _originalValues.PageSaved; page["PageChanged"] = _originalValues.PageChanged; page["PageChangedBy"] = _originalValues.PageChangedBy; page["PageCreatedBy"] = _originalValues.PageCreatedBy; page["PageChangedOnPublish"] = true; PrincipalInfo.CurrentPrincipal = PrincipalInfo.CreatePrincipal(_originalValues.PageChangedBy); try { global::EPiServer.BaseLibrary.Context.Current["PageSaveDB:PageSaved"] = true; DataFactory.Instance.Save(page, SaveAction.ForceCurrentVersion | SaveAction.Publish | SaveAction.SkipValidation, AccessLevel.NoAccess); } finally { global::EPiServer.BaseLibrary.Context.Current["PageSaveDB:PageSaved"] = null; } MigrationHook.Invoke(new AfterPageImportEvent(e), Log); }
private void TransformPage(PageData sourcePage, bool clearPropertyValues = true) { MigrationHook.Invoke(new BeforePageTransformEvent(sourcePage), Logger); _currentConvertablePageData.Properties = sourcePage.Property; _currentConvertablePageData.TypeName = sourcePage.PageTypeName; var pTRepo = ServiceLocator.Current.GetInstance <PageTypeRepository>(); var sourcePageType = pTRepo.Load(sourcePage.PageTypeID); var targetPageType = pTRepo.Load(_mapper.GetTargetPageType(sourcePage)); string result; //Convert The Page if (clearPropertyValues) { var keys = new List <KeyValuePair <int, int> >(); var properties = sourcePage.Property.Select(p => p.PropertyDefinitionID).Where(p => p > 0); foreach (var propertyId in properties) { keys.Add(new KeyValuePair <int, int>(propertyId, 0)); } //Convert The Page result = PageTypeConverter.Convert(sourcePage.PageLink, sourcePageType, targetPageType, keys, false, false, _repo); } else { result = PageTypeConverter.Convert(sourcePage.PageLink, sourcePageType, targetPageType, new List <KeyValuePair <int, int> >(), false, false, _repo); } Logger.Log(result); var transformedPage = _repo.Get <PageData>(sourcePage.PageLink).CreateWritableClone(); _mapper.SetPropertyValues(transformedPage, _currentConvertablePageData); transformedPage.URLSegment = UrlSegment.GetUrlFriendlySegment(transformedPage.URLSegment); var oldPrincipal = PrincipalInfo.CurrentPrincipal; try { PrincipalInfo.CurrentPrincipal = PrincipalInfo.CreatePrincipal(sourcePage.ChangedBy); global::EPiServer.BaseLibrary.Context.Current["PageSaveDB:PageSaved"] = true; var savedPage = _repo.Save(transformedPage, SaveAction.ForceCurrentVersion | SaveAction.Publish | SaveAction.SkipValidation, AccessLevel.NoAccess); MigrationHook.Invoke(new AfterPageTransformEvent(savedPage), Logger); } finally { global::EPiServer.BaseLibrary.Context.Current["PageSaveDB:PageSaved"] = null; PrincipalInfo.CurrentPrincipal = oldPrincipal; } }
/// <summary> /// Before page is imported /// </summary> public void DataImporter_ContentImporting(DataImporter dataImporting, ContentImportingEventArgs e) { _originalValues = null; if (e.TransferContentData is TransferPageData) { MigrationHook.Invoke(new BeforePageImportEvent(e), Log); var externalUrl = e.TransferContentData.RawContentData.Property.FirstOrDefault(x => x.Name == "PageExternalURL"); if (externalUrl != null && !string.IsNullOrEmpty(externalUrl.Value)) { externalUrl.Value = null; } // Todo: Do we need this? Should be handled by property mappings RemoveDC(e, "MainBody"); _originalValues = new OriginalValues { PageSaved = DateTime.Parse(GetValue(e, "PageSaved")), PageChanged = DateTime.Parse(GetValue(e, "PageChanged")), PageChangedBy = GetValue(e, "PageChangedBy"), PageCreatedBy = GetValue(e, "PageCreatedBy"), PageGuid = Guid.Parse(GetValue(e, "PageGUID")) }; } }
public void DataImporter_FileImporting(DataImporter dataimported, FileImportingEventArgs e) { MigrationHook.Invoke(new BeforeFileImportEvent(e), Log); }
public void DataImporter_FileImported(DataImporter dataimported, FileImportedEventArgs e) { MigrationHook.Invoke(new AfterFileImportEvent(e), Log); }