private static bool IsSaveAction(SaveContentEventArgs args, out ContentVersion published)
        {
            if (args.Transition.CurrentStatus == VersionStatus.CheckedOut &&
                args.Transition.NextStatus == VersionStatus.CheckedOut)
            {
                published = VersionRepository.LoadPublished(args.ContentLink);
                return(true);
            }

            published = null;
            return(false);
        }
Esempio n. 2
0
        private void FaceImagePublishCreateEvent(object sender, ContentEventArgs e)
        {
            ContentData          content     = e.Content as ContentData;
            SaveContentEventArgs savingEvent = e as SaveContentEventArgs;

            if ((savingEvent.Action & EPiServer.DataAccess.SaveAction.CheckOut) != EPiServer.DataAccess.SaveAction.Default || content == null || ContentReference.IsNullOrEmpty(e.ContentLink))
            {
                return;
            }
            Dictionary <string, EPiFaceImageAttribute> faceImageProperties = ListFaceImageProperties(e);

            if (faceImageProperties.Count == 0)
            {
                return;
            }

            ContentAssetFolder contentAssetFolder = _contentAssetHelperInj.Service.GetOrCreateAssetFolder(e.ContentLink);

            if (contentAssetFolder == null)
            {
                return;
            }
            foreach (var faceImagePropertyDef in faceImageProperties)
            {
                ContentReference imageReference = content.GetPropertyValue <ContentReference>(faceImagePropertyDef.Key);
                if (ContentReference.IsNullOrEmpty(imageReference))
                {
                    continue;
                }

                ImageData image;
                if (!_contentLoaderInj.Service.TryGet(imageReference, out image) || image.GetOriginalType() == typeof(FaceImageData) || image.BinaryData == null)
                {
                    continue;
                }

                Image imageDetails = Image.FromStream(new MemoryStream(image.BinaryData.ReadAllBytes()));
                if (imageDetails == null)
                {
                    continue;
                }

                byte[] faceResizedImage;

                if (!TryToDetectFaceAndResizeImage(faceImagePropertyDef, image, imageDetails, out faceResizedImage))
                {
                    continue;
                }

                ContentReference faceImageId = CreateFaceMediaFile(contentAssetFolder, image, faceResizedImage);
                content[faceImagePropertyDef.Key] = faceImageId;
            }
        }
        private static void HandleSaveEvent(SaveContentEventArgs args)
        {
            if (IsPublishAction(args))
            {
                Logger.Debug("Publish-event, update index");
                EPiIndexer.Update(args.Content);
                return;
            }

            if (IsPublishedToCheckedOutAction(args))
            {
                Logger.Debug("Save-event, previously published, do nothing");
                return;
            }

            if (IsSaveAction(args, out ContentVersion published))
            {
                if (published == null)
                {
                    Logger.Debug("Save-event, previously unpublished, update index");
                    EPiIndexer.Update(args.Content);
                    return;
                }

                Logger.Debug("Save-event, previously published, do nothing");
                return;
            }

            // Create
            if (args.Transition.CurrentStatus == VersionStatus.NotCreated)
            {
                Logger.Debug("Create-event, do nothing");
                return;
            }

            Logger.Information($"Save-event was not handled. Action {args.Action}, transition {args.Transition.CurrentStatus}=>{args.Transition.NextStatus}");
        }
 private static bool IsPublishAction(SaveContentEventArgs args)
 {
     return(args.MaskedAction == SaveAction.Publish &&
            args.Transition.NextStatus == VersionStatus.Published);
 }
 private static bool IsPublishedToCheckedOutAction(SaveContentEventArgs args)
 {
     return(args.Transition.CurrentStatus == VersionStatus.Published &&
            args.Transition.NextStatus == VersionStatus.CheckedOut);
 }