mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-26 20:16:15 +08:00
committed by
Sébastien Ros
parent
4b2e1ca19d
commit
a7f51c13d4
@@ -0,0 +1,20 @@
|
|||||||
|
using System;
|
||||||
|
using Orchard.ContentManagement;
|
||||||
|
using Orchard.MediaLibrary.Providers;
|
||||||
|
using Orchard.Security;
|
||||||
|
|
||||||
|
namespace Orchard.MediaLibrary.Implementation {
|
||||||
|
public class DefaultMediaUsername : IMediaFolderProvider {
|
||||||
|
public virtual string GetFolderName(IUser content) {
|
||||||
|
string folder = "";
|
||||||
|
foreach (char c in content.UserName) {
|
||||||
|
if (char.IsLetterOrDigit(c)) {
|
||||||
|
folder += c;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
folder += "_" + String.Format("{0:X}", Convert.ToInt32(c));
|
||||||
|
}
|
||||||
|
return folder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -128,6 +128,7 @@
|
|||||||
<Compile Include="Extensions\MediaMetaDataExtensions.cs" />
|
<Compile Include="Extensions\MediaMetaDataExtensions.cs" />
|
||||||
<Compile Include="Factories\VectorImageFactory.cs" />
|
<Compile Include="Factories\VectorImageFactory.cs" />
|
||||||
<Compile Include="Handlers\MediaLibrarySettingsPartHandler.cs" />
|
<Compile Include="Handlers\MediaLibrarySettingsPartHandler.cs" />
|
||||||
|
<Compile Include="Implementation\DefaultMediaUsername.cs" />
|
||||||
<Compile Include="Models\MediaLibrarySettingsPart.cs" />
|
<Compile Include="Models\MediaLibrarySettingsPart.cs" />
|
||||||
<Compile Include="Models\VectorImagePart.cs" />
|
<Compile Include="Models\VectorImagePart.cs" />
|
||||||
<Compile Include="Models\IMediaFolder.cs" />
|
<Compile Include="Models\IMediaFolder.cs" />
|
||||||
@@ -200,6 +201,7 @@
|
|||||||
<Compile Include="ResourceManifest.cs" />
|
<Compile Include="ResourceManifest.cs" />
|
||||||
<Compile Include="Security\MediaAuthorizationEventHandler.cs" />
|
<Compile Include="Security\MediaAuthorizationEventHandler.cs" />
|
||||||
<Compile Include="Services\IMediaLibraryService.cs" />
|
<Compile Include="Services\IMediaLibraryService.cs" />
|
||||||
|
<Compile Include="Providers\IMediaFolderProvider.cs" />
|
||||||
<Compile Include="Services\MediaLibraryService.cs" />
|
<Compile Include="Services\MediaLibraryService.cs" />
|
||||||
<Compile Include="Services\Shapes.cs" />
|
<Compile Include="Services\Shapes.cs" />
|
||||||
<Compile Include="Services\XmlRpcHandler.cs" />
|
<Compile Include="Services\XmlRpcHandler.cs" />
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
using Orchard.Security;
|
||||||
|
|
||||||
|
namespace Orchard.MediaLibrary.Providers {
|
||||||
|
public interface IMediaFolderProvider : IDependency {
|
||||||
|
string GetFolderName(IUser content);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,6 +12,7 @@ using Orchard.MediaLibrary.Factories;
|
|||||||
using Orchard.MediaLibrary.Models;
|
using Orchard.MediaLibrary.Models;
|
||||||
using Orchard.Core.Title.Models;
|
using Orchard.Core.Title.Models;
|
||||||
using Orchard.Validation;
|
using Orchard.Validation;
|
||||||
|
using Orchard.MediaLibrary.Providers;
|
||||||
|
|
||||||
namespace Orchard.MediaLibrary.Services {
|
namespace Orchard.MediaLibrary.Services {
|
||||||
public class MediaLibraryService : IMediaLibraryService {
|
public class MediaLibraryService : IMediaLibraryService {
|
||||||
@@ -19,18 +20,20 @@ namespace Orchard.MediaLibrary.Services {
|
|||||||
private readonly IMimeTypeProvider _mimeTypeProvider;
|
private readonly IMimeTypeProvider _mimeTypeProvider;
|
||||||
private readonly IStorageProvider _storageProvider;
|
private readonly IStorageProvider _storageProvider;
|
||||||
private readonly IEnumerable<IMediaFactorySelector> _mediaFactorySelectors;
|
private readonly IEnumerable<IMediaFactorySelector> _mediaFactorySelectors;
|
||||||
|
private readonly IMediaFolderProvider _mediaFolderProvider;
|
||||||
private static char[] HttpUnallowed = new char[] { '<', '>', '*', '%', '&', ':', '\\', '?', '#' };
|
private static char[] HttpUnallowed = new char[] { '<', '>', '*', '%', '&', ':', '\\', '?', '#' };
|
||||||
|
|
||||||
public MediaLibraryService(
|
public MediaLibraryService(
|
||||||
IOrchardServices orchardServices,
|
IOrchardServices orchardServices,
|
||||||
IMimeTypeProvider mimeTypeProvider,
|
IMimeTypeProvider mimeTypeProvider,
|
||||||
IStorageProvider storageProvider,
|
IStorageProvider storageProvider,
|
||||||
IEnumerable<IMediaFactorySelector> mediaFactorySelectors) {
|
IEnumerable<IMediaFactorySelector> mediaFactorySelectors,
|
||||||
|
IMediaFolderProvider mediaFolderProvider) {
|
||||||
_orchardServices = orchardServices;
|
_orchardServices = orchardServices;
|
||||||
_mimeTypeProvider = mimeTypeProvider;
|
_mimeTypeProvider = mimeTypeProvider;
|
||||||
_storageProvider = storageProvider;
|
_storageProvider = storageProvider;
|
||||||
_mediaFactorySelectors = mediaFactorySelectors;
|
_mediaFactorySelectors = mediaFactorySelectors;
|
||||||
|
_mediaFolderProvider = mediaFolderProvider;
|
||||||
|
|
||||||
T = NullLocalizer.Instance;
|
T = NullLocalizer.Instance;
|
||||||
}
|
}
|
||||||
@@ -229,8 +232,7 @@ namespace Orchard.MediaLibrary.Services {
|
|||||||
|
|
||||||
if (_orchardServices.Authorizer.Authorize(Permissions.ManageOwnMedia)) {
|
if (_orchardServices.Authorizer.Authorize(Permissions.ManageOwnMedia)) {
|
||||||
var currentUser = _orchardServices.WorkContext.CurrentUser;
|
var currentUser = _orchardServices.WorkContext.CurrentUser;
|
||||||
var userPath = _storageProvider.Combine("Users", currentUser.UserName);
|
var userPath = _storageProvider.Combine("Users", _mediaFolderProvider.GetFolderName(currentUser));
|
||||||
|
|
||||||
return new MediaFolder() {
|
return new MediaFolder() {
|
||||||
Name = currentUser.UserName,
|
Name = currentUser.UserName,
|
||||||
MediaPath = userPath
|
MediaPath = userPath
|
||||||
|
|||||||
Reference in New Issue
Block a user