mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-24 10:11:35 +08:00
Update last modified and by properties when replace media item (#7889)
Fixes #7874
This commit is contained in:
committed by
Sébastien Ros
parent
f146b81f47
commit
102d386d03
@@ -1,11 +1,10 @@
|
|||||||
using System;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using Orchard.ContentManagement;
|
||||||
|
using Orchard.ContentManagement.Handlers;
|
||||||
using Orchard.ContentManagement.MetaData;
|
using Orchard.ContentManagement.MetaData;
|
||||||
using Orchard.Core.Common.Models;
|
using Orchard.Core.Common.Models;
|
||||||
using Orchard.Data;
|
using Orchard.Data;
|
||||||
using Orchard.Localization;
|
using Orchard.Localization;
|
||||||
using Orchard.ContentManagement;
|
|
||||||
using Orchard.ContentManagement.Handlers;
|
|
||||||
using Orchard.Security;
|
using Orchard.Security;
|
||||||
using Orchard.Services;
|
using Orchard.Services;
|
||||||
|
|
||||||
@@ -40,7 +39,7 @@ namespace Orchard.Core.Common.Handlers {
|
|||||||
OnLoading<CommonPart>((context, part) => LazyLoadHandlers(part));
|
OnLoading<CommonPart>((context, part) => LazyLoadHandlers(part));
|
||||||
OnVersioning<CommonPart>((context, part, newVersionPart) => LazyLoadHandlers(newVersionPart));
|
OnVersioning<CommonPart>((context, part, newVersionPart) => LazyLoadHandlers(newVersionPart));
|
||||||
|
|
||||||
OnUpdateEditorShape<CommonPart>(AssignUpdateDates);
|
OnUpdating<CommonPart>(AssignUpdatingDates);
|
||||||
OnVersioning<CommonPart>(AssignVersioningDates);
|
OnVersioning<CommonPart>(AssignVersioningDates);
|
||||||
OnPublishing<CommonPart>(AssignPublishingDates);
|
OnPublishing<CommonPart>(AssignPublishingDates);
|
||||||
OnRemoving<CommonPart>(AssignRemovingDates);
|
OnRemoving<CommonPart>(AssignRemovingDates);
|
||||||
@@ -100,7 +99,7 @@ namespace Orchard.Core.Common.Handlers {
|
|||||||
part.VersionModifiedBy = GetUserName();
|
part.VersionModifiedBy = GetUserName();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AssignUpdateDates(UpdateEditorContext context, CommonPart part) {
|
private void AssignUpdatingDates(UpdateContentContext context, CommonPart part) {
|
||||||
var utcNow = _clock.UtcNow;
|
var utcNow = _clock.UtcNow;
|
||||||
|
|
||||||
part.ModifiedUtc = utcNow;
|
part.ModifiedUtc = utcNow;
|
||||||
|
|||||||
@@ -1,30 +1,34 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Web.Mvc;
|
using System.Web.Mvc;
|
||||||
using Orchard.ContentManagement;
|
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.Services;
|
||||||
using Orchard.MediaLibrary.ViewModels;
|
using Orchard.MediaLibrary.ViewModels;
|
||||||
using Orchard.Themes;
|
using Orchard.Themes;
|
||||||
using Orchard.UI.Admin;
|
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 {
|
namespace Orchard.MediaLibrary.Controllers {
|
||||||
[Admin, Themed(false)]
|
[Admin, Themed(false)]
|
||||||
public class ClientStorageController : Controller {
|
public class ClientStorageController : Controller {
|
||||||
private readonly IMediaLibraryService _mediaLibraryService;
|
private readonly IMediaLibraryService _mediaLibraryService;
|
||||||
private readonly IMimeTypeProvider _mimeTypeProvider;
|
private readonly IMimeTypeProvider _mimeTypeProvider;
|
||||||
|
private readonly IEnumerable<IContentHandler> _handlers;
|
||||||
|
|
||||||
public ClientStorageController(
|
public ClientStorageController(
|
||||||
IMediaLibraryService mediaManagerService,
|
IMediaLibraryService mediaManagerService,
|
||||||
IOrchardServices orchardServices,
|
IOrchardServices orchardServices,
|
||||||
IMimeTypeProvider mimeTypeProvider) {
|
IMimeTypeProvider mimeTypeProvider,
|
||||||
|
IEnumerable<IContentHandler> handlers) {
|
||||||
_mediaLibraryService = mediaManagerService;
|
_mediaLibraryService = mediaManagerService;
|
||||||
_mimeTypeProvider = mimeTypeProvider;
|
_mimeTypeProvider = mimeTypeProvider;
|
||||||
|
_handlers = handlers;
|
||||||
Services = orchardServices;
|
Services = orchardServices;
|
||||||
T = NullLocalizer.Instance;
|
T = NullLocalizer.Instance;
|
||||||
Logger = NullLogger.Instance;
|
Logger = NullLogger.Instance;
|
||||||
@@ -175,13 +179,19 @@ namespace Orchard.MediaLibrary.Controllers {
|
|||||||
if (!replaceContentType.Equals(replaceMedia.TypeDefinition.Name, StringComparison.OrdinalIgnoreCase))
|
if (!replaceContentType.Equals(replaceMedia.TypeDefinition.Name, StringComparison.OrdinalIgnoreCase))
|
||||||
throw new Exception(T("Cannot replace {0} with {1}", replaceMedia.TypeDefinition.Name, replaceContentType).Text);
|
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.DeleteFile(replaceMedia.FolderPath, replaceMedia.FileName);
|
||||||
_mediaLibraryService.UploadMediaFile(replaceMedia.FolderPath, replaceMedia.FileName, file.InputStream);
|
_mediaLibraryService.UploadMediaFile(replaceMedia.FolderPath, replaceMedia.FileName, file.InputStream);
|
||||||
replaceMedia.MimeType = mimeType;
|
replaceMedia.MimeType = mimeType;
|
||||||
|
|
||||||
// Force a publish event which will update relevant Media properties
|
_handlers.Invoke(x => x.Updated(new UpdateContentContext(replaceMedia.ContentItem)), Logger);
|
||||||
replaceMedia.ContentItem.VersionRecord.Published = false;
|
|
||||||
Services.ContentManager.Publish(replaceMedia.ContentItem);
|
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 {
|
statuses.Add(new {
|
||||||
id = replaceMedia.Id,
|
id = replaceMedia.Id,
|
||||||
|
|||||||
Reference in New Issue
Block a user