Browse Source

Added mediadescriptor and related domain settings

pull/7685/head
Ahmet 6 years ago
parent
commit
cf627f80aa
  1. 5
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/CmsKitErrorCodes.cs
  2. 3
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/GlobalCmsKitFeatures.cs
  3. 18
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/MediasFeature.cs
  4. 3
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json
  5. 19
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Medias/Extensions/MediaDescriptorExtensions.cs
  6. 10
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Medias/IMediaDescriptorRepository.cs
  7. 23
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Medias/InvalidMediaDescriptorNameException.cs
  8. 10
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Medias/MediaContainer.cs
  9. 42
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Medias/MediaDescriptor.cs

5
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/CmsKitErrorCodes.cs

@ -19,5 +19,10 @@
{ {
public const string UrlSlugAlreadyExist = "CmsKit:BlogPost:0001"; public const string UrlSlugAlreadyExist = "CmsKit:BlogPost:0001";
} }
public static class MediaDescriptors
{
public const string InvalidName = "CmsKit:Medias:0001";
}
} }
} }

3
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/GlobalCmsKitFeatures.cs

@ -10,6 +10,8 @@ namespace Volo.CmsKit.GlobalFeatures
public ReactionsFeature Reactions => GetFeature<ReactionsFeature>(); public ReactionsFeature Reactions => GetFeature<ReactionsFeature>();
public CommentsFeature Comments => GetFeature<CommentsFeature>(); public CommentsFeature Comments => GetFeature<CommentsFeature>();
public MediasFeature Medias => GetFeature<MediasFeature>();
public RatingsFeature Ratings => GetFeature<RatingsFeature>(); public RatingsFeature Ratings => GetFeature<RatingsFeature>();
@ -23,6 +25,7 @@ namespace Volo.CmsKit.GlobalFeatures
: base(featureManager) : base(featureManager)
{ {
AddFeature(new ReactionsFeature(this)); AddFeature(new ReactionsFeature(this));
AddFeature(new MediasFeature(this));
AddFeature(new CommentsFeature(this)); AddFeature(new CommentsFeature(this));
AddFeature(new RatingsFeature(this)); AddFeature(new RatingsFeature(this));
AddFeature(new TagsFeature(this)); AddFeature(new TagsFeature(this));

18
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/MediasFeature.cs

@ -0,0 +1,18 @@
using JetBrains.Annotations;
using Volo.Abp.GlobalFeatures;
namespace Volo.CmsKit.GlobalFeatures
{
[GlobalFeatureName(Name)]
public class MediasFeature : GlobalFeature
{
public const string Name = "CmsKit.Medias";
internal MediasFeature(
[NotNull] GlobalCmsKitFeatures cmsKit
) : base(cmsKit)
{
}
}
}

3
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json

@ -40,6 +40,7 @@
"Undo": "Undo", "Undo": "Undo",
"Update": "Update", "Update": "Update",
"YourComment": "Your comment", "YourComment": "Your comment",
"YourReply": "Your reply" "YourReply": "Your reply",
"CmsKit:Medias:0001": "'{Name}' is not a valid media name."
} }
} }

19
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Medias/Extensions/MediaDescriptorExtensions.cs

@ -0,0 +1,19 @@
using System.IO;
using System.Linq;
namespace Volo.CmsKit.Medias.Extensions
{
public static class MediaDescriptorExtensions
{
public static bool IsValidMediaFileName(this string name)
{
if (string.IsNullOrWhiteSpace(name))
{
return false;
}
// "con" is not valid folder/file name for Windows OS
return !(Path.GetInvalidFileNameChars().Any(name.Contains) || name == "con");
}
}
}

10
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Medias/IMediaDescriptorRepository.cs

@ -0,0 +1,10 @@
using System;
using Volo.Abp.Domain.Repositories;
namespace Volo.CmsKit.Medias
{
public interface IMediaDescriptorRepository : IBasicRepository<MediaDescriptor, Guid>
{
}
}

23
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Medias/InvalidMediaDescriptorNameException.cs

@ -0,0 +1,23 @@
using System;
using System.Runtime.Serialization;
using JetBrains.Annotations;
using Volo.Abp;
namespace Volo.CmsKit.Medias
{
[Serializable]
public class InvalidMediaDescriptorNameException : BusinessException
{
public InvalidMediaDescriptorNameException([NotNull] string name)
{
Code = CmsKitErrorCodes.MediaDescriptors.InvalidName;
WithData(nameof(MediaDescriptor.Name), name);
}
public InvalidMediaDescriptorNameException(SerializationInfo serializationInfo, StreamingContext context)
: base(serializationInfo, context)
{
}
}
}

10
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Medias/MediaContainer.cs

@ -0,0 +1,10 @@
using Volo.Abp.BlobStoring;
namespace Volo.CmsKit.Medias
{
[BlobContainerName("cms-kit-medias")]
public class MediaContainer
{
}
}

42
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Medias/MediaDescriptor.cs

@ -0,0 +1,42 @@
using System;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.MultiTenancy;
using Volo.CmsKit.Medias.Extensions;
namespace Volo.CmsKit.Medias
{
public class MediaDescriptor : FullAuditedAggregateRoot<Guid>, IMultiTenant
{
public Guid? TenantId { get; protected set; }
public string Name { get; protected set; }
public string MimeType { get; set; }
public int Size { get; protected set; }
protected MediaDescriptor()
{
}
public MediaDescriptor(Guid id, Guid? tenantId, string name, string mimeType, int size) : base(id)
{
TenantId = tenantId;
MimeType = mimeType;
Size = size;
SetName(name);
}
public void SetName(string name)
{
if (!name.IsValidMediaFileName())
{
throw new InvalidMediaDescriptorNameException(name);
}
Name = name;
}
}
}
Loading…
Cancel
Save