diff --git a/docs/en/Road-Map.md b/docs/en/Road-Map.md index de0a45ffbb..e8d3002750 100644 --- a/docs/en/Road-Map.md +++ b/docs/en/Road-Map.md @@ -4,19 +4,16 @@ This document provides a road map, release schedule and planned features for the ## Next Versions -### v5.0 +### v5.1 -This version will focus on the following works: +In [5.1 milestone](https://github.com/abpframework/abp/milestone/60), we will be mostly working on the following topics: -* Upgrading to .NET 6.0 ([#9004](https://github.com/abpframework/abp/issues/9004)) -* Upgrading to Bootstrap 5.x ([#8922](https://github.com/abpframework/abp/issues/8922)) -* C# and JavaScript Static Client Proxy Generation ([#9864](https://github.com/abpframework/abp/issues/9864)) -* Revisit the microservice demo solution ([#8385](https://github.com/abpframework/abp/issues/8385)) -* Publishing distributed events as transactional ([#6126](https://github.com/abpframework/abp/issues/6126)) -* Performance optimizations; Enabling .NET Trimming, using source generators and reducing reflection, etc. -* Improving the abp.io platform and work more on contents and documents +* Maturing and documenting the [eShopOnAbp](https://github.com/abpframework/eShopOnAbp) project. +* 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. +* Flexing the UI-backend dependency for the Angular UI, so we can easily create UI-only modules (like UI themes) with its own localization and settings. +* Working on more examples and guides. -**Planned release date**: End of Quarter 4, 2021. See the [5.0 milestone](https://github.com/abpframework/abp/milestone/51) to track the progress. +The planned release data for v5.1 is **February, 2022**. See the [5.1 milestone](https://github.com/abpframework/abp/milestone/60) on GitHub for all the issues we are working on. ## Backlog Items @@ -24,10 +21,10 @@ 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. -* ([#497](https://github.com/abpframework/abp/issues/497)) API Versioning system: finalize & document -* ([#7221](https://github.com/abpframework/abp/issues/7221)) Alternative to IdentityServer4 -* ([#2183](https://github.com/abpframework/abp/issues/2183)) Dapr integration -* ([#236](https://github.com/abpframework/abp/issues/236)) Resource based authorization system +* [#497](https://github.com/abpframework/abp/issues/497) / API Versioning system: finalize & document +* [#7221](https://github.com/abpframework/abp/issues/7221) / Alternative to IdentityServer4 +* [#2183](https://github.com/abpframework/abp/issues/2183) / Dapr integration +* [#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 * [#57](https://github.com/abpframework/abp/issues/57) / Built-in CQRS infrastructure @@ -36,6 +33,7 @@ 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. diff --git a/docs/en/UI/Angular/List-Service.md b/docs/en/UI/Angular/List-Service.md index 03e2b5341a..fc3697bd35 100644 --- a/docs/en/UI/Angular/List-Service.md +++ b/docs/en/UI/Angular/List-Service.md @@ -201,26 +201,3 @@ You may use observables in combination with [AsyncPipe](https://angular.io/guide ``` - -## Breaking Change with ABP v3.0 - -We had to modify the `ListService` to make it work with `ngx-datatable`. Previously, the minimum value for `page` property was `1` and you could use it like this: - -```html - - -``` - -As of v3.0, with ngx-datatable, the `page` property has to be set as `0` for the initial page. Therefore, if you used `ListService` on your tables before and are going to keep `abp-table`, you need to make the following change: - -```html - - -``` - -**Important Note:** The `abp-table` is not removed, but is deprecated and will be removed in the future. Please consider switching to ngx-datatable. diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js index 55c604cf4a..4e83df796a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js @@ -81,6 +81,7 @@ var itemsPropertyName = $(this).data("autocompleteItemsProperty"); var filterParamName = $(this).data("autocompleteFilterParamName"); var selectedText = $(this).data("autocompleteSelectedItemName"); + var parentSelector = $(this).data("autocompleteParentSelector"); var name = $(this).attr("name"); var selectedTextInputName = name.substring(0, name.length - 1) + "_Text]"; var selectedTextInput = $('', { @@ -119,7 +120,8 @@ }; } }, - width: '100%' + width: '100%', + dropdownParent: parentSelector ? $(parentSelector) : $('body'), }); $select.on('select2:select', function (e) { selectedTextInput.val(e.params.data.text); diff --git a/framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProvider.cs b/framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProvider.cs index 9587aeffc3..8df6a7bdb4 100644 --- a/framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProvider.cs +++ b/framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProvider.cs @@ -75,13 +75,21 @@ namespace Volo.Abp.BlobStoring.Minio return null; } - Stream blobStream = null; - await client.GetObjectAsync(containerName, blobName, (stream) => + var memoryStream = new MemoryStream(); + await client.GetObjectAsync(containerName, blobName, (stream) => { - blobStream = stream; + if (stream != null) + { + stream.CopyTo(memoryStream); + memoryStream.Seek(0, SeekOrigin.Begin); + } + else + { + memoryStream = null; + } }); - return await TryCopyToMemoryStreamAsync(blobStream, args.CancellationToken); + return memoryStream; } protected virtual MinioClient GetMinioClient(BlobProviderArgs args) diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/CreateModal.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/CreateModal.cshtml index 37264289b4..bb4083a6b9 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/CreateModal.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/CreateModal.cshtml @@ -13,7 +13,7 @@ }
- + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml index 81ebc6625d..719b708566 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml @@ -13,7 +13,7 @@ } - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/createModal.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/createModal.js index 41e37a0118..2818f48523 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/createModal.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/createModal.js @@ -33,6 +33,7 @@ $(function () { $pageId.data('autocompleteValueProperty', 'id'); $pageId.data('autocompleteItemsProperty', 'items'); $pageId.data('autocompleteFilterParamName', 'filter'); + $pageId.data('autocompleteParentSelector', '#menu-create-modal'); abp.dom.initializers.initializeAutocompleteSelects($pageId); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/updateModal.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/updateModal.js index e219763fc0..d8ded357bb 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/updateModal.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/updateModal.js @@ -34,6 +34,7 @@ $(function () { $pageId.data('autocompleteValueProperty', 'id'); $pageId.data('autocompleteItemsProperty', 'items'); $pageId.data('autocompleteFilterParamName', 'filter'); + $pageId.data('autocompleteParentSelector', '#menu-update-modal'); abp.dom.initializers.initializeAutocompleteSelects($pageId); } diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/AbpIdentityResultException_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/AbpIdentityResultException_Tests.cs index 306ea16c91..4f86f97c08 100644 --- a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/AbpIdentityResultException_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/AbpIdentityResultException_Tests.cs @@ -29,8 +29,8 @@ namespace Volo.Abp.Identity { var localizeMessage = exception.LocalizeMessage(new LocalizationContext(ServiceProvider)); - localizeMessage.ShouldContain("Şifre en az 6 karakter uzunluğunda olmalı."); - localizeMessage.ShouldContain("Şifre en az bir sayı ya da harf olmayan karakter içermeli."); + localizeMessage.ShouldContain("Şifre uzunluğu 6 karakterden uzun olmalıdır."); + localizeMessage.ShouldContain("Parola en az bir alfasayısal olmayan karakter içermeli"); } using (CultureHelper.Use("en")) diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/Localization_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/Localization_Tests.cs index 2a3c870eb3..ed34e89a5d 100644 --- a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/Localization_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/Localization_Tests.cs @@ -2,6 +2,7 @@ using Shouldly; using Volo.Abp.Identity; using Volo.Abp.Identity.Localization; +using Volo.Abp.Localization; using Xunit; namespace Volo.Abp.TenantManagement @@ -18,8 +19,11 @@ namespace Volo.Abp.TenantManagement [Fact] public void Test() { - _stringLocalizer["PersonalSettingsSavedMessage"].Value - .ShouldBe("Your personal settings has been saved successfully."); + using (CultureHelper.Use("en")) + { + _stringLocalizer["PersonalSettingsSavedMessage"].Value + .ShouldBe("Your personal settings has been saved successfully."); + } } } } \ No newline at end of file