diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json index 4800ab9744..5bc1680708 100644 --- a/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json +++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json @@ -621,6 +621,7 @@ "DeleteImageConfirmationMessage": "Are you sure you want to delete the image for \"{0}\"?", "DeleteImageSuccessMessage": "Image successfully deleted", "DeleteImage": "Delete Image", - "NetTerms": "Terms (Days)" + "NetTerms": "Terms (Days)", + "AbpStudioName": "Abp Studio name" } } \ No newline at end of file diff --git a/docs/en/CLI.md b/docs/en/CLI.md index e0eede9241..cb16fb2897 100644 --- a/docs/en/CLI.md +++ b/docs/en/CLI.md @@ -131,7 +131,7 @@ For more samples, go to [ABP CLI Create Solution Samples](CLI-New-Command-Sample * `--database-provider` or `-d`: Specifies the database provider. Default provider is `ef`. Available providers: * `ef`: Entity Framework Core. * `mongodb`: MongoDB. - * `--theme`: Specifes the theme. Default theme is `leptonx-lite`. Available themes: + * `--theme`: Specifies the theme. Default theme is `leptonx-lite`. Available themes: * `leptonx-lite`: [LeptonX Lite Theme](Themes/LeptonXLite/AspNetCore.md). * `basic`: [Basic Theme](UI/AspNetCore/Basic-Theme.md). * **`module`**: [Module template](Startup-Templates/Module.md). Additional options: @@ -147,7 +147,7 @@ For more samples, go to [ABP CLI Create Solution Samples](CLI-New-Command-Sample * `--database-provider` or `-d`: Specifies the database provider. Default provider is `ef`. Available providers: * `ef`: Entity Framework Core. * `mongodb`: MongoDB. - * `--theme`: Specifes the theme. Default theme is `leptonx-lite`. Available themes: + * `--theme`: Specifies the theme. Default theme is `leptonx-lite`. Available themes: * `leptonx-lite`: [LeptonX Lite Theme](Themes/LeptonXLite/AspNetCore.md). * `basic`: [Basic Theme](UI/AspNetCore/Basic-Theme.md). * **`maui`**: .NET MAUI. A minimalist .NET MAUI application will be created if you specify this option. diff --git a/docs/en/Local-Event-Bus.md b/docs/en/Local-Event-Bus.md index 81c0c5a171..5c5d967f5f 100644 --- a/docs/en/Local-Event-Bus.md +++ b/docs/en/Local-Event-Bus.md @@ -235,6 +235,13 @@ Pre-build events are published when you save changes to the database; * For EF Core, they are published on `DbContext.SaveChanges`. * For MongoDB, they are published when you call repository's `InsertAsync`, `UpdateAsync` or `DeleteAsync` methods (since MongoDB has not a change tracking system). +#### AbpEntityChangeOptions + +There is a `PublishEntityUpdatedEventWhenNavigationChanges` option in the `AbpEntityChangeOptions` class with a default value of `true`. +If you set it to `false`, the `EntityUpdatedEventData` will not be published when a navigation property changes. + +> This option is only used for the EF Core. + ## See Also * [Distributed Event Bus](Distributed-Event-Bus.md) diff --git a/docs/zh-Hans/Local-Event-Bus.md b/docs/zh-Hans/Local-Event-Bus.md index 7a842a9e98..ebdb3f20a6 100644 --- a/docs/zh-Hans/Local-Event-Bus.md +++ b/docs/zh-Hans/Local-Event-Bus.md @@ -211,6 +211,14 @@ namespace AbpDemo * 对于 EF Core, 他们在 `DbContext.SaveChanges` 发布. * 对于 MongoDB, 在你调用仓储的 `InsertAsync`, `UpdateAsync` 或 `DeleteAsync` 方法发布(因为MongoDB没有更改追踪系统). + +#### AbpEntityChangeOptions + +`AbpEntityChangeOptions`类中有一个`PublishEntityUpdatedEventWhenNavigationChanges`选项,默认值为`true`。 +如果将其设置为`false`,则当导航属性更改时,将不会发布`EntityUpdatedEventData`事件。 + +> 此选项仅用于EF Core + ## 另请参阅 * [分布式事件总线](Distributed-Event-Bus.md) \ No newline at end of file diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/UiPageProgress.razor.cs b/framework/src/Volo.Abp.BlazoriseUI/Components/UiPageProgress.razor.cs index 8e494cba2f..ad0f996654 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/UiPageProgress.razor.cs +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/UiPageProgress.razor.cs @@ -7,7 +7,7 @@ namespace Volo.Abp.BlazoriseUI.Components; public partial class UiPageProgress : ComponentBase, IDisposable { - protected PageProgress PageProgressRef { get; set; } = default!; + protected PageProgress? PageProgressRef { get; set; } protected int? Percentage { get; set; } @@ -33,8 +33,11 @@ public partial class UiPageProgress : ComponentBase, IDisposable Visible = e.Percentage == null || (e.Percentage >= 0 && e.Percentage <= 100); Color = GetColor(e.Options.Type); - await PageProgressRef.SetValueAsync(e.Percentage); - + if(PageProgressRef != null) + { + await PageProgressRef.SetValueAsync(e.Percentage); + } + await InvokeAsync(StateHasChanged); } diff --git a/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo/Abp/Caching/StackExchangeRedis/AbpRedisCache.cs b/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo/Abp/Caching/StackExchangeRedis/AbpRedisCache.cs index 768a9ba171..8b59282cf1 100644 --- a/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo/Abp/Caching/StackExchangeRedis/AbpRedisCache.cs +++ b/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo/Abp/Caching/StackExchangeRedis/AbpRedisCache.cs @@ -76,14 +76,15 @@ public class AbpRedisCache : RedisCache, ICacheSupportsMultipleItems ConnectMethod.Invoke(this, Array.Empty()); } - protected virtual async Task ConnectAsync(CancellationToken token = default) + protected virtual async ValueTask ConnectAsync(CancellationToken token = default) { - if (GetRedisDatabase() != null) + var redisDatabase = GetRedisDatabase(); + if (redisDatabase != null) { - return; + return redisDatabase; } - await (Task)ConnectAsyncMethod.Invoke(this, new object[] { token })!; + return await (ValueTask)ConnectAsyncMethod.Invoke(this, new object[] { token })!; } public byte[]?[] GetMany( diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ModuleInfo.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ModuleInfo.cs index 95f41b8440..553851e789 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ModuleInfo.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ModuleInfo.cs @@ -4,6 +4,8 @@ public class ModuleInfo { public string Name { get; set; } + public string AbpStudioName { get; set; } + public string Namespace { get; set; } public string DocumentUrl { get; set; } diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/LoggedOut.js b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/LoggedOut.js index 61dead22b4..afac70c9f4 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/LoggedOut.js +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/LoggedOut.js @@ -1,6 +1,12 @@ -document.addEventListener('DOMContentLoaded', function (event) { +document.addEventListener("DOMContentLoaded", function (event) { setTimeout(function () { - window.clientName = document.getElementById("redirectButton").getAttribute("cname"); - window.location = document.getElementById('redirectButton').getAttribute('href'); - }, 3000); + var redirectButton = document.getElementById("redirectButton"); + + if(!redirectButton){ + return; + } + + redirectButton.getAttribute("cname"); + redirectButton.getAttribute("href"); + }, 3000) }); diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.html b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.html index 8054133a76..fa12d14965 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.html +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-form/extensible-form-prop.component.html @@ -161,7 +161,11 @@ @if (prop.displayTextResolver) { {{ prop.displayTextResolver(data) | abpLocalization }} } @else { - {{ prop.displayName | abpLocalization }} + @if (prop.isExtra) { + {{ '::' + prop.displayName | abpLocalization }} + } @else { + {{ prop.displayName | abpLocalization }} + } } {{ asterisk }} @if (prop.tooltip) { diff --git a/npm/ng-packs/packages/identity/src/lib/defaults/default-users-form-props.ts b/npm/ng-packs/packages/identity/src/lib/defaults/default-users-form-props.ts index 9f802c8283..6b0b03ccf0 100644 --- a/npm/ng-packs/packages/identity/src/lib/defaults/default-users-form-props.ts +++ b/npm/ng-packs/packages/identity/src/lib/defaults/default-users-form-props.ts @@ -1,5 +1,5 @@ import { Validators } from '@angular/forms'; -import { ConfigStateService, CurrentUserDto } from '@abp/ng.core'; +import { ConfigStateService } from '@abp/ng.core'; import { getPasswordValidators } from '@abp/ng.theme.shared'; import { ePropType, FormProp } from '@abp/ng.components/extensible'; import { IdentityUserDto } from '@abp/ng.identity/proxy';