From 2187e683730dfe7acda4eb2b7fb2d0c760b7ef09 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Wed, 11 Jul 2018 17:10:42 +0300 Subject: [PATCH] Added Http and Web layers to the module template. --- .../module/MyCompanyName.MyModuleName.sln | 21 ++++++ ...anyName.MyModuleName.HttpApi.Client.csproj | 15 +++++ .../MyModuleNameHttpApiClientModule.cs | 24 +++++++ .../MyCompanyName.MyModuleName.HttpApi.csproj | 15 +++++ .../MyModuleName/MyModuleNameHttpApiModule.cs | 17 +++++ .../Resources/MyModuleName/en.json | 6 ++ .../MyCompanyName.MyModuleName.Web.csproj | 37 +++++++++++ .../MyModuleNameMenuContributor.cs | 23 +++++++ .../MyModuleNameWebAutoMapperProfile.cs | 12 ++++ .../MyModuleNameWebModule.cs | 64 +++++++++++++++++++ .../Pages/MyModuleName/_ViewImports.cshtml | 4 ++ .../Properties/launchSettings.json | 27 ++++++++ 12 files changed, 265 insertions(+) create mode 100644 templates/module/src/MyCompanyName.MyModuleName.HttpApi.Client/MyCompanyName.MyModuleName.HttpApi.Client.csproj create mode 100644 templates/module/src/MyCompanyName.MyModuleName.HttpApi.Client/MyCompanyName/MyModuleName/MyModuleNameHttpApiClientModule.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.HttpApi/MyCompanyName.MyModuleName.HttpApi.csproj create mode 100644 templates/module/src/MyCompanyName.MyModuleName.HttpApi/MyCompanyName/MyModuleName/MyModuleNameHttpApiModule.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.Web/Localization/Resources/MyModuleName/en.json create mode 100644 templates/module/src/MyCompanyName.MyModuleName.Web/MyCompanyName.MyModuleName.Web.csproj create mode 100644 templates/module/src/MyCompanyName.MyModuleName.Web/MyModuleNameMenuContributor.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.Web/MyModuleNameWebAutoMapperProfile.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.Web/MyModuleNameWebModule.cs create mode 100644 templates/module/src/MyCompanyName.MyModuleName.Web/Pages/MyModuleName/_ViewImports.cshtml create mode 100644 templates/module/src/MyCompanyName.MyModuleName.Web/Properties/launchSettings.json diff --git a/templates/module/MyCompanyName.MyModuleName.sln b/templates/module/MyCompanyName.MyModuleName.sln index 98f1384346..b87d975db8 100644 --- a/templates/module/MyCompanyName.MyModuleName.sln +++ b/templates/module/MyCompanyName.MyModuleName.sln @@ -21,6 +21,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyModuleName. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyModuleName.MongoDB", "src\MyCompanyName.MyModuleName.MongoDB\MyCompanyName.MyModuleName.MongoDB.csproj", "{F1C58097-4C08-4D88-8976-6B3389391481}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyModuleName.HttpApi", "src\MyCompanyName.MyModuleName.HttpApi\MyCompanyName.MyModuleName.HttpApi.csproj", "{077AA5F8-8B61-420C-A6B5-0150A66FDB34}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyModuleName.HttpApi.Client", "src\MyCompanyName.MyModuleName.HttpApi.Client\MyCompanyName.MyModuleName.HttpApi.Client.csproj", "{36E2735F-CEAB-44C8-A6D1-2CDAFF399751}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyCompanyName.MyModuleName.Web", "src\MyCompanyName.MyModuleName.Web\MyCompanyName.MyModuleName.Web.csproj", "{8C5B0D35-9734-4439-977C-2F1AC9E1D69E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -51,6 +57,18 @@ Global {F1C58097-4C08-4D88-8976-6B3389391481}.Debug|Any CPU.Build.0 = Debug|Any CPU {F1C58097-4C08-4D88-8976-6B3389391481}.Release|Any CPU.ActiveCfg = Release|Any CPU {F1C58097-4C08-4D88-8976-6B3389391481}.Release|Any CPU.Build.0 = Release|Any CPU + {077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Debug|Any CPU.Build.0 = Debug|Any CPU + {077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Release|Any CPU.ActiveCfg = Release|Any CPU + {077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Release|Any CPU.Build.0 = Release|Any CPU + {36E2735F-CEAB-44C8-A6D1-2CDAFF399751}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {36E2735F-CEAB-44C8-A6D1-2CDAFF399751}.Debug|Any CPU.Build.0 = Debug|Any CPU + {36E2735F-CEAB-44C8-A6D1-2CDAFF399751}.Release|Any CPU.ActiveCfg = Release|Any CPU + {36E2735F-CEAB-44C8-A6D1-2CDAFF399751}.Release|Any CPU.Build.0 = Release|Any CPU + {8C5B0D35-9734-4439-977C-2F1AC9E1D69E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8C5B0D35-9734-4439-977C-2F1AC9E1D69E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8C5B0D35-9734-4439-977C-2F1AC9E1D69E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8C5B0D35-9734-4439-977C-2F1AC9E1D69E}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -62,6 +80,9 @@ Global {78040F9E-3501-4A40-82DF-00A597710F35} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} {0CE86223-D31D-4315-A1F5-87BA3EE1B844} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} {F1C58097-4C08-4D88-8976-6B3389391481} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} + {077AA5F8-8B61-420C-A6B5-0150A66FDB34} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} + {36E2735F-CEAB-44C8-A6D1-2CDAFF399751} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} + {8C5B0D35-9734-4439-977C-2F1AC9E1D69E} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD} diff --git a/templates/module/src/MyCompanyName.MyModuleName.HttpApi.Client/MyCompanyName.MyModuleName.HttpApi.Client.csproj b/templates/module/src/MyCompanyName.MyModuleName.HttpApi.Client/MyCompanyName.MyModuleName.HttpApi.Client.csproj new file mode 100644 index 0000000000..38520f65ad --- /dev/null +++ b/templates/module/src/MyCompanyName.MyModuleName.HttpApi.Client/MyCompanyName.MyModuleName.HttpApi.Client.csproj @@ -0,0 +1,15 @@ + + + + + + netstandard2.0 + + + + + + + + + diff --git a/templates/module/src/MyCompanyName.MyModuleName.HttpApi.Client/MyCompanyName/MyModuleName/MyModuleNameHttpApiClientModule.cs b/templates/module/src/MyCompanyName.MyModuleName.HttpApi.Client/MyCompanyName/MyModuleName/MyModuleNameHttpApiClientModule.cs new file mode 100644 index 0000000000..3421814b88 --- /dev/null +++ b/templates/module/src/MyCompanyName.MyModuleName.HttpApi.Client/MyCompanyName/MyModuleName/MyModuleNameHttpApiClientModule.cs @@ -0,0 +1,24 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Modularity; + +namespace MyCompanyName.MyModuleName +{ + [DependsOn( + typeof(MyModuleNameApplicationContractsModule), + typeof(AbpHttpClientModule))] + public class MyModuleNameHttpApiClientModule : AbpModule + { + public const string RemoteServiceName = "MyModuleName"; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddHttpClientProxies( + typeof(MyModuleNameApplicationContractsModule).Assembly, + RemoteServiceName + ); + + context.Services.AddAssemblyOf(); + } + } +} diff --git a/templates/module/src/MyCompanyName.MyModuleName.HttpApi/MyCompanyName.MyModuleName.HttpApi.csproj b/templates/module/src/MyCompanyName.MyModuleName.HttpApi/MyCompanyName.MyModuleName.HttpApi.csproj new file mode 100644 index 0000000000..fbfa5c81ea --- /dev/null +++ b/templates/module/src/MyCompanyName.MyModuleName.HttpApi/MyCompanyName.MyModuleName.HttpApi.csproj @@ -0,0 +1,15 @@ + + + + + + netstandard2.0 + + + + + + + + + diff --git a/templates/module/src/MyCompanyName.MyModuleName.HttpApi/MyCompanyName/MyModuleName/MyModuleNameHttpApiModule.cs b/templates/module/src/MyCompanyName.MyModuleName.HttpApi/MyCompanyName/MyModuleName/MyModuleNameHttpApiModule.cs new file mode 100644 index 0000000000..db6f881e63 --- /dev/null +++ b/templates/module/src/MyCompanyName.MyModuleName.HttpApi/MyCompanyName/MyModuleName/MyModuleNameHttpApiModule.cs @@ -0,0 +1,17 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Modularity; + +namespace MyCompanyName.MyModuleName +{ + [DependsOn( + typeof(MyModuleNameApplicationContractsModule), + typeof(AbpAspNetCoreMvcModule))] + public class MyModuleNameHttpApiModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAssemblyOf(); + } + } +} diff --git a/templates/module/src/MyCompanyName.MyModuleName.Web/Localization/Resources/MyModuleName/en.json b/templates/module/src/MyCompanyName.MyModuleName.Web/Localization/Resources/MyModuleName/en.json new file mode 100644 index 0000000000..92e4e9582b --- /dev/null +++ b/templates/module/src/MyCompanyName.MyModuleName.Web/Localization/Resources/MyModuleName/en.json @@ -0,0 +1,6 @@ +{ + "culture": "en", + "texts": { + + } +} \ No newline at end of file diff --git a/templates/module/src/MyCompanyName.MyModuleName.Web/MyCompanyName.MyModuleName.Web.csproj b/templates/module/src/MyCompanyName.MyModuleName.Web/MyCompanyName.MyModuleName.Web.csproj new file mode 100644 index 0000000000..2fa9eeb467 --- /dev/null +++ b/templates/module/src/MyCompanyName.MyModuleName.Web/MyCompanyName.MyModuleName.Web.csproj @@ -0,0 +1,37 @@ + + + + + + netstandard2.0 + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + true + Library + MyCompanyName.MyModuleName + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/module/src/MyCompanyName.MyModuleName.Web/MyModuleNameMenuContributor.cs b/templates/module/src/MyCompanyName.MyModuleName.Web/MyModuleNameMenuContributor.cs new file mode 100644 index 0000000000..526f2907ba --- /dev/null +++ b/templates/module/src/MyCompanyName.MyModuleName.Web/MyModuleNameMenuContributor.cs @@ -0,0 +1,23 @@ +using System.Threading.Tasks; +using Volo.Abp.UI.Navigation; + +namespace MyCompanyName.MyModuleName +{ + public class MyModuleNameMenuContributor : IMenuContributor + { + public async Task ConfigureMenuAsync(MenuConfigurationContext context) + { + if (context.Menu.Name == StandardMenus.Main) + { + await ConfigureMainMenu(context); + } + } + + private Task ConfigureMainMenu(MenuConfigurationContext context) + { + //Add main menu items. + + return Task.CompletedTask; + } + } +} \ No newline at end of file diff --git a/templates/module/src/MyCompanyName.MyModuleName.Web/MyModuleNameWebAutoMapperProfile.cs b/templates/module/src/MyCompanyName.MyModuleName.Web/MyModuleNameWebAutoMapperProfile.cs new file mode 100644 index 0000000000..0bb7bea436 --- /dev/null +++ b/templates/module/src/MyCompanyName.MyModuleName.Web/MyModuleNameWebAutoMapperProfile.cs @@ -0,0 +1,12 @@ +using AutoMapper; + +namespace MyCompanyName.MyModuleName +{ + public class MyModuleNameWebAutoMapperProfile : Profile + { + public MyModuleNameWebAutoMapperProfile() + { + //Create mappings. + } + } +} \ No newline at end of file diff --git a/templates/module/src/MyCompanyName.MyModuleName.Web/MyModuleNameWebModule.cs b/templates/module/src/MyCompanyName.MyModuleName.Web/MyModuleNameWebModule.cs new file mode 100644 index 0000000000..494fad3f5a --- /dev/null +++ b/templates/module/src/MyCompanyName.MyModuleName.Web/MyModuleNameWebModule.cs @@ -0,0 +1,64 @@ +using Localization.Resources.AbpUi; +using Microsoft.AspNetCore.Mvc.RazorPages; +using Microsoft.Extensions.DependencyInjection; +using MyCompanyName.MyModuleName.Localization; +using Volo.Abp.AspNetCore.Mvc.Localization; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; +using Volo.Abp.AutoMapper; +using Volo.Abp.Localization; +using Volo.Abp.Localization.Resources.AbpValidation; +using Volo.Abp.Modularity; +using Volo.Abp.UI.Navigation; +using Volo.Abp.VirtualFileSystem; + +namespace MyCompanyName.MyModuleName +{ + [DependsOn(typeof(MyModuleNameHttpApiModule))] + [DependsOn(typeof(AbpAspNetCoreMvcUiBootstrapModule))] + [DependsOn(typeof(AbpAutoMapperModule))] + public class MyModuleNameWebModule : AbpModule + { + public override void PreConfigureServices(ServiceConfigurationContext context) + { + context.Services.PreConfigure(options => + { + options.AddAssemblyResource(typeof(MyModuleNameResource), typeof(MyModuleNameWebModule).Assembly); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.Configure(options => + { + options.MenuContributors.Add(new MyModuleNameMenuContributor()); + }); + + context.Services.Configure(options => + { + options.FileSets.AddEmbedded("MyCompanyName.MyModuleName"); + }); + + context.Services.Configure(options => + { + options.Resources + .Get() + .AddBaseTypes( + typeof(AbpValidationResource), + typeof(AbpUiResource) + ).AddVirtualJson("/Localization/Resources/AbpIdentity"); + }); + + context.Services.Configure(options => + { + options.AddProfile(validate: true); + }); + + context.Services.Configure(options => + { + //Configure authorization. + }); + + context.Services.AddAssemblyOf(); + } + } +} diff --git a/templates/module/src/MyCompanyName.MyModuleName.Web/Pages/MyModuleName/_ViewImports.cshtml b/templates/module/src/MyCompanyName.MyModuleName.Web/Pages/MyModuleName/_ViewImports.cshtml new file mode 100644 index 0000000000..c1da1f5f10 --- /dev/null +++ b/templates/module/src/MyCompanyName.MyModuleName.Web/Pages/MyModuleName/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/templates/module/src/MyCompanyName.MyModuleName.Web/Properties/launchSettings.json b/templates/module/src/MyCompanyName.MyModuleName.Web/Properties/launchSettings.json new file mode 100644 index 0000000000..f9afa0d0f4 --- /dev/null +++ b/templates/module/src/MyCompanyName.MyModuleName.Web/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:56993/", + "sslPort": 0 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "MyCompanyName.MyModuleName.Web": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "http://localhost:56994/" + } + } +} \ No newline at end of file