Browse Source

Merge branch 'rel-5.3' into global-features-mvc

pull/12553/head
maliming 4 years ago
parent
commit
89fac3be8d
No known key found for this signature in database GPG Key ID: 96224957E51C89E
  1. 11
      docs/en/Migration-Guides/Abp-5_3.md
  2. 1
      docs/en/Migration-Guides/Index.md
  3. 14
      docs/en/Road-Map.md
  4. 23
      docs/en/Themes/LeptonXLite/blazor.md
  5. 13
      docs/en/Themes/LeptonXLite/mvc.md
  6. 2
      docs/zh-Hans/Module-Development-Basics.md
  7. 8
      framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj
  8. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs
  9. 24
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Values/ValueObject.cs
  10. 2
      framework/src/Volo.Abp.Http.Client.Web/Volo/Abp/Http/Client/Web/Conventions/AbpHttpClientProxyServiceConvention.cs
  11. 2
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/AppUrlProvider.cs
  12. 10
      framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Values/Address.cs
  13. 10
      framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Values/ValueObject_Tests.cs
  14. 11
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs
  15. 16
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/BlogPostAdminClientProxy.Generated.cs
  16. 224
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json
  17. 4
      modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/cms-kit-common-generate-proxy.json
  18. 16
      modules/cms-kit/src/Volo.CmsKit.Public.Web/wwwroot/client-proxies/cms-kit-proxy.js
  19. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj
  20. 4
      templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
  21. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj
  22. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj
  23. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj
  24. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/global.css
  25. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html
  26. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj
  27. 2
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/global.css
  28. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/index.html
  29. 4
      templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj

11
docs/en/Migration-Guides/Abp-5_3.md

