diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Implementation/DefaultMediaUsername.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Implementation/DefaultMediaUsername.cs
new file mode 100644
index 000000000..a068dc318
--- /dev/null
+++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Implementation/DefaultMediaUsername.cs
@@ -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;
+ }
+ }
+}
\ 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 0a42a0917..d07548bfa 100644
--- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj
+++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj
@@ -128,6 +128,7 @@
+
@@ -200,6 +201,7 @@
+
diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/IMediaFolderProvider.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/IMediaFolderProvider.cs
new file mode 100644
index 000000000..07a69b4e8
--- /dev/null
+++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Providers/IMediaFolderProvider.cs
@@ -0,0 +1,7 @@
+using Orchard.Security;
+
+namespace Orchard.MediaLibrary.Providers {
+ public interface IMediaFolderProvider : IDependency {
+ string GetFolderName(IUser content);
+ }
+}
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Services/MediaLibraryService.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Services/MediaLibraryService.cs
index 01aec9503..af39b97fd 100644
--- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Services/MediaLibraryService.cs
+++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Services/MediaLibraryService.cs
@@ -12,6 +12,7 @@ using Orchard.MediaLibrary.Factories;
using Orchard.MediaLibrary.Models;
using Orchard.Core.Title.Models;
using Orchard.Validation;
+using Orchard.MediaLibrary.Providers;
namespace Orchard.MediaLibrary.Services {
public class MediaLibraryService : IMediaLibraryService {
@@ -19,18 +20,20 @@ namespace Orchard.MediaLibrary.Services {
private readonly IMimeTypeProvider _mimeTypeProvider;
private readonly IStorageProvider _storageProvider;
private readonly IEnumerable _mediaFactorySelectors;
-
+ private readonly IMediaFolderProvider _mediaFolderProvider;
private static char[] HttpUnallowed = new char[] { '<', '>', '*', '%', '&', ':', '\\', '?', '#' };
public MediaLibraryService(
IOrchardServices orchardServices,
IMimeTypeProvider mimeTypeProvider,
IStorageProvider storageProvider,
- IEnumerable mediaFactorySelectors) {
+ IEnumerable mediaFactorySelectors,
+ IMediaFolderProvider mediaFolderProvider) {
_orchardServices = orchardServices;
_mimeTypeProvider = mimeTypeProvider;
_storageProvider = storageProvider;
_mediaFactorySelectors = mediaFactorySelectors;
+ _mediaFolderProvider = mediaFolderProvider;
T = NullLocalizer.Instance;
}
@@ -229,8 +232,7 @@ namespace Orchard.MediaLibrary.Services {
if (_orchardServices.Authorizer.Authorize(Permissions.ManageOwnMedia)) {
var currentUser = _orchardServices.WorkContext.CurrentUser;
- var userPath = _storageProvider.Combine("Users", currentUser.UserName);
-
+ var userPath = _storageProvider.Combine("Users", _mediaFolderProvider.GetFolderName(currentUser));
return new MediaFolder() {
Name = currentUser.UserName,
MediaPath = userPath