Update last modified and by properties when replace media item (#7889)

Fixes #7874
This commit is contained in:
Mohammad Dameer
2017-11-09 22:08:10 +02:00
committed by Sébastien Ros
parent f146b81f47
commit 102d386d03
2 changed files with 23 additions and 14 deletions

View File

@@ -1,11 +1,10 @@
using System;
using System.Linq;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Handlers;
using Orchard.ContentManagement.MetaData;
using Orchard.Core.Common.Models;
using Orchard.Data;
using Orchard.Localization;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Handlers;
using Orchard.Security;
using Orchard.Services;
@@ -40,7 +39,7 @@ namespace Orchard.Core.Common.Handlers {
OnLoading<CommonPart>((context, part) => LazyLoadHandlers(part));
OnVersioning<CommonPart>((context, part, newVersionPart) => LazyLoadHandlers(newVersionPart));
OnUpdateEditorShape<CommonPart>(AssignUpdateDates);
OnUpdating<CommonPart>(AssignUpdatingDates);
OnVersioning<CommonPart>(AssignVersioningDates);
OnPublishing<CommonPart>(AssignPublishingDates);
OnRemoving<CommonPart>(AssignRemovingDates);
@@ -100,7 +99,7 @@ namespace Orchard.Core.Common.Handlers {
part.VersionModifiedBy = GetUserName();
}
private void AssignUpdateDates(UpdateEditorContext context, CommonPart part) {
private void AssignUpdatingDates(UpdateContentContext context, CommonPart part) {
var utcNow = _clock.UtcNow;
part.ModifiedUtc = utcNow;

View File

@@ -1,30 +1,34 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web.Mvc;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Handlers;
using Orchard.FileSystems.Media;
using Orchard.Localization;
using Orchard.Logging;
using Orchard.MediaLibrary.Models;
using Orchard.MediaLibrary.Services;
using Orchard.MediaLibrary.ViewModels;
using Orchard.Themes;
using Orchard.UI.Admin;
using Orchard.MediaLibrary.Models;
using Orchard.Localization;
using System.Linq;
using Orchard.FileSystems.Media;
using Orchard.Logging;
namespace Orchard.MediaLibrary.Controllers {
[Admin, Themed(false)]
public class ClientStorageController : Controller {
private readonly IMediaLibraryService _mediaLibraryService;
private readonly IMimeTypeProvider _mimeTypeProvider;
private readonly IEnumerable<IContentHandler> _handlers;
public ClientStorageController(
IMediaLibraryService mediaManagerService,
IOrchardServices orchardServices,
IMimeTypeProvider mimeTypeProvider) {
IMimeTypeProvider mimeTypeProvider,
IEnumerable<IContentHandler> handlers) {
_mediaLibraryService = mediaManagerService;
_mimeTypeProvider = mimeTypeProvider;
_handlers = handlers;
Services = orchardServices;
T = NullLocalizer.Instance;
Logger = NullLogger.Instance;
@@ -175,13 +179,19 @@ namespace Orchard.MediaLibrary.Controllers {
if (!replaceContentType.Equals(replaceMedia.TypeDefinition.Name, StringComparison.OrdinalIgnoreCase))
throw new Exception(T("Cannot replace {0} with {1}", replaceMedia.TypeDefinition.Name, replaceContentType).Text);
// Raise update and publish events which will update relevant Media properties
_handlers.Invoke(x => x.Updating(new UpdateContentContext(replaceMedia.ContentItem)), Logger);
_mediaLibraryService.DeleteFile(replaceMedia.FolderPath, replaceMedia.FileName);
_mediaLibraryService.UploadMediaFile(replaceMedia.FolderPath, replaceMedia.FileName, file.InputStream);
replaceMedia.MimeType = mimeType;
// Force a publish event which will update relevant Media properties
replaceMedia.ContentItem.VersionRecord.Published = false;
Services.ContentManager.Publish(replaceMedia.ContentItem);
_handlers.Invoke(x => x.Updated(new UpdateContentContext(replaceMedia.ContentItem)), Logger);
var publishedVersion = replaceMedia.ContentItem.Record.Versions.SingleOrDefault(v => v.Published);
_handlers.Invoke(x => x.Publishing(new PublishContentContext(replaceMedia.ContentItem, publishedVersion)), Logger);
_handlers.Invoke(x => x.Published(new PublishContentContext(replaceMedia.ContentItem, publishedVersion)), Logger);
statuses.Add(new {
id = replaceMedia.Id,