diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Controllers/AdminController.cs index 6c1dab9eb..4e5169b12 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Controllers/AdminController.cs @@ -1,160 +1,173 @@ -using System; -using System.Linq; -using System.Web.Mvc; -using Orchard.ContentManagement; -using Orchard.Localization; -using Orchard.Logging; -using Orchard.MediaLibrary.Models; -using Orchard.MediaLibrary.Services; -using Orchard.MediaLibrary.ViewModels; -using Orchard.Mvc; -using Orchard.Themes; -using Orchard.UI.Navigation; -using Orchard.ContentManagement.MetaData; -using Orchard.Validation; - -namespace Orchard.MediaLibrary.Controllers { - [ValidateInput(false)] - public class AdminController : Controller { - private readonly IMediaLibraryService _mediaLibraryService; - private readonly INavigationManager _navigationManager; - private readonly IContentDefinitionManager _contentDefinitionManager; - - public AdminController( - IOrchardServices services, - IMediaLibraryService mediaLibraryService, - INavigationManager navigationManager, - IContentDefinitionManager contentDefinitionManager) { - _mediaLibraryService = mediaLibraryService; - _navigationManager = navigationManager; - _contentDefinitionManager = contentDefinitionManager; - Services = services; - - T = NullLocalizer.Instance; - Logger = NullLogger.Instance; - } - - public IOrchardServices Services { get; set; } - public Localizer T { get; set; } - public ILogger Logger { get; set; } - - public ActionResult Index(string folderPath = "", bool dialog = false) { - - // let other modules enhance the ui by providing custom navigation and actions - var explorer = Services.ContentManager.New("MediaLibraryExplorer"); - explorer.Weld(new MediaLibraryExplorerPart()); - - var explorerShape = Services.ContentManager.BuildDisplay(explorer); - - var viewModel = new MediaManagerIndexViewModel { - DialogMode = dialog, - Folders = _mediaLibraryService.GetMediaFolders(null).Select(GetFolderHierarchy), - FolderPath = folderPath, - MediaTypes = _mediaLibraryService.GetMediaTypes(), - CustomActionsShapes = explorerShape.Actions, - CustomNavigationShapes = explorerShape.Navigation, - }; - - foreach (var shape in explorerShape.Actions.Items) { - shape.MediaManagerIndexViewModel = viewModel; - } - - foreach (var shape in explorerShape.Navigation.Items) { - shape.MediaManagerIndexViewModel = viewModel; - } - - return View(viewModel); - } - - public ActionResult Import(string folderPath) { - - var mediaProviderMenu = _navigationManager.BuildMenu("mediaproviders"); - var imageSets = _navigationManager.BuildImageSets("mediaproviders"); - - var viewModel = new MediaManagerImportViewModel { - Menu = mediaProviderMenu, - ImageSets = imageSets, - FolderPath = folderPath, - MediaTypes = _mediaLibraryService.GetMediaTypes() - }; - - return View(viewModel); - } - - [Themed(false)] - public ActionResult MediaItems(string folderPath, int skip = 0, int count = 0, string order = "created", string mediaType = "") { - var mediaParts = _mediaLibraryService.GetMediaContentItems(folderPath, skip, count, order, mediaType, VersionOptions.Latest); - var mediaPartsCount = _mediaLibraryService.GetMediaContentItemsCount(folderPath, mediaType, VersionOptions.Latest); - - var mediaItems = mediaParts.Select(x => new MediaManagerMediaItemViewModel { - MediaPart = x, - Shape = Services.ContentManager.BuildDisplay(x.ContentItem, "Thumbnail") - }).ToList(); - - var viewModel = new MediaManagerMediaItemsViewModel { - MediaItems = mediaItems, - MediaItemsCount = mediaPartsCount - }; - - return View(viewModel); - } - - [Themed(false)] - public ActionResult RecentMediaItems(int skip = 0, int count = 0, string order = "created", string mediaType = "") { - var mediaParts = _mediaLibraryService.GetMediaContentItems(skip, count, order, mediaType, VersionOptions.Latest); - var mediaPartsCount = _mediaLibraryService.GetMediaContentItemsCount(mediaType, VersionOptions.Latest); - - var mediaItems = mediaParts.Select(x => new MediaManagerMediaItemViewModel { - MediaPart = x, - Shape = Services.ContentManager.BuildDisplay(x, "Thumbnail") - }).ToList(); - - var viewModel = new MediaManagerMediaItemsViewModel { - MediaItems = mediaItems, - MediaItemsCount = mediaPartsCount - }; - - return View("MediaItems", viewModel); - } - - [Themed(false)] - public ActionResult MediaItem(int id, string displayType = "SummaryAdmin") { - var contentItem = Services.ContentManager.Get(id, VersionOptions.Latest); - - if (contentItem == null) - return HttpNotFound(); - - if (!Services.Authorizer.Authorize(Permissions.ManageMediaContent, contentItem, T("Cannot edit media"))) - return new HttpUnauthorizedResult(); - - dynamic model = Services.ContentManager.BuildDisplay(contentItem, displayType); - - return new ShapeResult(this, model); - } - - [HttpPost] - public ActionResult Delete(int[] mediaItemIds) { - if (!Services.Authorizer.Authorize(Permissions.ManageMediaContent, T("Couldn't delete media items"))) - return new HttpUnauthorizedResult(); - - try { - foreach (var media in Services.ContentManager.Query(VersionOptions.Latest).ForContentItems(mediaItemIds).List()) { - if (media != null) { - Services.ContentManager.Remove(media); - } - } - - return Json(true); - } - catch(Exception e) { - Logger.Error(e, "Could not delete media items."); - return Json(false); - } - } - - private FolderHierarchy GetFolderHierarchy(MediaFolder root) { - Argument.ThrowIfNull(root, "root"); - return new FolderHierarchy(root) {Children = _mediaLibraryService.GetMediaFolders(root.MediaPath).Select(GetFolderHierarchy)}; - } - } +using System; +using System.Linq; +using System.Web.Mvc; +using Orchard.ContentManagement; +using Orchard.Localization; +using Orchard.Logging; +using Orchard.MediaLibrary.Models; +using Orchard.MediaLibrary.Services; +using Orchard.MediaLibrary.ViewModels; +using Orchard.Mvc; +using Orchard.Themes; +using Orchard.UI.Navigation; +using Orchard.ContentManagement.MetaData; +using Orchard.Validation; + +namespace Orchard.MediaLibrary.Controllers { + [ValidateInput(false)] + public class AdminController : Controller { + private readonly IMediaLibraryService _mediaLibraryService; + private readonly INavigationManager _navigationManager; + private readonly IContentDefinitionManager _contentDefinitionManager; + + public AdminController( + IOrchardServices services, + IMediaLibraryService mediaLibraryService, + INavigationManager navigationManager, + IContentDefinitionManager contentDefinitionManager) { + _mediaLibraryService = mediaLibraryService; + _navigationManager = navigationManager; + _contentDefinitionManager = contentDefinitionManager; + Services = services; + + T = NullLocalizer.Instance; + Logger = NullLogger.Instance; + } + + public IOrchardServices Services { get; set; } + public Localizer T { get; set; } + public ILogger Logger { get; set; } + + public ActionResult Index(string folderPath = "", bool dialog = false) { + + // let other modules enhance the ui by providing custom navigation and actions + var explorer = Services.ContentManager.New("MediaLibraryExplorer"); + explorer.Weld(new MediaLibraryExplorerPart()); + + var explorerShape = Services.ContentManager.BuildDisplay(explorer); + + var viewModel = new MediaManagerIndexViewModel { + DialogMode = dialog, + FolderPath = folderPath, + MediaTypes = _mediaLibraryService.GetMediaTypes(), + CustomActionsShapes = explorerShape.Actions, + CustomNavigationShapes = explorerShape.Navigation, + }; + + foreach (var shape in explorerShape.Actions.Items) { + shape.MediaManagerIndexViewModel = viewModel; + } + + foreach (var shape in explorerShape.Navigation.Items) { + shape.MediaManagerIndexViewModel = viewModel; + } + + return View(viewModel); + } + + public ActionResult Import(string folderPath) { + + var mediaProviderMenu = _navigationManager.BuildMenu("mediaproviders"); + var imageSets = _navigationManager.BuildImageSets("mediaproviders"); + + var viewModel = new MediaManagerImportViewModel { + Menu = mediaProviderMenu, + ImageSets = imageSets, + FolderPath = folderPath, + MediaTypes = _mediaLibraryService.GetMediaTypes() + }; + + return View(viewModel); + } + + [Themed(false)] + public ActionResult MediaItems(string folderPath, int skip = 0, int count = 0, string order = "created", string mediaType = "") { + var mediaParts = _mediaLibraryService.GetMediaContentItems(folderPath, skip, count, order, mediaType, VersionOptions.Latest); + var mediaPartsCount = _mediaLibraryService.GetMediaContentItemsCount(folderPath, mediaType, VersionOptions.Latest); + + var mediaItems = mediaParts.Select(x => new MediaManagerMediaItemViewModel { + MediaPart = x, + Shape = Services.ContentManager.BuildDisplay(x.ContentItem, "Thumbnail") + }).ToList(); + + var viewModel = new MediaManagerMediaItemsViewModel { + MediaItems = mediaItems, + MediaItemsCount = mediaPartsCount + }; + + return View(viewModel); + } + + [Themed(false)] + public ActionResult ChildFolders(string folderPath = null) { + if (!Services.Authorizer.Authorize(Permissions.ManageMediaContent, T("Cannot get child folder listing"))) + return new HttpUnauthorizedResult(); + + var childFolders = _mediaLibraryService.GetMediaFolders(folderPath); + + var viewModel = new MediaManagerChildFoldersViewModel { + Children = childFolders + }; + + return View(viewModel); + } + + [Themed(false)] + public ActionResult RecentMediaItems(int skip = 0, int count = 0, string order = "created", string mediaType = "") { + var mediaParts = _mediaLibraryService.GetMediaContentItems(skip, count, order, mediaType, VersionOptions.Latest); + var mediaPartsCount = _mediaLibraryService.GetMediaContentItemsCount(mediaType, VersionOptions.Latest); + + var mediaItems = mediaParts.Select(x => new MediaManagerMediaItemViewModel { + MediaPart = x, + Shape = Services.ContentManager.BuildDisplay(x, "Thumbnail") + }).ToList(); + + var viewModel = new MediaManagerMediaItemsViewModel { + MediaItems = mediaItems, + MediaItemsCount = mediaPartsCount + }; + + return View("MediaItems", viewModel); + } + + [Themed(false)] + public ActionResult MediaItem(int id, string displayType = "SummaryAdmin") { + var contentItem = Services.ContentManager.Get(id, VersionOptions.Latest); + + if (contentItem == null) + return HttpNotFound(); + + if (!Services.Authorizer.Authorize(Permissions.ManageMediaContent, contentItem, T("Cannot edit media"))) + return new HttpUnauthorizedResult(); + + dynamic model = Services.ContentManager.BuildDisplay(contentItem, displayType); + + return new ShapeResult(this, model); + } + + [HttpPost] + public ActionResult Delete(int[] mediaItemIds) { + if (!Services.Authorizer.Authorize(Permissions.ManageMediaContent, T("Couldn't delete media items"))) + return new HttpUnauthorizedResult(); + + try { + foreach (var media in Services.ContentManager.Query(VersionOptions.Latest).ForContentItems(mediaItemIds).List()) { + if (media != null) { + Services.ContentManager.Remove(media); + } + } + + return Json(true); + } + catch(Exception e) { + Logger.Error(e, "Could not delete media items."); + return Json(false); + } + } + + private FolderHierarchy GetFolderHierarchy(MediaFolder root) { + Argument.ThrowIfNull(root, "root"); + return new FolderHierarchy(root) {Children = _mediaLibraryService.GetMediaFolders(root.MediaPath).Select(GetFolderHierarchy)}; + } + } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj index 232782e7a..c628bf094 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj @@ -1,395 +1,396 @@ - - - - - Debug - AnyCPU - 9.0.30729 - 2.0 - {73A7688A-5BD3-4F7E-ADFA-CE36C5A10E3B} - {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} - Library - Properties - Orchard.MediaLibrary - Orchard.MediaLibrary - v4.5 - false - - - 4.0 - - - false - - - - - - - true - full - false - bin\ - DEBUG;TRACE - prompt - 4 - AllRules.ruleset - false - - - pdbonly - true - bin\ - TRACE - prompt - 4 - AllRules.ruleset - false - - - - - False - ..\..\..\..\lib\newtonsoft.json\Newtonsoft.Json.dll - - - - - 3.5 - - - - - - - - - False - ..\..\..\..\lib\aspnetmvc\System.Web.Mvc.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - - - - - - - {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} - Orchard.Framework - - - {9916839C-39FC-4CEB-A5AF-89CA7E87119F} - Orchard.Core - - - {6f759635-13d7-4e94-bcc9-80445d63f117} - Orchard.Tokens - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - Styles\orchard-medialibrary-admin.css - - - - - - - - $(ProjectDir)\..\Manifests - - - - - - - - - - - - False - True - 45979 - / - - - False - True - http://orchard.codeplex.com - False - - - - + + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {73A7688A-5BD3-4F7E-ADFA-CE36C5A10E3B} + {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + Orchard.MediaLibrary + Orchard.MediaLibrary + v4.5 + false + + + 4.0 + + + false + + + + + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + AllRules.ruleset + false + + + pdbonly + true + bin\ + TRACE + prompt + 4 + AllRules.ruleset + false + + + + + False + ..\..\..\..\lib\newtonsoft.json\Newtonsoft.Json.dll + + + + + 3.5 + + + + + + + + + False + ..\..\..\..\lib\aspnetmvc\System.Web.Mvc.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Designer + + + + + + + + + {2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6} + Orchard.Framework + + + {9916839C-39FC-4CEB-A5AF-89CA7E87119F} + Orchard.Core + + + {6f759635-13d7-4e94-bcc9-80445d63f117} + Orchard.Tokens + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Designer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + Styles\orchard-medialibrary-admin.css + + + + + + + + $(ProjectDir)\..\Manifests + + + + + + + + + + + + False + True + 45979 + / + + + False + True + http://orchard.codeplex.com + False + + + + \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Scripts/media-library.js b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Scripts/media-library.js index 890cbcc9d..e83ea91ff 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Scripts/media-library.js +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Scripts/media-library.js @@ -79,7 +79,29 @@ $(function () { self.pendingRequest = ko.observable(false); self.mediaItemsCount = 0; self.orderMedia = ko.observableArray(['created']); - self.mediaType = ko.observableArray([]); + self.mediaType = ko.observableArray([]); + + self.mediaFolders = ko.observableArray([]); + + (function () { + var getChildFolderListUrl = function (f) { + return settings.childFolderListingActionUrl + '?folderPath=' + encodeURIComponent(f); + }; + var url = getChildFolderListUrl(settings.folderPath); + + $.ajax({ + type: "GET", + url: url, + cache: false + }).done(function (data) { + var childFolders = data.childFolders; + for (var x = 0; x < childFolders.length; x++) { + self.mediaFolders.push(new mediaFolderViewModel(childFolders[x])); + } + }).fail(function (data) { + console.error(data); + }); + })(); self.getMediaItems = function (count, append) { var folderPath = self.displayed() || ''; @@ -164,7 +186,6 @@ $(function () { }); self.displayFolder = function(folderPath) { - self.results([]); self.displayed(folderPath); @@ -172,10 +193,10 @@ $(function () { return settings.mediaItemsActionUrl + '?folderPath=' + encodeURIComponent(f) + '&skip=' + skip + '&count=' + count + '&order=' + order + '&mediaType=' + mediaType; }; - self.getMediaItems(pageCount); + self.getMediaItems(pageCount); }; - self.selectFolder = function(folderPath) { + self.selectFolder = function (folderPath) { History.pushState({ action: 'displayFolder', folderPath: folderPath }, '', '?folderPath=' + folderPath); self.displayFolder(folderPath); }; @@ -242,6 +263,73 @@ $(function () { var viewModel = new mediaIndexViewModel(); + function mediaFolderViewModel(data) { + var self = this; + + self.mediaIndexViewModel = viewModel; + + self.folderPath = ko.observable(data.folderPath); + + self.name = ko.observable(data.name); + + self.childFolders = ko.observableArray([]); + + self.childFoldersFetchStatus = 0; //0 = unfetched, 1 = fetching, 2 = fetched + + self.isExpanded = ko.observable(false); + self.isVisible = ko.observable(true); + + self.isSelected = ko.computed(function() { + return (self.mediaIndexViewModel.displayed() == self.folderPath()); + }); + + self.folderClicked = function () { + self.mediaIndexViewModel.selectFolder(self.folderPath()); + + var childFolders = self.childFolders(); + + if (self.isExpanded()) { + for (var x = 0; x < childFolders.length; x++) { + childFolders[x].isVisible(false); + } + self.isExpanded(false); + } else { + if (self.childFoldersFetchStatus !== 0) { + for (var x = 0; x < childFolders.length; x++) { + childFolders[x].isVisible(true); + } + } else { + self.childFoldersFetchStatus = 1; + var getChildFolderListUrl = function (f) { + return settings.childFolderListingActionUrl + '?folderPath=' + encodeURIComponent(f); + }; + var url = getChildFolderListUrl(self.folderPath()); + + $.ajax({ + type: "GET", + url: url, + cache: false + }).done(function (data) { + var newChildFolders = data.childFolders; + for (var y = 0; y < newChildFolders.length; y++) { + var newChildFolder = new mediaFolderViewModel(newChildFolders[y]); + newChildFolder.isVisible(true); + self.childFolders.push(newChildFolder); + } + self.childFoldersFetchStatus = 2; + }).fail(function (data) { + console.error(data); + self.childFoldersFetchStatus = 0; + }); + } + + self.isExpanded(true); + } + + + }; + } + enhanceViewModel(viewModel); ko.applyBindings(viewModel); @@ -271,7 +359,7 @@ $(function () { // only for left click if (e.which != 1) { return; - } + } var searchResult = ko.dataFor(this); if (e.ctrlKey) { diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/ViewModels/MediaManagerChildFoldersViewModel.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/ViewModels/MediaManagerChildFoldersViewModel.cs new file mode 100644 index 000000000..0daa784cd --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/ViewModels/MediaManagerChildFoldersViewModel.cs @@ -0,0 +1,8 @@ +using System.Collections.Generic; +using Orchard.MediaLibrary.Models; + +namespace Orchard.MediaLibrary.ViewModels { + public class MediaManagerChildFoldersViewModel { + public IEnumerable Children { get; set; } + } +} diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/ViewModels/MediaManagerIndexViewModel.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/ViewModels/MediaManagerIndexViewModel.cs index 0656aaf7a..72adbf503 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/ViewModels/MediaManagerIndexViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/ViewModels/MediaManagerIndexViewModel.cs @@ -4,7 +4,6 @@ using Orchard.MediaLibrary.Models; namespace Orchard.MediaLibrary.ViewModels { public class MediaManagerIndexViewModel { - public IEnumerable Folders { get; set; } public string FolderPath { get; set; } public bool DialogMode { get; set; } public IEnumerable MediaTypes { get; set; } diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/ChildFolders.cshtml b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/ChildFolders.cshtml new file mode 100644 index 000000000..dfb4428e7 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/ChildFolders.cshtml @@ -0,0 +1,15 @@ +@using Orchard.Utility.Extensions +@model Orchard.MediaLibrary.ViewModels.MediaManagerChildFoldersViewModel +@{ + Response.ContentType = "text/json"; + @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject( + new { + childFolders = Model.Children.Select(x => new { + folderPath = x.MediaPath, + name = x.Name, + lastUpdated = x.LastUpdated + }).ToArray() + })) +} + + \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/Index.cshtml b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/Index.cshtml index 6b69d6466..2a2091569 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/Index.cshtml +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/Index.cshtml @@ -1,109 +1,116 @@ -@model Orchard.MediaLibrary.ViewModels.MediaManagerIndexViewModel - -@{ - var viewModel = Model; - - Script.Require("ShapesBase"); - Style.Require("MediaManagerAdmin"); - Script.Require("jQuery"); - Script.Require("jQueryUI_Droppable"); - Script.Include("knockout-2.3.0.js"); - Script.Include("history.js"); - Script.Include("media-library.js"); - Style.Require("FontAwesome"); - - Layout.Title = T("Media Library"); -} - -
-
- @T("Import") - @T("Create Folder") - - @Display(Model.CustomActionsShapes) -
-
-
-
    - - @Display(Model.CustomNavigationShapes) - -
  • -
      - @foreach (var folder in viewModel.Folders) { -
    • - @Display.Partial(TemplateName: "MediaManagerFolder", Model: folder) -
    • - } -
    -
  • -
-
-
-
-
    -
  • -
    -
    -
    -

    -

    -
    -
  • -
-
-
-
-
-

@T("PROPERTIES")

-
- -
-
-
-
-
-

@T("SELECTION")

-
    -
  • -
    -
    -
  • -
-
- -
-
-
-
-
- - -
-
-
-
-
-
- - -@using (Script.Foot()) { - +@model Orchard.MediaLibrary.ViewModels.MediaManagerIndexViewModel + +@{ + var viewModel = Model; + + Script.Require("ShapesBase"); + Style.Require("MediaManagerAdmin"); + Script.Require("jQuery"); + Script.Require("jQueryUI_Droppable"); + Script.Include("knockout-2.3.0.js"); + Script.Include("history.js"); + Script.Include("media-library.js"); + Style.Require("FontAwesome"); + + Layout.Title = T("Media Library"); +} + +
+
+ @T("Import") + @T("Create Folder") + + @Display(Model.CustomActionsShapes) +
+
+
+
    + + @Display(Model.CustomNavigationShapes) + +
  • +
      +
    +
  • +
+
+
+
+
    +
  • +
    +
    +
    +

    +

    +
    +
  • +
+
+
+
+
+

@T("PROPERTIES")

+
+ +
+
+
+
+
+

@T("SELECTION")

+
    +
  • +
    +
    +
  • +
+
+ +
+
+
+
+
+ + +
+
+
+
+
+
+ + +@using (Script.Foot()) { + + } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/MediaManagerFolder.cshtml b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/MediaManagerFolder.cshtml deleted file mode 100644 index 7015f8ee5..000000000 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/MediaManagerFolder.cshtml +++ /dev/null @@ -1,16 +0,0 @@ -@model Orchard.MediaLibrary.Models.FolderHierarchy - -
- - @if (Model.Children.Any()) { -
    - @foreach (var folder in Model.Children) { -
  • - @Display.Partial(TemplateName: "MediaManagerFolder", Model: folder) -
  • - } -
- } -