Media Library: Fixing that recent items were not displayed for users with ManageOwnMedia permission. Fixes #6446

This commit is contained in:
Lombiq
2016-02-24 00:36:57 +01:00
committed by Benedek Farkas
parent c09ffd85c4
commit e32455ff28
6 changed files with 20 additions and 4 deletions

View File

@@ -56,11 +56,13 @@ namespace Orchard.MediaLibrary.Controllers {
explorer.Weld(new MediaLibraryExplorerPart()); explorer.Weld(new MediaLibraryExplorerPart());
var explorerShape = Services.ContentManager.BuildDisplay(explorer); var explorerShape = Services.ContentManager.BuildDisplay(explorer);
var rootMediaFolderPath = rootMediaFolder == null ? null : rootMediaFolder.MediaPath;
var viewModel = new MediaManagerIndexViewModel { var viewModel = new MediaManagerIndexViewModel {
DialogMode = dialog, DialogMode = dialog,
FolderPath = folderPath, FolderPath = folderPath,
ChildFoldersViewModel = new MediaManagerChildFoldersViewModel{Children = _mediaLibraryService.GetMediaFolders(rootMediaFolder == null ? null : rootMediaFolder.MediaPath)}, RootFolderPath = rootMediaFolderPath,
ChildFoldersViewModel = new MediaManagerChildFoldersViewModel { Children = _mediaLibraryService.GetMediaFolders(rootMediaFolderPath) },
MediaTypes = _mediaLibraryService.GetMediaTypes(), MediaTypes = _mediaLibraryService.GetMediaTypes(),
CustomActionsShapes = explorerShape.Actions, CustomActionsShapes = explorerShape.Actions,
CustomNavigationShapes = explorerShape.Navigation, CustomNavigationShapes = explorerShape.Navigation,
@@ -158,8 +160,8 @@ namespace Orchard.MediaLibrary.Controllers {
var rootMediaFolder = _mediaLibraryService.GetRootMediaFolder(); var rootMediaFolder = _mediaLibraryService.GetRootMediaFolder();
var rootMediaFolderPath = rootMediaFolder == null ? null : rootMediaFolder.MediaPath; var rootMediaFolderPath = rootMediaFolder == null ? null : rootMediaFolder.MediaPath;
var mediaParts = _mediaLibraryService.GetMediaContentItems(rootMediaFolderPath, skip, count, order, mediaType); var mediaParts = _mediaLibraryService.GetMediaContentItemsRecursive(rootMediaFolderPath, skip, count, order, mediaType);
var mediaPartsCount = _mediaLibraryService.GetMediaContentItemsCount(rootMediaFolderPath, mediaType); var mediaPartsCount = _mediaLibraryService.GetMediaContentItemsCountRecursive(rootMediaFolderPath, mediaType);
var mediaItems = mediaParts.Select(x => new MediaManagerMediaItemViewModel { var mediaItems = mediaParts.Select(x => new MediaManagerMediaItemViewModel {

View File

@@ -434,7 +434,7 @@ $(function () {
ko.applyBindings(viewModel); ko.applyBindings(viewModel);
if (settings.hasFolderPath) { if (settings.hasFolderPath && settings.folderPath != settings.rootFolderPath) {
viewModel.displayFolder(settings.folderPath); viewModel.displayFolder(settings.folderPath);
//fetch displayed folder structure //fetch displayed folder structure

View File

@@ -13,8 +13,10 @@ namespace Orchard.MediaLibrary.Services {
IContentQuery<MediaPart, MediaPartRecord> GetMediaContentItems(VersionOptions versionOptions = null); IContentQuery<MediaPart, MediaPartRecord> GetMediaContentItems(VersionOptions versionOptions = null);
IEnumerable<MediaPart> GetMediaContentItems(string folderPath, int skip, int count, string order, string mediaType, VersionOptions versionOptions = null); IEnumerable<MediaPart> GetMediaContentItems(string folderPath, int skip, int count, string order, string mediaType, VersionOptions versionOptions = null);
IEnumerable<MediaPart> GetMediaContentItems(int skip, int count, string order, string mediaType, VersionOptions versionOptions = null); IEnumerable<MediaPart> GetMediaContentItems(int skip, int count, string order, string mediaType, VersionOptions versionOptions = null);
IEnumerable<MediaPart> GetMediaContentItemsRecursive(string folderPath, int skip, int count, string order, string mediaType, VersionOptions versionOptions = null);
int GetMediaContentItemsCount(string folderPath, string mediaType, VersionOptions versionOptions = null); int GetMediaContentItemsCount(string folderPath, string mediaType, VersionOptions versionOptions = null);
int GetMediaContentItemsCount(string mediaType, VersionOptions versionOptions = null); int GetMediaContentItemsCount(string mediaType, VersionOptions versionOptions = null);
int GetMediaContentItemsCountRecursive(string folderPath, string mediaType, VersionOptions versionOptions = null);
MediaPart ImportMedia(string relativePath, string filename); MediaPart ImportMedia(string relativePath, string filename);
MediaPart ImportMedia(string relativePath, string filename, string contentType); MediaPart ImportMedia(string relativePath, string filename, string contentType);
MediaPart ImportMedia(Stream stream, string relativePath, string filename); MediaPart ImportMedia(Stream stream, string relativePath, string filename);

View File

@@ -59,6 +59,11 @@ namespace Orchard.MediaLibrary.Services {
return GetMediaContentItems(null, skip, count, order, mediaType, versionOptions); return GetMediaContentItems(null, skip, count, order, mediaType, versionOptions);
} }
public IEnumerable<MediaPart> GetMediaContentItemsRecursive(string folderPath, int skip, int count, string order, string mediaType, VersionOptions versionOptions = null) {
return BuildGetMediaContentItemsQuery(_orchardServices.ContentManager, folderPath, true, order, mediaType, versionOptions)
.Slice(skip, count);
}
public int GetMediaContentItemsCount(string folderPath, string mediaType, VersionOptions versionOptions = null) { public int GetMediaContentItemsCount(string folderPath, string mediaType, VersionOptions versionOptions = null) {
return BuildGetMediaContentItemsQuery(_orchardServices.ContentManager, folderPath, mediaType: mediaType, versionOptions: versionOptions) return BuildGetMediaContentItemsQuery(_orchardServices.ContentManager, folderPath, mediaType: mediaType, versionOptions: versionOptions)
.Count(); .Count();
@@ -68,6 +73,11 @@ namespace Orchard.MediaLibrary.Services {
return GetMediaContentItemsCount(null, mediaType, versionOptions); return GetMediaContentItemsCount(null, mediaType, versionOptions);
} }
public int GetMediaContentItemsCountRecursive(string folderPath, string mediaType, VersionOptions versionOptions = null) {
return BuildGetMediaContentItemsQuery(_orchardServices.ContentManager, folderPath, true, mediaType: mediaType, versionOptions: versionOptions)
.Count();
}
private static IContentQuery<MediaPart> BuildGetMediaContentItemsQuery( private static IContentQuery<MediaPart> BuildGetMediaContentItemsQuery(
IContentManager contentManager, string folderPath = null, bool recursive = false, string order = null, string mediaType = null, VersionOptions versionOptions = null) { IContentManager contentManager, string folderPath = null, bool recursive = false, string order = null, string mediaType = null, VersionOptions versionOptions = null) {

View File

@@ -6,6 +6,7 @@ namespace Orchard.MediaLibrary.ViewModels {
public class MediaManagerIndexViewModel { public class MediaManagerIndexViewModel {
public MediaManagerChildFoldersViewModel ChildFoldersViewModel { get; set; } public MediaManagerChildFoldersViewModel ChildFoldersViewModel { get; set; }
public string FolderPath { get; set; } public string FolderPath { get; set; }
public string RootFolderPath { get; set; }
public bool DialogMode { get; set; } public bool DialogMode { get; set; }
public IEnumerable<ContentTypeDefinition> MediaTypes { get; set; } public IEnumerable<ContentTypeDefinition> MediaTypes { get; set; }
public dynamic CustomActionsShapes { get; set; } public dynamic CustomActionsShapes { get; set; }

View File

@@ -98,6 +98,7 @@ var mediaLibrarySettings = {
cloneActionUrl: '@Url.Action("Clone", "Admin", new {area = "Orchard.MediaLibrary"})', cloneActionUrl: '@Url.Action("Clone", "Admin", new {area = "Orchard.MediaLibrary"})',
hasFolderPath: @(!string.IsNullOrEmpty(viewModel.FolderPath) ? "true" : "false"), hasFolderPath: @(!string.IsNullOrEmpty(viewModel.FolderPath) ? "true" : "false"),
folderPath: '@HttpUtility.JavaScriptStringEncode(viewModel.FolderPath)', folderPath: '@HttpUtility.JavaScriptStringEncode(viewModel.FolderPath)',
rootFolderPath: '@HttpUtility.JavaScriptStringEncode(viewModel.RootFolderPath ?? "")',
deleteConfirmationMessage: '@HttpUtility.JavaScriptStringEncode(T("Are you sure you want to delete these media items ?").Text)', deleteConfirmationMessage: '@HttpUtility.JavaScriptStringEncode(T("Are you sure you want to delete these media items ?").Text)',
cloneConfirmationMessage: '@HttpUtility.JavaScriptStringEncode(T("Are you sure you want to clone this media item ?").Text)', cloneConfirmationMessage: '@HttpUtility.JavaScriptStringEncode(T("Are you sure you want to clone this media item ?").Text)',
errorMessage: '@HttpUtility.JavaScriptStringEncode(T("An unexpected error occured, please refresh the page and try again.").Text)', errorMessage: '@HttpUtility.JavaScriptStringEncode(T("An unexpected error occured, please refresh the page and try again.").Text)',