/// <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);
        }
Beispiel #2
0
        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);
 }