@ -0,0 +1,11 @@
# ABP Version 5.3 Migration Guide
This document is a guide for upgrading ABP v5.2 solutions to ABP v5.3. There is a change in this version that may effect your applications, please read it carefully and apply the necessary changes to your application.
## AutoMapper Upgraded to v11.0.1
AutoMapper library upgraded to **v11.0.1** in this version. So, you need to change your project's target SDK that use the **AutoMapper** library (typically your `*.Application` project). You can change it from `netstandard2.0` to `netstandard2.1` or `net6` if needed. Please see [#12189](https://github.com/abpframework/abp/pull/12189) for more info.
## See Also
* [Official blog post for the 5.3 release](https://blog.abp.io/abp/ABP.IO-Platform-5.3-RC-Has-Been-Published)

1
docs/en/Migration-Guides/Index.md

@ -2,6 +2,7 @@
The following documents explain how to migrate your existing ABP applications. We write migration documents only if you need to take an action while upgrading your solution. Otherwise, you can easily upgrade your solution using the [abp update command](../Upgrading.md).
- [5.2 to 5.3](Abp-5_3.md)
- [5.1 to 5.2](Abp-5_2.md)
- [4.x to 5.0](Abp-5_0.md)
- [4.2 to 4.3](Abp-4_3.md)

14
docs/en/Road-Map.md

@ -4,15 +4,18 @@ This document provides a road map, release schedule and planned features for the
## Next Versions
### v5.3
### v5.4
In [5.3 milestone](https://github.com/abpframework/abp/milestone/65), we will be mostly working on the following topics:
In [5.4 milestone](https://github.com/abpframework/abp/milestone/67), we will be mostly working on the following topics:
* Providing an OpenIddict integration to replace current IdentityServer4 integration.
* Maturing and documenting the [eShopOnAbp](https://github.com/abpframework/eShopOnAbp) project, writing a free e-book that explains the solution.
* Working on the [LeptonX](https://blog.abp.io/abp/LeptonX-Theme-for-ABP-Framework-Alpha-Release) theme and making it as the default theme for the ABP Framework UI options.
* Working on more examples and guides.
* Improvements on the existing features and providing more guides.
The planned release date for v5.3 is **May, 2022**.
The planned release date for v5.4 is **July, 2022**.
> After the version 5.4, we will be working for 6.0 which will be released in the end of 2022 based on .NET 7.0.
## Backlog Items
@ -20,8 +23,8 @@ The *Next Versions* section above shows the main focus of the planned versions.
Here, a list of major items in the backlog we are considering to work on in the next versions.
* [#7221](https://github.com/abpframework/abp/issues/7221) / Alternative to IdentityServer4
* [#2183](https://github.com/abpframework/abp/issues/2183) / Dapr integration
* [#6655](https://github.com/abpframework/abp/pull/6655) / Use Typescript for the MVC UI
* [#236](https://github.com/abpframework/abp/issues/236) / Resource based authorization system
* [#2882](https://github.com/abpframework/abp/issues/2882) / Providing a gRPC integration infrastructure (while it is [already possible](https://github.com/abpframework/abp-samples/tree/master/GrpcDemo) to create or consume gRPC endpoints for your application, we plan to create endpoints for the [standard application modules](https://docs.abp.io/en/abp/latest/Modules/Index))
* [#1754](https://github.com/abpframework/abp/issues/1754) / Multi-lingual entities
@ -31,7 +34,6 @@ Here, a list of major items in the backlog we are considering to work on in the
* [#4223](https://github.com/abpframework/abp/issues/4223) / WebHook system
* [#162](https://github.com/abpframework/abp/issues/162) / Azure ElasticDB Integration for multitenancy
* [#2296](https://github.com/abpframework/abp/issues/2296) / Feature toggling infrastructure
* [#6655](https://github.com/abpframework/abp/pull/6655) / Use Typescript for the MVC UI
You can always check the milestone planning and the prioritized backlog issues on [the GitHub repository](https://github.com/abpframework/abp/milestones) for a detailed road map. The backlog items are subject to change. We are adding new items and changing priorities based on the community feedbacks and goals of the project.

23
docs/en/Themes/LeptonXLite/blazor.md

@ -23,12 +23,17 @@ LeptonX Lite has implementation for the ABP Framework Blazor WebAssembly & Blazo
dotnet add package Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXLiteTheme
```
- Remove **Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme** reference from the project since it's not necessary after switching to LeptonX Lite.
- Remove the old theme from the **DependsOn** attribute in your module class and add the **AbpAspNetCoreComponentsWebAssemblyLeptonXLiteThemeModule** type to the **DependsOn** attribute.
```diff
[DependsOn(
// Remove BasicTheme module from DependsOn attribute
- typeof(AbpAspNetCoreComponentsWebAssemblyBasicThemeModule),
+ typeof(AbpAspNetCoreComponentsWebAssemblyLeptonXLiteThemeModule)
// Add LeptonX Lite module to DependsOn attribute
+ typeof(AbpAspNetCoreComponentsWebAssemblyLeptonXLiteThemeModule),
)]
```
@ -53,19 +58,27 @@ builder.RootComponents.Add<App>("#ApplicationContainer");
dotnet add package Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme
```
- Remove old theme from the **DependsOn** attribute in your module class and add the **AbpAspNetCoreComponentsWebAssemblyLeptonXLiteThemeModule** type to the **DependsOn** attribute.
- Remove **Volo.Abp.AspNetCore.Components.Server.BasicTheme** reference from the project since it's not necessary after switching to LeptonX Lite.
- Remove old theme from the **DependsOn** attribute in your module class and add the **AbpAspNetCoreComponentsServerLeptonXLiteThemeModule** type to the **DependsOn** attribute.
```diff
[DependsOn(
// Remove BasicTheme module from DependsOn attribute
- typeof(AbpAspNetCoreComponentsServerBasicThemeModule),
// Add LeptonX Lite module to DependsOn attribute
+ typeof(AbpAspNetCoreComponentsServerLeptonXLiteThemeModule)
)]
```
- Update AbpBundlingOptions
- Replace `BlazorBasicThemeBundles` with `BlazorLeptonXLiteThemeBundles` in `AbpBundlingOptions`:
```diff
options.StyleBundles.Configure(
// Remove following line
- BlazorBasicThemeBundles.Styles.Global,
// Add following line instead
+ BlazorLeptonXLiteThemeBundles.Styles.Global,
bundle =>
{
@ -84,12 +97,16 @@ builder.RootComponents.Add<App>("#ApplicationContainer");
```
- Then replace script & style bundles as following:
```diff
// Remove following line
- <abp-style-bundle name="@BlazorBasicThemeBundles.Styles.Global" />
// Add following line instead
+ <abp-style-bundle name="@BlazorLeptonXLiteThemeBundles.Styles.Global" />
```
```diff
// Remove following line
- <abp-script-bundle name="@BlazorBasicThemeBundles.Scripts.Global" />
// Add following line instead
+ <abp-script-bundle name="@BlazorLeptonXLiteThemeBundles.Scripts.Global" />
```

13
docs/en/Themes/LeptonXLite/mvc.md

@ -10,25 +10,32 @@ LeptonX Lite has implementation for the ABP Framework Razor Pages. It's a simpli
- Add **Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite** package to your **Web** application.
```bash
abp add-package Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite
dotnet add package Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite --prerelease
```
- Remove **Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic** reference from the project since it's not necessary after switching to LeptonX Lite.
- Make sure the old theme is removed and LeptonX is added in your Module class.
```diff
[DependsOn(
// Remove BasicTheme module from DependsOn attribute
- typeof(AbpAspNetCoreMvcUiBasicThemeModule),
+ typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule)
// Add LeptonX Lite module to DependsOn attribute
+ typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule),
)]
```
- Update AbpBundlingOptions
- Replace `BasicThemeBundles` with `LeptonXLiteThemeBundles` in AbpBundlingOptions
```diff
Configure<AbpBundlingOptions>(options =>
{
options.StyleBundles.Configure(
// Remove following line
- BasicThemeBundles.Styles.Global,
// Add following line instead
+ LeptonXLiteThemeBundles.Styles.Global
bundle =>
{

2
docs/zh-Hans/Module-Development-Basics.md

@ -49,7 +49,7 @@ public class BlogModule : AbpModule
}
}
````
有关配置系统的更多信息,请参阅配置(TODO:link)文档.
有关配置系统的更多信息,请参阅[配置](Configuration.md)文档.
##### 配置服务前和后

8
framework/src/Volo.Abp.BlazoriseUI/Volo.Abp.BlazoriseUI.csproj

@ -14,10 +14,10 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Blazorise" Version="1.0.2" />
<PackageReference Include="Blazorise.DataGrid" Version="1.0.2" />
<PackageReference Include="Blazorise.Snackbar" Version="1.0.2" />
<PackageReference Include="Blazorise.Components" Version="1.0.2" />
<PackageReference Include="Blazorise" Version="1.0.4" />
<PackageReference Include="Blazorise.DataGrid" Version="1.0.4" />
<PackageReference Include="Blazorise.Snackbar" Version="1.0.4" />
<PackageReference Include="Blazorise.Components" Version="1.0.4" />
</ItemGroup>
</Project>

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs

@ -48,7 +48,7 @@ public class AngularServiceProxyGenerator : ServiceProxyGeneratorBase<AngularSer
var apiName = args.ApiName ?? defaultValue;
var source = args.Source ?? defaultValue;
var target = args.Target ?? defaultValue;
var url = args.Url ?? string.Empty;
var url = args.Url ?? "''";
var commandBuilder = new StringBuilder("npx ng g @abp/ng.schematics:" + schematicsCommandName);
if (module != null)

24
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Values/ValueObject.cs

@ -16,21 +16,29 @@ public abstract class ValueObject
return false;
}
ValueObject other = (ValueObject)obj;
var other = (ValueObject)obj;
IEnumerator<object> thisValues = GetAtomicValues().GetEnumerator();
IEnumerator<object> otherValues = other.GetAtomicValues().GetEnumerator();
var thisValues = GetAtomicValues().GetEnumerator();
var otherValues = other.GetAtomicValues().GetEnumerator();
while (thisValues.MoveNext() && otherValues.MoveNext())
var thisMoveNext = thisValues.MoveNext();
var otherMoveNext = otherValues.MoveNext();
while (thisMoveNext && otherMoveNext)
{
if (ReferenceEquals(thisValues.Current, null) ^
ReferenceEquals(otherValues.Current, null))
if (ReferenceEquals(thisValues.Current, null) ^ ReferenceEquals(otherValues.Current, null))
{
return false;
}
if (thisValues.Current != null &&
!thisValues.Current.Equals(otherValues.Current))
if (thisValues.Current != null && !thisValues.Current.Equals(otherValues.Current))
{
return false;
}
thisMoveNext = thisValues.MoveNext();
otherMoveNext = otherValues.MoveNext();
if (thisMoveNext != otherMoveNext)
{
return false;
}

2
framework/src/Volo.Abp.Http.Client.Web/Volo/Abp/Http/Client/Web/Conventions/AbpHttpClientProxyServiceConvention.cs

@ -6,6 +6,7 @@ using System.Reflection;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ActionConstraints;
using Microsoft.AspNetCore.Mvc.ApplicationModels;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Volo.Abp.Application.Services;
using Volo.Abp.AspNetCore.Mvc;
@ -122,6 +123,7 @@ public class AbpHttpClientProxyServiceConvention : AbpServiceConvention
var actionApiDescriptionModel = FindActionApiDescriptionModel(controller, action);
if (actionApiDescriptionModel == null)
{
Logger.LogWarning($"Could not find ApiDescriptionModel for action: {action.ActionName} in controller: {controller.ControllerName}, May be the generate-proxy.json is not up to date.");
return;;
}

2
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Urls/AppUrlProvider.cs

@ -45,7 +45,7 @@ public class AppUrlProvider : IAppUrlProvider, ITransientDependency
public bool IsRedirectAllowedUrl(string url)
{
var allow = Options.RedirectAllowedUrls.Any(url.StartsWith);
var allow = Options.RedirectAllowedUrls.Any(x => url.StartsWith(x, StringComparison.CurrentCultureIgnoreCase));
if (!allow)
{
Logger.LogError($"Invalid RedirectUrl: {url}, Use {nameof(AppUrlProvider)} to configure it!");

10
framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Values/Address.cs

@ -11,6 +11,8 @@ public class Address : ValueObject
public int Number { get; }
public string[] Tags { get; }
private Address()
{
}
@ -18,11 +20,13 @@ public class Address : ValueObject
public Address(
Guid cityId,
string street,
int number)
int number,
params string[] tags)
{
CityId = cityId;
Street = street;
Number = number;
Tags = tags;
}
//Requires to implement this method to return properties.
@ -31,5 +35,9 @@ public class Address : ValueObject
yield return Street;
yield return CityId;
yield return Number;
foreach (var tag in Tags)
{
yield return tag;
}
}
}

10
framework/test/Volo.Abp.Ddd.Tests/Volo/Abp/Domain/Values/ValueObject_Tests.cs

@ -10,8 +10,9 @@ public class ValueObject_Tests
public void ValueObjects_With_Same_Properties_Should_Be_Equals()
{
var cityId = Guid.NewGuid();
var address1 = new Address(cityId, "Baris Manco", 42);
var address2 = new Address(cityId, "Baris Manco", 42);
var address1 = new Address(cityId, "Baris Manco", 42, "home", "office");
var address2 = new Address(cityId, "Baris Manco", 42, "home", "office");
address1.ValueEquals(address2).ShouldBeTrue();
}
@ -25,5 +26,10 @@ public class ValueObject_Tests
var address2 = new Address(cityId, "Baris Manco", 43);
address1.ValueEquals(address2).ShouldBeFalse();
address1 = new Address(cityId, "Baris Manco", 42, "home", "office");
address2 = new Address(cityId, "Baris Manco", 42, "home");
address1.ValueEquals(address2).ShouldBeFalse();
}
}

11
modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml.cs

@ -1,5 +1,7 @@
using System.ComponentModel.DataAnnotations;
using System;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http.Extensions;
using Volo.Abp.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
@ -32,6 +34,13 @@ public class ManageModel : AccountPageModel
await contributor.ConfigureAsync(ProfileManagementPageCreationContext);
}
if (!Url.IsLocalUrl(ReturnUrl) &&
!ReturnUrl.StartsWith(UriHelper.BuildAbsolute(Request.Scheme, Request.Host, Request.PathBase).RemovePostFix("/")) &&
!AppUrlProvider.IsRedirectAllowedUrl(ReturnUrl))
{
ReturnUrl = null;
}
return Page();
}

16
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/BlogPostAdminClientProxy.Generated.cs

@ -55,20 +55,20 @@ public partial class BlogPostAdminClientProxy : ClientProxyBase<IBlogPostAdminAp
{ typeof(UpdateBlogPostDto), input }
});
}
public virtual async Task PublishAsync(Guid id)
{
await RequestAsync(nameof(PublishAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), id },
{ typeof(Guid), id }
});
}
public virtual async Task DraftAsync(Guid id)
{
await RequestAsync(nameof(DraftAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), id },
{ typeof(Guid), id }
});
}
@ -79,15 +79,15 @@ public partial class BlogPostAdminClientProxy : ClientProxyBase<IBlogPostAdminAp
{ typeof(CreateBlogPostDto), input }
});
}
public virtual async Task SendToReviewAsync(Guid id)
{
await RequestAsync(nameof(SendToReviewAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), id },
{ typeof(Guid), id }
});
}
public virtual async Task<BlogPostDto> CreateAndSendToReviewAsync(CreateBlogPostDto input)
{
return await RequestAsync<BlogPostDto>(nameof(CreateAndSendToReviewAsync), new ClientProxyRequestTypeValue
@ -95,7 +95,7 @@ public partial class BlogPostAdminClientProxy : ClientProxyBase<IBlogPostAdminAp
{ typeof(CreateBlogPostDto), input }
});
}
public virtual async Task<bool> HasBlogPostWaitingForReviewAsync()
{
return await RequestAsync<bool>(nameof(HasBlogPostWaitingForReviewAsync));

224
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json

@ -1941,6 +1941,30 @@
"bindingSourceId": "ModelBinding",
"descriptorName": "input"
},
{
"nameOnMethod": "input",
"name": "AuthorId",
"jsonName": null,
"type": "System.Guid?",
"typeSimple": "string?",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "ModelBinding",
"descriptorName": "input"
},
{
"nameOnMethod": "input",
"name": "Status",
"jsonName": null,
"type": "Volo.CmsKit.Blogs.BlogPostStatus?",
"typeSimple": "Volo.CmsKit.Blogs.BlogPostStatus?",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "ModelBinding",
"descriptorName": "input"
},
{
"nameOnMethod": "input",
"name": "Sorting",
@ -2041,6 +2065,206 @@
},
"allowAnonymous": false,
"implementFrom": "Volo.Abp.Application.Services.IUpdateAppService<Volo.CmsKit.Admin.Blogs.BlogPostDto,System.Guid,Volo.CmsKit.Admin.Blogs.UpdateBlogPostDto>"
},
"PublishAsyncById": {
"uniqueName": "PublishAsyncById",
"name": "PublishAsync",
"httpMethod": "POST",
"url": "api/cms-kit-admin/blogs/blog-posts/{id}/publish",
"supportedVersions": [],
"parametersOnMethod": [
{
"name": "id",
"typeAsString": "System.Guid, System.Private.CoreLib",
"type": "System.Guid",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null
}
],
"parameters": [
{
"nameOnMethod": "id",
"name": "id",
"jsonName": null,
"type": "System.Guid",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null,
"constraintTypes": [],
"bindingSourceId": "Path",
"descriptorName": ""
}
],
"returnValue": {
"type": "System.Void",
"typeSimple": "System.Void"
},
"allowAnonymous": false,
"implementFrom": "Volo.CmsKit.Admin.Blogs.IBlogPostAdminAppService"
},
"DraftAsyncById": {
"uniqueName": "DraftAsyncById",
"name": "DraftAsync",
"httpMethod": "POST",
"url": "api/cms-kit-admin/blogs/blog-posts/{id}/draft",
"supportedVersions": [],
"parametersOnMethod": [
{
"name": "id",
"typeAsString": "System.Guid, System.Private.CoreLib",
"type": "System.Guid",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null
}
],
"parameters": [
{
"nameOnMethod": "id",
"name": "id",
"jsonName": null,
"type": "System.Guid",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null,
"constraintTypes": [],
"bindingSourceId": "Path",
"descriptorName": ""
}
],
"returnValue": {
"type": "System.Void",
"typeSimple": "System.Void"
},
"allowAnonymous": false,
"implementFrom": "Volo.CmsKit.Admin.Blogs.IBlogPostAdminAppService"
},
"CreateAndPublishAsyncByInput": {
"uniqueName": "CreateAndPublishAsyncByInput",
"name": "CreateAndPublishAsync",
"httpMethod": "POST",
"url": "api/cms-kit-admin/blogs/blog-posts/create-and-publish",
"supportedVersions": [],
"parametersOnMethod": [
{
"name": "input",
"typeAsString": "Volo.CmsKit.Admin.Blogs.CreateBlogPostDto, Volo.CmsKit.Admin.Application.Contracts",
"type": "Volo.CmsKit.Admin.Blogs.CreateBlogPostDto",
"typeSimple": "Volo.CmsKit.Admin.Blogs.CreateBlogPostDto",
"isOptional": false,
"defaultValue": null
}
],
"parameters": [
{
"nameOnMethod": "input",
"name": "input",
"jsonName": null,
"type": "Volo.CmsKit.Admin.Blogs.CreateBlogPostDto",
"typeSimple": "Volo.CmsKit.Admin.Blogs.CreateBlogPostDto",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "Body",
"descriptorName": ""
}
],
"returnValue": {
"type": "Volo.CmsKit.Admin.Blogs.BlogPostDto",
"typeSimple": "Volo.CmsKit.Admin.Blogs.BlogPostDto"
},
"allowAnonymous": false,
"implementFrom": "Volo.CmsKit.Admin.Blogs.IBlogPostAdminAppService"
},
"SendToReviewAsyncById": {
"uniqueName": "SendToReviewAsyncById",
"name": "SendToReviewAsync",
"httpMethod": "POST",
"url": "api/cms-kit-admin/blogs/blog-posts/{id}/send-to-review",
"supportedVersions": [],
"parametersOnMethod": [
{
"name": "id",
"typeAsString": "System.Guid, System.Private.CoreLib",
"type": "System.Guid",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null
}
],
"parameters": [
{
"nameOnMethod": "id",
"name": "id",
"jsonName": null,
"type": "System.Guid",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null,
"constraintTypes": [],
"bindingSourceId": "Path",
"descriptorName": ""
}
],
"returnValue": {
"type": "System.Void",
"typeSimple": "System.Void"
},
"allowAnonymous": false,
"implementFrom": "Volo.CmsKit.Admin.Blogs.IBlogPostAdminAppService"
},
"CreateAndSendToReviewAsyncByInput": {
"uniqueName": "CreateAndSendToReviewAsyncByInput",
"name": "CreateAndSendToReviewAsync",
"httpMethod": "POST",
"url": "api/cms-kit-admin/blogs/blog-posts/create-and-send-to-review",
"supportedVersions": [],
"parametersOnMethod": [
{
"name": "input",
"typeAsString": "Volo.CmsKit.Admin.Blogs.CreateBlogPostDto, Volo.CmsKit.Admin.Application.Contracts",
"type": "Volo.CmsKit.Admin.Blogs.CreateBlogPostDto",
"typeSimple": "Volo.CmsKit.Admin.Blogs.CreateBlogPostDto",
"isOptional": false,
"defaultValue": null
}
],
"parameters": [
{
"nameOnMethod": "input",
"name": "input",
"jsonName": null,
"type": "Volo.CmsKit.Admin.Blogs.CreateBlogPostDto",
"typeSimple": "Volo.CmsKit.Admin.Blogs.CreateBlogPostDto",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "Body",
"descriptorName": ""
}
],
"returnValue": {
"type": "Volo.CmsKit.Admin.Blogs.BlogPostDto",
"typeSimple": "Volo.CmsKit.Admin.Blogs.BlogPostDto"
},
"allowAnonymous": false,
"implementFrom": "Volo.CmsKit.Admin.Blogs.IBlogPostAdminAppService"
},
"HasBlogPostWaitingForReviewAsync": {
"uniqueName": "HasBlogPostWaitingForReviewAsync",
"name": "HasBlogPostWaitingForReviewAsync",
"httpMethod": "GET",
"url": "api/cms-kit-admin/blogs/blog-posts/has-blogpost-waiting-for-review",
"supportedVersions": [],
"parametersOnMethod": [],
"parameters": [],
"returnValue": {
"type": "System.Boolean",
"typeSimple": "boolean"
},
"allowAnonymous": false,
"implementFrom": "Volo.CmsKit.Admin.Blogs.IBlogPostAdminAppService"
}
}
}

4
modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/ClientProxies/cms-kit-common-generate-proxy.json

@ -7,6 +7,8 @@
"Volo.CmsKit.MediaDescriptors.MediaDescriptorController": {
"controllerName": "MediaDescriptor",
"controllerGroupName": "MediaDescriptor",
"isRemoteService": true,
"apiVersion": null,
"type": "Volo.CmsKit.MediaDescriptors.MediaDescriptorController",
"interfaces": [
{
@ -56,6 +58,8 @@
"Volo.CmsKit.Blogs.BlogFeatureController": {
"controllerName": "BlogFeature",
"controllerGroupName": "BlogFeature",
"isRemoteService": true,
"apiVersion": null,
"type": "Volo.CmsKit.Blogs.BlogFeatureController",
"interfaces": [
{

16
modules/cms-kit/src/Volo.CmsKit.Public.Web/wwwroot/client-proxies/cms-kit-proxy.js

@ -188,7 +188,21 @@
volo.cmsKit.public.blogs.blogPostPublic.getList = function(blogSlug, input, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/cms-kit-public/blog-posts/' + blogSlug + '' + abp.utils.buildQueryString([{ name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }, { name: 'sorting', value: input.sorting }]) + '',
url: abp.appPath + 'api/cms-kit-public/blog-posts/' + blogSlug + '' + abp.utils.buildQueryString([{ name: 'authorId', value: input.authorId }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '',
type: 'GET'
}, ajaxParams));
};
volo.cmsKit.public.blogs.blogPostPublic.getAuthorsHasBlogPosts = function(input, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/cms-kit-public/blog-posts/authors' + abp.utils.buildQueryString([{ name: 'filter', value: input.filter }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '',
type: 'GET'
}, ajaxParams));
};
volo.cmsKit.public.blogs.blogPostPublic.getAuthorHasBlogPost = function(id, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/cms-kit-public/blog-posts/authors/' + id + '',
type: 'GET'
}, ajaxParams));
};

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj

@ -7,8 +7,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazorise.Bootstrap5" Version="1.0.2" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.0.2" />
<PackageReference Include="Blazorise.Bootstrap5" Version="1.0.4" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.0.4" />
<PackageReference Include="Serilog.AspNetCore" Version="4.1.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.5.0" />
</ItemGroup>

4
templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj

@ -7,8 +7,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazorise.Bootstrap5" Version="1.0.2" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.0.2" />
<PackageReference Include="Blazorise.Bootstrap5" Version="1.0.4" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.0.4" />
<PackageReference Include="Serilog.AspNetCore" Version="4.1.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.5.0" />
</ItemGroup>

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj

@ -13,8 +13,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazorise.Bootstrap5" Version="1.0.2" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.0.2" />
<PackageReference Include="Blazorise.Bootstrap5" Version="1.0.4" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.0.4" />
<PackageReference Include="Serilog.AspNetCore" Version="4.1.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.5.0" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="6.0.0" />

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj

@ -13,8 +13,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazorise.Bootstrap5" Version="1.0.2" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.0.2" />
<PackageReference Include="Blazorise.Bootstrap5" Version="1.0.4" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.0.4" />
<PackageReference Include="Serilog.AspNetCore" Version="4.1.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.5.0" />
</ItemGroup>

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj

@ -11,8 +11,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazorise.Bootstrap5" Version="1.0.2" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.0.2" />
<PackageReference Include="Blazorise.Bootstrap5" Version="1.0.4" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.0.4" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="6.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="6.0.0" />
</ItemGroup>

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/global.css

File diff suppressed because one or more lines are too long

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html

@ -8,7 +8,7 @@
<base href="/" />
<!--ABP:Styles-->
<link href="global.css?_v=637843235838075345" rel="stylesheet"/>
<link href="global.css?_v=637880399804275650" rel="stylesheet"/>
<link href="main.css" rel="stylesheet"/>
<!--/ABP:Styles-->
<link href="MyCompanyName.MyProjectName.Blazor.styles.css" rel="stylesheet"/>
@ -29,7 +29,7 @@
</div>
<!--ABP:Scripts-->
<script src="global.js?_v=637843235839470529"></script>
<script src="global.js?_v=637880399805903225"></script>
<!--/ABP:Scripts-->
<!-- <TEMPLATE-REMOVE IF-NOT='PWA'> -->

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/MyCompanyName.MyProjectName.Blazor.Host.csproj

@ -8,8 +8,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazorise.Bootstrap5" Version="1.0.2" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.0.2" />
<PackageReference Include="Blazorise.Bootstrap5" Version="1.0.4" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.0.4" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="6.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="6.0.0" />
</ItemGroup>

2
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/global.css

File diff suppressed because one or more lines are too long

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Host/wwwroot/index.html

@ -8,7 +8,7 @@
<base href="/" />
<!--ABP:Styles-->
<link href="global.css?_v=637843236075579789" rel="stylesheet"/>
<link href="global.css?_v=637880400068271060" rel="stylesheet"/>
<link href="main.css" rel="stylesheet"/>
<!--/ABP:Styles-->
</head>
@ -22,7 +22,7 @@
</div>
<!--ABP:Scripts-->
<script src="global.js?_v=637843236076989698"></script>
<script src="global.js?_v=637880400069726690"></script>
<!--/ABP:Scripts-->
</body>
</html>

4
templates/module/aspnet-core/host/MyCompanyName.MyProjectName.Blazor.Server.Host/MyCompanyName.MyProjectName.Blazor.Server.Host.csproj

@ -12,8 +12,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazorise.Bootstrap5" Version="1.0.2" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.0.2" />
<PackageReference Include="Blazorise.Bootstrap5" Version="1.0.4" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.0.4" />
<PackageReference Include="Serilog.AspNetCore" Version="4.1.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.5.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.0" />

Loading…
Cancel
Save