Rename and refactor module extensions.

pull/3831/head
Halil İbrahim Kalkan 6 years ago
parent e26d693ca3
commit c4955719b1

@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.Linq;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Localization;
using Volo.Abp.ObjectExtending;
@ -30,8 +31,6 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
protected virtual ObjectExtensionsDto GenerateCacheValue()
{
//TODO: Obviously needs refactoring!
var objectExtensionsDto = new ObjectExtensionsDto
{
Modules = new Dictionary<string, ModuleExtensionDto>()
@ -39,80 +38,118 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
foreach (var moduleConfig in ObjectExtensionManager.Instance.Modules())
{
var moduleExtensionDto = objectExtensionsDto.Modules[moduleConfig.Key] = new ModuleExtensionDto
{
Objects = new Dictionary<string, ModuleObjectExtensionDto>()
};
objectExtensionsDto.Modules[moduleConfig.Key] = CreateModuleExtensionDto(moduleConfig.Value);
}
return objectExtensionsDto;
}
protected virtual ModuleExtensionDto CreateModuleExtensionDto(
ModuleExtensionConfiguration moduleConfig)
{
var moduleExtensionDto = new ModuleExtensionDto
{
Entities = new Dictionary<string, EntityExtensionDto>()
};
foreach (var objectConfig in moduleConfig.Entities)
{
moduleExtensionDto.Entities[objectConfig.Key] = GetEntityExtensionDto(objectConfig.Value);
}
foreach (var objectConfig in moduleConfig.Value.Entities)
foreach (var customConfig in moduleConfig.Configuration.Where(c => !c.Key.StartsWith("_")))
{
moduleExtensionDto.Configuration[customConfig.Key] = customConfig.Value;
}
return moduleExtensionDto;
}
protected virtual EntityExtensionDto GetEntityExtensionDto(
EntityExtensionConfiguration entityConfig)
{
var entityExtensionDto = new EntityExtensionDto
{
Properties = new Dictionary<string, ExtensionPropertyDto>(),
Configuration = new Dictionary<string, object>()
};
foreach (var propertyConfig in entityConfig.GetProperties())
{
if (!propertyConfig.IsAvailableToClients)
{
var moduleObjectExtensionDto = moduleExtensionDto.Objects[objectConfig.Key] =
new ModuleObjectExtensionDto
{
ExtraProperties = new Dictionary<string, ModuleObjectExtraPropertyExtensionDto>()
};
continue;
}
entityExtensionDto.Properties[propertyConfig.Name] = CreateExtensionPropertyDto(propertyConfig);
}
foreach (var customConfig in entityConfig.Configuration.Where(c => !c.Key.StartsWith("_")))
{
entityExtensionDto.Configuration[customConfig.Key] = customConfig.Value;
}
foreach (var propertyConfig in objectConfig.Value.GetProperties())
return entityExtensionDto;
}
protected virtual ExtensionPropertyDto CreateExtensionPropertyDto(
ExtensionPropertyConfiguration propertyConfig)
{
var extensionPropertyDto = new ExtensionPropertyDto
{
Type = TypeHelper.GetFullNameHandlingNullableAndGenerics(propertyConfig.Type),
TypeSimple = TypeHelper.GetSimplifiedName(propertyConfig.Type),
Attributes = new List<ExtensionPropertyAttributeDto>(),
DisplayName = CreateDisplayNameDto(propertyConfig),
Configuration = new Dictionary<string, object>(),
Api = new ExtensionPropertyApiDto
{
OnGet = new ExtensionPropertyApiGetDto
{
IsAvailable = propertyConfig.Api.OnGet.IsAvailable
},
OnCreate = new ExtensionPropertyApiCreateDto
{
if (!propertyConfig.IsAvailableToClients)
{
continue;
}
var propertyExtensionDto = moduleObjectExtensionDto.ExtraProperties[propertyConfig.Name] =
new ModuleObjectExtraPropertyExtensionDto
{
Type = TypeHelper.GetFullNameHandlingNullableAndGenerics(propertyConfig.Type),
TypeSimple = TypeHelper.GetSimplifiedName(propertyConfig.Type),
Attributes = new List<ModuleObjectExtraPropertyAttributeDto>(),
DisplayName = CreateDisplayNameDto(propertyConfig),
Api = new ModuleEntityObjectPropertyExtensionApiConfigurationDto
{
OnGet = new ModuleEntityObjectPropertyExtensionApiGetConfigurationDto
{
IsAvailable = propertyConfig.Api.OnGet.IsAvailable
},
OnCreate = new ModuleEntityObjectPropertyExtensionApiCreateConfigurationDto
{
IsAvailable = propertyConfig.Api.OnCreate.IsAvailable
},
OnUpdate = new ModuleEntityObjectPropertyExtensionApiUpdateConfigurationDto
{
IsAvailable = propertyConfig.Api.OnUpdate.IsAvailable
}
},
Ui = new ModuleObjectExtraPropertyUiExtensionDto
{
OnCreateForm = new ModuleObjectExtraPropertyUiFormExtensionDto
{
IsVisible = propertyConfig.UI.OnCreateForm.IsVisible
},
OnEditForm = new ModuleObjectExtraPropertyUiFormExtensionDto
{
IsVisible = propertyConfig.UI.OnEditForm.IsVisible
},
OnTable = new ModuleObjectExtraPropertyUiTableExtensionDto
{
IsVisible = propertyConfig.UI.OnTable.IsVisible
}
}
};
foreach (var attribute in propertyConfig.Attributes)
{
propertyExtensionDto.Attributes.Add(
ModuleObjectExtraPropertyAttributeDto.Create(attribute)
);
}
IsAvailable = propertyConfig.Api.OnCreate.IsAvailable
},
OnUpdate = new ExtensionPropertyApiUpdateDto
{
IsAvailable = propertyConfig.Api.OnUpdate.IsAvailable
}
},
Ui = new ExtensionPropertyUiDto
{
OnCreateForm = new ExtensionPropertyUiFormDto
{
IsVisible = propertyConfig.UI.OnCreateForm.IsVisible
},
OnEditForm = new ExtensionPropertyUiFormDto
{
IsVisible = propertyConfig.UI.OnEditForm.IsVisible
},
OnTable = new ExtensionPropertyUiTableDto
{
IsVisible = propertyConfig.UI.OnTable.IsVisible
}
}
};
foreach (var attribute in propertyConfig.Attributes)
{
extensionPropertyDto.Attributes.Add(
ExtensionPropertyAttributeDto.Create(attribute)
);
}
return objectExtensionsDto;
foreach (var customConfig in propertyConfig.Configuration.Where(c => !c.Key.StartsWith("_")))
{
extensionPropertyDto.Configuration[customConfig.Key] = customConfig.Value;
}
return extensionPropertyDto;
}
private static LocalizableStringDto CreateDisplayNameDto(
ModuleEntityObjectPropertyExtensionConfiguration propertyConfig)
protected virtual LocalizableStringDto CreateDisplayNameDto(ExtensionPropertyConfiguration propertyConfig)
{
if (propertyConfig.DisplayName == null)
{
@ -121,20 +158,18 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
if (propertyConfig.DisplayName is LocalizableString localizableStringInstance)
{
return new LocalizableStringDto
{
Name = localizableStringInstance.Name,
Resource = LocalizationResourceNameAttribute.GetName(localizableStringInstance.ResourceType)
};
return new LocalizableStringDto(
localizableStringInstance.Name,
localizableStringInstance.ResourceType != null
? LocalizationResourceNameAttribute.GetName(localizableStringInstance.ResourceType)
: null
);
}
if (propertyConfig.DisplayName is FixedLocalizableString fixedLocalizableString)
{
return new LocalizableStringDto
{
Name = fixedLocalizableString.Value,
Resource = "_"
};
// "_" means don't use the default resource, but directly use the name.
return new LocalizableStringDto(fixedLocalizableString.Value, "_");
}
return null;

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
{
[Serializable]
public class EntityExtensionDto
{
public Dictionary<string, ExtensionPropertyDto> Properties { get; set; }
public Dictionary<string, object> Configuration { get; set; }
}
}

@ -3,7 +3,7 @@
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
{
[Serializable]
public class ModuleEntityObjectPropertyExtensionApiGetConfigurationDto
public class ExtensionPropertyApiCreateDto
{
/// <summary>
/// Default: true.

@ -0,0 +1,23 @@
using JetBrains.Annotations;
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
{
public class ExtensionPropertyApiDto
{
[NotNull]
public ExtensionPropertyApiGetDto OnGet { get; set; }
[NotNull]
public ExtensionPropertyApiCreateDto OnCreate { get; set; }
[NotNull]
public ExtensionPropertyApiUpdateDto OnUpdate { get; set; }
public ExtensionPropertyApiDto()
{
OnGet = new ExtensionPropertyApiGetDto();
OnCreate = new ExtensionPropertyApiCreateDto();
OnUpdate = new ExtensionPropertyApiUpdateDto();
}
}
}

@ -3,7 +3,7 @@
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
{
[Serializable]
public class ModuleEntityObjectPropertyExtensionApiCreateConfigurationDto
public class ExtensionPropertyApiGetDto
{
/// <summary>
/// Default: true.

@ -3,7 +3,7 @@
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
{
[Serializable]
public class ModuleEntityObjectPropertyExtensionApiUpdateConfigurationDto
public class ExtensionPropertyApiUpdateDto
{
/// <summary>
/// Default: true.

@ -6,16 +6,16 @@ using Volo.Abp.Reflection;
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
{
[Serializable]
public class ModuleObjectExtraPropertyAttributeDto
public class ExtensionPropertyAttributeDto
{
public string Type { get; set; }
public string TypeSimple { get; set; }
public Dictionary<string, object> Configuration { get; set; }
public static ModuleObjectExtraPropertyAttributeDto Create(Attribute attribute)
public static ExtensionPropertyAttributeDto Create(Attribute attribute)
{
var attributeType = attribute.GetType();
var dto = new ModuleObjectExtraPropertyAttributeDto
var dto = new ExtensionPropertyAttributeDto
{
Type = TypeHelper.GetFullNameHandlingNullableAndGenerics(attributeType),
TypeSimple = TypeHelper.GetSimplifiedName(attributeType),

@ -5,7 +5,7 @@ using JetBrains.Annotations;
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
{
[Serializable]
public class ModuleObjectExtraPropertyExtensionDto
public class ExtensionPropertyDto
{
public string Type { get; set; }
@ -14,10 +14,12 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
[CanBeNull]
public LocalizableStringDto DisplayName { get; set; }
public ModuleEntityObjectPropertyExtensionApiConfigurationDto Api { get; set; }
public ExtensionPropertyApiDto Api { get; set; }
public ModuleObjectExtraPropertyUiExtensionDto Ui { get; set; }
public ExtensionPropertyUiDto Ui { get; set; }
public List<ModuleObjectExtraPropertyAttributeDto> Attributes { get; set; }
public List<ExtensionPropertyAttributeDto> Attributes { get; set; }
public Dictionary<string, object> Configuration { get; set; }
}
}

@ -0,0 +1,12 @@
using System;
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
{
[Serializable]
public class ExtensionPropertyUiDto
{
public ExtensionPropertyUiTableDto OnTable { get; set; }
public ExtensionPropertyUiFormDto OnCreateForm { get; set; }
public ExtensionPropertyUiFormDto OnEditForm { get; set; }
}
}

@ -3,7 +3,7 @@
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
{
[Serializable]
public class ModuleObjectExtraPropertyUiFormExtensionDto
public class ExtensionPropertyUiFormDto
{
public bool IsVisible { get; set; }
}

@ -3,7 +3,7 @@
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
{
[Serializable]
public class ModuleObjectExtraPropertyUiTableExtensionDto
public class ExtensionPropertyUiTableDto
{
public bool IsVisible { get; set; }
}

@ -6,9 +6,16 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
[Serializable]
public class LocalizableStringDto
{
public string Name { get; set; }
[NotNull]
public string Name { get; private set; }
[CanBeNull]
public string Resource { get; set; }
public LocalizableStringDto([NotNull] string name, string resource = null)
{
Name = Check.NotNullOrEmpty(name, nameof(name));
Resource = resource;
}
}
}

@ -1,23 +0,0 @@
using JetBrains.Annotations;
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
{
public class ModuleEntityObjectPropertyExtensionApiConfigurationDto
{
[NotNull]
public ModuleEntityObjectPropertyExtensionApiGetConfigurationDto OnGet { get; set; }
[NotNull]
public ModuleEntityObjectPropertyExtensionApiCreateConfigurationDto OnCreate { get; set; }
[NotNull]
public ModuleEntityObjectPropertyExtensionApiUpdateConfigurationDto OnUpdate { get; set; }
public ModuleEntityObjectPropertyExtensionApiConfigurationDto()
{
OnGet = new ModuleEntityObjectPropertyExtensionApiGetConfigurationDto();
OnCreate = new ModuleEntityObjectPropertyExtensionApiCreateConfigurationDto();
OnUpdate = new ModuleEntityObjectPropertyExtensionApiUpdateConfigurationDto();
}
}
}

@ -1,11 +0,0 @@
using System;
using System.Collections.Generic;
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
{
[Serializable]
public class ModuleObjectExtensionDto
{
public Dictionary<string, ModuleObjectExtraPropertyExtensionDto> ExtraProperties { get; set; }
}
}

@ -1,12 +0,0 @@
using System;
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
{
[Serializable]
public class ModuleObjectExtraPropertyUiExtensionDto
{
public ModuleObjectExtraPropertyUiTableExtensionDto OnTable { get; set; }
public ModuleObjectExtraPropertyUiFormExtensionDto OnCreateForm { get; set; }
public ModuleObjectExtraPropertyUiFormExtensionDto OnEditForm { get; set; }
}
}

@ -6,7 +6,8 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending
[Serializable]
public class ModuleExtensionDto
{
public Dictionary<string, ModuleObjectExtensionDto> Objects { get; set; }
}
}
public Dictionary<string, EntityExtensionDto> Entities { get; set; }
public Dictionary<string, object> Configuration { get; set; }
}
}

@ -1,18 +1,21 @@
using System;
using JetBrains.Annotations;
using Microsoft.Extensions.Localization;
namespace Volo.Abp.Localization
{
public class LocalizableString : ILocalizableString
{
[CanBeNull]
public Type ResourceType { get; }
[NotNull]
public string Name { get; }
public LocalizableString(Type resourceType, string name)
public LocalizableString(Type resourceType, [NotNull] string name)
{
Name = Check.NotNullOrEmpty(name, nameof(name));
ResourceType = resourceType;
Name = name;
}
public LocalizedString Localize(IStringLocalizerFactory stringLocalizerFactory)
@ -20,7 +23,7 @@ namespace Volo.Abp.Localization
return stringLocalizerFactory.Create(ResourceType)[Name];
}
public static LocalizableString Create<TResource>(string name)
public static LocalizableString Create<TResource>([NotNull] string name)
{
return new LocalizableString(typeof(TResource), name);
}

@ -5,24 +5,27 @@ using JetBrains.Annotations;
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleEntityObjectExtensionConfiguration
public class EntityExtensionConfiguration
{
[NotNull]
protected ModuleEntityObjectPropertyExtensionConfigurationDictionary Properties { get; }
protected ExtensionPropertyConfigurationDictionary Properties { get; }
[NotNull]
public List<Action<ObjectExtensionValidationContext>> Validators { get; }
public ModuleEntityObjectExtensionConfiguration()
public Dictionary<string, object> Configuration { get; }
public EntityExtensionConfiguration()
{
Properties = new ModuleEntityObjectPropertyExtensionConfigurationDictionary();
Properties = new ExtensionPropertyConfigurationDictionary();
Validators = new List<Action<ObjectExtensionValidationContext>>();
Configuration = new Dictionary<string, object>();
}
[NotNull]
public virtual ModuleEntityObjectExtensionConfiguration AddOrUpdateProperty<TProperty>(
public virtual EntityExtensionConfiguration AddOrUpdateProperty<TProperty>(
[NotNull] string propertyName,
[CanBeNull] Action<ModuleEntityObjectPropertyExtensionConfiguration> configureAction = null)
[CanBeNull] Action<ExtensionPropertyConfiguration> configureAction = null)
{
return AddOrUpdateProperty(
typeof(TProperty),
@ -32,17 +35,17 @@ namespace Volo.Abp.ObjectExtending.Modularity
}
[NotNull]
public virtual ModuleEntityObjectExtensionConfiguration AddOrUpdateProperty(
public virtual EntityExtensionConfiguration AddOrUpdateProperty(
[NotNull] Type propertyType,
[NotNull] string propertyName,
[CanBeNull] Action<ModuleEntityObjectPropertyExtensionConfiguration> configureAction = null)
[CanBeNull] Action<ExtensionPropertyConfiguration> configureAction = null)
{
Check.NotNull(propertyType, nameof(propertyType));
Check.NotNull(propertyName, nameof(propertyName));
var propertyInfo = Properties.GetOrAdd(
propertyName,
() => new ModuleEntityObjectPropertyExtensionConfiguration(this, propertyType, propertyName)
() => new ExtensionPropertyConfiguration(this, propertyType, propertyName)
);
configureAction?.Invoke(propertyInfo);
@ -51,7 +54,7 @@ namespace Volo.Abp.ObjectExtending.Modularity
}
[NotNull]
public virtual ImmutableList<ModuleEntityObjectPropertyExtensionConfiguration> GetProperties()
public virtual ImmutableList<ExtensionPropertyConfiguration> GetProperties()
{
return Properties.Values.ToImmutableList();
}

@ -0,0 +1,9 @@
using System.Collections.Generic;
namespace Volo.Abp.ObjectExtending.Modularity
{
public class EntityExtensionConfigurationDictionary : Dictionary<string, EntityExtensionConfiguration>
{
}
}

@ -0,0 +1,23 @@
using JetBrains.Annotations;
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ExtensionPropertyApiConfiguration
{
[NotNull]
public ExtensionPropertyApiGetConfiguration OnGet { get; }
[NotNull]
public ExtensionPropertyApiCreateConfiguration OnCreate { get; }
[NotNull]
public ExtensionPropertyApiUpdateConfiguration OnUpdate { get; }
public ExtensionPropertyApiConfiguration()
{
OnGet = new ExtensionPropertyApiGetConfiguration();
OnCreate = new ExtensionPropertyApiCreateConfiguration();
OnUpdate = new ExtensionPropertyApiUpdateConfiguration();
}
}
}

@ -1,6 +1,6 @@
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleEntityObjectPropertyExtensionApiGetConfiguration
public class ExtensionPropertyApiCreateConfiguration
{
/// <summary>
/// Default: true.

@ -1,6 +1,6 @@
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleEntityObjectPropertyExtensionEntityConfiguration
public class ExtensionPropertyApiGetConfiguration
{
/// <summary>
/// Default: true.

@ -1,6 +1,6 @@
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleEntityObjectPropertyExtensionApiCreateConfiguration
public class ExtensionPropertyApiUpdateConfiguration
{
/// <summary>
/// Default: true.

@ -5,10 +5,10 @@ using Volo.Abp.Localization;
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleEntityObjectPropertyExtensionConfiguration : IHasNameWithLocalizableDisplayName
public class ExtensionPropertyConfiguration : IHasNameWithLocalizableDisplayName
{
[NotNull]
public ModuleEntityObjectExtensionConfiguration EntityObjectExtensionConfiguration { get; }
public EntityExtensionConfiguration EntityExtensionConfiguration { get; }
[NotNull]
public string Name { get; }
@ -26,11 +26,8 @@ namespace Volo.Abp.ObjectExtending.Modularity
public ILocalizableString DisplayName { get; set; }
[NotNull]
public Dictionary<object, object> Configuration { get; }
public Dictionary<string, object> Configuration { get; }
[NotNull]
public ModuleEntityObjectPropertyExtensionEntityConfiguration Entity { get; }
/// <summary>
/// Single point to enable/disable this property for the clients (UI and API).
/// If this is false, the configuration made in the <see cref="UI"/> and the <see cref="Api"/>
@ -40,27 +37,30 @@ namespace Volo.Abp.ObjectExtending.Modularity
public bool IsAvailableToClients { get; set; } = true;
[NotNull]
public ModuleEntityObjectPropertyExtensionUIConfiguration UI { get; }
public ExtensionPropertyEntityConfiguration Entity { get; }
[NotNull]
public ExtensionPropertyUiConfiguration UI { get; }
[NotNull]
public ModuleEntityObjectPropertyExtensionApiConfiguration Api { get; }
public ExtensionPropertyApiConfiguration Api { get; }
public ModuleEntityObjectPropertyExtensionConfiguration(
[NotNull] ModuleEntityObjectExtensionConfiguration entityObjectExtensionConfiguration,
public ExtensionPropertyConfiguration(
[NotNull] EntityExtensionConfiguration entityExtensionConfiguration,
[NotNull] Type type,
[NotNull] string name)
{
EntityObjectExtensionConfiguration = Check.NotNull(entityObjectExtensionConfiguration, nameof(entityObjectExtensionConfiguration));
EntityExtensionConfiguration = Check.NotNull(entityExtensionConfiguration, nameof(entityExtensionConfiguration));
Type = Check.NotNull(type, nameof(type));
Name = Check.NotNull(name, nameof(name));
Configuration = new Dictionary<object, object>();
Configuration = new Dictionary<string, object>();
Attributes = new List<Attribute>();
Validators = new List<Action<ObjectExtensionPropertyValidationContext>>();
Entity = new ModuleEntityObjectPropertyExtensionEntityConfiguration();
UI = new ModuleEntityObjectPropertyExtensionUIConfiguration();
Api = new ModuleEntityObjectPropertyExtensionApiConfiguration();
Entity = new ExtensionPropertyEntityConfiguration();
UI = new ExtensionPropertyUiConfiguration();
Api = new ExtensionPropertyApiConfiguration();
}
}
}

@ -0,0 +1,9 @@
using System.Collections.Generic;
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ExtensionPropertyConfigurationDictionary : Dictionary<string, ExtensionPropertyConfiguration>
{
}
}

@ -1,6 +1,6 @@
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleEntityObjectPropertyExtensionApiUpdateConfiguration
public class ExtensionPropertyEntityConfiguration
{
/// <summary>
/// Default: true.

@ -0,0 +1,23 @@
using JetBrains.Annotations;
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ExtensionPropertyUiConfiguration
{
[NotNull]
public ExtensionPropertyUiTableConfiguration OnTable { get; }
[NotNull]
public ExtensionPropertyUiFormConfiguration OnCreateForm { get; }
[NotNull]
public ExtensionPropertyUiFormConfiguration OnEditForm { get; }
public ExtensionPropertyUiConfiguration()
{
OnTable = new ExtensionPropertyUiTableConfiguration();
OnCreateForm = new ExtensionPropertyUiFormConfiguration();
OnEditForm = new ExtensionPropertyUiFormConfiguration();
}
}
}

@ -1,6 +1,6 @@
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleEntityObjectPropertyExtensionUIFormConfiguration
public class ExtensionPropertyUiFormConfiguration
{
/// <summary>
/// Default: true.

@ -1,6 +1,6 @@
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleEntityObjectPropertyExtensionUITableConfiguration
public class ExtensionPropertyUiTableConfiguration
{
/// <summary>
/// Default: true.

@ -1,9 +0,0 @@
using System.Collections.Generic;
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleEntityObjectExtensionConfigurationDictionary : Dictionary<string, ModuleEntityObjectExtensionConfiguration>
{
}
}

@ -1,23 +0,0 @@
using JetBrains.Annotations;
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleEntityObjectPropertyExtensionApiConfiguration
{
[NotNull]
public ModuleEntityObjectPropertyExtensionApiGetConfiguration OnGet { get; }
[NotNull]
public ModuleEntityObjectPropertyExtensionApiCreateConfiguration OnCreate { get; }
[NotNull]
public ModuleEntityObjectPropertyExtensionApiUpdateConfiguration OnUpdate { get; }
public ModuleEntityObjectPropertyExtensionApiConfiguration()
{
OnGet = new ModuleEntityObjectPropertyExtensionApiGetConfiguration();
OnCreate = new ModuleEntityObjectPropertyExtensionApiCreateConfiguration();
OnUpdate = new ModuleEntityObjectPropertyExtensionApiUpdateConfiguration();
}
}
}

@ -1,9 +0,0 @@
using System.Collections.Generic;
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleEntityObjectPropertyExtensionConfigurationDictionary : Dictionary<string, ModuleEntityObjectPropertyExtensionConfiguration>
{
}
}

@ -1,23 +0,0 @@
using JetBrains.Annotations;
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleEntityObjectPropertyExtensionUIConfiguration
{
[NotNull]
public ModuleEntityObjectPropertyExtensionUITableConfiguration OnTable { get; }
[NotNull]
public ModuleEntityObjectPropertyExtensionUIFormConfiguration OnCreateForm { get; }
[NotNull]
public ModuleEntityObjectPropertyExtensionUIFormConfiguration OnEditForm { get; }
public ModuleEntityObjectPropertyExtensionUIConfiguration()
{
OnTable = new ModuleEntityObjectPropertyExtensionUITableConfiguration();
OnCreateForm = new ModuleEntityObjectPropertyExtensionUIFormConfiguration();
OnEditForm = new ModuleEntityObjectPropertyExtensionUIFormConfiguration();
}
}
}

@ -0,0 +1,20 @@
using System.Collections.Generic;
using JetBrains.Annotations;
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleExtensionConfiguration
{
[NotNull]
public EntityExtensionConfigurationDictionary Entities { get; }
[NotNull]
public Dictionary<string, object> Configuration { get; }
public ModuleExtensionConfiguration()
{
Entities = new EntityExtensionConfigurationDictionary();
Configuration = new Dictionary<string, object>();
}
}
}

@ -0,0 +1,9 @@
using System.Collections.Generic;
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleExtensionConfigurationDictionary : Dictionary<string, ModuleExtensionConfiguration>
{
}
}

@ -4,13 +4,13 @@ using JetBrains.Annotations;
namespace Volo.Abp.ObjectExtending.Modularity
{
public static class ModuleObjectExtensionConfigurationDictionaryExtensions
public static class ModuleExtensionConfigurationDictionaryExtensions
{
public static ModuleObjectExtensionConfigurationDictionary ConfigureModule<T>(
[NotNull] this ModuleObjectExtensionConfigurationDictionary configurationDictionary,
public static ModuleExtensionConfigurationDictionary ConfigureModule<T>(
[NotNull] this ModuleExtensionConfigurationDictionary configurationDictionary,
[NotNull] string moduleName,
[NotNull] Action<T> configureAction)
where T : ModuleObjectExtensionConfiguration, new()
where T : ModuleExtensionConfiguration, new()
{
Check.NotNull(moduleName, nameof(moduleName));
Check.NotNull(configureAction, nameof(configureAction));

@ -3,17 +3,17 @@ using System.Collections.Generic;
namespace Volo.Abp.ObjectExtending.Modularity
{
public static class ModuleObjectExtensionConfigurationExtensions
public static class ModuleExtensionConfigurationExtensions
{
public static T ConfigureObject<T>(
public static T ConfigureEntity<T>(
this T objectConfiguration,
string objectName,
Action<ModuleEntityObjectExtensionConfiguration> configureAction)
where T : ModuleObjectExtensionConfiguration
Action<EntityExtensionConfiguration> configureAction)
where T : ModuleExtensionConfiguration
{
var configuration = objectConfiguration.Entities.GetOrAdd(
objectName,
() => new ModuleEntityObjectExtensionConfiguration()
() => new EntityExtensionConfiguration()
);
configureAction(configuration);

@ -4,14 +4,14 @@ using JetBrains.Annotations;
namespace Volo.Abp.ObjectExtending.Modularity
{
public static class ModuleObjectExtensionConfigurationHelper
public static class ModuleExtensionConfigurationHelper
{
public static void ApplyModuleObjectExtensionConfigurationToEntity(
public static void ApplyEntityConfigurationToEntity(
string moduleName,
string objectName,
string entityName,
Type entityType)
{
foreach (var propertyConfig in GetPropertyConfigurations(moduleName, objectName))
foreach (var propertyConfig in GetPropertyConfigurations(moduleName, entityName))
{
if (propertyConfig.Entity.IsAvailable &&
entityType != null)
@ -21,7 +21,7 @@ namespace Volo.Abp.ObjectExtending.Modularity
}
}
public static void ApplyModuleObjectExtensionConfigurationToApi(
public static void ApplyEntityConfigurationToApi(
string moduleName,
string objectName,
Type[] getApiTypes = null,
@ -55,13 +55,13 @@ namespace Volo.Abp.ObjectExtending.Modularity
}
}
public static void ApplyModuleObjectExtensionConfigurationToUI(
public static void ApplyEntityConfigurationToUi(
string moduleName,
string objectName,
string entityName,
Type[] createFormTypes = null,
Type[] editFormTypes = null)
{
foreach (var propertyConfig in GetPropertyConfigurations(moduleName, objectName))
foreach (var propertyConfig in GetPropertyConfigurations(moduleName, entityName))
{
if (!propertyConfig.IsAvailableToClients)
{
@ -82,9 +82,9 @@ namespace Volo.Abp.ObjectExtending.Modularity
}
}
public static void ApplyModuleObjectExtensionConfigurations(
public static void ApplyEntityConfigurations(
string moduleName,
string objectName,
string entityName,
Type entityType = null,
Type[] createFormTypes = null,
Type[] editFormTypes = null,
@ -94,51 +94,51 @@ namespace Volo.Abp.ObjectExtending.Modularity
{
if (entityType != null)
{
ApplyModuleObjectExtensionConfigurationToEntity(
ApplyEntityConfigurationToEntity(
moduleName,
objectName,
entityName,
entityType
);
}
ApplyModuleObjectExtensionConfigurationToApi(
ApplyEntityConfigurationToApi(
moduleName,
objectName,
entityName,
getApiTypes: getApiTypes,
createApiTypes: createApiTypes,
updateApiTypes: updateApiTypes
);
ApplyModuleObjectExtensionConfigurationToUI(
ApplyEntityConfigurationToUi(
moduleName,
objectName,
entityName,
createFormTypes: createFormTypes,
editFormTypes: editFormTypes
);
}
[NotNull]
public static IEnumerable<ModuleEntityObjectPropertyExtensionConfiguration> GetPropertyConfigurations(
public static IEnumerable<ExtensionPropertyConfiguration> GetPropertyConfigurations(
string moduleName,
string objectName)
string entityName)
{
var moduleConfig = ObjectExtensionManager.Instance.Modules().GetOrDefault(moduleName);
if (moduleConfig == null)
{
return Array.Empty<ModuleEntityObjectPropertyExtensionConfiguration>();
return Array.Empty<ExtensionPropertyConfiguration>();
}
var objectConfig = moduleConfig.Entities.GetOrDefault(objectName);
var objectConfig = moduleConfig.Entities.GetOrDefault(entityName);
if (objectConfig == null)
{
return Array.Empty<ModuleEntityObjectPropertyExtensionConfiguration>();
return Array.Empty<ExtensionPropertyConfiguration>();
}
return objectConfig.GetProperties();
}
public static void ApplyPropertyConfigurationToTypes(
ModuleEntityObjectPropertyExtensionConfiguration propertyConfig,
ExtensionPropertyConfiguration propertyConfig,
Type[] types)
{
ObjectExtensionManager.Instance

@ -1,12 +0,0 @@
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleObjectExtensionConfiguration
{
public ModuleEntityObjectExtensionConfigurationDictionary Entities { get; set; }
public ModuleObjectExtensionConfiguration()
{
Entities = new ModuleEntityObjectExtensionConfigurationDictionary();
}
}
}

@ -1,9 +0,0 @@
using System.Collections.Generic;
namespace Volo.Abp.ObjectExtending.Modularity
{
public class ModuleObjectExtensionConfigurationDictionary : Dictionary<string, ModuleObjectExtensionConfiguration>
{
}
}

@ -8,15 +8,15 @@ namespace Volo.Abp.ObjectExtending
{
private const string ObjectExtensionManagerConfigurationKey = "_Modules";
public static ModuleObjectExtensionConfigurationDictionary Modules(
public static ModuleExtensionConfigurationDictionary Modules(
[NotNull]this ObjectExtensionManager objectExtensionManager)
{
Check.NotNull(objectExtensionManager, nameof(objectExtensionManager));
return objectExtensionManager.Configuration.GetOrAdd(
ObjectExtensionManagerConfigurationKey,
() => new ModuleObjectExtensionConfigurationDictionary()
) as ModuleObjectExtensionConfigurationDictionary;
() => new ModuleExtensionConfigurationDictionary()
) as ModuleExtensionConfigurationDictionary;
}
}
}

@ -0,0 +1,9 @@
using Volo.Abp.ObjectExtending.Modularity;
namespace Volo.Abp.ObjectExtending
{
public class IdentityModuleExtensionConfiguration : ModuleExtensionConfiguration
{
}
}

@ -0,0 +1,18 @@
using System;
using Volo.Abp.ObjectExtending.Modularity;
namespace Volo.Abp.ObjectExtending
{
public static class IdentityModuleExtensionConfigurationExtensions
{
public static IdentityModuleExtensionConfiguration ConfigureUser(
this IdentityModuleExtensionConfiguration configurations,
Action<EntityExtensionConfiguration> configureAction)
{
return configurations.ConfigureEntity(
"User",
configureAction
);
}
}
}

@ -1,9 +0,0 @@
using Volo.Abp.ObjectExtending.Modularity;
namespace Volo.Abp.ObjectExtending
{
public class IdentityModuleObjectExtensionConfiguration : ModuleObjectExtensionConfiguration
{
}
}

@ -1,18 +0,0 @@
using System;
using Volo.Abp.ObjectExtending.Modularity;
namespace Volo.Abp.ObjectExtending
{
public static class IdentityModuleObjectExtensionConfigurationExtensions
{
public static IdentityModuleObjectExtensionConfiguration ConfigureUser(
this IdentityModuleObjectExtensionConfiguration configurations,
Action<ModuleEntityObjectExtensionConfiguration> configureAction)
{
return configurations.ConfigureObject(
"User",
configureAction
);
}
}
}

@ -5,9 +5,9 @@ namespace Volo.Abp.ObjectExtending
{
public static class IdentityModuleObjectExtensionConfigurationsExtensions
{
public static ModuleObjectExtensionConfigurationDictionary ConfigureIdentity(
this ModuleObjectExtensionConfigurationDictionary modules,
Action<IdentityModuleObjectExtensionConfiguration> configureAction)
public static ModuleExtensionConfigurationDictionary ConfigureIdentity(
this ModuleExtensionConfigurationDictionary modules,
Action<IdentityModuleExtensionConfiguration> configureAction)
{
return modules.ConfigureModule(
"Identity",

@ -48,7 +48,7 @@ namespace Volo.Abp.Identity
public override void PostConfigureServices(ServiceConfigurationContext context)
{
ModuleObjectExtensionConfigurationHelper.ApplyModuleObjectExtensionConfigurationToEntity(
ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity(
"Identity",
"User",
typeof(IdentityUser)

Loading…
Cancel
Save