mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
#20542 Collapsible media library tree in admin.
Dynamically loading MediaLibrary directory tree using ajax and knockout templates
This commit is contained in:
committed by
Sebastien Ros
parent
ba09ba8053
commit
5d2a31ffc0
@@ -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)};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,395 +1,396 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{73A7688A-5BD3-4F7E-ADFA-CE36C5A10E3B}</ProjectGuid>
|
||||
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Orchard.MediaLibrary</RootNamespace>
|
||||
<AssemblyName>Orchard.MediaLibrary</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<MvcBuildViews>false</MvcBuildViews>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>4.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation />
|
||||
<TargetFrameworkProfile />
|
||||
<UseIISExpress>false</UseIISExpress>
|
||||
<IISExpressSSLPort />
|
||||
<IISExpressAnonymousAuthentication />
|
||||
<IISExpressWindowsAuthentication />
|
||||
<IISExpressUseClassicPipelineMode />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\lib\newtonsoft.json\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Web.ApplicationServices" />
|
||||
<Reference Include="System.Web.DynamicData" />
|
||||
<Reference Include="System.Web.Entity" />
|
||||
<Reference Include="System.Web.Extensions" />
|
||||
<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\lib\aspnetmvc\System.Web.Mvc.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Web.Abstractions" />
|
||||
<Reference Include="System.Web.Routing" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\knockout-2.3.0.js" />
|
||||
<Content Include="Scripts\media-library.js" />
|
||||
<Content Include="Scripts\modal-window.js" />
|
||||
<Content Include="Scripts\history.js" />
|
||||
<Content Include="Styles\font-awesome\css\font-awesome.css" />
|
||||
<Content Include="Styles\font-awesome\css\font-awesome.min.css" />
|
||||
<Content Include="Styles\font-awesome\font\fontawesome-webfont.svg" />
|
||||
<Content Include="Styles\Images\menu.media.png" />
|
||||
<Content Include="Styles\menu.media-library-admin.css" />
|
||||
<Content Include="Styles\menu.oembed-mediaproviders.css" />
|
||||
<Content Include="Styles\orchard-oembed-admin.css" />
|
||||
<Content Include="Styles\menu.websearch-mediaproviders.css" />
|
||||
<Content Include="Styles\menu.clientstorage-mediaproviders.css" />
|
||||
<Content Include="Styles\dialog-mode.css" />
|
||||
<Content Include="Styles\media-library-picker-admin.css" />
|
||||
<Content Include="Styles\Images\folders-loader.gif" />
|
||||
<Content Include="Styles\Images\loading.gif" />
|
||||
<Content Include="Styles\Images\processing.gif" />
|
||||
<Content Include="Styles\orchard-clientstorage-admin.css" />
|
||||
<Content Include="Styles\Images\ajax-loader.gif" />
|
||||
<Content Include="Styles\orchard-websearch-admin.css" />
|
||||
<Content Include="Styles\orchard-mediaproviders-admin.css" />
|
||||
<Content Include="Styles\orchard-medialibrary-admin.css" />
|
||||
<Content Include="Web.config">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="Scripts\Web.config" />
|
||||
<Content Include="Styles\Web.config" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Content Include="Module.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\Orchard\Orchard.Framework.csproj">
|
||||
<Project>{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}</Project>
|
||||
<Name>Orchard.Framework</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Core\Orchard.Core.csproj">
|
||||
<Project>{9916839C-39FC-4CEB-A5AF-89CA7E87119F}</Project>
|
||||
<Name>Orchard.Core</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Orchard.Tokens\Orchard.Tokens.csproj">
|
||||
<Project>{6f759635-13d7-4e94-bcc9-80445d63f117}</Project>
|
||||
<Name>Orchard.Tokens</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Drivers\MediaLibraryExplorerPartDriver.cs" />
|
||||
<Compile Include="ModalAdminFilter.cs" />
|
||||
<Compile Include="AdminMenu.cs" />
|
||||
<Compile Include="Controllers\AdminController.cs" />
|
||||
<Compile Include="Controllers\ClientStorageController.cs" />
|
||||
<Compile Include="Controllers\OEmbedController.cs" />
|
||||
<Compile Include="Controllers\FolderController.cs" />
|
||||
<Compile Include="Controllers\WebSearchController.cs" />
|
||||
<Compile Include="Drivers\AudioPartDriver.cs" />
|
||||
<Compile Include="Drivers\OEmbedPartDriver.cs" />
|
||||
<Compile Include="Drivers\MediaLibraryPickerFieldDriver.cs" />
|
||||
<Compile Include="Drivers\DocumentPartDriver.cs" />
|
||||
<Compile Include="Drivers\VideoPartDriver.cs" />
|
||||
<Compile Include="Drivers\ImagePartDriver.cs" />
|
||||
<Compile Include="Factories\AudioFactory.cs" />
|
||||
<Compile Include="Factories\DocumentFactory.cs" />
|
||||
<Compile Include="Factories\VideoFactory.cs" />
|
||||
<Compile Include="Factories\ImageFactory.cs" />
|
||||
<Compile Include="Factories\IMediaFactory.cs" />
|
||||
<Compile Include="Factories\IMediaFactorySelector.cs" />
|
||||
<Compile Include="Factories\MediaFactorySelectorResult.cs" />
|
||||
<Compile Include="Fields\MediaLibraryPickerField.cs" />
|
||||
<Compile Include="Handlers\MediaLibraryPickerFieldHandler.cs" />
|
||||
<Compile Include="Handlers\MediaPartHandler.cs" />
|
||||
<Compile Include="Drivers\MediaPartDriver.cs" />
|
||||
<Compile Include="Handlers\WebSearchSettingsPartHandler.cs" />
|
||||
<Compile Include="Migrations.cs" />
|
||||
<Compile Include="Models\AudioPart.cs" />
|
||||
<Compile Include="Models\FolderHierarchy.cs" />
|
||||
<Compile Include="Models\MediaFile.cs" />
|
||||
<Compile Include="Models\MediaFolder.cs" />
|
||||
<Compile Include="Models\MediaLibraryExplorerPart.cs" />
|
||||
<Compile Include="Models\WebSearchSettingsPart.cs" />
|
||||
<Compile Include="Models\ImagePart.cs" />
|
||||
<Compile Include="Models\DocumentPart.cs" />
|
||||
<Compile Include="Models\VideoPart.cs" />
|
||||
<Compile Include="Models\OEmbedPart.cs" />
|
||||
<Compile Include="Models\MediaPart.cs" />
|
||||
<Compile Include="Models\MediaPartRecord.cs" />
|
||||
<Compile Include="Permissions.cs" />
|
||||
<Compile Include="Providers\ClientStorageMenu.cs" />
|
||||
<Compile Include="Providers\OEmbedMenu.cs" />
|
||||
<Compile Include="Providers\WebSearchMenu.cs" />
|
||||
<Compile Include="ResourceManifest.cs" />
|
||||
<Compile Include="Services\IMediaLibraryService.cs" />
|
||||
<Compile Include="Services\MediaLibraryService.cs" />
|
||||
<Compile Include="Services\Shapes.cs" />
|
||||
<Compile Include="Services\XmlRpcHandler.cs" />
|
||||
<Compile Include="Settings\MediaLibraryPickerFieldEditorEvents.cs" />
|
||||
<Compile Include="Settings\MediaLibraryPickerFieldSettings.cs" />
|
||||
<Compile Include="Tokens\FieldTokens.cs" />
|
||||
<Compile Include="ViewModels\ImportMediaViewModel.cs" />
|
||||
<Compile Include="ViewModels\MediaLibraryPickerFieldViewModel.cs" />
|
||||
<Compile Include="ViewModels\MediaManagerMediaItemsViewModel.cs" />
|
||||
<Compile Include="ViewModels\MediaManagerFolderCreateViewModel.cs" />
|
||||
<Compile Include="ViewModels\MediaManagerFolderEditViewModel.cs" />
|
||||
<Compile Include="ViewModels\MediaManagerImportViewModel.cs" />
|
||||
<Compile Include="ViewModels\MediaManagerIndexViewModel.cs" />
|
||||
<Compile Include="ViewModels\OEmbedViewModel.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Admin\Index.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Admin\MediaManagerFolder.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media.Edit.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\ClientStorage\Index.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Admin\Import.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\WebSearch\Index.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Folder\Create.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Folder\Edit.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media-Image.Thumbnail.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media.Thumbnail.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Admin\MediaItems.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media-Video.Thumbnail.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Media.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Placement.info">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\EditorTemplates\Parts.Media.Edit.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Image.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Image.Metadata.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Media.Actions.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Video.Metadata.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Video.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media-Audio.Thumbnail.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media-Document.Thumbnail.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Audio.Metadata.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Audio.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Document.Metadata.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Document.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\DefinitionTemplates\MediaLibraryPickerFieldSettings.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\EditorTemplates\Fields\MediaLibraryPicker.Edit.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Fields\MediaLibraryPicker.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Fields\MediaLibraryPicker.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Audio.Summary.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Document.Summary.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Image.Summary.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Video.Summary.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Audio.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Document.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Image.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Video.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\OEmbed\Index.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\OEmbed.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\OEmbed.Metadata.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\OEmbed.Summary.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\OEmbed.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media-OEmbed.Thumbnail.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\EditorTemplates\Parts\WebSearch.WebSearchSettings.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media.Raw.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Styles\font-awesome\font\fontawesome-webfont.eot" />
|
||||
<Content Include="Styles\font-awesome\font\fontawesome-webfont.ttf" />
|
||||
<Content Include="Styles\font-awesome\font\fontawesome-webfont.woff" />
|
||||
<Content Include="Styles\font-awesome\font\FontAwesome.otf" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media.Summary.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\MediaLibrary.Actions.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\MediaLibrary.Navigation.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Fields\MediaLibraryPicker.Summary.cshtml" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationManifest>Styles\orchard-medialibrary-admin.css</ApplicationManifest>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target> -->
|
||||
<Target Name="AfterBuild" DependsOnTargets="AfterBuildCompiler">
|
||||
<PropertyGroup>
|
||||
<AreasManifestDir>$(ProjectDir)\..\Manifests</AreasManifestDir>
|
||||
</PropertyGroup>
|
||||
<!-- If this is an area child project, uncomment the following line:
|
||||
<CreateAreaManifest AreaName="$(AssemblyName)" AreaType="Child" AreaPath="$(ProjectDir)" ManifestPath="$(AreasManifestDir)" ContentFiles="@(Content)" />
|
||||
-->
|
||||
<!-- If this is an area parent project, uncomment the following lines:
|
||||
<CreateAreaManifest AreaName="$(AssemblyName)" AreaType="Parent" AreaPath="$(ProjectDir)" ManifestPath="$(AreasManifestDir)" ContentFiles="@(Content)" />
|
||||
<CopyAreaManifests ManifestPath="$(AreasManifestDir)" CrossCopy="false" RenameViews="true" />
|
||||
-->
|
||||
</Target>
|
||||
<Target Name="AfterBuildCompiler" Condition="'$(MvcBuildViews)'=='true'">
|
||||
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
|
||||
</Target>
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>False</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>45979</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>
|
||||
</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>True</UseCustomServer>
|
||||
<CustomServerUrl>http://orchard.codeplex.com</CustomServerUrl>
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{73A7688A-5BD3-4F7E-ADFA-CE36C5A10E3B}</ProjectGuid>
|
||||
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Orchard.MediaLibrary</RootNamespace>
|
||||
<AssemblyName>Orchard.MediaLibrary</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<MvcBuildViews>false</MvcBuildViews>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>4.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation />
|
||||
<TargetFrameworkProfile />
|
||||
<UseIISExpress>false</UseIISExpress>
|
||||
<IISExpressSSLPort />
|
||||
<IISExpressAnonymousAuthentication />
|
||||
<IISExpressWindowsAuthentication />
|
||||
<IISExpressUseClassicPipelineMode />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\lib\newtonsoft.json\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Web.ApplicationServices" />
|
||||
<Reference Include="System.Web.DynamicData" />
|
||||
<Reference Include="System.Web.Entity" />
|
||||
<Reference Include="System.Web.Extensions" />
|
||||
<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\lib\aspnetmvc\System.Web.Mvc.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Web.Abstractions" />
|
||||
<Reference Include="System.Web.Routing" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\knockout-2.3.0.js" />
|
||||
<Content Include="Scripts\media-library.js" />
|
||||
<Content Include="Scripts\modal-window.js" />
|
||||
<Content Include="Scripts\history.js" />
|
||||
<Content Include="Styles\font-awesome\css\font-awesome.css" />
|
||||
<Content Include="Styles\font-awesome\css\font-awesome.min.css" />
|
||||
<Content Include="Styles\font-awesome\font\fontawesome-webfont.svg" />
|
||||
<Content Include="Styles\Images\menu.media.png" />
|
||||
<Content Include="Styles\menu.media-library-admin.css" />
|
||||
<Content Include="Styles\menu.oembed-mediaproviders.css" />
|
||||
<Content Include="Styles\orchard-oembed-admin.css" />
|
||||
<Content Include="Styles\menu.websearch-mediaproviders.css" />
|
||||
<Content Include="Styles\menu.clientstorage-mediaproviders.css" />
|
||||
<Content Include="Styles\dialog-mode.css" />
|
||||
<Content Include="Styles\media-library-picker-admin.css" />
|
||||
<Content Include="Styles\Images\folders-loader.gif" />
|
||||
<Content Include="Styles\Images\loading.gif" />
|
||||
<Content Include="Styles\Images\processing.gif" />
|
||||
<Content Include="Styles\orchard-clientstorage-admin.css" />
|
||||
<Content Include="Styles\Images\ajax-loader.gif" />
|
||||
<Content Include="Styles\orchard-websearch-admin.css" />
|
||||
<Content Include="Styles\orchard-mediaproviders-admin.css" />
|
||||
<Content Include="Styles\orchard-medialibrary-admin.css" />
|
||||
<Content Include="Web.config">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="Scripts\Web.config" />
|
||||
<Content Include="Styles\Web.config" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Content Include="Module.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\Orchard\Orchard.Framework.csproj">
|
||||
<Project>{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}</Project>
|
||||
<Name>Orchard.Framework</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Core\Orchard.Core.csproj">
|
||||
<Project>{9916839C-39FC-4CEB-A5AF-89CA7E87119F}</Project>
|
||||
<Name>Orchard.Core</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Orchard.Tokens\Orchard.Tokens.csproj">
|
||||
<Project>{6f759635-13d7-4e94-bcc9-80445d63f117}</Project>
|
||||
<Name>Orchard.Tokens</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Drivers\MediaLibraryExplorerPartDriver.cs" />
|
||||
<Compile Include="ModalAdminFilter.cs" />
|
||||
<Compile Include="AdminMenu.cs" />
|
||||
<Compile Include="Controllers\AdminController.cs" />
|
||||
<Compile Include="Controllers\ClientStorageController.cs" />
|
||||
<Compile Include="Controllers\OEmbedController.cs" />
|
||||
<Compile Include="Controllers\FolderController.cs" />
|
||||
<Compile Include="Controllers\WebSearchController.cs" />
|
||||
<Compile Include="Drivers\AudioPartDriver.cs" />
|
||||
<Compile Include="Drivers\OEmbedPartDriver.cs" />
|
||||
<Compile Include="Drivers\MediaLibraryPickerFieldDriver.cs" />
|
||||
<Compile Include="Drivers\DocumentPartDriver.cs" />
|
||||
<Compile Include="Drivers\VideoPartDriver.cs" />
|
||||
<Compile Include="Drivers\ImagePartDriver.cs" />
|
||||
<Compile Include="Factories\AudioFactory.cs" />
|
||||
<Compile Include="Factories\DocumentFactory.cs" />
|
||||
<Compile Include="Factories\VideoFactory.cs" />
|
||||
<Compile Include="Factories\ImageFactory.cs" />
|
||||
<Compile Include="Factories\IMediaFactory.cs" />
|
||||
<Compile Include="Factories\IMediaFactorySelector.cs" />
|
||||
<Compile Include="Factories\MediaFactorySelectorResult.cs" />
|
||||
<Compile Include="Fields\MediaLibraryPickerField.cs" />
|
||||
<Compile Include="Handlers\MediaLibraryPickerFieldHandler.cs" />
|
||||
<Compile Include="Handlers\MediaPartHandler.cs" />
|
||||
<Compile Include="Drivers\MediaPartDriver.cs" />
|
||||
<Compile Include="Handlers\WebSearchSettingsPartHandler.cs" />
|
||||
<Compile Include="Migrations.cs" />
|
||||
<Compile Include="Models\AudioPart.cs" />
|
||||
<Compile Include="Models\FolderHierarchy.cs" />
|
||||
<Compile Include="Models\MediaFile.cs" />
|
||||
<Compile Include="Models\MediaFolder.cs" />
|
||||
<Compile Include="Models\MediaLibraryExplorerPart.cs" />
|
||||
<Compile Include="Models\WebSearchSettingsPart.cs" />
|
||||
<Compile Include="Models\ImagePart.cs" />
|
||||
<Compile Include="Models\DocumentPart.cs" />
|
||||
<Compile Include="Models\VideoPart.cs" />
|
||||
<Compile Include="Models\OEmbedPart.cs" />
|
||||
<Compile Include="Models\MediaPart.cs" />
|
||||
<Compile Include="Models\MediaPartRecord.cs" />
|
||||
<Compile Include="Permissions.cs" />
|
||||
<Compile Include="Providers\ClientStorageMenu.cs" />
|
||||
<Compile Include="Providers\OEmbedMenu.cs" />
|
||||
<Compile Include="Providers\WebSearchMenu.cs" />
|
||||
<Compile Include="ResourceManifest.cs" />
|
||||
<Compile Include="Services\IMediaLibraryService.cs" />
|
||||
<Compile Include="Services\MediaLibraryService.cs" />
|
||||
<Compile Include="Services\Shapes.cs" />
|
||||
<Compile Include="Services\XmlRpcHandler.cs" />
|
||||
<Compile Include="Settings\MediaLibraryPickerFieldEditorEvents.cs" />
|
||||
<Compile Include="Settings\MediaLibraryPickerFieldSettings.cs" />
|
||||
<Compile Include="Tokens\FieldTokens.cs" />
|
||||
<Compile Include="ViewModels\MediaManagerChildFoldersViewModel.cs" />
|
||||
<Compile Include="ViewModels\ImportMediaViewModel.cs" />
|
||||
<Compile Include="ViewModels\MediaLibraryPickerFieldViewModel.cs" />
|
||||
<Compile Include="ViewModels\MediaManagerMediaItemsViewModel.cs" />
|
||||
<Compile Include="ViewModels\MediaManagerFolderCreateViewModel.cs" />
|
||||
<Compile Include="ViewModels\MediaManagerFolderEditViewModel.cs" />
|
||||
<Compile Include="ViewModels\MediaManagerImportViewModel.cs" />
|
||||
<Compile Include="ViewModels\MediaManagerIndexViewModel.cs" />
|
||||
<Compile Include="ViewModels\OEmbedViewModel.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Admin\Index.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media.Edit.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\ClientStorage\Index.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Admin\Import.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\WebSearch\Index.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Folder\Create.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Folder\Edit.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media-Image.Thumbnail.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media.Thumbnail.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Admin\MediaItems.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media-Video.Thumbnail.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Media.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Placement.info">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\EditorTemplates\Parts.Media.Edit.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Image.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Image.Metadata.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Media.Actions.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Video.Metadata.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Video.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media-Audio.Thumbnail.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media-Document.Thumbnail.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Audio.Metadata.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Audio.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Document.Metadata.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Document.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\DefinitionTemplates\MediaLibraryPickerFieldSettings.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\EditorTemplates\Fields\MediaLibraryPicker.Edit.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Fields\MediaLibraryPicker.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Fields\MediaLibraryPicker.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Audio.Summary.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Document.Summary.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Image.Summary.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Video.Summary.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Audio.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Document.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Image.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\Video.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\OEmbed\Index.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\OEmbed.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\OEmbed.Metadata.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\OEmbed.Summary.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\OEmbed.SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media-OEmbed.Thumbnail.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\EditorTemplates\Parts\WebSearch.WebSearchSettings.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media.Raw.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Styles\font-awesome\font\fontawesome-webfont.eot" />
|
||||
<Content Include="Styles\font-awesome\font\fontawesome-webfont.ttf" />
|
||||
<Content Include="Styles\font-awesome\font\fontawesome-webfont.woff" />
|
||||
<Content Include="Styles\font-awesome\font\FontAwesome.otf" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Media.Summary.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\MediaLibrary.Actions.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Parts\MediaLibrary.Navigation.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Fields\MediaLibraryPicker.Summary.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Admin\ChildFolders.cshtml" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationManifest>Styles\orchard-medialibrary-admin.css</ApplicationManifest>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target> -->
|
||||
<Target Name="AfterBuild" DependsOnTargets="AfterBuildCompiler">
|
||||
<PropertyGroup>
|
||||
<AreasManifestDir>$(ProjectDir)\..\Manifests</AreasManifestDir>
|
||||
</PropertyGroup>
|
||||
<!-- If this is an area child project, uncomment the following line:
|
||||
<CreateAreaManifest AreaName="$(AssemblyName)" AreaType="Child" AreaPath="$(ProjectDir)" ManifestPath="$(AreasManifestDir)" ContentFiles="@(Content)" />
|
||||
-->
|
||||
<!-- If this is an area parent project, uncomment the following lines:
|
||||
<CreateAreaManifest AreaName="$(AssemblyName)" AreaType="Parent" AreaPath="$(ProjectDir)" ManifestPath="$(AreasManifestDir)" ContentFiles="@(Content)" />
|
||||
<CopyAreaManifests ManifestPath="$(AreasManifestDir)" CrossCopy="false" RenameViews="true" />
|
||||
-->
|
||||
</Target>
|
||||
<Target Name="AfterBuildCompiler" Condition="'$(MvcBuildViews)'=='true'">
|
||||
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
|
||||
</Target>
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>False</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>45979</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>
|
||||
</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>True</UseCustomServer>
|
||||
<CustomServerUrl>http://orchard.codeplex.com</CustomServerUrl>
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
@@ -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) {
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
using System.Collections.Generic;
|
||||
using Orchard.MediaLibrary.Models;
|
||||
|
||||
namespace Orchard.MediaLibrary.ViewModels {
|
||||
public class MediaManagerChildFoldersViewModel {
|
||||
public IEnumerable<MediaFolder> Children { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@ using Orchard.MediaLibrary.Models;
|
||||
|
||||
namespace Orchard.MediaLibrary.ViewModels {
|
||||
public class MediaManagerIndexViewModel {
|
||||
public IEnumerable<FolderHierarchy> Folders { get; set; }
|
||||
public string FolderPath { get; set; }
|
||||
public bool DialogMode { get; set; }
|
||||
public IEnumerable<ContentTypeDefinition> MediaTypes { get; set; }
|
||||
|
||||
@@ -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()
|
||||
}))
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
<div id="media-library" data-draft-text="@T("Draft")">
|
||||
<div id="media-library-toolbar">
|
||||
<a href="#" data-bind="visible: displayed(), click: importMedia" class="button" id="button-import">@T("Import")</a>
|
||||
<a href="#" data-bind="visible: displayed(), attr: { href: '@HttpUtility.JavaScriptStringEncode(Url.Action("Edit", "Folder", new { area = "Orchard.MediaLibrary"}))?folderPath=' + encodeURIComponent(displayed()) }" class="button" id="button-edit-folder">@T("Edit Folder")</a>
|
||||
<a href="#" data-bind="attr: { href: '@HttpUtility.JavaScriptStringEncode(Url.Action("Create", "Folder", new { area = "Orchard.MediaLibrary"}))?folderPath=' + encodeURIComponent(displayed() ? displayed() : '') }" class="button" id="button-create-folder">@T("Create Folder")</a>
|
||||
|
||||
@Display(Model.CustomActionsShapes)
|
||||
</div>
|
||||
<div id="media-library-main">
|
||||
<div id="media-library-main-navigation">
|
||||
<ul>
|
||||
|
||||
@Display(Model.CustomNavigationShapes)
|
||||
|
||||
<li id="media-library-main-navigation-tree">
|
||||
<ul>
|
||||
@foreach (var folder in viewModel.Folders) {
|
||||
<li>
|
||||
@Display.Partial(TemplateName: "MediaManagerFolder", Model: folder)
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="media-library-main-list-wrapper">
|
||||
<div id="media-library-main-list" data-bind="event: { scroll: scrolled }, css: { pending: pendingRequest() }">
|
||||
<ul data-bind="foreach: results">
|
||||
<li data-bind="css: cssClass">
|
||||
<div class="thumbnail" data-bind="html: data.thumbnail">
|
||||
</div>
|
||||
<div class="media-library-main-list-overlay">
|
||||
<p class="title" data-bind="text: data.title"></p>
|
||||
<p class="publication-status" data-bind="text: publicationStatus"></p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="media-library-main-editor">
|
||||
<div id="media-library-main-editor-focus" data-bind="with: focus">
|
||||
<h1>@T("PROPERTIES")</h1>
|
||||
<div class="summary" data-bind="html: summary">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<article>
|
||||
<header>
|
||||
<div id="media-library-main-selection" data-bind="visible: selection().length > 0">
|
||||
<h1>@T("SELECTION")</h1>
|
||||
<ul data-bind="foreach: selection">
|
||||
<li data-bind="css: cssClass">
|
||||
<div class="thumbnail selection" data-bind="html: data.thumbnail, click: $parent.focus">
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div id="media-library-main-selection-actions">
|
||||
<button id="delete-selection-button">@T("Delete")</button>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<footer>
|
||||
<div id="media-library-main-selection-select">
|
||||
<button class="button-select" data-bind="visible: selection().length > 0">@T("Select")</button>
|
||||
<button class="button-cancel">@T("Cancel")</button>
|
||||
</div>
|
||||
</footer>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@using (Script.Foot()) {
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var mediaLibrarySettings = {
|
||||
mediaItemActionUrl: '@HttpUtility.JavaScriptStringEncode(Url.Action("MediaItem", "Admin"))',
|
||||
mediaItemsActionUrl: '@HttpUtility.JavaScriptStringEncode(Url.Action("MediaItems", "Admin"))',
|
||||
recentMediaItemsActionUrl: '@HttpUtility.JavaScriptStringEncode(Url.Action("RecentMediaItems", "Admin"))',
|
||||
importActionUrl: '@HttpUtility.JavaScriptStringEncode(Url.Action("Import", "Admin"))',
|
||||
moveActionUrl: '@Url.Action("Move", "Folder", new {area = "Orchard.MediaLibrary"})',
|
||||
deleteActionUrl: '@Url.Action("Delete", "Admin", new {area = "Orchard.MediaLibrary"})',
|
||||
hasFolderPath: @(viewModel.FolderPath != null ? "true" : "false"),
|
||||
folderPath: '@HttpUtility.JavaScriptStringEncode(viewModel.FolderPath)',
|
||||
deleteConfirmationMessage: '@HttpUtility.JavaScriptStringEncode(T("Are you sure you want to delete these media items ?").Text)',
|
||||
errorMessage: '@HttpUtility.JavaScriptStringEncode(T("An unexpected error occured, please refresh the page and try again.").Text)',
|
||||
antiForgeryToken: '@Html.AntiForgeryTokenValueOrchard()'
|
||||
};
|
||||
//]]>
|
||||
</script>
|
||||
@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");
|
||||
}
|
||||
|
||||
<div id="media-library" data-draft-text="@T("Draft")">
|
||||
<div id="media-library-toolbar">
|
||||
<a href="#" data-bind="visible: displayed(), click: importMedia" class="button" id="button-import">@T("Import")</a>
|
||||
<a href="#" data-bind="visible: displayed(), attr: { href: '@HttpUtility.JavaScriptStringEncode(Url.Action("Edit", "Folder", new { area = "Orchard.MediaLibrary"}))?folderPath=' + encodeURIComponent(displayed()) }" class="button" id="button-edit-folder">@T("Edit Folder")</a>
|
||||
<a href="#" data-bind="attr: { href: '@HttpUtility.JavaScriptStringEncode(Url.Action("Create", "Folder", new { area = "Orchard.MediaLibrary"}))?folderPath=' + encodeURIComponent(displayed() ? displayed() : '') }" class="button" id="button-create-folder">@T("Create Folder")</a>
|
||||
|
||||
@Display(Model.CustomActionsShapes)
|
||||
</div>
|
||||
<div id="media-library-main">
|
||||
<div id="media-library-main-navigation">
|
||||
<ul>
|
||||
|
||||
@Display(Model.CustomNavigationShapes)
|
||||
|
||||
<li id="media-library-main-navigation-tree">
|
||||
<ul data-bind="template: { name: 'media-folder-template', foreach: mediaFolders }">
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="media-library-main-list-wrapper">
|
||||
<div id="media-library-main-list" data-bind="event: { scroll: scrolled }, css: { pending: pendingRequest() }">
|
||||
<ul data-bind="foreach: results">
|
||||
<li data-bind="css: cssClass">
|
||||
<div class="thumbnail" data-bind="html: data.thumbnail">
|
||||
</div>
|
||||
<div class="media-library-main-list-overlay">
|
||||
<p class="title" data-bind="text: data.title"></p>
|
||||
<p class="publication-status" data-bind="text: publicationStatus"></p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="media-library-main-editor">
|
||||
<div id="media-library-main-editor-focus" data-bind="with: focus">
|
||||
<h1>@T("PROPERTIES")</h1>
|
||||
<div class="summary" data-bind="html: summary">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<article>
|
||||
<header>
|
||||
<div id="media-library-main-selection" data-bind="visible: selection().length > 0">
|
||||
<h1>@T("SELECTION")</h1>
|
||||
<ul data-bind="foreach: selection">
|
||||
<li data-bind="css: cssClass">
|
||||
<div class="thumbnail selection" data-bind="html: data.thumbnail, click: $parent.focus">
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div id="media-library-main-selection-actions">
|
||||
<button id="delete-selection-button">@T("Delete")</button>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<footer>
|
||||
<div id="media-library-main-selection-select">
|
||||
<button class="button-select" data-bind="visible: selection().length > 0">@T("Select")</button>
|
||||
<button class="button-cancel">@T("Cancel")</button>
|
||||
</div>
|
||||
</footer>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@using (Script.Foot()) {
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var mediaLibrarySettings = {
|
||||
mediaItemActionUrl: '@HttpUtility.JavaScriptStringEncode(Url.Action("MediaItem", "Admin"))',
|
||||
mediaItemsActionUrl: '@HttpUtility.JavaScriptStringEncode(Url.Action("MediaItems", "Admin"))',
|
||||
recentMediaItemsActionUrl: '@HttpUtility.JavaScriptStringEncode(Url.Action("RecentMediaItems", "Admin"))',
|
||||
childFolderListingActionUrl: '@HttpUtility.JavaScriptStringEncode(Url.Action("ChildFolders", "Admin"))',
|
||||
importActionUrl: '@HttpUtility.JavaScriptStringEncode(Url.Action("Import", "Admin"))',
|
||||
moveActionUrl: '@Url.Action("Move", "Folder", new {area = "Orchard.MediaLibrary"})',
|
||||
deleteActionUrl: '@Url.Action("Delete", "Admin", new {area = "Orchard.MediaLibrary"})',
|
||||
hasFolderPath: @(viewModel.FolderPath != null ? "true" : "false"),
|
||||
folderPath: '@HttpUtility.JavaScriptStringEncode(viewModel.FolderPath)',
|
||||
deleteConfirmationMessage: '@HttpUtility.JavaScriptStringEncode(T("Are you sure you want to delete these media items ?").Text)',
|
||||
errorMessage: '@HttpUtility.JavaScriptStringEncode(T("An unexpected error occured, please refresh the page and try again.").Text)',
|
||||
antiForgeryToken: '@Html.AntiForgeryTokenValueOrchard()'
|
||||
};
|
||||
//]]>
|
||||
</script>
|
||||
<script type="text/html" id="media-folder-template">
|
||||
<li data-bind="visible: isVisible()">
|
||||
<div class="media-library-folder">
|
||||
<div class="media-library-folder-title" data-bind="click: folderClicked, css: { selected: isSelected() }">
|
||||
<a data-bind="disable: $root.pendingRequest" href="#" class="media-library-navigation-folder-link"><i data-bind="css: {'icon-folder-open-alt': isExpanded(), 'icon-folder-close-alt': !isExpanded()}"></i><span data-bind="text: name"></span></a>
|
||||
</div>
|
||||
<ul data-bind="template: { name: 'media-folder-template', foreach: childFolders }, visible: childFolders().length > 0">
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</script>
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
@model Orchard.MediaLibrary.Models.FolderHierarchy
|
||||
|
||||
<div class="media-library-folder">
|
||||
<div class="media-library-folder-title" data-bind="click: function(data, event) { selectFolder('@HttpUtility.JavaScriptStringEncode(Model.Root.MediaPath)'); }, css: { selected: displayed() == $element.getAttribute('data-media-path') }" data-media-path="@Model.Root.MediaPath" >
|
||||
<a data-bind="disable: $root.pendingRequest" href="#" class="media-library-navigation-folder-link" data-mediapath="@Model.Root.MediaPath"><i class="icon-folder-close-alt"></i>@Model.Root.Name</a>
|
||||
</div>
|
||||
@if (Model.Children.Any()) {
|
||||
<ul>
|
||||
@foreach (var folder in Model.Children) {
|
||||
<li>
|
||||
@Display.Partial(TemplateName: "MediaManagerFolder", Model: folder)
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
</div>
|
||||
Reference in New Issue
Block a user