From 5341e3eee31daa2204596319f24b721f49d1a2f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Sun, 21 Nov 2021 22:42:34 +0300 Subject: [PATCH 01/26] add initial .editorconfig file --- .editorconfig | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++ .gitignore | 2 +- 2 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..ab62349382 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,136 @@ +# EditorConfig is awesome: https://EditorConfig.org +# Please feel free to update it (by considering the code style of ABP Team). +# top-most EditorConfig file +root = true + +[*.cs] + +#Namespace settings +csharp_style_namespace_declarations = file_scoped + +#Core editorconfig formatting - indentation + +#use tabs for indentation +indent_style = tabs + +#Formatting - indentation options + +#indent switch case contents. +csharp_indent_case_contents = true +#indent switch labels +csharp_indent_switch_labels = true + +#Formatting - new line options + +#place catch statements on a new line +csharp_new_line_before_catch = true +#place else statements on a new line +csharp_new_line_before_else = true +#require members of object intializers to be on separate lines +csharp_new_line_before_members_in_object_initializers = true +#require braces to be on a new line for object_collection_array_initializers, methods, control_blocks, types, and lambdas (also known as "Allman" style) +csharp_new_line_before_open_brace = object_collection_array_initializers, methods, control_blocks, types, lambdas + +#Formatting - organize using options + +#sort System.* using directives alphabetically, and place them before other usings +dotnet_sort_system_directives_first = true + +#Formatting - spacing options + +#require NO space between a cast and the value +csharp_space_after_cast = false +#require a space before the colon for bases or interfaces in a type declaration +csharp_space_after_colon_in_inheritance_clause = true +#require a space after a keyword in a control flow statement such as a for loop +csharp_space_after_keywords_in_control_flow_statements = true +#require a space before the colon for bases or interfaces in a type declaration +csharp_space_before_colon_in_inheritance_clause = true +#remove space within empty argument list parentheses +csharp_space_between_method_call_empty_parameter_list_parentheses = false +#remove space between method call name and opening parenthesis +csharp_space_between_method_call_name_and_opening_parenthesis = false +#do not place space characters after the opening parenthesis and before the closing parenthesis of a method call +csharp_space_between_method_call_parameter_list_parentheses = false +#remove space within empty parameter list parentheses for a method declaration +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +#place a space character after the opening parenthesis and before the closing parenthesis of a method declaration parameter list. +csharp_space_between_method_declaration_parameter_list_parentheses = false + +#Formatting - wrapping options + +#leave code block on single line +csharp_preserve_single_line_blocks = true + +#Style - Code block preferences + +#prefer curly braces even for one line of code +csharp_prefer_braces = true:suggestion + +#Style - expression bodied member options + +#prefer block bodies for constructors +csharp_style_expression_bodied_constructors = false:suggestion +#prefer block bodies for methods +csharp_style_expression_bodied_methods = false:suggestion +#prefer expression-bodied members for properties +csharp_style_expression_bodied_properties = true:suggestion + +#Style - expression level options + +#prefer out variables to be declared inline in the argument list of a method call when possible +csharp_style_inlined_variable_declaration = true:suggestion +#prefer the language keyword for member access expressions, instead of the type name, for types that have a keyword to represent them +dotnet_style_predefined_type_for_member_access = true:suggestion + +#Style - Expression-level preferences + +#prefer default over default(T) +csharp_prefer_simple_default_expression = true:suggestion +#prefer objects to be initialized using object initializers when possible +dotnet_style_object_initializer = true:suggestion +#prefer inferred tuple element names +dotnet_style_prefer_inferred_tuple_names = true:suggestion + +#Style - implicit and explicit types + +#prefer var over explicit type in all cases, unless overridden by another code style rule +csharp_style_var_elsewhere = true:suggestion +#prefer var is used to declare variables with built-in system types such as int +csharp_style_var_for_built_in_types = true:suggestion +#prefer var when the type is already mentioned on the right-hand side of a declaration expression +csharp_style_var_when_type_is_apparent = true:suggestion + +#Style - language keyword and framework type options + +#prefer the language keyword for local variables, method parameters, and class members, instead of the type name, for types that have a keyword to represent them +dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion + +#Style - Miscellaneous preferences + +#prefer local functions over anonymous functions +csharp_style_pattern_local_over_anonymous_function = true:suggestion + +#Style - modifier options + +#prefer accessibility modifiers to be declared except for public interface members. This will currently not differ from always and will act as future proofing for if C# adds default interface methods. +dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion + +#Style - Modifier preferences + +#when this rule is set to a list of modifiers, prefer the specified ordering. +csharp_preferred_modifier_order = public,protected,private,virtual,async,readonly,static,override,abstract:suggestion + +#Style - Pattern matching + +#prefer pattern matching instead of is expression with type casts +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion + +#Style - qualification options + +#prefer fields not to be prefaced with this. or Me. in Visual Basic +dotnet_style_qualification_for_field = false:suggestion +#prefer methods not to be prefaced with this. or Me. in Visual Basic +dotnet_style_qualification_for_method = false:suggestion +#prefer properties not to be prefaced with this. or Me. in Visual Basic +dotnet_style_qualification_for_property = false:suggestion diff --git a/.gitignore b/.gitignore index d3968773a0..786eba6270 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ *.user *.userosscache *.sln.docstates -*.editorconfig + # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs From 417123b1a913bc24c0dc0b205cc30842dcdb9782 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Sun, 21 Nov 2021 22:49:21 +0300 Subject: [PATCH 02/26] Update .editorconfig --- .editorconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/.editorconfig b/.editorconfig index ab62349382..9805011759 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,6 +7,7 @@ root = true #Namespace settings csharp_style_namespace_declarations = file_scoped +dotnet_diagnostic.IDE0161.severity = warning #Core editorconfig formatting - indentation From 9c3b34067524b852c9eaf497728409d6f5e08ec4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Sun, 21 Nov 2021 22:53:17 +0300 Subject: [PATCH 03/26] convert file-scoped namespacing for framework --- .../AbpApiVersioningAbstractionsModule.cs | 11 +- .../Abp/ApiVersioning/IRequestedApiVersion.cs | 9 +- .../ApiVersioning/NullRequestedApiVersion.cs | 19 +- ...onBuilderAbpJwtTokenMiddlewareExtension.cs | 25 +- ...AspNetCoreAuthenticationJwtBearerModule.cs | 9 +- .../AbpClaimActionCollectionExtensions.cs | 85 +- .../AbpAspNetCoreAuthenticationOAuthModule.cs | 9 +- .../OAuth/Claims/MultipleClaimAction.cs | 71 +- .../Claims/RemoveDuplicateClaimAction.cs | 41 +- .../AbpOpenIdConnectExtensions.cs | 81 +- ...etCoreAuthenticationOpenIdConnectModule.cs | 13 +- ...AspNetCoreComponentsServerThemingModule.cs | 53 +- .../Bundling/BlazorGlobalBundles.cs | 21 +- .../Bundling/BlazorGlobalScriptContributor.cs | 13 +- .../Bundling/BlazorGlobalStyleContributor.cs | 25 +- .../AbpAspNetCoreComponentsServerModule.cs | 79 +- ...plicationConfigurationCacheResetService.cs | 37 +- .../BlazorServerLookupApiRequestService.cs | 119 +- ...AbpAspNetCoreComponentsWebThemingModule.cs | 19 +- .../Layout/PageHeader.razor.cs | 95 +- .../PageToolbars/IPageToolbarContributor.cs | 9 +- .../PageToolbars/IPageToolbarManager.cs | 9 +- .../PageToolbars/PageToolbar.cs | 15 +- .../PageToolbarContributionContext.cs | 25 +- .../PageToolbars/PageToolbarContributor.cs | 9 +- .../PageToolbarContributorList.cs | 7 +- .../PageToolbars/PageToolbarDictionary.cs | 7 +- .../PageToolbars/PageToolbarExtensions.cs | 97 +- .../PageToolbars/PageToolbarItem.cs | 33 +- .../PageToolbars/PageToolbarItemList.cs | 7 +- .../PageToolbars/PageToolbarManager.cs | 39 +- .../SimplePageToolbarContributor.cs | 63 +- .../Routing/AbpRouterOptions.cs | 17 +- .../Routing/RouterAssemblyList.cs | 11 +- .../Toolbars/AbpToolbarOptions.cs | 17 +- .../Toolbars/IToolbarConfigurationContext.cs | 27 +- .../Toolbars/IToolbarContributor.cs | 11 +- .../Toolbars/IToolbarManager.cs | 9 +- .../Toolbars/StandardToolbars.cs | 11 +- .../Toolbars/Toolbar.cs | 19 +- .../Toolbars/ToolbarConfigurationContext.cs | 65 +- .../Toolbars/ToolbarItem.cs | 30 +- .../Toolbars/ToolbarManager.cs | 43 +- ...AbpAspNetCoreApplicationCreationOptions.cs | 17 +- .../Web/AbpAspNetCoreComponentsWebModule.cs | 25 +- .../Web/AbpBlazorClientHttpMessageHandler.cs | 123 +- .../Web/AbpBlazorMessageLocalizerHelper.cs | 57 +- .../Components/Web/AbpUtilsService.cs | 87 +- .../Components/Web/Alerts/AlertManager.cs | 17 +- ...plicationConfigurationCacheResetService.cs | 11 +- ...plicationConfigurationCacheResetService.cs | 13 +- .../Components/Web/CookieOptions.cs | 15 +- .../Components/Web/CookieService.cs | 43 +- .../Web/DefaultServerUrlProvider.cs | 13 +- ...nentsClientScopeServiceProviderAccessor.cs | 13 +- .../AbpExceptionHandlingLogger.cs | 87 +- .../AbpExceptionHandlingLoggerProvider.cs | 43 +- .../UserExceptionInformer.cs | 91 +- .../EntityActions/EntityAction.cs | 25 +- .../EntityActions/EntityActionDictionary.cs | 13 +- .../Extensibility/ILookupApiRequestService.cs | 11 +- .../Extensibility/TableColumns/TableColumn.cs | 37 +- .../TableColumns/TableColumnDictionary.cs | 13 +- .../Components/Web/IAbpUtilsService.cs | 21 +- .../Components/Web/ICookieService.cs | 15 +- .../Components/Web/IServerUrlProvider.cs | 11 +- .../Web/Messages/SimpleUiMessageService.cs | 65 +- .../Web/Security/AbpComponentsClaimsCache.cs | 49 +- ...tCoreComponentsWebAssemblyThemingModule.cs | 15 +- .../ComponentsComponentsBundleContributor.cs | 43 +- .../AbpWebAssemblyHostBuilderExtensions.cs | 105 +- ...pWebAssemblyServiceCollectionExtensions.cs | 15 +- ...bpAspNetCoreComponentsWebAssemblyModule.cs | 39 +- ...bpWebAssemblyApplicationCreationOptions.cs | 23 +- .../ApplicationConfigurationCache.cs | 23 +- .../WebAssemblyLookupApiRequestService.cs | 83 +- ...blyCachedApplicationConfigurationClient.cs | 91 +- .../WebAssemblyCurrentPrincipalAccessor.cs | 25 +- .../WebAssemblyCurrentTenantAccessor.cs | 11 +- .../WebAssemblyServerUrlProvider.cs | 37 +- .../AbpAspNetCoreComponentsModule.cs | 23 +- .../AspNetCore/Components/AbpComponentBase.cs | 231 +- .../AspNetCore/Components/Alerts/AlertList.cs | 43 +- .../Components/Alerts/AlertMessage.cs | 40 +- .../AspNetCore/Components/Alerts/AlertType.cs | 25 +- .../Components/Alerts/IAlertManager.cs | 9 +- .../AbpWebAssemblyConventionalRegistrar.cs | 27 +- .../ServiceProviderComponentActivator.cs | 37 +- .../IUserExceptionInformer.cs | 13 +- .../NullUserExceptionInformer.cs | 21 +- .../UserExceptionInformerContext.cs | 17 +- .../Components/Messages/IUiMessageService.cs | 17 +- .../Components/Messages/UiMessageEventArgs.cs | 45 +- .../Components/Messages/UiMessageOptions.cs | 99 +- .../Components/Messages/UiMessageType.cs | 23 +- .../Notifications/IUiNotificationService.cs | 21 +- .../NullUiNotificationService.cs | 37 +- .../Notifications/UiNotificationEventArgs.cs | 27 +- .../Notifications/UiNotificationOptions.cs | 25 +- .../Notifications/UiNotificationType.cs | 15 +- .../Progression/IUiPageProgressService.cs | 29 +- .../Progression/NullUiPageProgressService.cs | 15 +- .../Progression/UiPageProgressEventArgs.cs | 19 +- .../Progression/UiPageProgressOptions.cs | 17 +- .../Progression/UiPageProgressType.cs | 17 +- ...ultiTenancyApplicationBuilderExtensions.cs | 13 +- .../AbpAspNetCoreMultiTenancyModule.cs | 31 +- .../AbpAspNetCoreMultiTenancyOptions.cs | 41 +- .../AbpMultiTenancyCookieHelper.cs | 47 +- .../CookieTenantResolveContributor.cs | 17 +- .../DomainTenantResolveContributor.cs | 43 +- .../FormTenantResolveContributor.cs | 25 +- .../HeaderTenantResolveContributor.cs | 55 +- .../HttpContextTenantResolveResultAccessor.cs | 39 +- .../HttpTenantResolveContributorBase.cs | 51 +- .../MultiTenancy/MultiTenancyMiddleware.cs | 169 +- .../QueryStringTenantResolveContributor.cs | 37 +- .../RouteTenantResolveContributor.cs | 19 +- .../TenantResolveContextExtensions.cs | 11 +- .../AbpMultiTenancyOptionsExtensions.cs | 19 +- .../AbpApplicationConfigurationClientProxy.cs | 7 +- .../ClientProxies/AbpTenantClientProxy.cs | 7 +- .../AbpAspNetCoreMvcClientCommonModule.cs | 47 +- .../ICachedApplicationConfigurationClient.cs | 11 +- .../Mvc/Client/RemoteFeatureChecker.cs | 25 +- .../Mvc/Client/RemoteLanguageProvider.cs | 25 +- .../Client/RemoteLocalizationContributor.cs | 89 +- .../Mvc/Client/RemotePermissionChecker.cs | 65 +- .../Mvc/Client/RemoteSettingProvider.cs | 51 +- .../Client/AbpAspNetCoreMvcClientModule.cs | 15 +- ...MvcCachedApplicationConfigurationClient.cs | 119 +- ...hedApplicationConfigurationClientHelper.cs | 13 +- ...tionConfigurationCacheResetEventHandler.cs | 41 +- .../Mvc/Client/MvcRemoteTenantStore.cs | 225 +- .../Mvc/AbpAspNetCoreMvcContractsModule.cs | 13 +- .../ApplicationAuthConfigurationDto.cs | 23 +- .../ApplicationConfigurationDto.cs | 29 +- .../ApplicationFeatureConfigurationDto.cs | 19 +- ...ApplicationLocalizationConfigurationDto.cs | 31 +- .../ApplicationSettingConfigurationDto.cs | 13 +- .../Mvc/ApplicationConfigurations/ClockDto.cs | 9 +- ...icationConfigurationCacheResetEventData.cs | 13 +- .../CurrentCultureDto.cs | 27 +- .../CurrentUserDto.cs | 35 +- .../DateTimeFormatDto.cs | 23 +- .../IAbpApplicationConfigurationAppService.cs | 11 +- .../ObjectExtending/EntityExtensionDto.cs | 15 +- .../ObjectExtending/ExtensionEnumDto.cs | 15 +- .../ObjectExtending/ExtensionEnumFieldDto.cs | 15 +- .../ExtensionPropertyApiCreateDto.cs | 19 +- .../ExtensionPropertyApiDto.cs | 31 +- .../ExtensionPropertyApiGetDto.cs | 19 +- .../ExtensionPropertyApiUpdateDto.cs | 19 +- .../ExtensionPropertyAttributeDto.cs | 15 +- .../ObjectExtending/ExtensionPropertyDto.cs | 33 +- .../ObjectExtending/ExtensionPropertyUiDto.cs | 19 +- .../ExtensionPropertyUiFormDto.cs | 13 +- .../ExtensionPropertyUiLookupDto.cs | 21 +- .../ExtensionPropertyUiTableDto.cs | 13 +- .../ObjectExtending/LocalizableStringDto.cs | 27 +- .../ObjectExtending/ModuleExtensionDto.cs | 15 +- .../ObjectExtending/ObjectExtensionsDto.cs | 17 +- .../ApplicationConfigurations/TimingDto.cs | 35 +- .../Mvc/MultiTenancy/CurrentTenantDto.cs | 13 +- .../Mvc/MultiTenancy/FindTenantResultDto.cs | 17 +- .../Mvc/MultiTenancy/IAbpTenantAppService.cs | 13 +- .../Mvc/MultiTenancy/MultiTenancyInfoDto.cs | 9 +- .../AbpAspNetCoreMvcUiBootstrapModule.cs | 17 +- .../AbpTagHelperAttributeListExtensions.cs | 74 +- .../TagHelpers/AbpTagHelper.cs | 65 +- .../TagHelpers/AbpTagHelperLocalizer.cs | 67 +- .../TagHelpers/AbpTagHelperService.cs | 77 +- .../Alert/AbpAlertHeaderTagHelper.cs | 23 +- .../Alert/AbpAlertHeaderTagHelperService.cs | 13 +- .../TagHelpers/Alert/AbpAlertLinkTagHelper.cs | 13 +- .../Alert/AbpAlertLinkTagHelperService.cs | 15 +- .../TagHelpers/Alert/AbpAlertTagHelper.cs | 17 +- .../Alert/AbpAlertTagHelperService.cs | 65 +- .../TagHelpers/Badge/AbpBadgeTagHelper.cs | 30 +- .../Badge/AbpBadgeTagHelperService.cs | 49 +- .../TagHelpers/Badge/AbpBadgeType.cs | 29 +- .../AbpBlockquoteFooterTagHelper.cs | 13 +- .../AbpBlockquoteFooterTagHelperService.cs | 15 +- .../AbpBlockquoteParagraphTagHelper.cs | 13 +- .../AbpBlockquoteParagraphTagHelperService.cs | 15 +- .../Blockquote/AbpBlockquoteTagHelper.cs | 13 +- .../AbpBlockquoteTagHelperService.cs | 13 +- .../TagHelpers/Border/AbpBorderTagHelper.cs | 17 +- .../Border/AbpBorderTagHelperService.cs | 145 +- .../TagHelpers/Border/AbpBorderType.cs | 209 +- .../TagHelpers/Border/AbpRoundedTagHelper.cs | 17 +- .../Border/AbpRoundedTagHelperService.cs | 23 +- .../TagHelpers/Border/AbpRoundedType.cs | 21 +- .../Breadcrumb/AbpBreadcrumbItemTagHelper.cs | 19 +- .../AbpBreadcrumbItemTagHelperService.cs | 67 +- .../Breadcrumb/AbpBreadcrumbTagHelper.cs | 11 +- .../AbpBreadcrumbTagHelperService.cs | 87 +- .../TagHelpers/Breadcrumb/BreadcrumbItem.cs | 11 +- .../Button/AbpButtonGroupDirection.cs | 11 +- .../TagHelpers/Button/AbpButtonGroupSize.cs | 15 +- .../Button/AbpButtonGroupTagHelper.cs | 17 +- .../Button/AbpButtonGroupTagHelperService.cs | 81 +- .../TagHelpers/Button/AbpButtonSize.cs | 31 +- .../Button/AbpButtonSizeExtensions.cs | 39 +- .../TagHelpers/Button/AbpButtonTagHelper.cs | 31 +- .../Button/AbpButtonTagHelperService.cs | 79 +- .../Button/AbpButtonTagHelperServiceBase.cs | 113 +- .../Button/AbpButtonToolbarTagHelper.cs | 11 +- .../AbpButtonToolbarTagHelperService.cs | 15 +- .../TagHelpers/Button/AbpButtonType.cs | 45 +- .../Button/AbpLinkButtonTagHelper.cs | 31 +- .../Button/AbpLinkButtonTagHelperService.cs | 39 +- .../TagHelpers/Button/IButtonTagHelperBase.cs | 21 +- .../Card/AbpCardBackgroundTagHelper.cs | 23 +- .../Card/AbpCardBackgroundTagHelperService.cs | 27 +- .../TagHelpers/Card/AbpCardBackgroundType.cs | 25 +- .../TagHelpers/Card/AbpCardBodyTagHelper.cs | 19 +- .../Card/AbpCardBodyTagHelperService.cs | 49 +- .../TagHelpers/Card/AbpCardBorderColorType.cs | 25 +- .../TagHelpers/Card/AbpCardFooterTagHelper.cs | 11 +- .../Card/AbpCardFooterTagHelperService.cs | 15 +- .../TagHelpers/Card/AbpCardHeaderTagHelper.cs | 13 +- .../Card/AbpCardHeaderTagHelperService.cs | 15 +- .../TagHelpers/Card/AbpCardImagePosition.cs | 15 +- .../Card/AbpCardImagePositionExtensions.cs | 29 +- .../TagHelpers/Card/AbpCardImageTagHelper.cs | 23 +- .../Card/AbpCardImageTagHelperService.cs | 15 +- .../TagHelpers/Card/AbpCardLinkTagHelper.cs | 17 +- .../Card/AbpCardLinkTagHelperService.cs | 15 +- .../Card/AbpCardSubtitleTagHelper.cs | 19 +- .../Card/AbpCardSubtitleTagHelperService.cs | 15 +- .../TagHelpers/Card/AbpCardTagHelper.cs | 15 +- .../Card/AbpCardTagHelperService.cs | 31 +- .../Card/AbpCardTextColorTagHelper.cs | 23 +- .../Card/AbpCardTextColorTagHelperService.cs | 27 +- .../TagHelpers/Card/AbpCardTextColorType.cs | 27 +- .../TagHelpers/Card/AbpCardTextTagHelper.cs | 13 +- .../Card/AbpCardTextTagHelperService.cs | 15 +- .../TagHelpers/Card/AbpCardTitleTagHelper.cs | 17 +- .../Card/AbpCardTitleTagHelperService.cs | 15 +- .../Carousel/AbpCarouselItemTagHelper.cs | 23 +- .../AbpCarouselItemTagHelperService.cs | 107 +- .../Carousel/AbpCarouselTagHelper.cs | 21 +- .../Carousel/AbpCarouselTagHelperService.cs | 259 +- .../TagHelpers/Carousel/CarouselItem.cs | 19 +- .../Collapse/AbpAccordionItemTagHelper.cs | 19 +- .../AbpAccordionItemTagHelperService.cs | 119 +- .../Collapse/AbpAccordionTagHelper.cs | 15 +- .../Collapse/AbpAccordionTagHelperService.cs | 77 +- .../Collapse/AbpCollapseBodyTagHelper.cs | 19 +- .../AbpCollapseBodyTagHelperService.cs | 35 +- .../Collapse/AbpCollapseButtonTagHelper.cs | 20 +- .../AbpCollapseButtonTagHelperService.cs | 67 +- .../Dropdown/AbpDropdownButtonTagHelper.cs | 29 +- .../AbpDropdownButtonTagHelperService.cs | 185 +- .../Dropdown/AbpDropdownDividerTagHelper.cs | 11 +- .../AbpDropdownDividerTagHelperService.cs | 17 +- .../Dropdown/AbpDropdownHeaderTagHelper.cs | 11 +- .../AbpDropdownHeaderTagHelperService.cs | 17 +- .../Dropdown/AbpDropdownItemTagHelper.cs | 17 +- .../AbpDropdownItemTagHelperService.cs | 41 +- .../Dropdown/AbpDropdownItemTextTagHelper.cs | 11 +- .../AbpDropdownItemTextTagHelperService.cs | 15 +- .../Dropdown/AbpDropdownMenuTagHelper.cs | 15 +- .../AbpDropdownMenuTagHelperService.cs | 37 +- .../Dropdown/AbpDropdownTagHelper.cs | 15 +- .../Dropdown/AbpDropdownTagHelperService.cs | 51 +- .../TagHelpers/Dropdown/DropdownAlign.cs | 13 +- .../TagHelpers/Dropdown/DropdownDirection.cs | 17 +- .../TagHelpers/Dropdown/DropdownStyle.cs | 13 +- .../Extensions/ModelExplorerExtensions.cs | 19 +- .../TagHelperAttributeExtensions.cs | 29 +- .../Extensions/TagHelperContextExtensions.cs | 17 +- .../Extensions/TagHelperExtensions.cs | 67 +- .../Extensions/TagHelperOutputExtensions.cs | 15 +- .../Figure/AbpFigureCaptionTagHelper.cs | 13 +- .../AbpFigureCaptionTagHelperService.cs | 15 +- .../Figure/AbpFigureImageTagHelper.cs | 13 +- .../Figure/AbpFigureImageTagHelperService.cs | 13 +- .../TagHelpers/Figure/AbpFigureTagHelper.cs | 11 +- .../Figure/AbpFigureTagHelperService.cs | 15 +- .../TagHelpers/FontIconType.cs | 13 +- .../Form/AbpDynamicformTagHelper.cs | 81 +- .../Form/AbpDynamicformTagHelperService.cs | 449 ++-- .../Form/AbpFormContentTagHelper.cs | 13 +- .../Form/AbpFormContentTagHelperService.cs | 19 +- .../TagHelpers/Form/AbpFormControlSize.cs | 15 +- .../TagHelpers/Form/AbpIdNameTagHelper.cs | 55 +- .../TagHelpers/Form/AbpInputTagHelper.cs | 53 +- .../Form/AbpInputTagHelperService.cs | 657 +++--- .../TagHelpers/Form/AbpRadioButton.cs | 13 +- .../TagHelpers/Form/AbpRadioInputTagHelper.cs | 25 +- .../Form/AbpRadioInputTagHelperService.cs | 267 ++- .../TagHelpers/Form/AbpReadonlyInputType.cs | 13 +- .../TagHelpers/Form/AbpSelectTagHelper.cs | 47 +- .../Form/AbpSelectTagHelperService.cs | 575 +++-- .../Form/AbpValidationAttributeTagHelper.cs | 15 +- .../AbpValidationAttributeTagHelperService.cs | 13 +- .../TagHelpers/Form/DisabledInput.cs | 11 +- .../TagHelpers/Form/DisplayOrder.cs | 19 +- .../TagHelpers/Form/DynamicFormIgnore.cs | 9 +- .../TagHelpers/Form/FormControlSize.cs | 17 +- .../TagHelpers/Form/FormGroupItem.cs | 15 +- .../TagHelpers/Form/InputInfoText.cs | 17 +- .../TagHelpers/Form/Placeholder.cs | 17 +- .../TagHelpers/Form/ReadOnlyInput.cs | 23 +- .../TagHelpers/Form/SelectItems.cs | 43 +- .../TagHelpers/Form/TextArea.cs | 17 +- .../Grid/AbpColumnBreakerTagHelper.cs | 11 +- .../Grid/AbpColumnBreakerTagHelperService.cs | 17 +- .../TagHelpers/Grid/AbpColumnTagHelper.cs | 41 +- .../Grid/AbpColumnTagHelperService.cs | 177 +- .../TagHelpers/Grid/AbpContainerTagHelper.cs | 11 +- .../Grid/AbpContainerTagHelperService.cs | 15 +- .../TagHelpers/Grid/AbpRowTagHelper.cs | 23 +- .../TagHelpers/Grid/AbpRowTagHelperService.cs | 75 +- .../TagHelpers/Grid/ColumnOrder.cs | 39 +- .../TagHelpers/Grid/ColumnSize.cs | 39 +- .../TagHelpers/Grid/HorizontalAlign.cs | 21 +- .../TagHelpers/Grid/VerticalAlign.cs | 17 +- .../TagHelpers/HtmlHeadingType.cs | 21 +- .../TagHelpers/HtmlHeadingTypeExtensions.cs | 41 +- .../TagHelpers/IAbpTagHelperLocalizer.cs | 13 +- .../TagHelpers/IAbpTagHelperService.cs | 21 +- .../ListGroup/AbpListGroupItemTagHelper.cs | 23 +- .../AbpListGroupItemTagHelperService.cs | 89 +- .../ListGroup/AbpListGroupTagHelper.cs | 15 +- .../ListGroup/AbpListGroupTagHelperService.cs | 21 +- .../ListGroup/AbpListItemTagType.cs | 15 +- .../TagHelpers/ListGroup/AbpListItemType.cs | 29 +- .../TagHelpers/Modal/AbpModalBodyTagHelper.cs | 13 +- .../Modal/AbpModalBodyTagHelperService.cs | 15 +- .../TagHelpers/Modal/AbpModalButtons.cs | 19 +- .../Modal/AbpModalFooterTagHelper.cs | 27 +- .../Modal/AbpModalFooterTagHelperService.cs | 177 +- .../Modal/AbpModalHeaderTagHelper.cs | 17 +- .../Modal/AbpModalHeaderTagHelperService.cs | 71 +- .../TagHelpers/Modal/AbpModalSize.cs | 17 +- .../Modal/AbpModalSizeExtensions.cs | 33 +- .../TagHelpers/Modal/AbpModalTagHelper.cs | 21 +- .../Modal/AbpModalTagHelperService.cs | 159 +- .../TagHelpers/Modal/ButtonsAlign.cs | 19 +- .../TagHelpers/Nav/AbpNavAlign.cs | 17 +- .../TagHelpers/Nav/AbpNavBarTagHelper.cs | 17 +- .../Nav/AbpNavBarTagHelperService.cs | 59 +- .../TagHelpers/Nav/AbpNavItemTagHelper.cs | 15 +- .../Nav/AbpNavItemTagHelperService.cs | 27 +- .../TagHelpers/Nav/AbpNavLinkTagHelper.cs | 21 +- .../Nav/AbpNavLinkTagHelperService.cs | 51 +- .../TagHelpers/Nav/AbpNavTagHelper.cs | 17 +- .../TagHelpers/Nav/AbpNavTagHelperService.cs | 67 +- .../TagHelpers/Nav/AbpNavbarBrandTagHelper.cs | 15 +- .../Nav/AbpNavbarBrandTagHelperService.cs | 15 +- .../TagHelpers/Nav/AbpNavbarNavTagHelper.cs | 11 +- .../Nav/AbpNavbarNavTagHelperService.cs | 15 +- .../TagHelpers/Nav/AbpNavbarSize.cs | 19 +- .../TagHelpers/Nav/AbpNavbarStyle.cs | 51 +- .../TagHelpers/Nav/AbpNavbarTextTagHelper.cs | 13 +- .../Nav/AbpNavbarTextTagHelperService.cs | 15 +- .../Nav/AbpNavbarToggleTagHelper.cs | 15 +- .../Nav/AbpNavbarToggleTagHelperService.cs | 75 +- .../TagHelpers/Nav/NavItem.cs | 13 +- .../TagHelpers/Nav/NavStyle.cs | 17 +- .../Pagination/AbpPaginationTagHelper.cs | 19 +- .../AbpPaginationTagHelperService.cs | 281 ++- .../TagHelpers/Pagination/PageItem.cs | 65 +- .../TagHelpers/Pagination/PagerModel.cs | 189 +- .../TagHelpers/Popover/AbpPopoverTagHelper.cs | 49 +- .../Popover/AbpPopoverTagHelperService.cs | 239 +- .../TagHelpers/Popover/PopoverDirectory.cs | 19 +- .../ProgressBar/AbpProgressBarTagHelper.cs | 29 +- .../AbpProgressBarTagHelperService.cs | 97 +- .../ProgressBar/AbpProgressBarType.cs | 27 +- .../ProgressBar/AbpProgressGroupTagHelper.cs | 11 +- .../AbpProgressGroupTagHelperService.cs | 15 +- .../TagHelpers/Tab/AbpTabDropdownTagHelper.cs | 19 +- .../Tab/AbpTabDropdownTagHelperService.cs | 79 +- .../TagHelpers/Tab/AbpTabLinkTagHelper.cs | 23 +- .../Tab/AbpTabLinkTagHelperService.cs | 83 +- .../TagHelpers/Tab/AbpTabTagHelper.cs | 23 +- .../TagHelpers/Tab/AbpTabTagHelperService.cs | 196 +- .../TagHelpers/Tab/AbpTabsTagHelper.cs | 19 +- .../TagHelpers/Tab/AbpTabsTagHelperService.cs | 315 ++- .../TagHelpers/Tab/TabItem.cs | 37 +- .../TagHelpers/Tab/TabStyle.cs | 15 +- .../TagHelpers/Table/AbpTableBorderStyle.cs | 15 +- .../Table/AbpTableHeadScopeTagHelper.cs | 17 +- .../AbpTableHeadScopeTagHelperService.cs | 37 +- .../Table/AbpTableHeaderTagHelper.cs | 17 +- .../Table/AbpTableHeaderTagHelperService.cs | 37 +- .../TagHelpers/Table/AbpTableHeaderTheme.cs | 15 +- .../TagHelpers/Table/AbpTableStyle.cs | 29 +- .../Table/AbpTableStyleTagHelper.cs | 19 +- .../Table/AbpTableStyleTagHelperService.cs | 23 +- .../TagHelpers/Table/AbpTableTagHelper.cs | 33 +- .../Table/AbpTableTagHelperService.cs | 145 +- .../TagHelpers/Table/AbpThScope.cs | 15 +- .../TagHelpers/TagBuilderExtensions.cs | 23 +- .../TagHelpers/Tooltip/AbpTooltipTagHelper.cs | 45 +- .../Tooltip/AbpTooltipTagHelperService.cs | 145 +- .../TagHelpers/Tooltip/TooltipDirectory.cs | 19 +- .../TagHelpers/Utils/AbpAutoFocusTagHelper.cs | 23 +- .../TagHelpers/Utils/AbpIfTagHelper.cs | 21 +- ...pNetCoreMvcUiBundlingAbstractionsModule.cs | 9 +- .../Mvc/UI/Bundling/AbpBundlingOptions.cs | 55 +- .../Mvc/UI/Bundling/BundleConfiguration.cs | 25 +- .../Bundling/BundleConfigurationCollection.cs | 255 +- .../UI/Bundling/BundleConfigurationContext.cs | 27 +- .../Bundling/BundleConfigurationExtensions.cs | 59 +- .../Mvc/UI/Bundling/BundleContributor.cs | 69 +- .../Bundling/BundleContributorCollection.cs | 197 +- .../BundleContributorCollectionExtensions.cs | 13 +- .../Mvc/UI/Bundling/BundleFileContributor.cs | 27 +- .../Mvc/UI/Bundling/BundlingMode.cs | 45 +- .../Bundling/IBundleConfigurationContext.cs | 11 +- .../Mvc/UI/Bundling/IBundleContributor.cs | 17 +- .../AbpAspNetCoreMvcUiBundlingModule.cs | 17 +- .../Bundling/AbpBundleContributorOptions.cs | 39 +- .../AspNetCore/Mvc/UI/Bundling/BundleCache.cs | 33 +- .../Mvc/UI/Bundling/BundleCacheItem.cs | 21 +- .../Mvc/UI/Bundling/BundleManager.cs | 363 ++- .../Mvc/UI/Bundling/BundleResult.cs | 17 +- .../AspNetCore/Mvc/UI/Bundling/BundlerBase.cs | 229 +- .../Mvc/UI/Bundling/BundlerContext.cs | 25 +- .../Mvc/UI/Bundling/IBundleCache.cs | 13 +- .../Mvc/UI/Bundling/IBundleManager.cs | 13 +- .../AspNetCore/Mvc/UI/Bundling/IBundler.cs | 13 +- .../Mvc/UI/Bundling/IBundlerContext.cs | 15 +- .../Mvc/UI/Bundling/Scripts/IScriptBundler.cs | 9 +- .../Mvc/UI/Bundling/Scripts/ScriptBundler.cs | 37 +- .../Mvc/UI/Bundling/Styles/CssRelativePath.cs | 103 +- .../Mvc/UI/Bundling/Styles/IStyleBundler.cs | 9 +- .../Mvc/UI/Bundling/Styles/StyleBundler.cs | 57 +- .../TagHelpers/AbpBundleItemTagHelper.cs | 85 +- .../AbpBundleItemTagHelperService.cs | 55 +- .../Bundling/TagHelpers/AbpBundleTagHelper.cs | 29 +- .../TagHelpers/AbpBundleTagHelperService.cs | 55 +- .../TagHelpers/AbpScriptBundleTagHelper.cs | 19 +- .../AbpScriptBundleTagHelperService.cs | 11 +- .../Bundling/TagHelpers/AbpScriptTagHelper.cs | 27 +- .../TagHelpers/AbpScriptTagHelperService.cs | 11 +- .../TagHelpers/AbpStyleBundleTagHelper.cs | 19 +- .../AbpStyleBundleTagHelperService.cs | 11 +- .../Bundling/TagHelpers/AbpStyleTagHelper.cs | 27 +- .../TagHelpers/AbpStyleTagHelperService.cs | 11 +- .../Bundling/TagHelpers/AbpTagHelperConsts.cs | 11 +- .../TagHelpers/AbpTagHelperResourceService.cs | 117 +- .../TagHelpers/AbpTagHelperScriptService.cs | 69 +- .../TagHelpers/AbpTagHelperStyleService.cs | 73 +- .../BundleTagHelperContributorTypeItem.cs | 35 +- .../TagHelpers/BundleTagHelperFileItem.cs | 35 +- .../TagHelpers/BundleTagHelperItem.cs | 11 +- .../TagHelpers/IBundleItemTagHelper.cs | 11 +- .../Bundling/TagHelpers/IBundleTagHelper.cs | 11 +- .../Mvc/UI/Resources/IWebRequestResources.cs | 9 +- .../Mvc/UI/Resources/WebRequestResources.cs | 41 +- .../Abp/MultiTenancy/AbpTenantAppService.cs | 71 +- .../Abp/MultiTenancy/AbpTenantController.cs | 45 +- .../MultiTenancy/TenantSwitchModal.cshtml.cs | 81 +- .../AbpAspNetCoreMvcUiMultiTenancyModule.cs | 77 +- .../Localization/AbpUiMultiTenancyResource.cs | 9 +- .../AbpAspNetCoreMvcUiPackagesModule.cs | 39 +- .../Anchor/AnchorJsScriptBundleContributor.cs | 13 +- .../Bootstrap/BootstrapScriptContributor.cs | 15 +- .../Bootstrap/BootstrapStyleContributor.cs | 21 +- .../BootstrapDatepickerScriptContributor.cs | 31 +- .../BootstrapDatepickerStyleContributor.cs | 13 +- .../ChartJs/ChartjsScriptContributor.cs | 11 +- .../ChartJs/ChartjsStyleContributor.cs | 11 +- .../ClipboardScriptBundleContributor.cs | 11 +- .../CmsKit/CmsKitScriptContributor.cs | 11 +- .../Packages/CmsKit/CmsKitStyleContributor.cs | 11 +- .../Codemirror/CodemirrorScriptContributor.cs | 13 +- .../Codemirror/CodemirrorStyleContributor.cs | 13 +- .../UI/Packages/Core/CoreScriptContributor.cs | 13 +- .../UI/Packages/Core/CoreStyleContributor.cs | 13 +- .../CropperJs/CropperJsScriptContributor.cs | 13 +- .../CropperJs/CropperJsStyleContributor.cs | 13 +- .../DatatablesNetScriptContributor.cs | 13 +- .../DatatablesNetBs4ScriptContributor.cs | 17 +- .../DatatablesNetBs4StyleContributor.cs | 15 +- .../DatatablesNetBs5ScriptContributor.cs | 15 +- .../DatatablesNetBs5StyleContributor.cs | 13 +- .../FlagIconCssStyleContributor.cs | 11 +- .../FontAwesomeStyleContributor.cs | 15 +- .../HighlightJsScriptContributor.cs | 13 +- .../HighlightJsStyleContributor.cs | 15 +- .../JQuery/JQueryScriptContributor.cs | 15 +- .../JQueryForm/JQueryFormScriptContributor.cs | 13 +- .../JQueryValidationScriptContributor.cs | 31 +- ...yValidationUnobtrusiveScriptContributor.cs | 13 +- .../Mvc/UI/Packages/JsTree/JsTreeOptions.cs | 23 +- .../JsTree/JsTreeScriptContributor.cs | 13 +- .../Packages/JsTree/JsTreeStyleContributor.cs | 29 +- .../Lodash/LodashScriptContributor.cs | 13 +- .../Packages/Luxon/LuxonScriptContributor.cs | 13 +- ...mScrollbarPluginScriptBundleContributor.cs | 11 +- ...omScrollbarPluginStyleBundleContributor.cs | 11 +- .../MarkdownIt/MarkdownItScriptContributor.cs | 15 +- .../OwlCarouselScriptContributor.cs | 13 +- .../OwlCarouselStyleContributor.cs | 19 +- .../Popper/PopperJsScriptBundleContributor.cs | 11 +- .../Prismjs/PrismjsScriptBundleContributor.cs | 13 +- .../Prismjs/PrismjsStyleBundleContributor.cs | 13 +- .../Select2/Select2ScriptContributor.cs | 15 +- .../Select2/Select2StyleContributor.cs | 13 +- .../SignalRBrowserScriptContributor.cs | 15 +- .../Slugify/SlugifyScriptContributor.cs | 11 +- .../StarRatingSvgScriptContributor.cs | 13 +- .../StarRatingSvgStyleContributor.cs | 13 +- .../Sweetalert2ScriptContributor.cs | 13 +- .../Timeago/TimeagoScriptContributor.cs | 31 +- .../Toastr/ToastrScriptBundleContributor.cs | 15 +- .../Toastr/ToastrStyleBundleContributor.cs | 13 +- .../TuiEditor/TuiEditorScriptContributor.cs | 21 +- .../TuiEditor/TuiEditorStyleContributor.cs | 19 +- .../UI/Packages/Uppy/UppyScriptContributor.cs | 13 +- .../UI/Packages/Uppy/UppyStyleContributor.cs | 13 +- .../Packages/Utils/UtilsScriptContributor.cs | 11 +- .../VeeValidateScriptContributor.cs | 13 +- .../UI/Packages/Vue/VueScriptContributor.cs | 11 +- ...AbpAspNetCoreMvcUiThemeSharedDemoModule.cs | 21 +- .../AlertsDemo/AlertsDemoViewComponent.cs | 25 +- .../BadgesDemo/BadgesDemoViewComponent.cs | 25 +- .../BordersDemo/BordersDemoViewComponent.cs | 25 +- .../BreadcrumbsDemoViewComponent.cs | 25 +- .../ButtonGroupsDemoViewComponent.cs | 25 +- .../ButtonsDemo/ButtonsDemoViewComponent.cs | 23 +- .../Demos/CardsDemo/CardsDemoViewComponent.cs | 25 +- .../CarouselDemo/CarouselDemoViewComponent.cs | 23 +- .../CollapseDemo/CollapseDemoViewComponent.cs | 25 +- .../DropdownsDemo/DropDownDemoDemoModel.cs | 23 +- .../DropdownsDemoViewComponent.cs | 27 +- .../DynamicFormsDemo/DynamicFormsDemoModel.cs | 209 +- .../DynamicFormsDemoViewComponent.cs | 27 +- .../FormElementsDemo/FormElementsDemoModel.cs | 109 +- .../FormElementsDemoViewComponent.cs | 25 +- .../Demos/GridsDemo/GridsDemoViewComponent.cs | 25 +- .../ListGroupsDemoViewComponent.cs | 25 +- .../ModalsDemo/ModalsDemoViewComponent.cs | 25 +- .../NavbarsDemo/NavbarsDemoViewComponent.cs | 23 +- .../Demos/NavsDemo/NavsDemoViewComponent.cs | 25 +- .../PaginatorDemoViewComponent.cs | 29 +- .../PopoversDemo/PopoversDemoViewComponent.cs | 25 +- .../ProgressBarsDemoViewComponent.cs | 25 +- .../TablesDemo/TablesDemoViewComponent.cs | 25 +- .../Demos/TabsDemo/TabsDemoViewComponent.cs | 25 +- .../TooltipsDemo/TooltipsDemoViewComponent.cs | 25 +- .../AbpComponentDemoSectionTagHelper.cs | 235 +- ...bpApplicationBuilderErrorPageExtensions.cs | 15 +- .../AbpAspNetCoreMvcUiThemeSharedModule.cs | 55 +- .../AbpErrorPageOptions.cs | 17 +- .../SharedThemeGlobalScriptContributor.cs | 41 +- .../SharedThemeGlobalStyleContributor.cs | 31 +- .../Bundling/StandardBundles.cs | 19 +- .../Controllers/ErrorController.cs | 111 +- .../PageToolbars/AbpPageToolbarOptions.cs | 39 +- .../PageToolbars/IPageToolbarContributor.cs | 11 +- .../PageToolbars/IPageToolbarManager.cs | 11 +- .../PageToolbars/PageToolbar.cs | 21 +- .../PageToolbarContributionContext.cs | 35 +- .../PageToolbars/PageToolbarContributor.cs | 11 +- .../PageToolbarContributorList.cs | 9 +- .../PageToolbars/PageToolbarDictionary.cs | 9 +- .../PageToolbars/PageToolbarExtensions.cs | 130 +- .../PageToolbars/PageToolbarItem.cs | 35 +- .../PageToolbars/PageToolbarItemList.cs | 9 +- .../PageToolbars/PageToolbarManager.cs | 49 +- .../SimplePageToolbarContributor.cs | 65 +- .../AbpApplicationPathViewComponent.cs | 19 +- .../AbpApplicationPathViewComponentModel.cs | 9 +- .../AbpPageSearchBoxViewComponent.cs | 13 +- .../AbpPageToolbarViewComponent.cs | 25 +- .../AbpPageToolbarButtonViewComponent.cs | 121 +- .../Toolbars/AbpToolbarOptions.cs | 17 +- .../Toolbars/IToolbarConfigurationContext.cs | 29 +- .../Toolbars/IToolbarContributor.cs | 11 +- .../Toolbars/IToolbarManager.cs | 9 +- .../Toolbars/StandardToolbars.cs | 11 +- .../Toolbars/Toolbar.cs | 19 +- .../Toolbars/ToolbarConfigurationContext.cs | 69 +- .../Toolbars/ToolbarItem.cs | 40 +- .../Toolbars/ToolbarManager.cs | 95 +- .../Views/Error/AbpErrorViewModel.cs | 11 +- .../AbpAspNetCoreMvcUiWidgetsModule.cs | 71 +- .../Mvc/UI/Widgets/AbpViewComponentHelper.cs | 101 +- .../Mvc/UI/Widgets/AbpWidgetOptions.cs | 15 +- .../Components/WidgetResourcesViewModel.cs | 11 +- .../WidgetScriptsViewComponent.cs | 43 +- .../WidgetStyles/WidgetStylesViewComponent.cs | 43 +- .../Mvc/UI/Widgets/IPageWidgetManager.cs | 13 +- .../Mvc/UI/Widgets/IWidgetManager.cs | 11 +- .../Mvc/UI/Widgets/PageWidgetManager.cs | 61 +- .../Mvc/UI/Widgets/WidgetAttribute.cs | 61 +- .../Mvc/UI/Widgets/WidgetDefinition.cs | 316 ++- .../UI/Widgets/WidgetDefinitionCollection.cs | 101 +- .../Mvc/UI/Widgets/WidgetDimensions.cs | 21 +- .../Mvc/UI/Widgets/WidgetManager.cs | 81 +- .../Mvc/UI/Widgets/WidgetResourceItem.cs | 31 +- .../Mvc/UI/AbpAspNetCoreMvcUiModule.cs | 31 +- .../Abp/AspNetCore/Mvc/UI/AbpMvcUiOptions.cs | 23 +- .../Abp/AspNetCore/Mvc/UI/Alerts/AlertList.cs | 45 +- .../AspNetCore/Mvc/UI/Alerts/AlertManager.cs | 17 +- .../AspNetCore/Mvc/UI/Alerts/AlertMessage.cs | 42 +- .../Abp/AspNetCore/Mvc/UI/Alerts/AlertType.cs | 27 +- .../AspNetCore/Mvc/UI/Alerts/IAlertManager.cs | 9 +- .../LayoutHook/AbpLayoutHookOptions.cs | 31 +- .../Components/LayoutHook/LayoutHookInfo.cs | 35 +- .../LayoutHook/LayoutHookViewComponent.cs | 31 +- .../LayoutHook/LayoutHookViewModel.cs | 21 +- .../UI/Components/LayoutHook/LayoutHooks.cs | 33 +- ...ViewComponentHelperLayoutHookExtensions.cs | 30 +- .../AspNetCore/Mvc/UI/Layout/BreadCrumb.cs | 41 +- .../Mvc/UI/Layout/BreadCrumbItem.cs | 25 +- .../AspNetCore/Mvc/UI/Layout/ContentLayout.cs | 41 +- .../AspNetCore/Mvc/UI/Layout/IPageLayout.cs | 9 +- .../AspNetCore/Mvc/UI/Layout/PageLayout.cs | 17 +- .../AspNetCore/Mvc/UI/RazorPages/AbpPage.cs | 11 +- .../Mvc/UI/RazorPages/AbpPageModel.cs | 181 +- .../ServiceBasedPageModelActivatorProvider.cs | 23 +- .../Mvc/UI/Theming/AbpThemingOptions.cs | 17 +- .../Mvc/UI/Theming/DefaultThemeManager.cs | 55 +- .../Mvc/UI/Theming/DefaultThemeSelector.cs | 45 +- .../Abp/AspNetCore/Mvc/UI/Theming/ITheme.cs | 11 +- .../Mvc/UI/Theming/IThemeManager.cs | 9 +- .../Mvc/UI/Theming/IThemeSelector.cs | 11 +- .../Mvc/UI/Theming/StandardLayouts.cs | 15 +- .../Mvc/UI/Theming/ThemeDictionary.cs | 29 +- .../Mvc/UI/Theming/ThemeExtensions.cs | 35 +- .../AspNetCore/Mvc/UI/Theming/ThemeInfo.cs | 31 +- .../Mvc/UI/Theming/ThemeNameAttribute.cs | 33 +- ...UiObjectExtensionPropertyInfoExtensions.cs | 183 +- ...pNetCoreMvcApplicationBuilderExtensions.cs | 37 +- .../AspNetCore/Http/AbpFormFileExtensions.cs | 23 +- .../ActionDescriptorExtensions.cs | 57 +- .../Mvc/ViewFeatures/ViewContextExtensions.cs | 13 +- .../AbpApiVersioningExtensions.cs | 65 +- .../AbpMvcBuilderExtensions.cs | 37 +- .../Mvc/AbpActionContextExtensions.cs | 23 +- .../AspNetCore/Mvc/AbpAspNetCoreMvcModule.cs | 311 ++- .../AspNetCore/Mvc/AbpAspNetCoreMvcOptions.cs | 25 +- .../Volo/Abp/AspNetCore/Mvc/AbpController.cs | 161 +- .../Abp/AspNetCore/Mvc/AbpControllerBase.cs | 107 +- ...AutoLocalizationMetadataDetailsProvider.cs | 109 +- .../AspNetCore/Mvc/AbpMvcOptionsExtensions.cs | 105 +- .../Abp/AspNetCore/Mvc/AbpViewComponent.cs | 23 +- .../Abp/AspNetCore/Mvc/ActionResultHelper.cs | 41 +- .../AbpAntiForgeryCookieNameProvider.cs | 43 +- .../Mvc/AntiForgery/AbpAntiForgeryOptions.cs | 103 +- ...bpAutoValidateAntiforgeryTokenAttribute.cs | 55 +- ...dateAntiforgeryTokenAuthorizationFilter.cs | 79 +- .../AbpValidateAntiForgeryTokenAttribute.cs | 57 +- ...dateAntiforgeryTokenAuthorizationFilter.cs | 103 +- .../AspNetCoreAbpAntiForgeryManager.cs | 55 +- .../Mvc/AntiForgery/IAbpAntiForgeryManager.cs | 11 +- .../AbpApiDefinitionController.cs | 31 +- .../AbpRemoteServiceApiDescriptionProvider.cs | 145 +- ...oteServiceApiDescriptionProviderOptions.cs | 11 +- .../AbpApplicationConfigurationAppService.cs | 465 ++-- .../AbpApplicationConfigurationController.cs | 41 +- ...pplicationConfigurationScriptController.cs | 101 +- .../CachedObjectExtensionsDtoService.cs | 375 ++- .../ExtensionPropertyAttributeDtoFactory.cs | 125 +- .../ICachedObjectExtensionsDtoService.cs | 11 +- .../IExtensionPropertyAttributeDtoFactory.cs | 11 +- .../AspNetCore/Mvc/ApplicationPartSorter.cs | 255 +- .../AspNetCoreApiDescriptionModelProvider.cs | 565 +++-- ...tCoreApiDescriptionModelProviderOptions.cs | 99 +- .../Mvc/Auditing/AbpAuditActionFilter.cs | 117 +- .../Mvc/Auditing/AbpAuditPageFilter.cs | 121 +- .../ChallengeAccountController.cs | 71 +- .../AbpRemoteStreamContentModelBinder.cs | 165 +- ...pRemoteStreamContentModelBinderProvider.cs | 31 +- .../RemoteStreamContentOutputFormatter.cs | 49 +- ...pConventionalApiControllerSpecification.cs | 33 +- ...bpConventionalControllerFeatureProvider.cs | 41 +- .../AbpConventionalControllerOptions.cs | 61 +- .../Mvc/Conventions/AbpServiceConvention.cs | 577 +++-- .../AbpServiceConventionWrapper.cs | 27 +- .../ConventionalControllerSetting.cs | 157 +- .../ConventionalControllerSettingList.cs | 15 +- .../Conventions/ConventionalRouteBuilder.cs | 199 +- .../Mvc/Conventions/IAbpServiceConvention.cs | 9 +- .../Conventions/IConventionalRouteBuilder.cs | 21 +- .../UrlActionNameNormalizerContext.cs | 33 +- .../UrlControllerNameNormalizerContext.cs | 21 +- .../AbpValidationAttributeAdapterProvider.cs | 45 +- .../DynamicMaxLengthAttributeAdapter.cs | 59 +- .../DynamicRangeAttributeAdapter.cs | 61 +- .../DynamicStringLengthAttributeAdapter.cs | 73 +- .../AbpAspNetCoreMvcConventionalRegistrar.cs | 55 +- .../ExceptionHandling/AbpExceptionFilter.cs | 115 +- .../AbpExceptionPageFilter.cs | 133 +- .../Mvc/Features/AbpFeatureActionFilter.cs | 29 +- .../Mvc/Features/AbpFeaturePageFilter.cs | 37 +- .../GlobalFeatureActionFilter.cs | 37 +- .../GlobalFeatures/GlobalFeaturePageFilter.cs | 43 +- .../Mvc/Json/AbpHybridJsonInputFormatter.cs | 55 +- .../Mvc/Json/AbpHybridJsonOptionsSetup.cs | 105 +- .../Mvc/Json/AbpHybridJsonOutputFormatter.cs | 51 +- .../Mvc/Json/AbpJsonOptionsSetup.cs | 37 +- .../Mvc/Json/AbpMvcJsonContractResolver.cs | 51 +- .../Json/AbpMvcNewtonsoftJsonOptionsSetup.cs | 23 +- .../Mvc/Json/MediaTypeHeaderValues.cs | 25 +- .../Mvc/Json/MvcCoreBuilderExtensions.cs | 27 +- ...NetCoreMvcQueryStringCultureReplacement.cs | 39 +- .../Localization/AbpLanguagesController.cs | 79 +- ...AbpMvcAttributeValidationResultProvider.cs | 53 +- ...bpMvcDataAnnotationsLocalizationOptions.cs | 35 +- .../IQueryStringCultureReplacement.cs | 9 +- .../QueryStringCultureReplacementContext.cs | 23 +- .../ModelBinding/AbpDateTimeModelBinder.cs | 31 +- .../AbpDateTimeModelBinderProvider.cs | 63 +- ...PropertiesDictionaryModelBinderProvider.cs | 57 +- .../AbpExtraPropertyModelBinder.cs | 91 +- .../ExtraPropertyBindingHelper.cs | 51 +- .../Metadata/AbpModelMetadataProvider.cs | 63 +- .../AbpServiceProxyScriptController.cs | 63 +- .../ServiceProxyGenerationModel.cs | 67 +- .../Mvc/Response/AbpNoContentActionFilter.cs | 33 +- .../AspNetCore/Mvc/Uow/AbpUowActionFilter.cs | 143 +- .../AspNetCore/Mvc/Uow/AbpUowPageFilter.cs | 151 +- .../Abp/AspNetCore/Mvc/Utils/ArrayMatcher.cs | 49 +- .../Validation/AbpValidationActionFilter.cs | 81 +- .../Mvc/Validation/IModelStateValidator.cs | 13 +- .../Mvc/Validation/ModelStateValidator.cs | 47 +- .../Validation/ValidationAttributeHelper.cs | 37 +- .../HttpContextRequestedApiVersion.cs | 19 +- .../AbpValidationHtmlAttributeProvider.cs | 177 +- ...sionPropertyInfoAspNetCoreMvcExtensions.cs | 55 +- ...CoreSerilogApplicationBuilderExtensions.cs | 15 +- .../Serilog/AbpAspNetCoreSerilogModule.cs | 17 +- .../Serilog/AbpAspNetCoreSerilogOptions.cs | 47 +- .../Serilog/AbpSerilogMiddleware.cs | 87 +- .../SignalR/AbpAspNetCoreSignalRModule.cs | 213 +- .../Volo/Abp/AspNetCore/SignalR/AbpHub.cs | 165 +- .../Abp/AspNetCore/SignalR/AbpHubContext.cs | 27 +- .../SignalR/AbpHubContextAccessorHubFilter.cs | 23 +- .../AbpSignalRConventionalRegistrar.cs | 27 +- .../AspNetCore/SignalR/AbpSignalROptions.cs | 17 +- .../SignalR/AbpSignalRUserIdProvider.cs | 29 +- .../SignalR/Auditing/AbpAuditHubFilter.cs | 113 +- .../AspNetCoreSignalRAuditLogContributor.cs | 67 +- .../AbpAuthenticationHubFilter.cs | 39 +- .../SignalR/DefaultAbpHubContextAccessor.cs | 25 +- .../SignalR/DisableAutoHubMapAttribute.cs | 7 +- .../Volo/Abp/AspNetCore/SignalR/HubConfig.cs | 67 +- .../Abp/AspNetCore/SignalR/HubConfigList.cs | 29 +- .../AspNetCore/SignalR/HubRouteAttribute.cs | 49 +- .../SignalR/IAbpHubContextAccessor.cs | 11 +- .../AbpAspNetCoreIntegratedTestBase.cs | 135 +- .../TestBase/AbpAspNetCoreTestBaseModule.cs | 17 +- .../AspNetCoreTestProxyHttpClientFactory.cs | 35 +- .../TestBase/ITestServerAccessor.cs | 11 +- .../AspNetCore/TestBase/TestServerAccessor.cs | 11 +- .../AbpApplicationBuilderExtensions.cs | 117 +- ...pAspNetCoreApplicationBuilderExtensions.cs | 61 +- ...lFileSystemApplicationBuilderExtensions.cs | 19 +- .../Cors/AbpCorsPolicyBuilderExtensions.cs | 13 +- .../AbpHostingEnvironmentExtensions.cs | 33 +- .../Http/AbpHttpRequestExtensions.cs | 27 +- .../AbpRequestCultureCookieHelper.cs | 31 +- .../AbpRequestLocalizationMiddleware.cs | 67 +- .../AbpRequestLocalizationOptions.cs | 15 +- .../AbpRequestLocalizationOptionsManager.cs | 39 +- ...ltAbpRequestLocalizationOptionsProvider.cs | 123 +- .../IAbpRequestLocalizationOptionsProvider.cs | 11 +- .../Routing/AbpEndpointRouterOptions.cs | 15 +- .../Routing/EndpointRouteBuilderContext.cs | 27 +- ...bpAspNetCoreServiceCollectionExtensions.cs | 11 +- ...licationInitializationContextExtensions.cs | 45 +- .../AspNetCore/AbpActionInfoInHttpContext.cs | 11 +- .../Abp/AspNetCore/AbpAspNetCoreModule.cs | 77 +- .../Auditing/AbpAspNetCoreAuditingOptions.cs | 23 +- .../Auditing/AbpAuditingMiddleware.cs | 143 +- .../Auditing/AspNetCoreAuditLogContributor.cs | 115 +- ...ntextClientScopeServiceProviderAccessor.cs | 39 +- .../HttpContextServiceScopeFactory.cs | 69 +- ...AbpAuthorizationExceptionHandlerOptions.cs | 9 +- .../AbpExceptionHandlingMiddleware.cs | 145 +- .../AbpExceptionHttpStatusCodeOptions.cs | 25 +- ...DefaultAbpAuthorizationExceptionHandler.cs | 77 +- .../DefaultHttpExceptionStatusCodeFinder.cs | 95 +- .../IAbpAuthorizationExceptionHandler.cs | 9 +- .../IHttpExceptionStatusCodeFinder.cs | 11 +- .../Security/AbpSecurityHeadersMiddleware.cs | 31 +- .../Security/Claims/AbpClaimsMapMiddleware.cs | 55 +- .../Security/Claims/AbpClaimsMapOptions.cs | 15 +- .../HttpContextCurrentPrincipalAccessor.cs | 23 +- .../AspNetCoreSecurityLogManager.cs | 95 +- .../HttpContextCancellationTokenProvider.cs | 37 +- .../Tracing/AbpCorrelationIdMiddleware.cs | 77 +- .../AspNetCoreCorrelationIdProvider.cs | 61 +- .../Uow/AbpAspNetCoreUnitOfWorkOptions.cs | 23 +- .../AspNetCore/Uow/AbpUnitOfWorkMiddleware.cs | 51 +- ...eUnitOfWorkTransactionBehaviourProvider.cs | 69 +- ...WorkTransactionBehaviourProviderOptions.cs | 15 +- .../AbpAspNetCoreContentOptions.cs | 23 +- .../AbpFileExtensionContentTypeProvider.cs | 47 +- .../IWebContentFileProvider.cs | 7 +- .../AspNetCore/VirtualFileSystem/PathUtils.cs | 49 +- .../RazorViewEngineVirtualFileProvider.cs | 75 +- .../WebContentFileProvider.cs | 143 +- .../HttpContextWebClientInfoProvider.cs | 51 +- .../WebClientInfo/IWebClientInfoProvider.cs | 11 +- .../Abp/ServiceProviderAccessorExtensions.cs | 13 +- .../Auditing/AbpAuditingContractsModule.cs | 11 +- .../Volo/Abp/Auditing/AuditedAttribute.cs | 9 +- .../Abp/Auditing/DisableAuditingAttribute.cs | 11 +- .../Volo/Abp/Auditing/EntityChangeType.cs | 13 +- .../Volo/Abp/Auditing/IAuditedObject.cs | 29 +- .../Volo/Abp/Auditing/IAuditingEnabled.cs | 7 +- .../Abp/Auditing/ICreationAuditedObject.cs | 29 +- .../Abp/Auditing/IDeletionAuditedObject.cs | 37 +- .../Volo/Abp/Auditing/IFullAuditedObject.cs | 31 +- .../Volo/Abp/Auditing/IHasCreationTime.cs | 17 +- .../Volo/Abp/Auditing/IHasDeletionTime.cs | 21 +- .../Volo/Abp/Auditing/IHasModificationTime.cs | 19 +- .../Volo/Abp/Auditing/IMayHaveCreator.cs | 33 +- .../Auditing/IModificationAuditedObject.cs | 37 +- .../Volo/Abp/Auditing/IMustHaveCreator.cs | 35 +- .../Volo/Abp/Auditing/AbpAuditingModule.cs | 29 +- .../Volo/Abp/Auditing/AbpAuditingOptions.cs | 91 +- .../Volo/Abp/Auditing/AuditLogActionInfo.cs | 27 +- .../Auditing/AuditLogContributionContext.cs | 21 +- .../Volo/Abp/Auditing/AuditLogContributor.cs | 17 +- .../Volo/Abp/Auditing/AuditLogInfo.cs | 129 +- .../Volo/Abp/Auditing/AuditLogScope.cs | 17 +- .../Volo/Abp/Auditing/AuditPropertySetter.cs | 231 +- .../Abp/Auditing/AuditingContractResolver.cs | 49 +- .../Volo/Abp/Auditing/AuditingHelper.cs | 353 ++- .../Volo/Abp/Auditing/AuditingInterceptor.cs | 237 +- .../Auditing/AuditingInterceptorRegistrar.cs | 77 +- .../Volo/Abp/Auditing/AuditingManager.cs | 209 +- .../Volo/Abp/Auditing/EntityChangeInfo.cs | 79 +- .../Abp/Auditing/EntityHistorySelectorList.cs | 11 +- .../Abp/Auditing/EntityPropertyChangeInfo.cs | 59 +- .../Volo/Abp/Auditing/IAuditLogSaveHandle.cs | 11 +- .../Volo/Abp/Auditing/IAuditLogScope.cs | 11 +- .../Volo/Abp/Auditing/IAuditPropertySetter.cs | 15 +- .../Volo/Abp/Auditing/IAuditSerializer.cs | 11 +- .../Volo/Abp/Auditing/IAuditingHelper.cs | 41 +- .../Volo/Abp/Auditing/IAuditingManager.cs | 15 +- .../Volo/Abp/Auditing/IAuditingStore.cs | 11 +- .../Auditing/IEntityHistorySelectorList.cs | 19 +- .../Volo/Abp/Auditing/InternalUtils.cs | 23 +- .../Abp/Auditing/JsonNetAuditSerializer.cs | 51 +- .../Abp/Auditing/SimpleLogAuditingStore.cs | 29 +- .../AbpAuthorizationAbstractionsModule.cs | 13 +- .../AlwaysAllowAuthorizationService.cs | 39 +- ...lowMethodInvocationAuthorizationService.cs | 13 +- .../IAbpAuthorizationPolicyProvider.cs | 11 +- .../Authorization/IAbpAuthorizationService.cs | 11 +- .../IMethodInvocationAuthorizationService.cs | 11 +- .../MethodInvocationAuthorizationContext.cs | 17 +- .../Authorization/PermissionRequirement.cs | 25 +- .../PermissionRequirementHandler.cs | 31 +- .../Permissions/AbpPermissionOptions.cs | 19 +- .../AlwaysAllowPermissionChecker.cs | 47 +- .../Permissions/IPermissionChecker.cs | 15 +- .../IPermissionDefinitionContext.cs | 71 +- .../IPermissionDefinitionManager.cs | 21 +- .../IPermissionDefinitionProvider.cs | 15 +- .../Permissions/IPermissionStore.cs | 27 +- .../Permissions/IPermissionValueProvider.cs | 15 +- .../IPermissionValueProviderManager.cs | 11 +- .../MultiplePermissionGrantResult.cs | 51 +- .../Permissions/NullPermissionStore.cs | 31 +- .../Permissions/PermissionDefinition.cs | 249 +- .../PermissionDefinitionContext.cs | 111 +- .../PermissionDefinitionContextExtensions.cs | 53 +- .../PermissionDefinitionProvider.cs | 21 +- .../Permissions/PermissionGrantInfo.cs | 31 +- .../Permissions/PermissionGrantResult.cs | 15 +- .../Permissions/PermissionGroupDefinition.cs | 201 +- .../Permissions/PermissionStateContext.cs | 11 +- .../PermissionValueCheckContext.cs | 31 +- .../Permissions/PermissionValueProvider.cs | 23 +- .../PermissionValuesCheckContext.cs | 29 +- .../Authorization/PermissionsRequirement.cs | 29 +- .../PermissionsRequirementHandler.cs | 35 +- .../AbpAuthorizationServiceExtensions.cs | 257 +- .../AuthorizationOptionsExtensions.cs | 35 +- ...uthorizationServiceCollectionExtensions.cs | 17 +- .../AbpAuthorizationErrorCodes.cs | 17 +- .../Authorization/AbpAuthorizationModule.cs | 105 +- .../AbpAuthorizationPolicyProvider.cs | 77 +- .../Authorization/AbpAuthorizationService.cs | 55 +- .../Authorization/AuthorizationInterceptor.cs | 41 +- .../AuthorizationInterceptorRegistrar.cs | 45 +- .../Localization/AbpAuthorizationResource.cs | 9 +- .../MethodInvocationAuthorizationService.cs | 87 +- .../ClientPermissionValueProvider.cs | 71 +- .../Permissions/PermissionChecker.cs | 213 +- .../PermissionDefinitionManager.cs | 181 +- .../PermissionSimpleStateCheckerExtensions.cs | 87 +- .../PermissionValueProviderManager.cs | 39 +- .../RequireAuthenticatedSimpleStateChecker.cs | 13 +- ...quirePermissionsSimpleBatchStateChecker.cs | 91 +- ...PermissionsSimpleBatchStateCheckerModel.cs | 29 +- .../RequirePermissionsSimpleStateChecker.cs | 39 +- .../RolePermissionValueProvider.cs | 99 +- .../UserPermissionValueProvider.cs | 59 +- .../AbpAutoMapperExtensibleDtoExtensions.cs | 87 +- ...bpAutoMapperServiceCollectionExtensions.cs | 27 +- .../AbpAutoMapperConfigurationContext.cs | 25 +- .../AbpAutoMapperConventionalRegistrar.cs | 23 +- .../Abp/AutoMapper/AbpAutoMapperModule.cs | 83 +- .../Abp/AutoMapper/AbpAutoMapperOptions.cs | 95 +- .../AutoMapperAutoObjectMappingProvider.cs | 41 +- .../AutoMapperExpressionExtensions.cs | 285 ++- .../IAbpAutoMapperConfigurationContext.cs | 13 +- .../Volo/Abp/AutoMapper/IMapperAccessor.cs | 9 +- .../Volo/Abp/AutoMapper/MapperAccessor.cs | 11 +- .../AbpAutoMapperObjectMapperExtensions.cs | 25 +- ...icationCreationOptionsAutofacExtensions.cs | 23 +- .../AbpAutofacWebAssemblyModule.cs | 17 +- .../AbpRegistrationBuilderExtensions.cs | 155 +- .../AutofacRegistration.cs | 325 ++- .../AbpAutofacServiceCollectionExtensions.cs | 35 +- .../AbpAutofacHostBuilderExtensions.cs | 21 +- ...AbpApplicationCreationOptionsExtensions.cs | 33 +- .../Volo/Abp/Autofac/AbpAutofacModule.cs | 9 +- .../AbpAutofacServiceProviderFactory.cs | 63 +- .../AbpAzureServiceBusModule.cs | 23 +- .../AbpAzureServiceBusOptions.cs | 17 +- .../AzureServiceBusConnections.cs | 44 +- .../AzureServiceBusMessageConsumer.cs | 143 +- .../AzureServiceBusMessageConsumerFactory.cs | 37 +- .../Volo/Abp/AzureServiceBus/ClientConfig.cs | 17 +- .../Abp/AzureServiceBus/ConnectionPool.cs | 121 +- .../IAzureServiceBusMessageConsumer.cs | 11 +- .../IAzureServiceBusMessageConsumerFactory.cs | 35 +- .../IAzureServiceBusSerializer.cs | 13 +- .../Abp/AzureServiceBus/IConnectionPool.cs | 13 +- .../Abp/AzureServiceBus/IProcessorPool.cs | 11 +- .../Abp/AzureServiceBus/IPublisherPool.cs | 11 +- .../Volo/Abp/AzureServiceBus/ProcessorPool.cs | 107 +- .../Volo/Abp/AzureServiceBus/PublisherPool.cs | 87 +- ...erviceBusAdministrationClientExtensions.cs | 27 +- .../Utf8JsonAzureServiceBusSerializer.cs | 39 +- .../BackgroundJobs/AbpBackgroundJobOptions.cs | 105 +- .../AbpBackgroundJobsAbstractionsModule.cs | 51 +- .../Abp/BackgroundJobs/AsyncBackgroundJob.cs | 23 +- .../Volo/Abp/BackgroundJobs/BackgroundJob.cs | 23 +- .../BackgroundJobs/BackgroundJobArgsHelper.cs | 47 +- .../BackgroundJobConfiguration.cs | 25 +- .../BackgroundJobs/BackgroundJobExecuter.cs | 83 +- .../BackgroundJobExecutionException.cs | 49 +- .../BackgroundJobManagerExtensions.cs | 25 +- .../BackgroundJobNameAttribute.cs | 43 +- .../BackgroundJobs/BackgroundJobPriority.cs | 51 +- .../Abp/BackgroundJobs/IAsyncBackgroundJob.cs | 19 +- .../Volo/Abp/BackgroundJobs/IBackgroundJob.cs | 19 +- .../BackgroundJobs/IBackgroundJobExecuter.cs | 11 +- .../BackgroundJobs/IBackgroundJobManager.cs | 37 +- .../IBackgroundJobNameProvider.cs | 11 +- .../Abp/BackgroundJobs/JobExecutionContext.cs | 25 +- .../Abp/BackgroundJobs/JobExecutionResult.cs | 13 +- .../NullBackgroundJobManager.cs | 29 +- .../AbpBackgroundJobsHangfireModule.cs | 45 +- .../Hangfire/AbpDashboardOptionsProvider.cs | 29 +- .../Hangfire/HangfireBackgroundJobManager.cs | 29 +- .../Hangfire/HangfireJobExecutionAdapter.cs | 59 +- .../Quartz/AbpBackgroundJobQuartzOptions.cs | 60 +- .../Quartz/AbpBackgroundJobsQuartzModule.cs | 35 +- .../QuartzBackgroundJobManageExtensions.cs | 25 +- .../Quartz/QuartzBackgroundJobManager.cs | 57 +- .../Quartz/QuartzJobExecutionAdapter.cs | 89 +- .../AbpBackgroundJobsRabbitMqModule.cs | 69 +- .../AbpRabbitMqBackgroundJobOptions.cs | 41 +- .../Abp/BackgroundJobs/RabbitMQ/IJobQueue.cs | 19 +- .../RabbitMQ/IJobQueueManager.cs | 11 +- .../Abp/BackgroundJobs/RabbitMQ/JobQueue.cs | 335 ++- .../RabbitMQ/JobQueueConfiguration.cs | 75 +- .../RabbitMQ/JobQueueManager.cs | 97 +- .../RabbitMQ/RabbitMqBackgroundJobManager.cs | 33 +- .../AbpBackgroundJobWorkerOptions.cs | 73 +- .../BackgroundJobs/AbpBackgroundJobsModule.cs | 31 +- .../Abp/BackgroundJobs/BackgroundJobInfo.cs | 107 +- .../Abp/BackgroundJobs/BackgroundJobWorker.cs | 193 +- .../DefaultBackgroundJobManager.cs | 93 +- .../IBackgroundJobSerializer.cs | 11 +- .../Abp/BackgroundJobs/IBackgroundJobStore.cs | 69 +- .../BackgroundJobs/IBackgroundJobWorker.cs | 9 +- .../InMemoryBackgroundJobStore.cs | 91 +- .../JsonBackgroundJobSerializer.cs | 41 +- .../AbpBackgroundWorkersHangfireModule.cs | 41 +- .../Hangfire/HangfireBackgroundWorkerBase.cs | 13 +- .../HangfireBackgroundWorkerManager.cs | 119 +- ...HangfirePeriodicBackgroundWorkerAdapter.cs | 47 +- .../Hangfire/IHangfireBackgroundWorker.cs | 13 +- .../AbpBackgroundWorkerQuartzOptions.cs | 17 +- .../AbpBackgroundWorkersQuartzModule.cs | 61 +- .../Quartz/AbpQuartzConventionalRegistrar.cs | 19 +- .../Quartz/IQuartzBackgroundWorker.cs | 17 +- .../Quartz/IQuartzBackgroundWorkerAdapter.cs | 9 +- .../Quartz/QuartzBackgroundWorkerBase.cs | 21 +- .../Quartz/QuartzBackgroundWorkerManager.cs | 105 +- .../QuartzPeriodicBackgroundWorkerAdapter.cs | 103 +- .../AbpBackgroundWorkerOptions.cs | 15 +- .../AbpBackgroundWorkersModule.cs | 49 +- .../AsyncPeriodicBackgroundWorkerBase.cs | 85 +- .../BackgroundWorkers/BackgroundWorkerBase.cs | 83 +- .../BackgroundWorkerManager.cs | 87 +- ...licationInitializationContextExtensions.cs | 47 +- .../BackgroundWorkers/IBackgroundWorker.cs | 13 +- .../IBackgroundWorkerManager.cs | 25 +- .../PeriodicBackgroundWorkerBase.cs | 87 +- .../PeriodicBackgroundWorkerContext.cs | 17 +- .../AbpBlazoriseUIModule.cs | 37 +- .../Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs | 991 ++++---- .../BlazoriseUiMessageService.cs | 123 +- .../BlazoriseUiNotificationService.cs | 79 +- ...UiObjectExtensionPropertyInfoExtensions.cs | 311 ++- .../BlazoriseUiPageProgressService.cs | 39 +- .../Volo.Abp.BlazoriseUI/BreadcrumbItem.cs | 23 +- .../Components/AbpExtensibleDataGrid.razor.cs | 67 +- .../Components/ActionType.cs | 11 +- .../Components/AlertWrapper.cs | 13 +- .../DataGridEntityActionsColumn.razor.cs | 35 +- .../Components/EntityAction.razor.cs | 99 +- .../Components/EntityActions.razor.cs | 75 +- .../CheckExtensionProperty.razor.cs | 36 +- .../DateTimeExtensionProperty.razor.cs | 36 +- .../Components/ObjectExtending/EnumHelper.cs | 31 +- .../ExtensionProperties.razor.cs | 21 +- .../LookupExtensionProperty.razor.cs | 145 +- .../SelectExtensionProperty.razor.cs | 80 +- .../TextExtensionProperty.razor.cs | 36 +- .../TimeExtensionProperty.razor.cs | 36 +- .../Components/PageAlert.razor.cs | 113 +- .../Components/SubmitButton.razor.cs | 93 +- .../Components/ToolbarButton.razor.cs | 27 +- .../Components/UiMessageAlert.razor.cs | 217 +- .../Components/UiNotificationAlert.razor.cs | 105 +- .../Components/UiPageProgress.razor.cs | 71 +- ...ctExtensionPropertyInfoBlazorExtensions.cs | 41 +- .../Aliyun/AbpBlobStoringAliyunModule.cs | 15 +- ...yunBlobContainerConfigurationExtensions.cs | 31 +- .../Aliyun/AliyunBlobNamingNormalizer.cs | 75 +- .../BlobStoring/Aliyun/AliyunBlobProvider.cs | 157 +- .../Aliyun/AliyunBlobProviderConfiguration.cs | 175 +- .../AliyunBlobProviderConfigurationNames.cs | 31 +- .../AliyunTemporaryCredentialsCacheItem.cs | 31 +- .../Aliyun/DefaultAliyunBlobNameCalculator.cs | 27 +- .../Aliyun/DefaultOssClientFactory.cs | 141 +- .../Aliyun/IAliyunBlobNameCalculator.cs | 9 +- .../BlobStoring/Aliyun/IOssClientFactory.cs | 9 +- .../Aws/AbpBlobStoringAwsModule.cs | 13 +- ...AwsBlobContainerConfigurationExtensions.cs | 31 +- .../Aws/AwsBlobNamingNormalizer.cs | 89 +- .../Abp/BlobStoring/Aws/AwsBlobProvider.cs | 225 +- .../Aws/AwsBlobProviderConfiguration.cs | 197 +- .../Aws/AwsBlobProviderConfigurationNames.cs | 35 +- .../Aws/AwsTemporaryCredentialsCacheItem.cs | 31 +- .../Aws/DefaultAmazonS3ClientFactory.cs | 275 ++- .../Aws/DefaultAwsBlobNameCalculator.cs | 27 +- .../BlobStoring/Aws/IAmazonS3ClientFactory.cs | 11 +- .../BlobStoring/Aws/IAwsBlobNameCalculator.cs | 9 +- .../Azure/AbpBlobStoringAzureModule.cs | 9 +- ...ureBlobContainerConfigurationExtensions.cs | 31 +- .../Azure/AzureBlobNamingNormalizer.cs | 77 +- .../BlobStoring/Azure/AzureBlobProvider.cs | 159 +- .../Azure/AzureBlobProviderConfiguration.cs | 60 +- .../AzureBlobProviderConfigurationNames.cs | 13 +- .../Azure/DefaultAzureBlobNameCalculator.cs | 27 +- .../Azure/IAzureBlobNameCalculator.cs | 9 +- .../AbpBlobStoringFileSystemModule.cs | 17 +- .../DefaultBlobFilePathCalculator.cs | 55 +- ...temBlobContainerConfigurationExtensions.cs | 31 +- .../FileSystemBlobNamingNormalizer.cs | 53 +- .../FileSystem/FileSystemBlobProvider.cs | 117 +- .../FileSystemBlobProviderConfiguration.cs | 41 +- ...ileSystemBlobProviderConfigurationNames.cs | 13 +- .../FileSystem/IBlobFilePathCalculator.cs | 11 +- .../Minio/AbpBlobStoringMinioModule.cs | 9 +- .../Minio/DefaultMinioBlobNameCalculator.cs | 27 +- .../Minio/IMinioBlobNameCalculator.cs | 9 +- ...nioBlobContainerConfigurationExtensions.cs | 31 +- .../Minio/MinioBlobNamingNormalizer.cs | 87 +- .../BlobStoring/Minio/MinioBlobProvider.cs | 189 +- .../Minio/MinioBlobProviderConfiguration.cs | 111 +- .../MinioBlobProviderConfigurationNames.cs | 19 +- .../Abp/BlobStoring/AbpBlobStoringModule.cs | 37 +- .../Abp/BlobStoring/AbpBlobStoringOptions.cs | 17 +- .../BlobStoring/BlobAlreadyExistsException.cs | 35 +- .../Volo/Abp/BlobStoring/BlobContainer.cs | 349 ++- .../BlobStoring/BlobContainerConfiguration.cs | 107 +- .../BlobContainerConfigurationExtensions.cs | 37 +- ...ontainerConfigurationProviderExtensions.cs | 15 +- .../BlobContainerConfigurations.cs | 117 +- .../BlobStoring/BlobContainerExtensions.cs | 85 +- .../Abp/BlobStoring/BlobContainerFactory.cs | 87 +- .../BlobContainerFactoryExtensions.cs | 33 +- .../BlobStoring/BlobContainerNameAttribute.cs | 53 +- .../Abp/BlobStoring/BlobNormalizeNaming.cs | 19 +- .../BlobStoring/BlobNormalizeNamingService.cs | 79 +- .../Volo/Abp/BlobStoring/BlobProviderArgs.cs | 45 +- .../Volo/Abp/BlobStoring/BlobProviderBase.cs | 33 +- .../Abp/BlobStoring/BlobProviderDeleteArgs.cs | 29 +- .../Abp/BlobStoring/BlobProviderExistsArgs.cs | 29 +- .../Abp/BlobStoring/BlobProviderGetArgs.cs | 29 +- .../Abp/BlobStoring/BlobProviderSaveArgs.cs | 47 +- .../BlobProviderSelectorExtensions.cs | 17 +- ...faultBlobContainerConfigurationProvider.cs | 25 +- .../DefaultBlobProviderSelector.cs | 61 +- .../Volo/Abp/BlobStoring/DefaultContainer.cs | 13 +- .../Volo/Abp/BlobStoring/IBlobContainer.cs | 163 +- .../IBlobContainerConfigurationProvider.cs | 21 +- .../Abp/BlobStoring/IBlobContainerFactory.cs | 29 +- .../Abp/BlobStoring/IBlobNamingNormalizer.cs | 11 +- .../IBlobNormalizeNamingService.cs | 13 +- .../Volo/Abp/BlobStoring/IBlobProvider.cs | 23 +- .../Abp/BlobStoring/IBlobProviderSelector.cs | 13 +- .../AbpCachingStackExchangeRedisModule.cs | 39 +- .../StackExchangeRedis/AbpRedisCache.cs | 471 ++-- .../StackExchangeRedis/AbpRedisExtensions.cs | 63 +- .../Volo/Abp/Caching/AbpCachingModule.cs | 37 +- .../Abp/Caching/AbpDistributedCacheOptions.cs | 51 +- .../Volo/Abp/Caching/CacheNameAttribute.cs | 43 +- .../Volo/Abp/Caching/DistributedCache.cs | 2077 ++++++++--------- .../DistributedCacheKeyNormalizeArgs.cs | 33 +- .../Caching/DistributedCacheKeyNormalizer.cs | 41 +- .../Caching/ICacheSupportsMultipleItems.cs | 81 +- .../Volo/Abp/Caching/IDistributedCache.cs | 609 +++-- .../Caching/IDistributedCacheKeyNormalizer.cs | 9 +- .../Caching/IDistributedCacheSerializer.cs | 11 +- .../Volo/Abp/Caching/UnitOfWorkCacheItem.cs | 73 +- .../Caching/UnitOfWorkCacheItemExtensions.cs | 13 +- .../Utf8JsonDistributedCacheSerializer.cs | 33 +- .../Volo/Abp/Castle/AbpCastleCoreModule.cs | 11 +- .../AbpAsyncDeterminationInterceptor.cs | 15 +- .../CastleAbpMethodInvocationAdapter.cs | 31 +- .../CastleAbpMethodInvocationAdapterBase.cs | 55 +- ...pMethodInvocationAdapterWithReturnValue.cs | 33 +- .../CastleAsyncAbpInterceptorAdapter.cs | 47 +- .../Volo/Abp/Cli/AbpCliCoreModule.cs | 97 +- .../Volo/Abp/Cli/AbpCliOptions.cs | 33 +- .../Abp/Cli/Args/AbpCommandLineOptions.cs | 41 +- .../Volo/Abp/Cli/Args/CommandLineArgs.cs | 87 +- .../Abp/Cli/Args/CommandLineArgumentParser.cs | 201 +- .../Cli/Args/ICommandLineArgumentParser.cs | 15 +- .../Volo/Abp/Cli/Auth/AuthService.cs | 185 +- .../Volo/Abp/Cli/Auth/LoginInfo.cs | 19 +- .../Build/DefaultBuildProjectListSorter.cs | 87 +- .../Cli/Build/DefaultBuildStatusGenerator.cs | 191 +- .../Cli/Build/DefaultChangedProjectFinder.cs | 411 ++-- .../Cli/Build/DefaultDotNetProjectBuilder.cs | 145 +- .../Abp/Cli/Build/DotNetProjectBuildConfig.cs | 21 +- .../Abp/Cli/Build/DotNetProjectBuildStatus.cs | 13 +- .../Build/DotNetProjectDependencyFiller.cs | 43 +- .../Volo/Abp/Cli/Build/DotNetProjectInfo.cs | 31 +- .../DotNetProjectInfoEqualityComparer.cs | 21 +- .../Cli/Build/DotNetProjectInfoExtensions.cs | 63 +- ...ileSystemDotNetProjectBuildConfigReader.cs | 213 +- .../FileSystemRepositoryBuildStatusStore.cs | 77 +- .../Volo/Abp/Cli/Build/GitRepository.cs | 133 +- .../Abp/Cli/Build/GitRepositoryBuildStatus.cs | 207 +- .../Volo/Abp/Cli/Build/GitRepositoryHelper.cs | 25 +- .../Abp/Cli/Build/IBuildProjectListSorter.cs | 13 +- .../Abp/Cli/Build/IBuildStatusGenerator.cs | 17 +- .../Abp/Cli/Build/IChangedProjectFinder.cs | 9 +- .../Build/IDotNetProjectBuildConfigReader.cs | 9 +- .../Abp/Cli/Build/IDotNetProjectBuilder.cs | 13 +- .../Build/IDotNetProjectDependencyFiller.cs | 9 +- .../Abp/Cli/Build/IGitRepositoryHelper.cs | 11 +- .../Cli/Build/IRepositoryBuildStatusStore.cs | 11 +- .../Volo/Abp/Cli/Bundling/BundleConfig.cs | 15 +- .../Volo/Abp/Cli/Bundling/BundleOptions.cs | 25 +- .../Abp/Cli/Bundling/BundleTypeDefinition.cs | 11 +- .../Volo/Abp/Cli/Bundling/BundlerBase.cs | 201 +- .../Volo/Abp/Cli/Bundling/BundlingConsts.cs | 17 +- .../Abp/Cli/Bundling/BundlingException.cs | 11 +- .../Volo/Abp/Cli/Bundling/BundlingMode.cs | 15 +- .../Volo/Abp/Cli/Bundling/BundlingService.cs | 429 ++-- .../Volo/Abp/Cli/Bundling/IBundler.cs | 9 +- .../Volo/Abp/Cli/Bundling/IBundlingService.cs | 9 +- .../Volo/Abp/Cli/Bundling/PathHelper.cs | 29 +- .../Cli/Bundling/Scripts/IScriptBundler.cs | 7 +- .../Abp/Cli/Bundling/Scripts/ScriptBundler.cs | 63 +- .../Styles/CssRelativePathAdjuster.cs | 103 +- .../Abp/Cli/Bundling/Styles/IStyleBundler.cs | 7 +- .../Abp/Cli/Bundling/Styles/StyleBundler.cs | 71 +- .../Volo/Abp/Cli/CliConsts.cs | 17 +- .../Volo/Abp/Cli/CliPaths.cs | 21 +- .../Volo/Abp/Cli/CliService.cs | 427 ++-- .../Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs | 49 +- .../Volo/Abp/Cli/CliUsageException.cs | 19 +- .../Volo/Abp/Cli/Commands/AddModuleCommand.cs | 305 ++- .../Abp/Cli/Commands/AddPackageCommand.cs | 305 ++- .../Volo/Abp/Cli/Commands/BuildCommand.cs | 205 +- .../Volo/Abp/Cli/Commands/BundleCommand.cs | 123 +- .../Volo/Abp/Cli/Commands/CommandSelector.cs | 31 +- .../CreateMigrationAndRunMigratorCommand.cs | 231 +- .../Abp/Cli/Commands/GenerateProxyCommand.cs | 61 +- .../Volo/Abp/Cli/Commands/GetSourceCommand.cs | 205 +- .../Volo/Abp/Cli/Commands/HelpCommand.cs | 131 +- .../Volo/Abp/Cli/Commands/ICommandSelector.cs | 11 +- .../Volo/Abp/Cli/Commands/IConsoleCommand.cs | 15 +- .../Abp/Cli/Commands/InstallLibsCommand.cs | 101 +- .../Abp/Cli/Commands/ListModulesCommand.cs | 97 +- .../Volo/Abp/Cli/Commands/LoginCommand.cs | 289 ++- .../Volo/Abp/Cli/Commands/LoginInfoCommand.cs | 81 +- .../Volo/Abp/Cli/Commands/LogoutCommand.cs | 45 +- .../Volo/Abp/Cli/Commands/NewCommand.cs | 205 +- .../Commands/ProjectCreationCommandBase.cs | 693 +++--- .../Volo/Abp/Cli/Commands/PromptCommand.cs | 39 +- .../Volo/Abp/Cli/Commands/ProxyCommandBase.cs | 257 +- .../Abp/Cli/Commands/RemoveProxyCommand.cs | 61 +- .../Services/AbpNuGetIndexUrlService.cs | 57 +- .../Services/ConnectionStringProvider.cs | 39 +- .../Services/SourceCodeDownloadService.cs | 323 ++- .../Volo/Abp/Cli/Commands/SuiteCommand.cs | 455 ++-- .../Cli/Commands/SwitchToNightlyCommand.cs | 67 +- .../Cli/Commands/SwitchToPreviewCommand.cs | 67 +- .../Abp/Cli/Commands/SwitchToStableCommand.cs | 67 +- .../Volo/Abp/Cli/Commands/TranslateCommand.cs | 663 +++--- .../Volo/Abp/Cli/Commands/UpdateCommand.cs | 227 +- .../Abp/Cli/Configuration/AbpCliConfig.cs | 11 +- .../Abp/Cli/Configuration/ConfigReader.cs | 61 +- .../Abp/Cli/Configuration/IConfigReader.cs | 11 +- .../Abp/Cli/Http/CliHttpClientExtensions.cs | 105 +- .../Volo/Abp/Cli/Http/CliHttpClientFactory.cs | 73 +- .../Volo/Abp/Cli/Http/CliHttpClientHandler.cs | 15 +- .../Volo/Abp/Cli/LIbs/FileMatchResult.cs | 19 +- .../Volo/Abp/Cli/LIbs/IInstallLibsService.cs | 9 +- .../Volo/Abp/Cli/LIbs/InstallLibsService.cs | 311 ++- .../Volo/Abp/Cli/LIbs/ResourceMapping.cs | 61 +- .../Abp/Cli/Licensing/AbpIoApiKeyService.cs | 91 +- .../Cli/Licensing/DeveloperApiKeyResult.cs | 39 +- .../Volo/Abp/Cli/Licensing/IApiKeyService.cs | 11 +- .../Volo/Abp/Cli/Licensing/LicenseType.cs | 25 +- .../Volo/Abp/Cli/NuGet/CommercialPackages.cs | 21 +- .../Volo/Abp/Cli/NuGet/NuGetService.cs | 263 ++- .../ProjectBuilding/AbpIoSourceCodeStore.cs | 401 ++-- .../Analyticses/CliAnalyticsCollect.cs | 89 +- .../CliAnalyticsCollectInputDto.cs | 31 +- .../Analyticses/ICliAnalyticsCollect.cs | 9 +- .../Building/DatabaseManagementSystem.cs | 21 +- .../Building/DatabaseProvider.cs | 15 +- .../Building/DatabaseProviderExtensions.cs | 21 +- .../Building/GithubRepositoryInfo.cs | 31 +- .../Cli/ProjectBuilding/Building/MobileApp.cs | 30 +- .../ProjectBuilding/Building/ModuleInfo.cs | 31 +- .../ModuleProjectBuildPipelineBuilder.cs | 25 +- .../NpmPackageProjectBuildPipelineBuilder.cs | 17 +- ...NugetPackageProjectBuildPipelineBuilder.cs | 23 +- .../Building/ProjectBuildContext.cs | 63 +- .../Building/ProjectBuildContextExtensions.cs | 27 +- .../Building/ProjectBuildPipeline.cs | 31 +- .../Building/ProjectBuildPipelineStep.cs | 11 +- .../ProjectBuilding/Building/ProjectResult.cs | 11 +- .../Steps/ChangeDbMigratorPublicPortStep.cs | 15 +- .../Building/Steps/ChangeLocalhostPortStep.cs | 51 +- .../Steps/ChangePublicAuthPortStep.cs | 27 +- .../Steps/ConnectionStringChangeStep.cs | 87 +- .../Steps/CreateAppSettingsSecretsStep.cs | 81 +- .../Steps/CreateProjectResultZipStep.cs | 45 +- .../DatabaseManagementSystemChangeStep.cs | 171 +- .../Building/Steps/FileEntryListReadStep.cs | 49 +- .../Building/Steps/LicenseCodeReplaceStep.cs | 23 +- .../MicroserviceServiceRandomPortStep.cs | 115 +- .../Building/Steps/MoveFolderStep.cs | 43 +- .../Steps/ProjectReferenceReplaceStep.cs | 305 ++- ...RemoveDependencyFromPackageJsonFileStep.cs | 41 +- .../Building/Steps/RemoveFolderStep.cs | 37 +- .../Steps/RemoveProjectFromPrometheusStep.cs | 65 +- .../Steps/RemoveProjectFromSolutionStep.cs | 159 +- .../Steps/RemoveProjectFromTyeStep.cs | 65 +- .../Building/Steps/RemoveRootFolderStep.cs | 27 +- .../Building/Steps/RenameHelper.cs | 69 +- .../Building/Steps/RenameProjectInTyeStep.cs | 45 +- .../Building/Steps/ReplaceCommonPropsStep.cs | 109 +- .../Steps/ReplaceConfigureAwaitPropsStep.cs | 87 +- .../Building/Steps/SolutionRenameStep.cs | 161 +- .../Building/Steps/TemplateCodeDeleteStep.cs | 17 +- .../ProjectBuilding/Building/TemplateInfo.cs | 63 +- .../TemplateProjectBuildPipelineBuilder.cs | 69 +- .../ProjectBuilding/Building/UiFramework.cs | 19 +- .../Building/UiFrameworkExtensions.cs | 25 +- .../Cli/ProjectBuilding/Files/FileEntry.cs | 163 +- .../Files/FileEntryExtensions.cs | 263 ++- .../ProjectBuilding/Files/FileEntryList.cs | 15 +- .../ProjectBuilding/IModuleInfoProvider.cs | 11 +- .../INpmPackageInfoProvider.cs | 9 +- .../INugetPackageInfoProvider.cs | 9 +- .../Cli/ProjectBuilding/IProjectBuilder.cs | 11 +- .../IRemoteServiceExceptionHandler.cs | 13 +- .../Cli/ProjectBuilding/ISourceCodeStore.cs | 21 +- .../ProjectBuilding/ITemplateInfoProvider.cs | 13 +- .../Cli/ProjectBuilding/ModuleInfoProvider.cs | 87 +- .../ProjectBuilding/ModuleProjectBuilder.cs | 179 +- .../ProjectBuilding/NpmPackageInfoProvider.cs | 77 +- .../NpmPackageProjectBuilder.cs | 161 +- .../NugetPackageInfoProvider.cs | 77 +- .../NugetPackageProjectBuilder.cs | 161 +- .../Cli/ProjectBuilding/ProjectBuildArgs.cs | 139 +- .../Cli/ProjectBuilding/ProjectBuildResult.cs | 21 +- .../RemoteServiceExceptionHandler.cs | 129 +- .../Abp/Cli/ProjectBuilding/SolutionName.cs | 71 +- .../Cli/ProjectBuilding/SourceCodeTypes.cs | 15 +- .../Abp/Cli/ProjectBuilding/TemplateFile.cs | 29 +- .../ProjectBuilding/TemplateInfoProvider.cs | 135 +- .../ProjectBuilding/TemplateProjectBuilder.cs | 285 ++- ...rtChangeForSeparatedIdentityServersStep.cs | 53 +- .../Templates/App/AppProTemplate.cs | 25 +- .../Templates/App/AppTemplate.cs | 25 +- .../Templates/App/AppTemplateBase.cs | 647 +++-- ...ChangeConsoleTestClientPortSettingsStep.cs | 41 +- ...emplateChangeDbMigratorPortSettingsStep.cs | 31 +- ...plateRemoveMongodbCollectionFixtureStep.cs | 95 +- ...eSwitchEntityFrameworkCoreToMongoDbStep.cs | 533 +++-- ...rtChangeForSeparatedIdentityServersStep.cs | 49 +- ...rtChangeForSeparatedIdentityServersStep.cs | 55 +- .../Templates/Console/ConsoleTemplate.cs | 23 +- .../Templates/Console/ConsoleTemplateBase.cs | 11 +- .../Microservice/MicroserviceProTemplate.cs | 23 +- .../MicroserviceServiceProTemplate.cs | 23 +- .../MicroserviceServiceTemplateBase.cs | 91 +- .../Microservice/MicroserviceTemplateBase.cs | 255 +- ...MicroserviceServiceStringEncryptionStep.cs | 51 +- .../Templates/Module/ModuleProTemplate.cs | 25 +- .../Templates/Module/ModuleTemplate.cs | 23 +- .../Templates/Module/ModuleTemplateBase.cs | 159 +- .../RandomizeStringEncryptionStep.cs | 55 +- .../Templates/RemoveUnnecessaryPortsStep.cs | 101 +- .../Templates/TemplateProjectRenameStep.cs | 31 +- .../Templates/TemplateRandomSslPortStep.cs | 259 +- .../Templates/UpdateNuGetConfigStep.cs | 43 +- .../Templates/Wpf/WpfTemplate.cs | 23 +- .../Templates/Wpf/WpfTemplateBase.cs | 11 +- .../AddModuleInfoOutput.cs | 15 +- .../AngularSourceCodeAdder.cs | 443 ++-- .../BlazorProjectTypeChecker.cs | 13 +- .../DbContextFileBuilderConfigureAdder.cs | 133 +- .../ProjectModification/DerivedClassFinder.cs | 99 +- .../EfCoreMigrationManager.cs | 141 +- .../ModuleClassDependcyAdder.cs | 93 +- .../Abp/Cli/ProjectModification/ModuleInfo.cs | 39 +- .../ModuleWithMastersInfo.cs | 11 +- .../ProjectModification/MyGetApiResponse.cs | 13 +- .../Cli/ProjectModification/MyGetPackage.cs | 17 +- .../MyGetPackageListFinder.cs | 69 +- .../ProjectModification/NpmApplicationType.cs | 13 +- .../NpmGlobalPackagesChecker.cs | 67 +- .../Cli/ProjectModification/NpmPackageInfo.cs | 15 +- .../ProjectModification/NpmPackagesUpdater.cs | 513 ++-- .../ProjectModification/NuGetPackageInfo.cs | 19 +- .../ProjectModification/NuGetPackageTarget.cs | 37 +- .../NugetPackageToLocalReferenceConverter.cs | 187 +- .../PackageJsonFileFinder.cs | 49 +- .../PackagePreviewSwitcher.cs | 235 +- .../PackageSourceManager.cs | 169 +- .../ProjectFileNameHelper.cs | 17 +- .../Cli/ProjectModification/ProjectFinder.cs | 283 ++- .../ProjectNpmPackageAdder.cs | 277 ++- .../ProjectNugetPackageAdder.cs | 591 +++-- .../SolutionFileModifier.cs | 309 ++- .../SolutionModuleAdder.cs | 999 ++++---- .../SolutionPackageVersionFinder.cs | 201 +- .../UsingStatementAdder.cs | 83 +- .../VoloNugetPackagesVersionUpdater.cs | 303 ++- .../AbpCliServiceProxyOptions.cs | 15 +- .../Angular/AngularServiceProxyGenerator.cs | 187 +- .../CSharp/CSharpServiceProxyGenerator.cs | 595 +++-- .../Cli/ServiceProxying/GenerateProxyArgs.cs | 95 +- .../ServiceProxying/IServiceProxyGenerator.cs | 9 +- .../JavaScriptServiceProxyGenerator.cs | 111 +- .../ServiceProxyGeneratorBase.cs | 63 +- .../Volo/Abp/Cli/Utils/CmdHelper.cs | 209 +- .../Volo/Abp/Cli/Utils/ConsoleHelper.cs | 29 +- .../Volo/Abp/Cli/Utils/GlobalToolHelper.cs | 51 +- .../Volo/Abp/Cli/Utils/ICmdHelper.cs | 25 +- .../Volo/Abp/Cli/Utils/NamespaceHelper.cs | 23 +- .../Volo/Abp/Cli/Utils/PathHelper.cs | 25 +- .../Volo/Abp/Cli/Utils/PlatformHelper.cs | 73 +- .../Abp/Cli/Utils/ProjectNameValidator.cs | 69 +- .../Volo/Abp/Cli/Utils/StreamHelper.cs | 21 +- .../Volo.Abp.Cli/Volo/Abp/Cli/AbpCliModule.cs | 17 +- .../src/Volo.Abp.Cli/Volo/Abp/Cli/Program.cs | 55 +- .../AbpConfigurationBuilderOptions.cs | 81 +- .../Configuration/ConfigurationHelper.cs | 67 +- .../ServiceCollectionApplicationExtensions.cs | 33 +- .../ServiceCollectionCommonExtensions.cs | 285 ++- ...erviceCollectionConfigurationExtensions.cs | 27 +- ...ctionConventionalRegistrationExtensions.cs | 95 +- ...llectionDynamicOptionsManagerExtensions.cs | 19 +- .../ServiceCollectionLoggingExtensions.cs | 11 +- ...rviceCollectionObjectAccessorExtensions.cs | 75 +- ...ServiceCollectionPreConfigureExtensions.cs | 51 +- ...eCollectionRegistrationActionExtensions.cs | 93 +- .../AbpHostingHostBuilderExtensions.cs | 35 +- ...AbpCoreStringLocalizerFactoryExtensions.cs | 11 +- .../Extensions/Logging/AbpLoggerExtensions.cs | 191 +- ...tionsAbpDynamicOptionsManagerExtensions.cs | 39 +- .../System/AbpComparableExtensions.cs | 27 +- .../System/AbpDateTimeExtensions.cs | 33 +- .../System/AbpDayOfWeekExtensions.cs | 35 +- .../System/AbpEventHandlerExtensions.cs | 69 +- .../System/AbpExceptionExtensions.cs | 49 +- .../System/AbpObjectExtensions.cs | 171 +- .../System/AbpStringExtensions.cs | 861 ++++--- .../Volo.Abp.Core/System/AbpTypeExtensions.cs | 145 +- .../Generic/AbpCollectionExtensions.cs | 181 +- .../Generic/AbpDictionaryExtensions.cs | 225 +- .../Generic/AbpEnumerableExtensions.cs | 107 +- .../Collections/Generic/AbpListExtensions.cs | 351 ++- .../System/IO/AbpStreamExtensions.cs | 55 +- .../System/Linq/AbpQueryableExtensions.cs | 155 +- .../System/Linq/PredicateOperator.cs | 365 ++- .../Reflection/AbpAssemblyExtensions.cs | 11 +- .../Reflection/AbpMemberInfoExtensions.cs | 75 +- .../System/Runtime/IOSPlatformProvider.cs | 9 +- .../System/Runtime/OSPlatformProvider.cs | 25 +- .../Text/Json/JsonSerializerOptionsHelper.cs | 25 +- .../Volo/Abp/AbpApplicationBase.cs | 247 +- .../Volo/Abp/AbpApplicationCreationOptions.cs | 35 +- .../Volo/Abp/AbpApplicationFactory.cs | 57 +- ...pApplicationWithExternalServiceProvider.cs | 75 +- ...pApplicationWithInternalServiceProvider.cs | 85 +- .../Volo.Abp.Core/Volo/Abp/AbpException.cs | 39 +- .../Volo/Abp/AbpInitializationException.cs | 35 +- .../Volo/Abp/AbpShutdownException.cs | 35 +- .../Abp/ApplicationInitializationContext.cs | 19 +- .../Volo/Abp/ApplicationShutdownContext.cs | 19 +- .../Abp/Aspects/AbpCrossCuttingConcerns.cs | 107 +- .../IAvoidDuplicateCrossCuttingConcerns.cs | 11 +- .../Volo/Abp/Bundling/BundleContext.cs | 49 +- .../Volo/Abp/Bundling/BundleDefinition.cs | 19 +- .../Abp/Bundling/BundleParameterDictionary.cs | 9 +- .../Volo/Abp/Bundling/IBundleContributor.cs | 13 +- .../Volo/Abp/BusinessException.cs | 81 +- framework/src/Volo.Abp.Core/Volo/Abp/Check.cs | 237 +- .../Volo/Abp/Collections/ITypeList.cs | 67 +- .../Volo/Abp/Collections/TypeList.cs | 239 +- .../Volo/Abp/Content/IRemoteStreamContent.cs | 15 +- .../Volo/Abp/Content/RemoteStreamContent.cs | 57 +- .../AbpLazyServiceProvider.cs | 103 +- .../CachedServiceProvider.cs | 41 +- .../ConventionalRegistrarBase.cs | 209 +- .../ConventionalRegistrarList.cs | 9 +- .../DefaultConventionalRegistrar.cs | 71 +- .../DefaultServiceScopeFactory.cs | 33 +- .../DependencyAttribute.cs | 27 +- ...isableConventionalRegistrationAttribute.cs | 9 +- .../ExposeServicesAttribute.cs | 83 +- .../ExposedServiceExplorer.cs | 37 +- .../IAbpLazyServiceProvider.cs | 23 +- .../ICachedServiceProvider.cs | 23 +- .../IClientScopeServiceProviderAccessor.cs | 9 +- .../IConventionalRegistrar.cs | 13 +- .../IExposedServiceTypesProvider.cs | 9 +- .../IHybridServiceScopeFactory.cs | 9 +- .../DependencyInjection/IObjectAccessor.cs | 13 +- .../IOnServiceExposingContext.cs | 13 +- .../IOnServiceRegistredContext.cs | 13 +- .../DependencyInjection/IScopedDependency.cs | 9 +- .../IServiceProviderAccessor.cs | 11 +- .../ISingletonDependency.cs | 9 +- .../ITransientDependency.cs | 7 +- .../Abp/DependencyInjection/ObjectAccessor.cs | 23 +- .../OnServiceExposingContext.cs | 21 +- .../OnServiceRegistredContext.cs | 25 +- .../ServiceExposingActionList.cs | 9 +- .../ServiceRegistrationActionList.cs | 11 +- .../Volo.Abp.Core/Volo/Abp/DisposeAction.cs | 37 +- .../Volo/Abp/DynamicProxy/AbpInterceptor.cs | 11 +- .../DynamicProxy/DynamicProxyIgnoreTypes.cs | 51 +- .../Volo/Abp/DynamicProxy/IAbpInterceptor.cs | 9 +- .../Abp/DynamicProxy/IAbpMethodInvocation.cs | 23 +- .../Volo/Abp/DynamicProxy/ProxyHelper.cs | 51 +- .../ExceptionNotificationContext.cs | 47 +- .../ExceptionHandling/ExceptionNotifier.cs | 51 +- .../ExceptionNotifierExtensions.cs | 35 +- .../ExceptionHandling/ExceptionSubscriber.cs | 13 +- .../ExceptionHandling/IExceptionNotifier.cs | 11 +- .../ExceptionHandling/IExceptionSubscriber.cs | 9 +- .../Abp/ExceptionHandling/IHasErrorCode.cs | 11 +- .../Abp/ExceptionHandling/IHasErrorDetails.cs | 11 +- .../ExceptionHandling/IHasHttpStatusCode.cs | 11 +- .../ILocalizeErrorMessage.cs | 11 +- .../NullExceptionNotifier.cs | 23 +- .../Volo.Abp.Core/Volo/Abp/IAbpApplication.cs | 45 +- ...pApplicationWithExternalServiceProvider.cs | 29 +- ...pApplicationWithInternalServiceProvider.cs | 31 +- .../Volo/Abp/IAsyncInitialize.cs | 17 +- .../Volo/Abp/IBusinessException.cs | 11 +- .../Volo/Abp/IO/DirectoryHelper.cs | 119 +- .../Volo.Abp.Core/Volo/Abp/IO/FileHelper.cs | 207 +- .../Volo/Abp/IOnApplicationInitialization.cs | 11 +- .../Volo/Abp/IOnApplicationShutdown.cs | 11 +- .../Volo.Abp.Core/Volo/Abp/IRemoteService.cs | 9 +- .../src/Volo.Abp.Core/Volo/Abp/ISoftDelete.cs | 25 +- .../Volo/Abp/IUserFriendlyException.cs | 9 +- .../InternalServiceCollectionExtensions.cs | 77 +- .../Volo/Abp/Internal/Utf8Helper.cs | 35 +- .../Volo/Abp/Localization/CultureHelper.cs | 91 +- .../Abp/Localization/LocalizationContext.cs | 21 +- .../Volo/Abp/Logging/AbpInitLogEntry.cs | 19 +- .../Volo/Abp/Logging/DefaultInitLogger.cs | 51 +- .../Abp/Logging/DefaultInitLoggerFactory.cs | 15 +- .../Volo/Abp/Logging/HasLogLevelExtensions.cs | 17 +- .../Abp/Logging/IExceptionWithSelfLogging.cs | 11 +- .../Volo/Abp/Logging/IHasLogLevel.cs | 19 +- .../Volo/Abp/Logging/IInitLogger.cs | 9 +- .../Volo/Abp/Logging/IInitLoggerFactory.cs | 9 +- .../Volo/Abp/Modularity/AbpModule.cs | 205 +- .../Abp/Modularity/AbpModuleDescriptor.cs | 67 +- .../Volo/Abp/Modularity/AbpModuleHelper.cs | 79 +- .../Modularity/AbpModuleLifecycleOptions.cs | 15 +- .../DefaultModuleLifecycleContributor.cs | 43 +- .../Volo/Abp/Modularity/DependsOnAttribute.cs | 35 +- .../Volo/Abp/Modularity/IAbpModule.cs | 9 +- .../Abp/Modularity/IAbpModuleDescriptor.cs | 19 +- .../Abp/Modularity/IDependedTypesProvider.cs | 13 +- .../Volo/Abp/Modularity/IModuleContainer.cs | 13 +- .../Modularity/IModuleLifecycleContributor.cs | 11 +- .../Volo/Abp/Modularity/IModuleLoader.cs | 19 +- .../Volo/Abp/Modularity/IModuleManager.cs | 11 +- .../IOnPostApplicationInitialization.cs | 11 +- .../IOnPreApplicationInitialization.cs | 11 +- .../Abp/Modularity/IPostConfigureServices.cs | 11 +- .../Abp/Modularity/IPreConfigureServices.cs | 9 +- .../ModuleLifecycleContributorBase.cs | 17 +- .../Volo/Abp/Modularity/ModuleLoader.cs | 145 +- .../Volo/Abp/Modularity/ModuleManager.cs | 93 +- .../Modularity/PlugIns/FilePlugInSource.cs | 49 +- .../Modularity/PlugIns/FolderPlugInSource.cs | 75 +- .../Abp/Modularity/PlugIns/IPlugInSource.cs | 13 +- .../PlugIns/PlugInSourceExtensions.cs | 23 +- .../Modularity/PlugIns/PlugInSourceList.cs | 19 +- .../PlugIns/PlugInSourceListExtensions.cs | 49 +- .../Modularity/PlugIns/TypePlugInSource.cs | 27 +- .../Modularity/ServiceConfigurationContext.cs | 48 +- .../src/Volo.Abp.Core/Volo/Abp/NameValue.cs | 75 +- .../Volo/Abp/NamedTypeSelector.cs | 47 +- .../Abp/NamedTypeSelectorListExtensions.cs | 31 +- .../Volo.Abp.Core/Volo/Abp/NullDisposable.cs | 21 +- .../Volo.Abp.Core/Volo/Abp/ObjectHelper.cs | 85 +- .../Abp/Options/AbpDynamicOptionsManager.cs | 27 +- .../Volo/Abp/Options/AbpOptionsFactory.cs | 117 +- .../Abp/Options/PreConfigureActionList.cs | 15 +- .../Volo.Abp.Core/Volo/Abp/RandomHelper.cs | 163 +- .../Volo/Abp/Reflection/AssemblyFinder.cs | 41 +- .../Volo/Abp/Reflection/AssemblyHelper.cs | 43 +- .../Volo/Abp/Reflection/IAssemblyFinder.cs | 19 +- .../Volo/Abp/Reflection/ITypeFinder.cs | 19 +- .../Volo/Abp/Reflection/ReflectionHelper.cs | 345 ++- .../Volo/Abp/Reflection/TypeFinder.cs | 57 +- .../Volo/Abp/Reflection/TypeHelper.cs | 529 +++-- .../Volo/Abp/RemoteServiceAttribute.cs | 141 +- .../AbpSimpleStateCheckerOptions.cs | 17 +- .../IHasSimpleStateCheckers.cs | 11 +- .../ISimpleBatchStateChecker.cs | 11 +- .../ISimpleStateChecker.cs | 11 +- .../ISimpleStateCheckerManager.cs | 13 +- .../SimpleBatchStateCheckerBase.cs | 17 +- .../SimpleBatchStateCheckerContext.cs | 21 +- .../SimpleStateCheckerContext.cs | 21 +- .../SimpleStateCheckerManager.cs | 143 +- .../SimpleStateCheckerResult.cs | 21 +- .../Abp/Text/Formatting/FormatStringToken.cs | 21 +- .../Text/Formatting/FormatStringTokenType.cs | 13 +- .../Text/Formatting/FormatStringTokenizer.cs | 111 +- .../FormattedStringValueExtracter.cs | 187 +- .../Volo/Abp/Text/StringHelper.cs | 53 +- .../Volo/Abp/Threading/AsyncHelper.cs | 109 +- .../Volo/Abp/Threading/AsyncOneTimeRunner.cs | 37 +- .../Volo/Abp/Threading/InternalAsyncHelper.cs | 369 ++- .../Volo/Abp/Threading/LockExtensions.cs | 97 +- .../Volo/Abp/Threading/OneTimeRunner.cs | 37 +- .../Abp/Threading/SemaphoreSlimExtensions.cs | 135 +- .../Volo/Abp/Threading/TaskCache.cs | 19 +- .../Abp/Tracing/AbpCorrelationIdOptions.cs | 11 +- .../Tracing/DefaultCorrelationIdProvider.cs | 21 +- .../Abp/Tracing/ICorrelationIdProvider.cs | 11 +- .../Volo/Abp/UserFriendlyException.cs | 55 +- .../Validation/DynamicMaxLengthAttribute.cs | 53 +- .../Abp/Validation/DynamicRangeAttribute.cs | 93 +- .../DynamicStringLengthAttribute.cs | 83 +- .../Volo/Abp/Dapper/AbpDapperModule.cs | 15 +- .../Repositories/Dapper/DapperRepository.cs | 31 +- .../Repositories/Dapper/IDapperRepository.cs | 19 +- .../Volo/Abp/Data/AbpCommonDbProperties.cs | 29 +- .../Volo/Abp/Data/AbpDataFilterOptions.cs | 15 +- .../Volo/Abp/Data/AbpDataModule.cs | 73 +- .../Volo/Abp/Data/AbpDataSeedOptions.cs | 15 +- .../Volo/Abp/Data/AbpDatabaseInfo.cs | 45 +- .../Abp/Data/AbpDatabaseInfoDictionary.cs | 83 +- .../Abp/Data/AbpDbConcurrencyException.cs | 51 +- .../Volo/Abp/Data/AbpDbConnectionOptions.cs | 67 +- .../Abp/Data/ApplyDatabaseMigrationsEto.cs | 19 +- .../Abp/Data/ConcurrencyStampExtensions.cs | 13 +- .../Abp/Data/ConnectionStringNameAttribute.cs | 45 +- .../ConnectionStringResolverExtensions.cs | 49 +- .../Volo/Abp/Data/ConnectionStrings.cs | 22 +- .../Volo.Abp.Data/Volo/Abp/Data/DataFilter.cs | 143 +- .../Volo/Abp/Data/DataFilterState.cs | 25 +- .../Volo/Abp/Data/DataSeedContext.cs | 72 +- .../Volo/Abp/Data/DataSeedContributorList.cs | 9 +- .../Volo.Abp.Data/Volo/Abp/Data/DataSeeder.cs | 45 +- .../Volo/Abp/Data/DataSeederExtensions.cs | 13 +- .../Data/DefaultConnectionStringResolver.cs | 57 +- .../Abp/Data/IConnectionStringResolver.cs | 17 +- .../Volo/Abp/Data/IDataFilter.cs | 35 +- .../Volo/Abp/Data/IDataSeedContributor.cs | 11 +- .../Volo/Abp/Data/IDataSeeder.cs | 11 +- .../Domain/Entities/IHasConcurrencyStamp.cs | 11 +- .../AbpDddApplicationContractsModule.cs | 35 +- .../Abp/Application/Dtos/AuditedEntityDto.cs | 49 +- .../Dtos/AuditedEntityWithUserDto.cs | 57 +- .../Dtos/CreationAuditedEntityDto.cs | 49 +- .../Dtos/CreationAuditedEntityWithUserDto.cs | 45 +- .../Volo/Abp/Application/Dtos/EntityDto.cs | 37 +- .../Dtos/ExtensibleAuditedEntityDto.cs | 53 +- .../ExtensibleAuditedEntityWithUserDto.cs | 63 +- .../ExtensibleCreationAuditedEntityDto.cs | 53 +- ...ensibleCreationAuditedEntityWithUserDto.cs | 51 +- .../Application/Dtos/ExtensibleEntityDto.cs | 37 +- .../Dtos/ExtensibleFullAuditedEntityDto.cs | 61 +- .../ExtensibleFullAuditedEntityWithUserDto.cs | 71 +- .../Application/Dtos/FullAuditedEntityDto.cs | 57 +- .../Dtos/FullAuditedEntityWithUserDto.cs | 69 +- .../Volo/Abp/Application/Dtos/IEntityDto.cs | 17 +- .../Abp/Application/Dtos/IHasTotalCount.cs | 19 +- .../Application/Dtos/ILimitedResultRequest.cs | 21 +- .../Volo/Abp/Application/Dtos/IListResult.cs | 21 +- .../Dtos/IPagedAndSortedResultRequest.cs | 17 +- .../Volo/Abp/Application/Dtos/IPagedResult.cs | 17 +- .../Application/Dtos/IPagedResultRequest.cs | 19 +- .../Application/Dtos/ISortedResultRequest.cs | 35 +- .../Dtos/LimitedResultRequestDto.cs | 69 +- .../Abp/Application/Dtos/ListResultDto.cs | 50 +- .../Dtos/PagedAndSortedResultRequestDto.cs | 19 +- .../Abp/Application/Dtos/PagedResultDto.cs | 49 +- .../Application/Dtos/PagedResultRequestDto.cs | 21 +- .../AbpDddApplicationContractsResource.cs | 9 +- .../Services/IApplicationService.cs | 15 +- .../Application/Services/ICreateAppService.cs | 19 +- .../Services/ICreateUpdateAppService.cs | 27 +- .../Application/Services/ICrudAppService.cs | 45 +- .../Application/Services/IDeleteAppService.cs | 9 +- .../Services/IReadOnlyAppService.cs | 29 +- .../Application/Services/IUpdateAppService.cs | 19 +- .../Linq/AbpPagingQueryableExtensions.cs | 23 +- .../Application/AbpDddApplicationModule.cs | 41 +- .../Services/AbstractKeyCrudAppService.cs | 317 ++- .../Services/AbstractKeyReadOnlyAppService.cs | 327 ++- .../Services/ApplicationService.cs | 151 +- .../Application/Services/CrudAppService.cs | 149 +- .../Services/ReadOnlyAppService.cs | 79 +- .../ServiceCollectionRepositoryExtensions.cs | 133 +- .../EntityHistorySelectorListExtensions.cs | 21 +- .../AbpCommonDbContextRegistrationOptions.cs | 193 +- ...mmonDbContextRegistrationOptionsBuilder.cs | 149 +- .../ReplaceDbContextAttribute.cs | 17 +- .../Volo/Abp/Domain/AbpDddDomainModule.cs | 37 +- .../Volo/Abp/Domain/Entities/AggregateRoot.cs | 99 +- .../Entities/Auditing/AuditedAggregateRoot.cs | 63 +- .../Auditing/AuditedAggregateRootWithUser.cs | 67 +- .../Domain/Entities/Auditing/AuditedEntity.cs | 63 +- .../Auditing/AuditedEntityWithUser.cs | 67 +- .../Auditing/CreationAuditedAggregateRoot.cs | 59 +- .../CreationAuditedAggregateRootWithUser.cs | 55 +- .../Auditing/CreationAuditedEntity.cs | 59 +- .../Auditing/CreationAuditedEntityWithUser.cs | 55 +- .../Auditing/FullAuditedAggregateRoot.cs | 73 +- .../FullAuditedAggregateRootWithUser.cs | 75 +- .../Entities/Auditing/FullAuditedEntity.cs | 73 +- .../Auditing/FullAuditedEntityWithUser.cs | 75 +- .../Abp/Domain/Entities/BasicAggregateRoot.cs | 147 +- .../Domain/Entities/ConcurrencyStampConsts.cs | 9 +- .../Entities/DisableIdGenerationAttribute.cs | 7 +- .../Abp/Domain/Entities/DomainEventRecord.cs | 23 +- .../Volo/Abp/Domain/Entities/Entity.cs | 81 +- .../Volo/Abp/Domain/Entities/EntityHelper.cs | 399 ++-- .../AbpDistributedEntityEventOptions.cs | 23 +- .../AutoEntityDistributedEventSelectorList.cs | 11 +- ...yDistributedEventSelectorListExtensions.cs | 203 +- .../Events/Distributed/EntityCreatedEto.cs | 35 +- .../Events/Distributed/EntityDeletedEto.cs | 35 +- .../Entities/Events/Distributed/EntityEto.cs | 29 +- .../Events/Distributed/EntityToEtoMapper.cs | 71 +- .../Events/Distributed/EntityUpdatedEto.cs | 35 +- .../Distributed/EtoMappingDictionary.cs | 13 +- .../Distributed/EtoMappingDictionaryItem.cs | 21 +- ...IAutoEntityDistributedEventSelectorList.cs | 9 +- .../Events/Distributed/IEntityToEtoMapper.cs | 11 +- .../Entities/Events/DomainEventEntry.cs | 29 +- .../Entities/Events/EntityChangeEntry.cs | 23 +- .../Events/EntityChangeEventHelper.cs | 337 ++- .../Entities/Events/EntityChangedEventData.cs | 29 +- .../Events/EntityChangingEventData.cs | 31 +- .../Entities/Events/EntityCreatedEventData.cs | 27 +- .../Events/EntityCreatingEventData.cs | 29 +- .../Entities/Events/EntityDeletedEventData.cs | 27 +- .../Events/EntityDeletingEventData.cs | 29 +- .../Domain/Entities/Events/EntityEventData.cs | 59 +- .../Entities/Events/EntityEventReport.cs | 29 +- .../Entities/Events/EntityUpdatedEventData.cs | 27 +- .../Events/EntityUpdatingEventData.cs | 29 +- .../Events/IEntityChangeEventHelper.cs | 27 +- .../Events/NullEntityChangeEventHelper.cs | 71 +- .../Abp/Domain/Entities/IAggregateRoot.cs | 29 +- .../Volo/Abp/Domain/Entities/IEntity.cs | 39 +- .../Domain/Entities/IGeneratesDomainEvents.cs | 19 +- .../AbpRepositoryConventionalRegistrar.cs | 45 +- .../Repositories/BasicRepositoryBase.cs | 183 +- .../Domain/Repositories/IBasicRepository.cs | 187 +- .../Repositories/IReadOnlyBasicRepository.cs | 89 +- .../Repositories/IReadOnlyRepository.cs | 53 +- .../Abp/Domain/Repositories/IRepository.cs | 125 +- .../Repositories/ISupportsExplicitLoading.cs | 31 +- .../Repositories/RepositoryAsyncExtensions.cs | 965 ++++---- .../Abp/Domain/Repositories/RepositoryBase.cs | 157 +- .../Repositories/RepositoryExtensions.cs | 285 ++- .../Repositories/RepositoryRegistrarBase.cs | 143 +- .../Repositories/UnitOfWorkItemNames.cs | 9 +- .../Volo/Abp/Domain/Services/DomainService.cs | 25 +- .../Abp/Domain/Services/IDomainService.cs | 15 +- .../Volo/Abp/Domain/Values/ValueObject.cs | 49 +- ...AbpDistributedLockingAbstractionsModule.cs | 11 +- .../DistributedLocking/IAbpDistributedLock.cs | 39 +- .../IAbpDistributedLockHandle.cs | 11 +- .../LocalAbpDistributedLock.cs | 35 +- .../LocalAbpDistributedLockHandle.cs | 27 +- .../AbpDistributedLockHandleExtensions.cs | 15 +- .../AbpDistributedLockingModule.cs | 17 +- .../MedallionAbpDistributedLock.cs | 43 +- .../MedallionAbpDistributedLockHandle.cs | 25 +- .../Volo/Abp/Emailing/AbpEmailingModule.cs | 49 +- .../Abp/Emailing/BackgroundEmailSendingJob.cs | 29 +- .../Emailing/BackgroundEmailSendingJobArgs.cs | 27 +- .../Volo/Abp/Emailing/EmailSenderBase.cs | 183 +- .../Abp/Emailing/EmailSenderConfiguration.cs | 69 +- .../Volo/Abp/Emailing/EmailSettingNames.cs | 91 +- .../Volo/Abp/Emailing/EmailSettingProvider.cs | 115 +- .../Volo/Abp/Emailing/IEmailSender.cs | 111 +- .../Abp/Emailing/IEmailSenderConfiguration.cs | 19 +- .../Emailing/Localization/EmailingResource.cs | 11 +- .../Volo/Abp/Emailing/NullEmailSender.cs | 57 +- .../Abp/Emailing/Smtp/ISmtpEmailSender.cs | 25 +- .../Smtp/ISmtpEmailSenderConfiguration.cs | 79 +- .../Volo/Abp/Emailing/Smtp/SmtpEmailSender.cs | 103 +- .../Smtp/SmtpEmailSenderConfiguration.cs | 97 +- ...StandardEmailTemplateDefinitionProvider.cs | 39 +- .../Templates/StandardEmailTemplates.cs | 11 +- .../AbpMySqlModelBuilderExtensions.cs | 15 +- ...textConfigurationContextMySQLExtensions.cs | 45 +- .../AbpDbContextOptionsMySQLExtensions.cs | 37 +- .../MySQLInboxConfigExtensions.cs | 13 +- .../MySQLOutboxConfigExtensions.cs | 13 +- .../AbpEntityFrameworkCoreMySQLModule.cs | 25 +- .../AbpOracleModelBuilderExtensions.cs | 13 +- ...figurationContextOracleDevartExtensions.cs | 39 +- ...pDbContextOptionsOracleDevartExtensions.cs | 41 +- .../IOracleDbContextEventInbox.cs | 9 +- .../IOracleDbContextEventOutbox.cs | 9 +- .../OracleDbContextEventInbox.cs | 61 +- .../OracleDbContextEventOutbox.cs | 37 +- .../OracleInboxConfigExtensions.cs | 13 +- .../OracleOutboxConfigExtensions.cs | 13 +- ...bpEntityFrameworkCoreOracleDevartModule.cs | 29 +- ...extConfigurationContextOracleExtensions.cs | 37 +- .../AbpDbContextOptionsOracleExtensions.cs | 37 +- .../IOracleDbContextEventInbox.cs | 9 +- .../IOracleDbContextEventOutbox.cs | 9 +- .../OracleDbContextEventInbox.cs | 61 +- .../OracleDbContextEventOutbox.cs | 37 +- .../OracleInboxConfigExtensions.cs | 13 +- .../OracleOutboxConfigExtensions.cs | 13 +- .../AbpEntityFrameworkCoreOracleModule.cs | 25 +- .../AbpPostgreSqlModelBuilderExtensions.cs | 15 +- ...onfigurationContextPostgreSqlExtensions.cs | 51 +- ...AbpDbContextOptionsPostgreSqlExtensions.cs | 77 +- .../IPostgreSqlDbContextEventInbox.cs | 9 +- .../IPostgreSqlDbContextEventOutbox.cs | 9 +- .../PostgreSqlDbContextEventInbox.cs | 53 +- .../PostgreSqlDbContextEventOutbox.cs | 27 +- .../PostgreSqlInboxConfigExtensions.cs | 13 +- .../PostgreSqlOutboxConfigExtensions.cs | 13 +- .../AbpEntityFrameworkCorePostgreSqlModule.cs | 39 +- .../AbpSqlServerModelBuilderExtensions.cs | 15 +- ...ConfigurationContextSqlServerExtensions.cs | 37 +- .../AbpDbContextOptionsSqlServerExtensions.cs | 39 +- .../SqlServerInboxConfigExtensions.cs | 13 +- .../SqlServerOutboxConfigExtensions.cs | 13 +- .../AbpEntityFrameworkCoreSqlServerModule.cs | 25 +- .../AbpSqliteModelBuilderExtensions.cs | 15 +- ...extConfigurationContextSqliteExtensions.cs | 37 +- .../AbpDbContextOptionsSqliteExtensions.cs | 37 +- .../SqliteInboxConfigExtensions.cs | 13 +- .../SqliteOutboxConfigExtensions.cs | 13 +- .../AbpEntityFrameworkCoreSqliteModule.cs | 13 +- .../AbpEntityFrameworkQueryableExtensions.cs | 29 +- .../AbpModelBuilderExtensions.cs | 253 +- .../AbpEfCoreServiceCollectionExtensions.cs | 73 +- .../EfCoreRepositoryExtensions.cs | 63 +- .../EntityFrameworkCore/EfCoreRepository.cs | 659 +++--- .../IEfCoreBulkOperationProvider.cs | 55 +- .../EntityFrameworkCore/IEfCoreRepository.cs | 29 +- .../Abp/EntityFrameworkCore/AbpDbContext.cs | 1017 ++++---- .../AbpDbContextOptions.cs | 145 +- ...AbpEfCoreDbContextInitializationContext.cs | 17 +- .../AbpEntityFrameworkCoreModule.cs | 37 +- .../DbContextExtensions.cs | 13 +- .../EntityFrameworkCore/DbContextHelper.cs | 23 +- .../AbpDbContextConfigurationContext.cs | 83 +- .../AbpDbContextConfigurerAction.cs | 41 +- .../AbpDbContextRegistrationOptions.cs | 31 +- .../DependencyInjection/AbpEntityOptions.cs | 63 +- .../DbContextCreationContext.cs | 39 +- .../DbContextOptionsFactory.cs | 163 +- .../EfCoreRepositoryRegistrar.cs | 37 +- .../IAbpDbContextConfigurer.cs | 21 +- ...IAbpDbContextRegistrationOptionsBuilder.cs | 13 +- .../DistributedEvents/DbContextEventInbox.cs | 125 +- .../DistributedEvents/DbContextEventOutbox.cs | 81 +- .../EfCoreInboxConfigExtensions.cs | 15 +- .../EfCoreOutboxConfigExtensions.cs | 15 +- ...entInboxDbContextModelBuilderExtensions.cs | 27 +- ...ntOutboxDbContextModelBuilderExtensions.cs | 25 +- .../DistributedEvents/IDbContextEventInbox.cs | 13 +- .../IDbContextEventOutbox.cs | 13 +- .../DistributedEvents/IHasEventInbox.cs | 11 +- .../DistributedEvents/IHasEventOutbox.cs | 11 +- .../ISqlRawDbContextEventInbox.cs | 9 +- .../ISqlRawDbContextEventOutbox.cs | 9 +- .../DistributedEvents/IncomingEventRecord.cs | 101 +- .../DistributedEvents/OutgoingEventRecord.cs | 85 +- .../SqlRawDbContextEventInbox.cs | 53 +- .../SqlRawDbContextEventOutbox.cs | 29 +- .../EfCoreAsyncQueryableProvider.cs | 679 +++--- .../EfCoreDatabaseProvider.cs | 23 +- .../EntityHistory/EntityHistoryHelper.cs | 553 +++-- .../EntityHistory/IEntityHistoryHelper.cs | 11 +- .../EntityHistory/NullEntityHistoryHelper.cs | 29 +- .../IAbpEfCoreDbContext.cs | 11 +- .../EntityFrameworkCore/IDbContextProvider.cs | 15 +- .../EntityFrameworkCore/IEfCoreDbContext.cs | 87 +- .../AbpEntityTypeBuilderExtensions.cs | 457 ++-- .../AbpModelBuilderConfigurationOptions.cs | 43 +- .../AbpModelBuilderObjectExtensions.cs | 13 +- .../ExtraPropertyDictionaryValueComparer.cs | 17 +- .../AbpDateTimeValueConverter.cs | 17 +- .../ValueConverters/AbpJsonValueConverter.cs | 35 +- .../ExtraPropertiesValueConverter.cs | 115 +- .../EfCoreObjectExtensionInfoExtensions.cs | 237 +- .../EfCoreObjectExtensionManagerExtensions.cs | 355 ++- ...reObjectExtensionPropertyInfoExtensions.cs | 119 +- ...ObjectExtensionInfoEfCoreMappingOptions.cs | 59 +- ...tensionPropertyInfoEfCoreMappingOptions.cs | 81 +- .../EntityFrameworkCore/EfCoreDatabaseApi.cs | 25 +- .../EfCoreTransactionApi.cs | 85 +- .../UnitOfWorkDbContextProvider.cs | 485 ++-- .../Entities/Events/Distributed/EtoBase.cs | 19 +- .../AbpEventBusAbstractionsModule.cs | 7 +- .../Volo/Abp/EventBus/EventNameAttribute.cs | 53 +- .../Abp/EventBus/GenericEventNameAttribute.cs | 61 +- .../Volo/Abp/EventBus/IEventNameProvider.cs | 11 +- .../EventBus/Azure/AbpAzureEventBusOptions.cs | 15 +- .../EventBus/Azure/AbpEventBusAzureModule.cs | 37 +- .../Azure/AzureDistributedEventBus.cs | 355 ++- .../EventBus/Kafka/AbpEventBusKafkaModule.cs | 33 +- .../EventBus/Kafka/AbpKafkaEventBusOptions.cs | 13 +- .../Kafka/KafkaDistributedEventBus.cs | 479 ++-- .../RabbitMq/AbpEventBusRabbitMqModule.cs | 33 +- .../RabbitMq/AbpRabbitMqEventBusOptions.cs | 13 +- .../RabbitMq/RabbitMqDistributedEventBus.cs | 497 ++-- .../EventBus/Rebus/AbpEventBusRebusModule.cs | 51 +- .../EventBus/Rebus/AbpRebusEventBusOptions.cs | 63 +- .../Abp/EventBus/Rebus/IRebusSerializer.cs | 13 +- .../Rebus/RebusDistributedEventBus.cs | 341 ++- .../RebusDistributedEventHandlerAdapter.cs | 23 +- .../Rebus/Utf8JsonRabbitMqSerializer.cs | 39 +- .../Volo/Abp/EventBus/AbpEventBusModule.cs | 85 +- .../Volo/Abp/EventBus/ActionEventHandler.cs | 55 +- .../AbpDistributedEventBusExtensions.cs | 23 +- .../AbpDistributedEventBusOptions.cs | 23 +- .../Distributed/AbpEventBusBoxesOptions.cs | 83 +- .../Distributed/DistributedEventBusBase.cs | 231 +- .../Distributed/IDistributedEventBus.cs | 43 +- .../Distributed/IDistributedEventHandler.cs | 19 +- .../Abp/EventBus/Distributed/IEventInbox.cs | 17 +- .../Abp/EventBus/Distributed/IEventOutbox.cs | 13 +- .../EventBus/Distributed/IInboxProcessor.cs | 15 +- .../Abp/EventBus/Distributed/IOutboxSender.cs | 15 +- .../Distributed/ISupportsEventBoxes.cs | 25 +- .../Abp/EventBus/Distributed/InboxConfig.cs | 41 +- .../Distributed/InboxConfigDictionary.cs | 23 +- .../Distributed/InboxProcessManager.cs | 55 +- .../EventBus/Distributed/InboxProcessor.cs | 197 +- .../EventBus/Distributed/IncomingEventInfo.cs | 75 +- .../Distributed/LocalDistributedEventBus.cs | 215 +- .../Distributed/NullDistributedEventBus.cs | 187 +- .../Abp/EventBus/Distributed/OutboxConfig.cs | 37 +- .../Distributed/OutboxConfigDictionary.cs | 25 +- .../Abp/EventBus/Distributed/OutboxSender.cs | 155 +- .../Distributed/OutboxSenderManager.cs | 55 +- .../EventBus/Distributed/OutgoingEventInfo.cs | 68 +- .../Volo/Abp/EventBus/EventBusBase.cs | 434 ++-- .../EventBus/EventHandlerDisposeWrapper.cs | 29 +- .../EventHandlerFactoryUnregistrar.cs | 39 +- .../Volo/Abp/EventBus/IEventBus.cs | 205 +- .../Abp/EventBus/IEventDataMayHaveTenantId.cs | 43 +- ...EventDataWithInheritableGenericArgument.cs | 33 +- .../Volo/Abp/EventBus/IEventHandler.cs | 19 +- .../EventBus/IEventHandlerDisposeWrapper.cs | 11 +- .../Volo/Abp/EventBus/IEventHandlerFactory.cs | 23 +- .../Abp/EventBus/IocEventHandlerFactory.cs | 77 +- .../EventBus/Local/AbpLocalEventBusOptions.cs | 17 +- .../Volo/Abp/EventBus/Local/ILocalEventBus.cs | 27 +- .../Abp/EventBus/Local/ILocalEventHandler.cs | 21 +- .../Volo/Abp/EventBus/Local/LocalEventBus.cs | 245 +- .../Abp/EventBus/Local/LocalEventMessage.cs | 23 +- .../Abp/EventBus/Local/NullLocalEventBus.cs | 167 +- .../EventBus/SingleInstanceHandlerFactory.cs | 61 +- .../EventBus/TransientEventHandlerFactory.cs | 107 +- .../Abp/EventBus/UnitOfWorkEventPublisher.cs | 65 +- .../AbpExceptionHandlingOptions.cs | 11 +- .../DefaultExceptionToErrorInfoConverter.cs | 443 ++-- .../IExceptionToErrorInfoConverter.cs | 43 +- .../Entities/EntityNotFoundException.cs | 123 +- .../AbpExceptionHandlingModule.cs | 43 +- .../AbpExceptionHandlingResource.cs | 9 +- .../Abp/Http/Client/AbpRemoteCallException.cs | 55 +- .../Volo/Abp/Http/RemoteServiceErrorInfo.cs | 91 +- .../Abp/Http/RemoteServiceErrorResponse.cs | 17 +- .../Http/RemoteServiceValidationErrorInfo.cs | 105 +- .../Volo/Abp/Features/AbpFeatureErrorCodes.cs | 13 +- .../Volo/Abp/Features/AbpFeatureOptions.cs | 19 +- .../Volo/Abp/Features/AbpFeaturesModule.cs | 95 +- .../DefaultValueFeatureValueProvider.cs | 27 +- .../Features/DisableFeatureCheckAttribute.cs | 11 +- .../Features/EditionFeatureValueProvider.cs | 37 +- .../Volo/Abp/Features/FeatureChecker.cs | 91 +- .../Volo/Abp/Features/FeatureCheckerBase.cs | 43 +- .../Abp/Features/FeatureCheckerExtensions.cs | 117 +- .../Volo/Abp/Features/FeatureDefinition.cs | 327 ++- .../Abp/Features/FeatureDefinitionContext.cs | 65 +- .../Abp/Features/FeatureDefinitionManager.cs | 167 +- .../Abp/Features/FeatureDefinitionProvider.cs | 11 +- .../Abp/Features/FeatureGroupDefinition.cs | 175 +- .../Volo/Abp/Features/FeatureInterceptor.cs | 49 +- .../Features/FeatureInterceptorRegistrar.cs | 47 +- .../FeatureSimpleStateCheckerExtensions.cs | 41 +- .../Volo/Abp/Features/FeatureValue.cs | 23 +- .../Volo/Abp/Features/FeatureValueProvider.cs | 23 +- .../Volo/Abp/Features/IFeatureChecker.cs | 11 +- .../Abp/Features/IFeatureDefinitionContext.cs | 19 +- .../Abp/Features/IFeatureDefinitionManager.cs | 17 +- .../Features/IFeatureDefinitionProvider.cs | 11 +- .../Volo/Abp/Features/IFeatureStore.cs | 17 +- .../Abp/Features/IFeatureValueProvider.cs | 13 +- .../IMethodInvocationFeatureCheckerService.cs | 15 +- .../Localization/AbpFeatureResource.cs | 9 +- .../MethodInvocationFeatureCheckerContext.cs | 17 +- .../MethodInvocationFeatureCheckerService.cs | 79 +- .../Volo/Abp/Features/NullFeatureStore.cs | 27 +- .../RequireFeaturesSimpleStateChecker.cs | 41 +- .../Abp/Features/RequiresFeatureAttribute.cs | 49 +- .../Features/TenantFeatureValueProvider.cs | 29 +- ...bpFluentValidationConventionalRegistrar.cs | 55 +- .../AbpFluentValidationModule.cs | 17 +- .../FluentObjectValidationContributor.cs | 53 +- .../AbpGlobalFeatureErrorCodes.cs | 9 +- .../AbpGlobalFeatureNotEnabledException.cs | 29 +- .../GlobalFeatures/AbpGlobalFeaturesModule.cs | 55 +- .../Volo/Abp/GlobalFeatures/GlobalFeature.cs | 70 +- .../GlobalFeatures/GlobalFeatureDictionary.cs | 7 +- .../Abp/GlobalFeatures/GlobalFeatureHelper.cs | 13 +- .../GlobalFeatureInterceptor.cs | 31 +- .../GlobalFeatureInterceptorRegistrar.cs | 21 +- .../GlobalFeatures/GlobalFeatureManager.cs | 139 +- .../GlobalFeatureNameAttribute.cs | 57 +- ...obalFeatureSimpleStateCheckerExtensions.cs | 75 +- .../GlobalFeatures/GlobalModuleFeatures.cs | 141 +- .../GlobalModuleFeaturesDictionary.cs | 17 +- .../IGlobalFeatureCheckingEnabled.cs | 7 +- .../Localization/AbpGlobalFeatureResource.cs | 9 +- ...RequireGlobalFeaturesSimpleStateChecker.cs | 69 +- .../RequiresGlobalFeatureAttribute.cs | 35 +- .../Volo/Abp/Guids/AbpGuidsModule.cs | 7 +- .../AbpSequentialGuidGeneratorOptions.cs | 39 +- .../Volo/Abp/Guids/IGuidGenerator.cs | 17 +- .../Volo/Abp/Guids/SequentialGuidGenerator.cs | 171 +- .../Volo/Abp/Guids/SequentialGuidType.cs | 41 +- .../Volo/Abp/Guids/SimpleGuidGenerator.cs | 23 +- .../AbpHangfireAuthorizationFilter.cs | 65 +- .../Volo/Abp/Hangfire/AbpHangfireModule.cs | 43 +- .../Volo/Abp/Hangfire/AbpHangfireOptions.cs | 76 +- .../Abp/Http/AbpHttpAbstractionsModule.cs | 7 +- .../Modeling/AbpApiDescriptionModelOptions.cs | 15 +- .../AbpHttpClientIdentityModelWebModule.cs | 13 +- ...delRemoteServiceHttpClientAuthenticator.cs | 55 +- ...ttpClientIdentityModelWebAssemblyModule.cs | 29 +- ...delRemoteServiceHttpClientAuthenticator.cs | 73 +- .../AbpHttpClientIdentityModelModule.cs | 15 +- ...delRemoteServiceHttpClientAuthenticator.cs | 33 +- .../RemoteServiceConfigurationExtensions.cs | 71 +- .../Http/Client/Web/AbpHttpClientWebModule.cs | 49 +- ...ttpClientProxyControllerFeatureProvider.cs | 11 +- .../Conventions/AbpHttpClientProxyHelper.cs | 13 +- .../AbpHttpClientProxyServiceConvention.cs | 329 ++- ...viceCollectionHttpClientProxyExtensions.cs | 357 ++- .../Client/AbpHttpClientBuilderOptions.cs | 23 +- .../Abp/Http/Client/AbpHttpClientModule.cs | 31 +- .../Abp/Http/Client/AbpHttpClientOptions.cs | 15 +- .../Http/Client/AbpRemoteServiceOptions.cs | 15 +- .../IRemoteServiceHttpClientAuthenticator.cs | 11 +- ...ullRemoteServiceHttpClientAuthenticator.cs | 15 +- ...oteServiceHttpClientAuthenticateContext.cs | 37 +- .../AbpHttpClientProxyingOptions.cs | 19 +- .../Client/ClientProxying/ApiVersionInfo.cs | 29 +- .../ClientProxyApiDescriptionFinder.cs | 127 +- .../Client/ClientProxying/ClientProxyBase.cs | 451 ++-- .../ClientProxyRequestContext.cs | 37 +- .../ClientProxyRequestPayloadBuilder.cs | 219 +- .../ClientProxyRequestTypeValue.cs | 39 +- .../ClientProxying/ClientProxyUrlBuilder.cs | 249 +- .../IClientProxyApiDescriptionFinder.cs | 11 +- .../ClientProxying/IObjectToFormData.cs | 9 +- .../ClientProxying/IObjectToQueryString.cs | 9 +- .../DynamicProxying/ApiDescriptionCache.cs | 45 +- .../DynamicProxying/ApiDescriptionFinder.cs | 199 +- .../DynamicHttpProxyInterceptor.cs | 147 +- .../DynamicHttpProxyInterceptorClientProxy.cs | 19 +- .../Client/DynamicProxying/HttpClientProxy.cs | 17 +- .../DynamicProxying/IApiDescriptionCache.cs | 17 +- .../DynamicProxying/IApiDescriptionFinder.cs | 11 +- .../DynamicProxying/IHttpClientProxy.cs | 9 +- .../IRemoteServiceConfigurationProvider.cs | 19 +- .../Proxying/DefaultProxyHttpClientFactory.cs | 31 +- .../Proxying/HttpActionParameterHelper.cs | 27 +- .../Client/Proxying/HttpClientProxyConfig.cs | 19 +- .../Proxying/IProxyHttpClientFactory.cs | 11 +- .../Http/Client/RemoteServiceConfiguration.cs | 55 +- .../RemoteServiceConfigurationDictionary.cs | 46 +- .../RemoteServiceConfigurationProvider.cs | 31 +- .../Volo/Abp/Http/AbpHttpConsts.cs | 9 +- .../Volo/Abp/Http/AbpHttpModule.cs | 21 +- .../Volo/Abp/Http/HttpMethodHelper.cs | 89 +- .../Volo.Abp.Http/Volo/Abp/Http/MimeTypes.cs | 189 +- .../Modeling/ActionApiDescriptionModel.cs | 107 +- .../Abp/Http/Modeling/ApiTypeNameHelper.cs | 79 +- .../ApplicationApiDescriptionModel.cs | 71 +- ...pplicationApiDescriptionModelRequestDto.cs | 11 +- .../Modeling/ControllerApiDescriptionModel.cs | 115 +- .../ControllerInterfaceApiDescriptionModel.cs | 27 +- .../Modeling/IApiDescriptionModelProvider.cs | 11 +- .../MethodParameterApiDescriptionModel.cs | 47 +- .../Modeling/ModuleApiDescriptionModel.cs | 93 +- .../Modeling/ParameterApiDescriptionModel.cs | 63 +- .../Modeling/PropertyApiDescriptionModel.cs | 41 +- .../ReturnValueApiDescriptionModel.cs | 35 +- .../Http/Modeling/TypeApiDescriptionModel.cs | 81 +- .../AbpApiProxyScriptingConfiguration.cs | 41 +- .../AbpApiProxyScriptingOptions.cs | 17 +- .../Generators/IProxyScriptGenerator.cs | 11 +- .../JQuery/DynamicJavaScriptProxyOptions.cs | 31 +- .../JQuery/JQueryProxyScriptGenerator.cs | 339 ++- .../Generators/ParameterBindingSources.cs | 25 +- .../Generators/ProxyScriptingHelper.cs | 219 +- .../Generators/ProxyScriptingJsFuncHelper.cs | 141 +- .../ProxyScripting/IProxyScriptManager.cs | 11 +- .../IProxyScriptManagerCache.cs | 13 +- .../Http/ProxyScripting/ProxyScriptManager.cs | 114 +- .../ProxyScripting/ProxyScriptManagerCache.cs | 33 +- .../ProxyScripting/ProxyScriptingModel.cs | 39 +- .../IdentityModel/AbpIdentityClientOptions.cs | 43 +- .../IdentityModel/AbpIdentityModelModule.cs | 25 +- .../IIdentityModelAuthenticationService.cs | 21 +- .../IdentityClientConfiguration.cs | 198 +- .../IdentityClientConfigurationDictionary.cs | 18 +- .../IdentityModelAuthenticationService.cs | 353 ++- ...IdentityModelDiscoveryDocumentCacheItem.cs | 33 +- .../IdentityModelHttpRequestMessageOptions.cs | 9 +- .../IdentityModelTokenCacheItem.cs | 31 +- .../Volo/Abp/Json/AbpHybridJsonSerializer.cs | 81 +- .../Volo/Abp/Json/AbpJsonModule.cs | 39 +- .../Volo/Abp/Json/AbpJsonOptions.cs | 37 +- .../Volo/Abp/Json/IJsonSerializer.cs | 15 +- .../Volo/Abp/Json/IJsonSerializerProvider.cs | 15 +- .../Newtonsoft/AbpJsonIsoDateTimeConverter.cs | 61 +- .../AbpNewtonsoftJsonSerializerOptions.cs | 15 +- .../AbpNewtonsoftJsonSerializerProvider.cs | 101 +- .../AbpSystemTextJsonSerializerOptions.cs | 25 +- ...AbpSystemTextJsonSerializerOptionsSetup.cs | 37 +- .../AbpSystemTextJsonSerializerProvider.cs | 77 +- ...AbpSystemTextJsonUnsupportedTypeMatcher.cs | 23 +- .../JsonConverters/AbpDateTimeConverter.cs | 69 +- .../AbpHasExtraPropertiesJsonConverter.cs | 67 +- ...pHasExtraPropertiesJsonConverterFactory.cs | 81 +- .../AbpNullableDateTimeConverter.cs | 73 +- .../AbpStringToBooleanConverter.cs | 41 +- .../AbpStringToEnumConverter.cs | 77 +- .../JsonConverters/AbpStringToEnumFactory.cs | 53 +- .../ObjectToInferredTypesConverter.cs | 31 +- .../Volo/Abp/Kafka/AbpKafkaModule.cs | 39 +- .../Volo/Abp/Kafka/AbpKafkaOptions.cs | 21 +- .../Volo/Abp/Kafka/ConsumerPool.cs | 139 +- .../Volo/Abp/Kafka/IConsumerPool.cs | 9 +- .../Volo/Abp/Kafka/IKafkaMessageConsumer.cs | 9 +- .../Abp/Kafka/IKafkaMessageConsumerFactory.cs | 33 +- .../Volo/Abp/Kafka/IKafkaSerializer.cs | 13 +- .../Volo/Abp/Kafka/IProducerPool.cs | 9 +- .../Volo/Abp/Kafka/KafkaConnections.cs | 44 +- .../Volo/Abp/Kafka/KafkaMessageConsumer.cs | 233 +- .../Abp/Kafka/KafkaMessageConsumerFactory.cs | 41 +- .../Volo/Abp/Kafka/ProducerPool.cs | 127 +- .../Volo/Abp/Kafka/Utf8JsonKafkaSerializer.cs | 39 +- .../Volo/Abp/Ldap/AbpAbpLdapOptionsManager.cs | 43 +- .../Volo/Abp/Ldap/AbpLdapModule.cs | 43 +- .../Volo/Abp/Ldap/AbpLdapOptions.cs | 29 +- .../Volo/Abp/Ldap/ILdapManager.cs | 9 +- .../Volo/Abp/Ldap/LdapManager.cs | 87 +- .../Volo/Abp/Ldap/LdapSettingNames.cs | 17 +- .../Volo/Abp/Ldap/LdapSettingProvider.cs | 73 +- .../Abp/Ldap/Localization/LdapResource.cs | 9 +- .../AbpStringLocalizerFactoryExtensions.cs | 13 +- ...alizerFactoryWithDefaultResourceSupport.cs | 13 +- .../AbpLocalizationAbstractionsModule.cs | 7 +- .../Localization/FixedLocalizableString.cs | 25 +- ...ameWithLocalizableDisplayNameExtensions.cs | 49 +- .../IHasNameWithLocalizableDisplayName.cs | 17 +- .../Abp/Localization/ILocalizableString.cs | 11 +- .../Abp/Localization/LocalizableString.cs | 41 +- .../LocalizationResourceNameAttribute.cs | 39 +- .../AbpDictionaryBasedStringLocalizer.cs | 271 ++- .../AbpInternalLocalizationHelper.cs | 69 +- .../Abp/Localization/AbpLocalizationModule.cs | 49 +- .../Localization/AbpLocalizationOptions.cs | 39 +- .../AbpLocalizationOptionsExtensions.cs | 93 +- .../AbpStringLocalizerExtensions.cs | 83 +- .../Localization/AbpStringLocalizerFactory.cs | 151 +- .../Localization/DefaultLanguageProvider.cs | 25 +- .../Volo/Abp/Localization/DefaultResource.cs | 9 +- .../AbpExceptionLocalizationOptions.cs | 23 +- .../IInheritedResourceTypesProvider.cs | 13 +- .../Volo/Abp/Localization/ILanguageInfo.cs | 17 +- .../Abp/Localization/ILanguageProvider.cs | 9 +- .../Localization/ILocalizationDictionary.cs | 21 +- .../ILocalizationResourceContributor.cs | 15 +- .../IStringLocalizerSupportsInheritance.cs | 11 +- .../Abp/Localization/ITemplateLocalizer.cs | 11 +- .../Localization/InheritResourceAttribute.cs | 27 +- .../Json/JsonLocalizationDictionaryBuilder.cs | 117 +- .../Localization/Json/JsonLocalizationFile.cs | 23 +- .../Volo/Abp/Localization/LanguageInfo.cs | 95 +- .../Localization/LanguageInfoExtensions.cs | 33 +- .../Abp/Localization/LocalizationResource.cs | 77 +- .../LocalizationResourceContributorList.cs | 33 +- .../LocalizationResourceDictionary.cs | 45 +- .../LocalizationResourceExtensions.cs | 51 +- ...calizationResourceInitializationContext.cs | 21 +- .../Localization/LocalizationSettingHelper.cs | 35 +- .../Localization/LocalizationSettingNames.cs | 9 +- .../LocalizationSettingProvider.cs | 33 +- .../AbpLocalizationResource.cs | 11 +- .../StaticLocalizationDictionary.cs | 57 +- ...tualFileLocalizationResourceContributor.cs | 33 +- ...FileLocalizationResourceContributorBase.cs | 135 +- .../Volo/Abp/MailKit/AbpMailKitModule.cs | 9 +- .../Volo/Abp/MailKit/AbpMailKitOptions.cs | 9 +- .../Abp/MailKit/IMailKitSmtpEmailSender.cs | 9 +- .../Abp/MailKit/MailKitSmtpEmailSender.cs | 115 +- .../AbpMemoryDbServiceCollectionExtensions.cs | 49 +- .../Repositories/MemoryDb/IMemoryDatabase.cs | 13 +- .../MemoryDb/IMemoryDatabaseCollection.cs | 15 +- .../MemoryDb/IMemoryDbRepository.cs | 29 +- .../MemoryDb/IMemoryDbSerializer.cs | 13 +- .../MemoryDb/InMemoryIdGenerator.cs | 41 +- .../Repositories/MemoryDb/MemoryDatabase.cs | 51 +- .../MemoryDb/MemoryDatabaseCollection.cs | 73 +- .../MemoryDb/MemoryDatabaseManager.cs | 29 +- .../MemoryDb/MemoryDbRepository.cs | 505 ++-- .../MemoryDb/Utf8JsonMemoryDbSerializer.cs | 31 +- .../Utf8JsonMemoryDbSerializerOptions.cs | 15 +- .../MemoryDbCoreRepositoryExtensions.cs | 65 +- .../Volo/Abp/MemoryDb/AbpMemoryDbModule.cs | 15 +- .../AbpMemoryDbContextRegistrationOptions.cs | 13 +- ...moryDbContextRegistrationOptionsBuilder.cs | 11 +- .../MemoryDbRepositoryRegistrar.cs | 39 +- .../Abp/MemoryDb/IMemoryDatabaseProvider.cs | 21 +- .../Volo/Abp/MemoryDb/MemoryDbContext.cs | 17 +- .../Abp/Uow/MemoryDb/MemoryDbDatabaseApi.cs | 15 +- .../UnitOfWorkMemoryDatabaseProvider.cs | 153 +- .../Volo/Abp/Minify/AbpMinifyModule.cs | 9 +- .../Volo/Abp/Minify/Html/IHtmlMinifier.cs | 9 +- .../Volo/Abp/Minify/IMinifier.cs | 17 +- .../Abp/Minify/NUglify/NUglifyCssMinifier.cs | 13 +- .../Abp/Minify/NUglify/NUglifyException.cs | 39 +- .../Abp/Minify/NUglify/NUglifyHtmlMinifier.cs | 13 +- .../NUglify/NUglifyJavascriptMinifier.cs | 13 +- .../Abp/Minify/NUglify/NUglifyMinifierBase.cs | 69 +- .../Abp/Minify/Scripts/IJavascriptMinifier.cs | 9 +- .../Volo/Abp/Minify/Styles/ICssMinifier.cs | 9 +- .../AbpMongoDbServiceCollectionExtensions.cs | 63 +- .../MongoDB/IMongoDbBulkOperationProvider.cs | 55 +- .../MongoDB/IMongoDbRepository.cs | 37 +- .../MongoDB/IMongoDbRepositoryFilterer.cs | 59 +- .../Repositories/MongoDB/MongoDbRepository.cs | 1157 +++++---- .../MongoDB/MongoDbRepositoryFilterer.cs | 125 +- .../MongoDbCoreRepositoryExtensions.cs | 93 +- .../Abp/MongoDB/AbpBsonClassMapExtensions.cs | 81 +- .../Volo/Abp/MongoDB/AbpMongoDbContext.cs | 77 +- .../MongoDB/AbpMongoDbContextExtensions.cs | 23 +- .../Abp/MongoDB/AbpMongoDbContextOptions.cs | 51 +- .../MongoDB/AbpMongoDbDateTimeSerializer.cs | 59 +- .../Volo/Abp/MongoDB/AbpMongoDbModule.cs | 61 +- .../Volo/Abp/MongoDB/AbpMongoDbOptions.cs | 23 +- ...bpMongoModelBuilderConfigurationOptions.cs | 35 +- .../AbpMongoDbContextRegistrationOptions.cs | 13 +- .../AbpMongoDbConventionalRegistrar.cs | 27 +- ...ongoDbContextRegistrationOptionsBuilder.cs | 9 +- .../MongoDbRepositoryRegistrar.cs | 37 +- .../DistributedEvents/IHasEventInbox.cs | 9 +- .../DistributedEvents/IHasEventOutbox.cs | 9 +- .../IMongoDbContextEventInbox.cs | 13 +- .../IMongoDbContextEventOutbox.cs | 13 +- .../DistributedEvents/IncomingEventRecord.cs | 101 +- .../MongoDbContextEventInbox.cs | 155 +- .../MongoDbContextEventOutbox.cs | 93 +- .../MongoDbInboxConfigExtensions.cs | 15 +- .../MongoDbOutboxConfigExtensions.cs | 15 +- .../DistributedEvents/OutgoingEventRecord.cs | 85 +- .../Volo/Abp/MongoDB/IAbpMongoDbContext.cs | 15 +- .../Volo/Abp/MongoDB/IHasBsonClassMap.cs | 11 +- .../Abp/MongoDB/IMongoDbContextProvider.cs | 15 +- .../Volo/Abp/MongoDB/IMongoEntityModel.cs | 13 +- .../Abp/MongoDB/IMongoEntityModelBuilder.cs | 27 +- .../Volo/Abp/MongoDB/IMongoModelBuilder.cs | 15 +- .../Volo/Abp/MongoDB/IMongoModelSource.cs | 11 +- .../Abp/MongoDB/MongoCollectionAttribute.cs | 23 +- .../MongoDB/MongoDbAsyncQueryableProvider.cs | 689 +++--- .../Volo/Abp/MongoDB/MongoDbContextHelper.cs | 23 +- .../Volo/Abp/MongoDB/MongoDbContextModel.cs | 17 +- .../Abp/MongoDB/MongoEntityModelBuilder.cs | 45 +- .../Volo/Abp/MongoDB/MongoModelBuilder.cs | 211 +- .../Volo/Abp/MongoDB/MongoModelSource.cs | 91 +- .../Abp/Uow/MongoDB/MongoDbDatabaseApi.cs | 15 +- .../Abp/Uow/MongoDB/MongoDbTransactionApi.cs | 51 +- .../UnitOfWorkMongoDbContextProvider.cs | 469 ++-- .../AbpMultiLingualObjectsModule.cs | 11 +- .../IMultiLingualObject.cs | 11 +- .../IMultiLingualObjectManager.cs | 19 +- .../MultiLingualObjects/IObjectTranslation.cs | 9 +- .../MultiLingualObjectManager.cs | 105 +- ...AbpMultiTenancyClaimsIdentityExtensions.cs | 31 +- .../Abp/MultiTenancy/AbpMultiTenancyModule.cs | 31 +- .../MultiTenancy/AbpMultiTenancyOptions.cs | 27 +- .../MultiTenancy/AbpTenantResolveOptions.cs | 19 +- .../ActionTenantResolveContributor.cs | 31 +- .../AsyncLocalCurrentTenantAccessor.cs | 30 +- .../Volo/Abp/MultiTenancy/BasicTenantInfo.cs | 39 +- .../AbpDefaultTenantStoreOptions.cs | 17 +- .../ConfigurationStore/DefaultTenantStore.cs | 49 +- .../Volo/Abp/MultiTenancy/CurrentTenant.cs | 45 +- .../MultiTenancy/CurrentTenantExtensions.cs | 35 +- .../CurrentUserTenantResolveContributor.cs | 27 +- .../Volo/Abp/MultiTenancy/ICurrentTenant.cs | 19 +- .../MultiTenancy/ICurrentTenantAccessor.cs | 21 +- .../Volo/Abp/MultiTenancy/IMultiTenant.cs | 15 +- .../ITenantConfigurationProvider.cs | 9 +- .../Abp/MultiTenancy/ITenantResolveContext.cs | 15 +- .../MultiTenancy/ITenantResolveContributor.cs | 11 +- .../ITenantResolveResultAccessor.cs | 11 +- .../Volo/Abp/MultiTenancy/ITenantResolver.cs | 23 +- .../Volo/Abp/MultiTenancy/ITenantStore.cs | 19 +- .../IgnoreMultiTenancyAttribute.cs | 9 +- .../MultiTenancy/MultiTenancyDatabaseStyle.cs | 17 +- .../Abp/MultiTenancy/MultiTenancySides.cs | 35 +- .../MultiTenantConnectionStringResolver.cs | 245 +- .../NullTenantResolveResultAccessor.cs | 16 +- .../Abp/MultiTenancy/TenantConfiguration.cs | 39 +- .../TenantConfigurationProvider.cs | 95 +- .../TenantConnectionStringUpdatedEto.cs | 21 +- .../Volo/Abp/MultiTenancy/TenantCreatedEto.cs | 15 +- .../Abp/MultiTenancy/TenantResolveContext.cs | 29 +- .../TenantResolveContributorBase.cs | 11 +- .../Abp/MultiTenancy/TenantResolveResult.cs | 19 +- .../Volo/Abp/MultiTenancy/TenantResolver.cs | 49 +- .../Abp/MultiTenancy/TenantResolverConsts.cs | 9 +- .../Volo/Abp/Data/ExtraPropertyDictionary.cs | 19 +- .../Data/ExtraPropertyDictionaryExtensions.cs | 33 +- .../Abp/Data/HasExtraPropertiesExtensions.cs | 159 +- .../Volo/Abp/Data/IHasExtraProperties.cs | 13 +- .../AbpObjectExtendingModule.cs | 15 +- .../Abp/ObjectExtending/ExtensibleObject.cs | 43 +- .../ObjectExtending/ExtensibleObjectMapper.cs | 385 ++- .../ExtensibleObjectValidator.cs | 481 ++-- .../ExtensionPropertyHelper.cs | 45 +- ...xtraPropertiesObjectExtendingExtensions.cs | 65 +- .../IBasicObjectExtensionPropertyInfo.cs | 63 +- .../MappingPropertyDefinitionChecks.cs | 43 +- .../EntityExtensionConfiguration.cs | 145 +- .../EntityExtensionConfigurationDictionary.cs | 9 +- .../ExtensionPropertyApiConfiguration.cs | 31 +- ...ExtensionPropertyApiCreateConfiguration.cs | 17 +- .../ExtensionPropertyApiGetConfiguration.cs | 17 +- ...ExtensionPropertyApiUpdateConfiguration.cs | 17 +- .../ExtensionPropertyConfiguration.cs | 157 +- ...xtensionPropertyConfigurationDictionary.cs | 9 +- ...xtensionPropertyConfigurationExtensions.cs | 39 +- .../ExtensionPropertyEntityConfiguration.cs | 17 +- .../ExtensionPropertyLookupConfiguration.cs | 49 +- .../ExtensionPropertyUiConfiguration.cs | 37 +- .../ExtensionPropertyUiFormConfiguration.cs | 17 +- .../ExtensionPropertyUiTableConfiguration.cs | 17 +- .../ModuleExtensionConfiguration.cs | 25 +- .../ModuleExtensionConfigurationDictionary.cs | 9 +- ...ensionConfigurationDictionaryExtensions.cs | 37 +- .../ModuleExtensionConfigurationExtensions.cs | 31 +- .../ModuleExtensionConfigurationHelper.cs | 263 ++- .../ModuleObjectExtensionManagerExtensions.cs | 25 +- .../ObjectExtending/ObjectExtensionInfo.cs | 123 +- .../ObjectExtending/ObjectExtensionManager.cs | 113 +- .../ObjectExtensionManagerExtensions.cs | 203 +- .../ObjectExtensionPropertyInfo.cs | 149 +- .../ObjectExtensionPropertyInfoExtensions.cs | 17 +- ...bjectExtensionPropertyValidationContext.cs | 105 +- .../ObjectExtensionValidationContext.cs | 79 +- .../ObjectMapping/AbpObjectMappingModule.cs | 37 +- .../Abp/ObjectMapping/DefaultObjectMapper.cs | 155 +- .../IAutoObjectMappingProvider.cs | 19 +- .../Volo/Abp/ObjectMapping/IMapFrom.cs | 11 +- .../Volo/Abp/ObjectMapping/IMapTo.cs | 11 +- .../Volo/Abp/ObjectMapping/IObjectMapper.cs | 97 +- ...NotImplementedAutoObjectMappingProvider.cs | 21 +- .../ObjectMapping/ObjectMapperExtensions.cs | 59 +- .../Volo/Abp/Quartz/AbpQuartzModule.cs | 103 +- .../Volo/Abp/Quartz/AbpQuartzOptions.cs | 64 +- .../Volo/Abp/RabbitMQ/AbpRabbitMqModule.cs | 49 +- .../Volo/Abp/RabbitMQ/AbpRabbitMqOptions.cs | 15 +- .../Volo/Abp/RabbitMQ/ChannelPool.cs | 256 +- .../Volo/Abp/RabbitMQ/ConnectionPool.cs | 91 +- .../RabbitMQ/ExchangeDeclareConfiguration.cs | 39 +- .../Volo/Abp/RabbitMQ/IChannelAccessor.cs | 29 +- .../Volo/Abp/RabbitMQ/IChannelPool.cs | 11 +- .../Volo/Abp/RabbitMQ/IConnectionPool.cs | 11 +- .../Abp/RabbitMQ/IRabbitMqMessageConsumer.cs | 15 +- .../IRabbitMqMessageConsumerFactory.cs | 37 +- .../Volo/Abp/RabbitMQ/IRabbitMqSerializer.cs | 13 +- .../Volo/Abp/RabbitMQ/QueueBindType.cs | 5 +- .../Abp/RabbitMQ/QueueDeclareConfiguration.cs | 69 +- .../Volo/Abp/RabbitMQ/RabbitMqConnections.cs | 42 +- .../Volo/Abp/RabbitMQ/RabbitMqConsts.cs | 13 +- .../Abp/RabbitMQ/RabbitMqMessageConsumer.cs | 401 ++-- .../RabbitMqMessageConsumerFactory.cs | 43 +- .../RabbitMQ/Utf8JsonRabbitMqSerializer.cs | 39 +- .../Principal/AbpClaimsIdentityExtensions.cs | 325 ++- .../AbpAuthorizationException.cs | 127 +- .../Volo/Abp/Clients/CurrentClient.cs | 19 +- .../Volo/Abp/Clients/ICurrentClient.cs | 13 +- .../Volo/Abp/Security/AbpSecurityModule.cs | 91 +- .../Volo/Abp/Security/Claims/AbpClaimTypes.cs | 123 +- .../AbpClaimsPrincipalContributorContext.cs | 27 +- .../Claims/AbpClaimsPrincipalFactory.cs | 55 +- .../AbpClaimsPrincipalFactoryOptions.cs | 15 +- .../Claims/CurrentPrincipalAccessorBase.cs | 41 +- .../CurrentPrincipalAccessorExtensions.cs | 27 +- .../Claims/IAbpClaimsPrincipalContributor.cs | 9 +- .../Claims/IAbpClaimsPrincipalFactory.cs | 9 +- .../Claims/ICurrentPrincipalAccessor.cs | 11 +- .../Claims/ThreadCurrentPrincipalAccessor.cs | 11 +- .../Encryption/AbpStringEncryptionOptions.cs | 67 +- .../Encryption/IStringEncryptionService.cs | 49 +- .../Encryption/StringEncryptionService.cs | 145 +- .../Abp/SecurityLog/AbpSecurityLogOptions.cs | 31 +- .../SecurityLog/DefaultSecurityLogManager.cs | 53 +- .../Abp/SecurityLog/ISecurityLogManager.cs | 9 +- .../Volo/Abp/SecurityLog/ISecurityLogStore.cs | 9 +- .../Volo/Abp/SecurityLog/SecurityLogInfo.cs | 49 +- .../Abp/SecurityLog/SimpleSecurityLogStore.cs | 33 +- .../Volo/Abp/Users/CurrentUser.cs | 71 +- .../Volo/Abp/Users/CurrentUserExtensions.cs | 85 +- .../Volo/Abp/Users/ICurrentUser.cs | 57 +- .../Serialization/AbpSerializationModule.cs | 23 +- .../Serialization/DefaultObjectSerializer.cs | 83 +- .../Abp/Serialization/IObjectSerializer.cs | 21 +- .../Volo/Abp/Settings/AbpSettingOptions.cs | 19 +- .../Volo/Abp/Settings/AbpSettingsModule.cs | 69 +- .../ConfigurationSettingValueProvider.cs | 37 +- .../DefaultValueSettingValueProvider.cs | 33 +- .../Settings/GlobalSettingValueProvider.cs | 33 +- .../Abp/Settings/ISettingDefinitionContext.cs | 17 +- .../Abp/Settings/ISettingDefinitionManager.cs | 17 +- .../Settings/ISettingDefinitionProvider.cs | 11 +- .../Abp/Settings/ISettingEncryptionService.cs | 15 +- .../Volo/Abp/Settings/ISettingProvider.cs | 13 +- .../Volo/Abp/Settings/ISettingStore.cs | 27 +- .../Abp/Settings/ISettingValueProvider.cs | 13 +- .../Settings/ISettingValueProviderManager.cs | 11 +- .../Volo/Abp/Settings/NullSettingStore.cs | 33 +- .../Volo/Abp/Settings/SettingDefinition.cs | 174 +- .../Abp/Settings/SettingDefinitionContext.cs | 47 +- .../Abp/Settings/SettingDefinitionManager.cs | 93 +- .../Abp/Settings/SettingDefinitionProvider.cs | 11 +- .../Abp/Settings/SettingEncryptionService.cs | 43 +- .../Volo/Abp/Settings/SettingProvider.cs | 147 +- .../Abp/Settings/SettingProviderExtensions.cs | 41 +- .../Volo/Abp/Settings/SettingValue.cs | 23 +- .../Volo/Abp/Settings/SettingValueProvider.cs | 23 +- .../Settings/SettingValueProviderManager.cs | 39 +- .../Settings/TenantSettingValueProvider.cs | 37 +- .../Abp/Settings/UserSettingValueProvider.cs | 49 +- .../Abp/Sms/Aliyun/AbpAliyunSmsOptions.cs | 15 +- .../Volo/Abp/Sms/Aliyun/AbpSmsAliyunModule.cs | 17 +- .../Volo/Abp/Sms/Aliyun/AliyunSmsSender.cs | 51 +- .../Volo.Abp.Sms/Volo/Abp/Sms/AbpSmsModule.cs | 7 +- .../Volo.Abp.Sms/Volo/Abp/Sms/ISmsSender.cs | 9 +- .../Volo/Abp/Sms/NullSmsSender.cs | 33 +- .../Volo.Abp.Sms/Volo/Abp/Sms/SmsMessage.cs | 23 +- .../Volo/Abp/Sms/SmsSenderExtensions.cs | 13 +- .../Specifications/AbpSpecificationsModule.cs | 9 +- .../Abp/Specifications/AndNotSpecification.cs | 49 +- .../Abp/Specifications/AndSpecification.cs | 43 +- .../Abp/Specifications/AnySpecification.cs | 27 +- .../Specifications/CompositeSpecification.cs | 47 +- .../Specifications/ExpressionFuncExtender.cs | 87 +- .../Specifications/ExpressionSpecification.cs | 49 +- .../Specifications/ICompositeSpecification.cs | 29 +- .../Volo/Abp/Specifications/ISpecification.cs | 41 +- .../Specifications/ISpecificationParser.cs | 31 +- .../Abp/Specifications/NoneSpecification.cs | 27 +- .../Abp/Specifications/NotSpecification.cs | 53 +- .../Abp/Specifications/OrSpecification.cs | 43 +- .../Abp/Specifications/ParameterRebinder.cs | 51 +- .../Volo/Abp/Specifications/Specification.cs | 55 +- .../Specifications/SpecificationExtensions.cs | 119 +- .../Builder/AbpSwaggerUIBuilderExtensions.cs | 29 +- ...bpSwaggerGenServiceCollectionExtensions.cs | 87 +- .../Swashbuckle/AbpSwashbuckleController.cs | 35 +- .../Abp/Swashbuckle/AbpSwashbuckleModule.cs | 21 +- .../Abp/Swashbuckle/ISwaggerHtmlResolver.cs | 9 +- .../Abp/Swashbuckle/SwaggerHtmlResolver.cs | 21 +- .../Volo/Abp/AbpTestBaseModule.cs | 7 +- .../Abp/AbpTestBaseWithServiceProvider.cs | 25 +- .../Volo/Abp/Testing/AbpIntegratedTest.cs | 87 +- .../Volo/Abp/Testing/Utils/ITestCounter.cs | 17 +- .../Volo/Abp/Testing/Utils/TestCounter.cs | 55 +- .../Abp/TextTemplating/AbpTemplateRenderer.cs | 71 +- .../AbpTextTemplatingCoreModule.cs | 59 +- .../AbpTextTemplatingOptions.cs | 25 +- .../ITemplateContentContributor.cs | 11 +- .../ITemplateContentProvider.cs | 33 +- .../ITemplateDefinitionContext.cs | 15 +- .../ITemplateDefinitionManager.cs | 21 +- .../ITemplateDefinitionProvider.cs | 17 +- .../Abp/TextTemplating/ITemplateRenderer.cs | 37 +- .../ITemplateRenderingEngine.cs | 37 +- .../TemplateContentContributorContext.cs | 37 +- .../TextTemplating/TemplateContentProvider.cs | 211 +- .../Abp/TextTemplating/TemplateDefinition.cs | 152 +- .../TemplateDefinitionContext.cs | 55 +- .../TemplateDefinitionExtensions.cs | 43 +- .../TemplateDefinitionManager.cs | 113 +- .../TemplateDefinitionProvider.cs | 19 +- .../TemplateRenderingEngineBase.cs | 55 +- .../FileInfoLocalizedTemplateContentReader.cs | 29 +- .../ILocalizedTemplateContentReader.cs | 11 +- .../ILocalizedTemplateContentReaderFactory.cs | 11 +- .../LocalizedTemplateContentReaderFactory.cs | 99 +- .../NullLocalizedTemplateContentReader.cs | 23 +- .../VirtualFileTemplateContentContributor.cs | 37 +- ...ualFolderLocalizedTemplateContentReader.cs | 59 +- .../Razor/AbpCompiledViewProviderOptions.cs | 15 +- .../Razor/AbpRazorTemplateCSharpCompiler.cs | 111 +- .../AbpRazorTemplateCSharpCompilerOptions.cs | 15 +- .../Razor/AbpRazorTemplateConsts.cs | 13 +- .../Razor/AbpTextTemplatingRazorModule.cs | 27 +- .../Razor/DefaultAbpCompiledViewProvider.cs | 91 +- .../DefaultAbpRazorProjectEngineFactory.cs | 19 +- .../Razor/EmptyProjectFileSystem.cs | 37 +- .../Razor/IAbpCompiledViewProvider.cs | 9 +- .../Razor/IAbpRazorProjectEngineFactory.cs | 9 +- .../Razor/IRazorTemplatePage.cs | 33 +- .../Razor/NotFoundProjectItem.cs | 29 +- .../RazorTemplateDefinitionExtensions.cs | 11 +- .../Razor/RazorTemplatePageBase.cs | 255 +- .../Razor/RazorTemplateRenderingEngine.cs | 227 +- .../Scriban/AbpTextTemplatingScribanModule.cs | 23 +- .../ScribanTemplateDefinitionExtensions.cs | 11 +- .../Scriban/ScribanTemplateLocalizer.cs | 77 +- .../Scriban/ScribanTemplateRenderingEngine.cs | 207 +- .../TextTemplating/AbpTextTemplatingModule.cs | 11 +- .../Volo/Abp/Linq/AsyncQueryableExecuter.cs | 1089 +++++---- .../Volo/Abp/Linq/IAsyncQueryableExecuter.cs | 513 ++-- .../Volo/Abp/Linq/IAsyncQueryableProvider.cs | 515 ++-- .../Volo/Abp/Threading/AbpAsyncTimer.cs | 169 +- .../Volo/Abp/Threading/AbpThreadingModule.cs | 13 +- .../Volo/Abp/Threading/AbpTimer.cs | 161 +- .../AmbientDataContextAmbientScopeProvider.cs | 103 +- .../Threading/AsyncLocalAmbientDataContext.cs | 29 +- .../AsyncLocalSimpleScopeExtensions.cs | 19 +- .../Threading/CancellationTokenOverride.cs | 15 +- .../CancellationTokenProviderBase.cs | 29 +- .../CancellationTokenProviderExtensions.cs | 17 +- .../Volo/Abp/Threading/IAmbientDataContext.cs | 13 +- .../Abp/Threading/IAmbientScopeProvider.cs | 13 +- .../Threading/ICancellationTokenProvider.cs | 11 +- .../Volo/Abp/Threading/IRunnable.cs | 25 +- .../NullCancellationTokenProvider.cs | 17 +- .../Volo/Abp/Timing/AbpClockOptions.cs | 23 +- .../Volo/Abp/Timing/AbpTimingModule.cs | 37 +- .../Volo.Abp.Timing/Volo/Abp/Timing/Clock.cs | 55 +- .../DisableDateTimeNormalizationAttribute.cs | 9 +- .../Volo.Abp.Timing/Volo/Abp/Timing/IClock.cs | 43 +- .../Volo/Abp/Timing/ITimezoneProvider.cs | 17 +- .../Timing/Localization/AbpTimingResource.cs | 9 +- .../Abp/Timing/TZConvertTimezoneProvider.cs | 43 +- .../Volo/Abp/Timing/TimingSettingNames.cs | 9 +- .../Volo/Abp/Timing/TimingSettingProvider.cs | 31 +- .../Abp/Ui/Navigation/AbpNavigationOptions.cs | 31 +- .../Ui/Navigation/AbpUiNavigationModule.cs | 37 +- .../Volo/Abp/Ui/Navigation/ApplicationMenu.cs | 107 +- .../Navigation/ApplicationMenuExtensions.cs | 99 +- .../Abp/Ui/Navigation/ApplicationMenuItem.cs | 263 ++- .../Ui/Navigation/ApplicationMenuItemList.cs | 57 +- .../Ui/Navigation/DefaultMenuContributor.cs | 39 +- .../Abp/Ui/Navigation/DefaultMenuNames.cs | 15 +- .../Ui/Navigation/HasMenuItemsExtensions.cs | 31 +- .../Volo/Abp/Ui/Navigation/IHasMenuItems.cs | 17 +- .../Navigation/IMenuConfigurationContext.cs | 13 +- .../Abp/Ui/Navigation/IMenuContributor.cs | 11 +- .../Volo/Abp/Ui/Navigation/IMenuManager.cs | 13 +- .../Resource/AbpUiNavigationResource.cs | 9 +- .../Ui/Navigation/MenuConfigurationContext.cs | 65 +- .../Volo/Abp/Ui/Navigation/MenuManager.cs | 209 +- .../Volo/Abp/Ui/Navigation/StandardMenus.cs | 25 +- .../Abp/Ui/Navigation/Urls/AppUrlOptions.cs | 19 +- .../Abp/Ui/Navigation/Urls/AppUrlProvider.cs | 173 +- .../Urls/ApplicationUrlDictionary.cs | 31 +- .../Ui/Navigation/Urls/ApplicationUrlInfo.cs | 17 +- .../Abp/Ui/Navigation/Urls/IAppUrlProvider.cs | 13 +- .../Resources/AbpUi/AbpUiResource.cs | 9 +- .../Volo.Abp.UI/Volo/Abp/Ui/AbpUiModule.cs | 35 +- .../Ui/Branding/DefaultBrandingProvider.cs | 13 +- .../Volo/Abp/Ui/Branding/IBrandingProvider.cs | 25 +- .../Abp/Uow/AbpUnitOfWorkDefaultOptions.cs | 69 +- .../Volo/Abp/Uow/AbpUnitOfWorkModule.cs | 11 +- .../Volo/Abp/Uow/AbpUnitOfWorkOptions.cs | 57 +- .../Volo/Abp/Uow/AmbientUnitOfWork.cs | 47 +- .../Volo/Abp/Uow/ChildUnitOfWork.cs | 195 +- .../Volo/Abp/Uow/EventOrderGenerator.cs | 17 +- .../Volo/Abp/Uow/IAbpUnitOfWorkOptions.cs | 19 +- .../Volo/Abp/Uow/IAmbientUnitOfWork.cs | 11 +- .../Volo.Abp.Uow/Volo/Abp/Uow/IDatabaseApi.cs | 11 +- .../Volo/Abp/Uow/IDatabaseApiContainer.cs | 19 +- .../Volo/Abp/Uow/ISupportsRollback.cs | 9 +- .../Volo/Abp/Uow/ISupportsSavingChanges.cs | 11 +- .../Volo/Abp/Uow/ITransactionApi.cs | 11 +- .../Volo/Abp/Uow/ITransactionApiContainer.cs | 19 +- .../Volo.Abp.Uow/Volo/Abp/Uow/IUnitOfWork.cs | 59 +- .../Volo/Abp/Uow/IUnitOfWorkAccessor.cs | 15 +- .../Volo/Abp/Uow/IUnitOfWorkEnabled.cs | 7 +- .../Volo/Abp/Uow/IUnitOfWorkEventPublisher.cs | 11 +- .../Volo/Abp/Uow/IUnitOfWorkManager.cs | 25 +- .../Abp/Uow/IUnitOfWorkManagerAccessor.cs | 9 +- ...IUnitOfWorkTransactionBehaviourProvider.cs | 11 +- .../Abp/Uow/NullUnitOfWorkEventPublisher.cs | 21 +- ...lUnitOfWorkTransactionBehaviourProvider.cs | 11 +- .../Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWork.cs | 507 ++-- .../Volo/Abp/Uow/UnitOfWorkAttribute.cs | 119 +- .../Volo/Abp/Uow/UnitOfWorkEventArgs.cs | 25 +- .../Volo/Abp/Uow/UnitOfWorkEventRecord.cs | 51 +- .../Volo/Abp/Uow/UnitOfWorkExtensions.cs | 71 +- .../Volo/Abp/Uow/UnitOfWorkFailedEventArgs.cs | 47 +- .../Volo/Abp/Uow/UnitOfWorkHelper.cs | 117 +- .../Volo/Abp/Uow/UnitOfWorkInterceptor.cs | 87 +- .../Abp/Uow/UnitOfWorkInterceptorRegistrar.cs | 25 +- .../Volo/Abp/Uow/UnitOfWorkManager.cs | 157 +- .../Abp/Uow/UnitOfWorkManagerExtensions.cs | 59 +- .../Abp/Uow/UnitOfWorkTransactionBehavior.cs | 15 +- .../AbpValidationAbstractionsModule.cs | 7 +- .../Abp/Validation/AbpValidationException.cs | 179 +- .../Abp/Validation/IHasValidationErrors.cs | 11 +- .../Abp/Validation/AbpValidationModule.cs | 71 +- .../Abp/Validation/AbpValidationOptions.cs | 21 +- .../Abp/Validation/AbpValidationResult.cs | 17 +- ...taAnnotationObjectValidationContributor.cs | 175 +- ...efaultAttributeValidationResultProvider.cs | 11 +- .../Validation/DisableValidationAttribute.cs | 19 +- .../Validation/EnableValidationAttribute.cs | 17 +- .../HasValidationErrorsExtensions.cs | 37 +- .../Abp/Validation/IAbpValidationResult.cs | 11 +- .../IAttributeValidationResultProvider.cs | 9 +- .../Validation/IMethodInvocationValidator.cs | 9 +- .../IObjectValidationContributor.cs | 9 +- .../Volo/Abp/Validation/IObjectValidator.cs | 27 +- .../Volo/Abp/Validation/IValidationEnabled.cs | 11 +- .../Localization/AbpValidationResource.cs | 11 +- .../MethodInvocationValidationContext.cs | 29 +- .../Validation/MethodInvocationValidator.cs | 147 +- .../Abp/Validation/ObjectValidationContext.cs | 21 +- .../Volo/Abp/Validation/ObjectValidator.cs | 75 +- .../StringValues/AlwaysValidValueValidator.cs | 17 +- .../StringValues/BooleanValueValidator.cs | 31 +- .../StringValues/FreeTextStringValueType.cs | 23 +- .../StringValues/ISelectionStringValueItem.cs | 13 +- .../ISelectionStringValueItemSource.cs | 11 +- .../StringValues/IStringValueType.cs | 19 +- .../StringValues/IValueValidator.cs | 21 +- .../LocalizableSelectionStringValueItem.cs | 13 +- .../StringValues/LocalizableStringInfo.cs | 21 +- .../StringValues/NumericValueValidator.cs | 85 +- .../StringValues/SelectionStringValueType.cs | 27 +- .../StaticSelectionStringValueItemSource.cs | 17 +- .../StringValues/StringValueTypeAttribute.cs | 31 +- .../StringValues/StringValueTypeBase.cs | 42 +- .../StringValues/StringValueValidator.cs | 109 +- .../StringValues/ToggleStringValueType.cs | 25 +- .../StringValues/ValueValidatorAttribute.cs | 31 +- .../StringValues/ValueValidatorBase.cs | 34 +- .../Volo/Abp/Validation/ValidationHelper.cs | 27 +- .../Abp/Validation/ValidationInterceptor.cs | 45 +- .../ValidationInterceptorRegistrar.cs | 25 +- .../FileProviders/AbpFileInfoExtensions.cs | 141 +- .../AbpVirtualFileSystemModule.cs | 7 +- .../AbpVirtualFileSystemOptions.cs | 17 +- .../DictionaryBasedFileProvider.cs | 89 +- .../VirtualFileSystem/DynamicFileProvider.cs | 123 +- .../Embedded/AbpEmbeddedFileProvider.cs | 201 +- .../Embedded/EmbeddedResourceFileInfo.cs | 109 +- .../Embedded/EmbeddedVirtualFileSetInfo.cs | 29 +- .../EnumerableDirectoryContents.cs | 37 +- .../VirtualFileSystem/IDynamicFileProvider.cs | 11 +- .../VirtualFileSystem/IVirtualFileProvider.cs | 9 +- .../Abp/VirtualFileSystem/InMemoryFileInfo.cs | 43 +- .../Physical/PhysicalVirtualFileSetInfo.cs | 25 +- .../VirtualDirectoryFileInfo.cs | 39 +- .../VirtualFilePathHelper.cs | 59 +- .../VirtualFileSystem/VirtualFileProvider.cs | 73 +- .../VirtualFileSystem/VirtualFileSetInfo.cs | 17 +- .../VirtualFileSystem/VirtualFileSetList.cs | 11 +- .../VirtualFileSetListExtensions.cs | 123 +- .../ServiceCollectionShouldlyExtensions.cs | 105 +- .../Abp/TestBase/Logging/ICanLogOnObject.cs | 11 +- framework/test/SimpleConsoleDemo/Program.cs | 111 +- .../OAuth/Claims/MultipleClaimAction_Tests.cs | 45 +- .../Volo/Abp/AspNetCore/App/AppModule.cs | 55 +- .../Volo/Abp/AspNetCore/App/Startup.cs | 19 +- .../AspNetCoreMultiTenancyTestBase.cs | 9 +- ...reMultiTenancy_WithDomainResolver_Tests.cs | 81 +- ...ltiTenancy_Without_DomainResolver_Tests.cs | 89 +- .../App/LocalizationTestController.cs | 49 +- .../Abp/AspNetCore/App/SimpleController.cs | 31 +- .../Mvc/AbpAspNetCoreMvcTestModule.cs | 189 +- .../AbpApiDefinitionController_Tests.cs | 31 +- .../ApplicationConfigurationBuilder_Tests.cs | 19 +- .../AspNetCore/Mvc/AspNetCoreMvcTestBase.cs | 57 +- .../Mvc/Auditing/AuditTestController.cs | 79 +- .../Mvc/Auditing/AuditTestController_Tests.cs | 127 +- .../Mvc/Auditing/AuditTestPage.cshtml.cs | 53 +- .../Mvc/Auditing/AuditTestPage_Tests.cs | 127 +- .../Mvc/Authorization/AuthTestController.cs | 93 +- .../Authorization/AuthTestController_Tests.cs | 109 +- .../Mvc/Authorization/AuthTestPage.cshtml.cs | 19 +- .../Mvc/Authorization/AuthTestPage_Tests.cs | 43 +- .../Mvc/Authorization/FakePermissionStore.cs | 41 +- .../TestPermissionDefinitionProvider.cs | 15 +- .../RemoteStreamContentTestController.cs | 51 +- ...RemoteStreamContentTestController_Tests.cs | 73 +- .../Conventions/AbpServiceConvention_Tests.cs | 223 +- ...spNetCoreMvcConventionalRegistrar_Tests.cs | 117 +- ...horizationExceptionTestController_Tests.cs | 69 +- ...AbpAuthorizationExceptionTestPage_Tests.cs | 69 +- .../ExceptionTestController.cs | 41 +- .../ExceptionTestController_Tests.cs | 111 +- .../ExceptionTestPage.cshtml.cs | 51 +- .../ExceptionTestPage_Tests.cs | 179 +- .../Mvc/FakeAuthenticationMiddleware.cs | 29 +- .../Volo/Abp/AspNetCore/Mvc/FakeUserClaims.cs | 9 +- .../Mvc/Features/FakeFeatureChecker.cs | 31 +- .../Mvc/Features/FeatureTestController.cs | 45 +- .../Features/FeatureTestController_Tests.cs | 47 +- .../Mvc/Features/FeatureTestPage.cshtml.cs | 31 +- .../Mvc/Features/FeatureTestPage_Tests.cs | 49 +- .../AbpAspNetCoreMvcTestFeatures.cs | 35 +- .../DisabledGlobalFeatureTestController.cs | 20 +- .../DisabledGlobalFeatureTestPage.cshtml.cs | 11 +- .../EnabledGlobalFeatureTestController.cs | 19 +- .../EnabledGlobalFeatureTestPage.cshtml.cs | 11 +- ...quiresGlobalFeatureTestController_Tests.cs | 27 +- .../RequiresGlobalFeatureTestPage_Tests.cs | 27 +- .../Mvc/Json/JsonResultController.cs | 31 +- .../Mvc/Json/JsonResultController_Tests.cs | 33 +- .../Mvc/Json/JsonSerializer_Tests.cs | 46 +- .../LocalizationTestController.cs | 15 +- .../LocalizationTestController_Tests.cs | 43 +- .../Mvc/Localization/MvcLocalization_Tests.cs | 71 +- .../Localization/Resource/MvcTestResource.cs | 7 +- .../ExtraPropertyBindingHelper_Tests.cs | 81 +- .../ModelBinding/ModelBindingController.cs | 103 +- .../ModelBindingController_Tests.cs | 212 +- .../AspNetCore/Mvc/PeopleAppService_Tests.cs | 229 +- .../AbpServiceProxiesController_Tests.cs | 37 +- .../Mvc/Response/NoContentTestController.cs | 105 +- .../Response/NoContentTestController_Tests.cs | 99 +- .../Mvc/Response/TestResultFilter.cs | 13 +- .../Claims/ClaimsMapTestController.cs | 23 +- .../Claims/ClaimsMapTestController_Tests.cs | 29 +- .../Headers/SecurityHeadersTestController.cs | 11 +- .../SecurityHeadersTestController_Tests.cs | 19 +- .../AspNetCore/Mvc/SimpleController_Tests.cs | 53 +- .../Volo/Abp/AspNetCore/Mvc/Startup.cs | 19 +- .../Abp/AspNetCore/Mvc/Uow/TestUnitOfWork.cs | 51 +- .../Mvc/Uow/TestUnitOfWorkConfig.cs | 13 +- ...WorkMiddleware_Exception_Rollback_Tests.cs | 39 +- .../Mvc/Uow/UnitOfWorkMiddleware_Tests.cs | 25 +- ...WorkPageFilter_Exception_Rollback_Tests.cs | 39 +- .../Mvc/Uow/UnitOfWorkPageFilter_Tests.cs | 29 +- .../Mvc/Uow/UnitOfWorkTestController.cs | 99 +- .../Mvc/Uow/UnitOfWorkTestPage.cshtml.cs | 71 +- .../Mvc/Utils/ArrayMacther_Tests.cs | 31 +- .../Validation/ValidationTestController.cs | 213 +- .../ValidationTestController_Tests.cs | 192 +- .../Mvc/UI/AbpAspNetCoreMvcUiTestBase.cs | 11 +- .../Mvc/UI/AbpAspNetCoreMvcUiTestModule.cs | 17 +- .../Volo/Abp/AspNetCore/Mvc/UI/Startup.cs | 19 +- .../Program.cs | 25 +- .../AbpAspNetCoreMvcUiThemeSharedTestBase.cs | 7 +- ...AbpAspNetCoreMvcUiThemeSharedTestModule.cs | 19 +- .../Shared/PageToolbars/PageToolbar_Tests.cs | 143 +- .../Shared/Permissions/FakePermissionStore.cs | 33 +- .../TestPermissionDefinitionProvider.cs | 17 +- .../AspNetCore/Mvc/UI/Theme/Shared/Startup.cs | 19 +- .../UI/Theme/Shared/Toolbars/Toolbar_Tests.cs | 151 +- .../AbpAspNetCoreMvcVersioningTestModule.cs | 85 +- .../Mvc/Versioning/App/HelloController.cs | 55 +- .../Mvc/Versioning/App/IHelloController.cs | 13 +- .../Mvc/Versioning/App/v1/ITodoAppService.cs | 11 +- .../Mvc/Versioning/App/v1/TodoAppService.cs | 31 +- .../Mvc/Versioning/App/v2/ITodoAppService.cs | 11 +- .../Mvc/Versioning/App/v2/TodoAppService.cs | 31 +- .../AspNetCoreMvcVersioningTestBase.cs | 9 +- .../Abp/AspNetCore/Mvc/Versioning/Startup.cs | 19 +- .../Versioning/Test/HelloController_Tests.cs | 45 +- .../Test/v1/TodoAppService_Tests.cs | 25 +- .../Test/v2/TodoAppService_Tests.cs | 25 +- .../AspNetCore/App/AbpSerilogTestModule.cs | 49 +- .../Volo/Abp/AspNetCore/App/CollectingSink.cs | 19 +- .../AspNetCore/App/SerilogTestController.cs | 35 +- .../Volo/Abp/AspNetCore/App/Startup.cs | 21 +- .../AspNetCore/Serilog/AbpSerilogTestBase.cs | 39 +- .../Serilog/Serilog_Enrichers_Tests.cs | 125 +- .../SignalR/AbpAspNetCoreSignalRTestBase.cs | 13 +- .../SignalR/AbpAspNetCoreSignalRTestModule.cs | 19 +- .../SignalR/AbpSignalROptions_Tests.cs | 31 +- .../SampleHubs/DisableAutoHubMapHub.cs | 9 +- .../DisableConventionalRegistrationHub.cs | 11 +- .../SignalR/SampleHubs/RegularAbpHub.cs | 9 +- .../SignalR/SampleHubs/RegularHub.cs | 9 +- .../Abp/AspNetCore/AbpAspNetCoreTestBase.cs | 51 +- .../Abp/AspNetCore/AbpAspNetCoreTestModule.cs | 59 +- .../Volo/Abp/AspNetCore/Startup.cs | 19 +- .../VirtualFileSystem_Tests.cs | 19 +- .../Volo/Abp/Auditing/AbpAuditingTestBase.cs | 11 +- .../Abp/Auditing/AbpAuditingTestModule.cs | 87 +- .../App/Entities/AppEntityWithAudited.cs | 27 +- ...thAuditedAndHasCustomAuditingProperties.cs | 37 +- ...ithAuditedAndPropertyHasDisableAuditing.cs | 31 +- .../Entities/AppEntityWithDisableAuditing.cs | 25 +- ...ithDisableAuditingAndPropertyHasAudited.cs | 37 +- .../AppEntityWithPropertyHasAudited.cs | 25 +- .../App/Entities/AppEntityWithSelector.cs | 17 +- .../App/Entities/AppEntityWithSoftDelete.cs | 21 +- .../AppFullAuditedEntityWithAudited.cs | 27 +- .../AbpAuditingTestDbContext.cs | 31 +- .../Auditing/AuditPropertySetterTestBase.cs | 105 +- ...AuditPropertySetter_CreationAudit_Tests.cs | 121 +- ...tPropertySetter_ModificationAudit_Tests.cs | 159 +- .../Volo/Abp/Auditing/Auditing_Tests.cs | 445 ++-- .../Volo/Abp/Auditing/InternalUtils_Tests.cs | 17 +- .../Auditing/JsonNetAuditSerializer_Test.cs | 79 +- ...AbpAuthorizationServiceExtensions_Tests.cs | 69 +- .../AuthorizationOptionsExtensions_Tests.cs | 19 +- .../AbpAuthorizationTestModule.cs | 27 +- .../Authorization/AuthorizationTestBase.cs | 29 +- .../Abp/Authorization/Authorization_Tests.cs | 151 +- .../PermissionStateProvider_Tests.cs | 77 +- ...ermissionsSimpleBatchStateChecker_Tests.cs | 93 +- ...RequireRolePermissionSimpleStateChecker.cs | 13 +- ...uireEditionPermissionSimpleStateChecker.cs | 13 +- ...izationTestPermissionDefinitionProvider.cs | 35 +- .../TestServices/FakePermissionStore.cs | 31 +- .../TestServices/IMyAuthorizedService1.cs | 17 +- .../IMyAuthorizedServiceWithRole.cs | 13 +- .../IMySimpleAuthorizedService.cs | 13 +- .../TestServices/MyAuthorizedService1.cs | 45 +- .../MyAuthorizedServiceWithRole.cs | 33 +- .../TestServices/MySimpleAuthorizedService.cs | 25 +- ...AutoMapperExtensibleDtoExtensions_Tests.cs | 91 +- .../AbpAutoMapperModule_Basic_Tests.cs | 65 +- ...apperModule_Specific_ObjectMapper_Tests.cs | 97 +- .../AutoMapperExpressionExtensions_Tests.cs | 335 ++- .../Abp/AutoMapper/AutoMapperTestModule.cs | 23 +- ...utoMapper_ConfigurationValidation_Tests.cs | 85 +- ...oMapper_CustomServiceConstruction_Tests.cs | 103 +- .../AutoMapper_Dependency_Injection_Tests.cs | 95 +- .../ObjectMapperExtensions_Tests.cs | 37 +- .../Abp/AutoMapper/SampleClasses/MyEntity.cs | 11 +- .../AutoMapper/SampleClasses/MyEntityDto.cs | 13 +- .../AutoMapper/SampleClasses/MyEntityDto2.cs | 15 +- .../MyEntityDtoWithMappingMethods.cs | 63 +- .../MyEntityToMyEntityDto2Mapper.cs | 31 +- .../AutoMapper/SampleClasses/MyMapProfile.cs | 25 +- .../SampleClasses/MyNotMappedDto.cs | 13 +- .../Volo/Abp/Autofac/AutofacTestModule.cs | 11 +- .../Autofac_Dependency_Injection_Tests.cs | 11 +- .../Interception/Autofac_Interception_Test.cs | 13 +- .../AbpBackgroundJobsTestModule.cs | 19 +- .../BackgroundJobExecuter_Tests.cs | 85 +- .../BackgroundJobManager_Tests.cs | 47 +- .../BackgroundJobs/BackgroundJobsTestBase.cs | 13 +- .../Volo/Abp/BackgroundJobs/MyAsyncJob.cs | 17 +- .../Volo/Abp/BackgroundJobs/MyAsyncJobArgs.cs | 23 +- .../Volo/Abp/BackgroundJobs/MyJob.cs | 17 +- .../Volo/Abp/BackgroundJobs/MyJobArgs.cs | 23 +- .../Aliyun/AbpBlobStoringAliyunTestBase.cs | 21 +- .../Aliyun/AbpBlobStoringAliyunTestModule.cs | 111 +- .../Aliyun/AliyunBlobContainer_Tests.cs | 13 +- .../Aliyun/AliyunBlobNameCalculator_Tests.cs | 73 +- ...liyunBlobNamingNormalizerProvider_Tests.cs | 101 +- .../Aws/AbpBlobStoringAwsTestBase.cs | 21 +- .../Aws/AbpBlobStoringAwsTestModule.cs | 117 +- .../BlobStoring/Aws/AwsBlobContainer_Tests.cs | 15 +- .../Aws/AwsBlobNameCalculator_Tests.cs | 77 +- ...ltAwsBlobNamingNormalizerProvider_Tests.cs | 135 +- .../Azure/AbpBlobStoringAzureTestBase.cs | 21 +- .../Azure/AbpBlobStoringAzureTestModule.cs | 81 +- .../Azure/AzureBlobContainer_Tests.cs | 15 +- .../Azure/AzureBlobNameCalculator_Tests.cs | 77 +- ...AzureBlobNamingNormalizerProvider_Tests.cs | 99 +- .../AbpBlobStoringFileSystemTestBase.cs | 13 +- .../AbpBlobStoringFileSystemTestModule.cs | 55 +- .../BlogFilePathCalculator_Tests.cs | 111 +- ...ystemBlobNamingNormalizerProvider_Tests.cs | 101 +- .../FileSystemBlobContainer_Tests.cs | 13 +- .../Minio/AbpBlobStoringMinioTestBase.cs | 21 +- .../Minio/AbpBlobStoringMinioTestModule.cs | 101 +- ...MinioBlobNamingNormalizerProvider_Tests.cs | 133 +- .../Minio/MinioBlobContainer_Tests.cs | 15 +- .../Minio/MinioBlobNameCalculator_Tests.cs | 75 +- .../AbpBlobStoringOptions_Tests.cs | 57 +- .../Abp/BlobStoring/AbpBlobStoringTestBase.cs | 13 +- .../BlobStoring/AbpBlobStoringTestModule.cs | 63 +- .../BlobStoring/BlobContainerFactory_Tests.cs | 123 +- .../BlobContainerNameAttribute_Tests.cs | 35 +- .../BlobContainer_Injection_Tests.cs | 45 +- .../Abp/BlobStoring/BlobContainer_Tests.cs | 201 +- .../BlobStoring/BlobProviderSelector_Tests.cs | 41 +- .../BlobStoring/Fakes/FakeBlobProvider1.cs | 45 +- .../BlobStoring/Fakes/FakeBlobProvider2.cs | 45 +- .../Abp/BlobStoring/Fakes/FakeProviders.cs | 23 +- .../BlobStoring/TestObjects/TestContainer1.cs | 11 +- .../BlobStoring/TestObjects/TestContainer2.cs | 13 +- .../BlobStoring/TestObjects/TestContainer3.cs | 11 +- .../AbpCachingStackExchangeRedisTestBase.cs | 13 +- .../AbpCachingStackExchangeRedisTestModule.cs | 21 +- .../StackExchangeRedis/AbpRedisCache_Tests.cs | 27 +- .../Volo/Abp/Caching/AbpCachingTestModule.cs | 35 +- .../DistributedCache_ConfigureOptions_Test.cs | 47 +- .../Abp/Caching/DistributedCache_Tests.cs | 1315 ++++++----- .../Abp/Caching/TestMemoryDistributedCache.cs | 109 +- .../Volo/Abp/Cli/AbpCliTestBase.cs | 9 +- .../Volo/Abp/Cli/AbpCliTestModule.cs | 15 +- .../Cli/Build/BuildProjectListSorter_Tests.cs | 57 +- .../Cli/Build/BuildStatusGenerator_Tests.cs | 125 +- .../Build/GitRepositoryBuildStatus_Tests.cs | 309 ++- .../Volo/Abp/Cli/Build/GitRepository_Tests.cs | 39 +- .../Cli/CommandLineArgumentParser_Tests.cs | 139 +- .../Volo/Abp/Cli/ProjectFinder_Tests.cs | 53 +- .../Abp/Cli/ProjectNameValidation_Tests.cs | 57 +- .../Volo/Abp/Cli/ProjectVersionParse_Tests.cs | 117 +- ...onalDependencyInjectionExtensions_Tests.cs | 449 ++-- .../DependencyInjection_Tests.cs | 237 +- .../System/AbpTypeExtensions_Tests.cs | 51 +- .../Generic/AbpCollectionExtensions_Tests.cs | 29 +- .../Generic/AbpListExtensions_Tests.cs | 313 ++- .../System/ComparableExtensions_Tests.cs | 33 +- .../System/DayOfWeekExtensions_Tests.cs | 33 +- .../System/Linq/PredicateBuilder_Tests.cs | 99 +- .../System/ObjectExtension_Test.cs | 135 +- .../System/StringExtensions_Tests.cs | 429 ++-- .../Abp/AbpApplication_Initialize_Tests.cs | 87 +- .../Volo/Abp/AbpTestModule.cs | 7 +- .../ConfigurationAccessor_Tests.cs | 57 +- .../AutoRegistrationHelper_Tests.cs | 71 +- .../AutoServiceRegistration_Tests.cs | 45 +- .../ConventionalRegistrar_Test.cs | 61 +- .../DependencyInjection_Tests.cs | 289 ++- .../HybridServiceScopeFactory_Tests.cs | 43 +- .../DynamicProxy/AbpInterceptionTestBase.cs | 177 +- .../Volo/Abp/DynamicProxy/CachedTestObject.cs | 29 +- .../DynamicProxy/SimpleAsyncInterceptor.cs | 19 +- .../DynamicProxy/SimpleAsyncInterceptor2.cs | 11 +- .../SimpleInterceptionTargetClass.cs | 61 +- .../SimpleResultCacheTestInterceptor.cs | 35 +- .../Volo/Abp/IO/FileHelper_Tests.cs | 15 +- .../Abp/Modularity/IndependentEmptyModule.cs | 13 +- .../IndependentEmptyPlugInModule.cs | 15 +- .../Volo/Abp/Modularity/ModuleLoader_Tests.cs | 41 +- .../Volo/Abp/Modularity/TestModuleBase.cs | 57 +- .../Volo/Abp/ObjectHelper_Tests.cs | 101 +- .../Abp/Reflection/AssemblyFinder_Tests.cs | 67 +- .../Abp/Reflection/ReflectionHelper_Tests.cs | 192 +- .../Volo/Abp/Reflection/TypeFinder_Tests.cs | 25 +- .../Volo/Abp/Reflection/TypeHelper_Tests.cs | 165 +- .../SimpleStateCheckerTestBase.cs | 127 +- .../SimpleStateChecker_CheckCount_Test.cs | 79 +- ...impleStateChecker_GlobalCheckCount_Test.cs | 95 +- .../SimpleStateChecker_Tests.cs | 119 +- .../FormattedStringTokenizer_Test.cs | 73 +- .../FormattedStringValueExtracter_Tests.cs | 155 +- .../Volo/Abp/Threading/AsyncHelper_Tests.cs | 97 +- .../Volo/Abp/Dapper/AbpDapperTestModule.cs | 19 +- .../Volo/Abp/Dapper/DapperTestBase.cs | 13 +- .../Repositories/PersonDapperRepository.cs | 39 +- .../PersonDapperRepository_Tests.cs | 75 +- .../ConnectionStringNameAttribute_Tests.cs | 47 +- .../Data/ConnectionStringResolver_Tests.cs | 71 +- .../Abp/Domain/Entities/EntityHelper_Tests.cs | 112 +- .../Volo/Abp/Domain/Entities/Entity_Tests.cs | 245 +- ...ibutedEventSelectorListExtensions_Tests.cs | 29 +- .../RepositoryRegistration_Tests.cs | 599 +++-- .../Volo/Abp/Domain/Values/Address.cs | 49 +- .../Abp/Domain/Values/ValueObject_Tests.cs | 35 +- ...pDistributedLockingAbstractionsTestBase.cs | 11 +- ...istributedLockingAbstractionsTestModule.cs | 21 +- .../LocalDistributedLock_Tests.cs | 91 +- .../Abp/Emailing/AbpEmailingTestModule.cs | 25 +- .../TestApp/FourthContext/FourthDbContext.cs | 19 +- .../FourthDbContextDummyEntity.cs | 9 +- .../TestApp/FourthContext/IFourthDbContext.cs | 9 +- .../AbpEfCoreTestSecondContextModule.cs | 55 +- .../SecondContext/BookInSecondDbContext.cs | 25 +- .../SecondContext/PhoneInSecondDbContext.cs | 21 +- .../SecondContextTestDataBuilder.cs | 39 +- .../TestApp/SecondContext/SecondDbContext.cs | 35 +- .../TestApp/ThirdDbContext/IThirdDbContext.cs | 11 +- .../TestApp/ThirdDbContext/ThirdDbContext.cs | 19 +- .../ThirdDbContextDummyEntity.cs | 11 +- .../AbpEntityFrameworkCoreTestModule.cs | 91 +- .../Auditing/Auditing_Tests.cs | 69 +- .../DataFiltering/HardDelete_Tests.cs | 7 +- .../MultiTenant_Creation_Tests.cs | 11 +- .../DataFiltering/MultiTenant_Filter_Tests.cs | 7 +- .../DataFiltering/SoftDelete_Filter_Tests.cs | 9 +- .../DataFiltering/SoftDelete_Tests.cs | 63 +- .../DbContext_Replace_Tests.cs | 83 +- .../Domain/ConcurrencyStamp_Tests.cs | 7 +- .../Domain/ExtraProperties_Tests.cs | 97 +- .../Domain/TestEntityExtensionConfigurator.cs | 97 +- .../DomainEvents/DomainEvents_Tests.cs | 9 +- .../DomainEvents/EntityChangeEvents_Tests.cs | 9 +- .../EfCoreAsyncQueryableProvider_Tests.cs | 69 +- .../EntityFrameworkCoreTestBase.cs | 11 +- .../Repositories/Repository_Basic_Tests.cs | 35 +- .../Repository_Basic_Tests_With_Int_Pk.cs | 9 +- .../Repository_Queryable_Tests.cs | 71 +- .../Repository_Specifications_Tests.cs | 9 +- .../TestMigrationsDbContext.cs | 63 +- .../Transactions/Transaction_Tests.cs | 117 +- .../UnitTestModelCacheKeyFactory.cs | 19 +- .../Uow/Uow_Completed_Tests.cs | 9 +- .../EFCore_DateTimeKindTests.cs | 77 +- .../Volo/Abp/TestApp/Domain/Author.cs | 31 +- .../Volo/Abp/TestApp/Domain/Book.cs | 35 +- .../EntityFrameworkCore/CityRepository.cs | 29 +- .../EntityFrameworkCore/PersonRepository.cs | 19 +- .../EntityFrameworkCore/TestAppDbContext.cs | 101 +- .../LocalDistributedEventBusTestBase.cs | 25 +- .../LocalDistributedEventBus_Test.cs | 83 +- ...leDistributedSingleInstanceEventHandler.cs | 49 +- ...ySimpleDistributedTransientEventHandler.cs | 29 +- .../Volo/Abp/EventBus/EventBusTestModule.cs | 9 +- .../GenericEventNameAttribute_Tests.cs | 43 +- .../Local/ActionBasedEventHandlerTest.cs | 219 +- .../Abp/EventBus/Local/EventBusTestBase.cs | 25 +- .../Local/EventBus_DI_Services_Test.cs | 21 +- .../EventBus/Local/EventBus_Exception_Test.cs | 55 +- .../Local/EventBus_MultiTenancy_Test.cs | 73 +- .../Local/EventBus_MultipleHandle_Test.cs | 65 +- .../EventBus/Local/GenericInheritanceTest.cs | 95 +- .../Abp/EventBus/Local/InheritanceTest.cs | 83 +- .../Local/MySimpleEventDataHandler.cs | 19 +- .../Local/MySimpleTransientEventHandler.cs | 29 +- .../TransientDisposableEventHandlerTest.cs | 25 +- .../Volo/Abp/EventBus/MyDerivedEventData.cs | 13 +- .../Volo/Abp/EventBus/MySimpleEto.cs | 9 +- .../Volo/Abp/EventBus/MySimpleEventData.cs | 19 +- .../Abp/Features/AbpFeaturesTestModule.cs | 21 +- .../Abp/Features/ClassFeatureTestService.cs | 33 +- .../FeatureCheckerExtensions_Tests.cs | 49 +- .../Volo/Abp/Features/FeatureChecker_Tests.cs | 63 +- .../FeatureDefinitionManager_Tests.cs | 47 +- .../Abp/Features/FeatureInterceptor_Tests.cs | 103 +- .../Volo/Abp/Features/FeatureTestBase.cs | 11 +- .../Abp/Features/IMethodFeatureTestService.cs | 13 +- .../Abp/Features/MethodFeatureTestService.cs | 29 +- .../Features/TestFeatureDefinitionProvider.cs | 17 +- .../Volo/Abp/Features/TestFeatureStore.cs | 69 +- ...plicationService_FluentValidation_Tests.cs | 285 ++- ...ureNotEnableException_Localization_Test.cs | 35 +- .../GlobalFeatureInterceptor_Tests.cs | 77 +- .../GlobalFeatureManager_Tests.cs | 29 +- .../GlobalFeatures/GlobalFeatureTestBase.cs | 11 +- .../GlobalFeatures/GlobalFeatureTestModule.cs | 15 +- .../Volo/Abp/GlobalFeatures/TestFeature.cs | 35 +- ...AbpHttpClientIdentityModelWebTestModule.cs | 9 +- ...oteServiceHttpClientAuthenticator_Tests.cs | 27 +- .../Volo/Abp/Http/AbpHttpClientTestBase.cs | 9 +- .../Volo/Abp/Http/AbpHttpClientTestModule.cs | 77 +- .../DynamicProxying/IRegularTestController.cs | 41 +- .../PersonAppServiceClientProxy_Tests.cs | 449 ++-- .../DynamicProxying/RegularTestController.cs | 297 ++- ...lientProxy_AbpRemoteCallException_Tests.cs | 69 +- .../RegularTestControllerClientProxy_Tests.cs | 259 +- .../DynamicProxying/TestObjectToFormData.cs | 29 +- .../TestObjectToQueryString.cs | 29 +- .../Localization/HttpClientTestResource.cs | 9 +- .../Volo/Abp/Http/Startup.cs | 19 +- .../Volo/Abp/Http/AbpHttpTestModule.cs | 9 +- .../Volo/Abp/Http/ApiTypeNameHelper_Tests.cs | 89 +- .../AbpIdentityClientOptions_Tests.cs | 69 +- .../IdentityModel/AbpIdentityModelTestBase.cs | 11 +- .../AbpIdentityModelTestModule.cs | 9 +- ...bpHasExtraPropertiesJsonConverter_Tests.cs | 101 +- .../Abp/Json/AbpHybridJsonSerializer_Tests.cs | 181 +- .../Volo/Abp/Json/AbpJsonTestBase.cs | 11 +- .../Volo/Abp/Json/AbpJsonTestModule.cs | 17 +- ...pSystemTextJsonSerializerProvider_Tests.cs | 465 ++-- ...temTextJsonUnsupportedTypeMatcher_Tests.cs | 89 +- .../Volo/Abp/Ldap/AbpLdapTestModule.cs | 33 +- .../Volo/Abp/Ldap/LdapManager_Tests.cs | 37 +- .../Volo/Abp/Ldap/LdapOptions_Tests.cs | 21 +- .../Abp/Localization/AbpLocalization_Tests.cs | 539 +++-- .../LocalizationTestCountryNamesResource.cs | 9 +- .../LocalizationTestValidationResource.cs | 9 +- .../Source/LocalizationTestResource.cs | 17 +- .../Volo/Abp/MailKit/AbpMailKitTestModule.cs | 15 +- .../MailKit/MailKitSmtpEmailSender_Tests.cs | 67 +- .../Abp/MemoryDb/AbpMemoryDbTestModule.cs | 45 +- .../Abp/MemoryDb/Auditing/Auditing_Tests.cs | 7 +- .../DataFilters/MultiTenant_Creation_Tests.cs | 11 +- .../DataFilters/MultiTenant_Filter_Tests.cs | 7 +- .../DataFilters/SoftDelete_Filter_Tests.cs | 7 +- .../MemoryDb/DataFilters/SoftDelete_Tests.cs | 7 +- .../DomainEvents/DomainEvents_Tests.cs | 15 +- .../DomainEvents/EntityChangeEvents_Tests.cs | 7 +- .../JsonConverters/EntityJsonConverter.cs | 45 +- .../Volo/Abp/MemoryDb/MemoryDbTestBase.cs | 11 +- .../Repositories/Repository_Basic_Tests.cs | 7 +- .../Repository_Basic_Tests_With_Int_Pk.cs | 9 +- .../Repository_Specifications_Tests.cs | 9 +- .../Abp/TestApp/MemoryDb/CityRepository.cs | 29 +- .../MemoryDb/TestAppMemoryDbContext.cs | 15 +- .../Volo/Abp/Minify/AbpMinifyTestModule.cs | 15 +- .../Abp/Minify/NUglify/CssMinifier_Tests.cs | 32 +- .../Abp/Minify/NUglify/HtmlMinifier_Tests.cs | 33 +- .../NUglify/JavascriptMinifier_Tests.cs | 32 +- .../TestApp/FourthContext/FourthDbContext.cs | 13 +- .../FourthDbContextDummyEntity.cs | 9 +- .../TestApp/FourthContext/IFourthDbContext.cs | 9 +- .../AbpMongoDbTestSecondContextModule.cs | 55 +- .../SecondContext/BookInSecondDbContext.cs | 23 +- .../SecondContext/PhoneInSecondDbContext.cs | 17 +- .../SecondContextTestDataBuilder.cs | 37 +- .../TestApp/SecondContext/SecondDbContext.cs | 11 +- .../TestApp/ThirdDbContext/IThirdDbContext.cs | 9 +- .../TestApp/ThirdDbContext/ThirdDbContext.cs | 13 +- .../ThirdDbContextDummyEntity.cs | 9 +- .../AbpMongoDbConventionalRegistrar_Tests.cs | 23 +- .../Volo/Abp/MongoDB/AbpMongoDbTestModule.cs | 45 +- .../Abp/MongoDB/Auditing/Auditing_Tests.cs | 9 +- .../MongoDB/DataFiltering/HardDelete_Tests.cs | 9 +- .../MultiTenant_Creation_Tests.cs | 13 +- .../DataFiltering/MultiTenant_Filter_Tests.cs | 13 +- .../DataFiltering/SoftDelete_Filter_Tests.cs | 13 +- .../MongoDB/DataFiltering/SoftDelete_Tests.cs | 9 +- .../Abp/MongoDB/DbContext_Replace_Tests.cs | 33 +- .../MongoDB/Domain/ConcurrencyStamp_Tests.cs | 9 +- .../MongoDB/Domain/ExtraProperties_Tests.cs | 9 +- .../DomainEvents/DomainEvents_Tests.cs | 11 +- .../DomainEvents/EntityChangeEvents_Tests.cs | 9 +- .../MongoDbAsyncQueryableProvider_Tests.cs | 69 +- .../Volo/Abp/MongoDB/MongoDbFixture.cs | 27 +- .../Volo/Abp/MongoDB/MongoDbTestBase.cs | 13 +- .../Volo/Abp/MongoDB/MongoTestCollection.cs | 13 +- .../MongoDbAsyncQueryableProvider_Tests.cs | 97 +- .../Repositories/Repository_Basic_Tests.cs | 89 +- .../Repository_Basic_Tests_With_Int_Pk.cs | 17 +- .../Repository_Queryable_Tests.cs | 13 +- .../Repository_Specifications_Tests.cs | 11 +- .../Serializer/MongoDB_DateTimeKind_Tests.cs | 137 +- .../MongoDB/Transactions/Transaction_Tests.cs | 107 +- .../Abp/MongoDB/Uow/Uow_Completed_Tests.cs | 11 +- .../Abp/TestApp/MongoDb/CityRepository.cs | 29 +- .../TestApp/MongoDb/ITestAppMongoDbContext.cs | 15 +- .../Abp/TestApp/MongoDb/PersonRepository.cs | 31 +- .../TestApp/MongoDb/TestAppMongoDbContext.cs | 37 +- .../AbpMultiLingualObjectsTestModule.cs | 23 +- .../MultiLingualObjectManager_Tests.cs | 77 +- .../TestObjects/MultiLingualBook.cs | 21 +- .../TestObjects/MultiLingualBookDto.cs | 13 +- .../MultiLingualBookTranslation.cs | 11 +- ...ltiTenantConnectionStringResolver_Tests.cs | 121 +- .../Abp/MultiTenancy/CurrentTenant_Tests.cs | 81 +- .../Abp/MultiTenancy/MultiTenancyTestBase.cs | 11 +- .../MultiTenancy/MultiTenancyTestModule.cs | 15 +- .../AbpObjectExtendingTestBase.cs | 7 +- .../AbpObjectExtendingTestModule.cs | 45 +- .../ExtensibleObjectValidator_Tests.cs | 241 +- .../ObjectExtending/ExtensibleObject_Tests.cs | 47 +- ...opertiesObjectExtendingExtensions_Tests.cs | 147 +- .../ObjectExtensionManager_Tests.cs | 339 ++- .../TestObjects/ExtensibleTestPerson.cs | 17 +- .../TestObjects/ExtensibleTestPersonDto.cs | 7 +- ...sibleTestPersonWithRegularPropertiesDto.cs | 15 +- .../ObjectMapping/AbpObjectMappingTestBase.cs | 11 +- .../AbpObjectMappingTestModule.cs | 21 +- .../ContextSpecificMapper_Tests.cs | 29 +- .../Volo/Abp/ObjectMapping/MappingContext1.cs | 9 +- .../Volo/Abp/ObjectMapping/MappingContext2.cs | 9 +- .../Test1AutoObjectMappingProvider.cs | 27 +- .../Test2AutoObjectMappingProvider.cs | 21 +- .../Abp/ObjectMapping/TestContextRegistrar.cs | 37 +- .../Abp/Security/AbpSecurityTestModule.cs | 25 +- .../Claims/AbpClaimsPrincipalFactory_Test.cs | 135 +- .../Claims/CurrentPrincipalAccessor_Test.cs | 47 +- .../StringEncryptionService_Tests.cs | 35 +- .../SecurityLog/SecurityLogManager_Tests.cs | 56 +- .../AbpSerializationTestModule.cs | 11 +- .../Serialization/ObjectSerializer_Tests.cs | 51 +- .../Volo/Abp/Serialization/Objects/Car.cs | 23 +- .../Serialization/Objects/CarSerializer.cs | 25 +- .../Volo/Abp/Serialization/Objects/Person.cs | 23 +- .../Abp/Settings/AbpSettingsTestModule.cs | 25 +- .../Abp/Settings/SettingProvider_Tests.cs | 47 +- .../Settings/TestSettingDefinitionProvider.cs | 19 +- .../Volo/Abp/Settings/TestSettingNames.cs | 15 +- .../Abp/Settings/TestSettingValueProvider.cs | 35 +- .../Abp/Sms/Aliyun/AbpSmsAliyunTestBase.cs | 13 +- .../Abp/Sms/Aliyun/AbpSmsAliyunTestsModule.cs | 21 +- .../Abp/Sms/Aliyun/AliyunSmsSender_Tests.cs | 49 +- .../Specifications/Specifications_Tests.cs | 277 ++- .../Application/PersonAppService_Tests.cs | 89 +- .../Volo/Abp/TestApp/TestAppTestBase.cs | 13 +- .../Volo/Abp/TestApp/TestAppTestModule.cs | 9 +- .../TestApp/Application/DistrictAppService.cs | 33 +- .../Abp/TestApp/Application/DistrictKey.cs | 13 +- .../Application/Dto/CreateFileInput.cs | 11 +- .../Dto/CreateMultipleFileInput.cs | 13 +- .../TestApp/Application/Dto/DistrictDto.cs | 13 +- .../TestApp/Application/Dto/GetParamsInput.cs | 21 +- .../Application/Dto/GetPersonPhonesFilter.cs | 11 +- .../Dto/GetWithComplexTypeInput.cs | 29 +- .../Abp/TestApp/Application/Dto/PersonDto.cs | 15 +- .../Abp/TestApp/Application/Dto/PhoneDto.cs | 13 +- .../TestApp/Application/IPeopleAppService.cs | 33 +- .../TestApp/Application/PeopleAppService.cs | 191 +- .../Volo/Abp/TestApp/Domain/City.cs | 37 +- .../Volo/Abp/TestApp/Domain/District.cs | 39 +- .../Abp/TestApp/Domain/EntityWithIntPk.cs | 21 +- .../Abp/TestApp/Domain/ICityRepository.cs | 11 +- .../Abp/TestApp/Domain/IPersonRepository.cs | 9 +- .../Volo/Abp/TestApp/Domain/Person.cs | 91 +- .../Volo/Abp/TestApp/Domain/PersonEto.cs | 17 +- .../TestApp/Domain/PersonNameChangedEto.cs | 17 +- .../TestApp/Domain/PersonNameChangedEvent.cs | 13 +- .../Volo/Abp/TestApp/Domain/PersonView.cs | 19 +- .../Volo/Abp/TestApp/Domain/Phone.cs | 149 +- .../Volo/Abp/TestApp/Domain/PhoneType.cs | 15 +- .../Abp/TestApp/Domain/TestAutoMapProfile.cs | 11 +- .../Volo/Abp/TestApp/TestAppModule.cs | 81 +- .../Volo/Abp/TestApp/TestDataBuilder.cs | 127 +- .../Abp/TestApp/Testing/Auditing_Tests.cs | 145 +- .../TestApp/Testing/ConcurrencyStamp_Tests.cs | 83 +- .../Abp/TestApp/Testing/DateTimeKind_Tests.cs | 63 +- .../Abp/TestApp/Testing/DomainEvents_Tests.cs | 291 ++- .../Testing/EntityChangeEvents_Tests.cs | 195 +- .../TestApp/Testing/ExtraProperties_Tests.cs | 165 +- .../Abp/TestApp/Testing/HardDelete_Tests.cs | 231 +- .../HasExtraPropertiesExtensions_Tests.cs | 77 +- .../Testing/MultiTenant_Creation_Tests.cs | 93 +- .../Testing/MultiTenant_Filter_Tests.cs | 91 +- .../TestApp/Testing/Repository_Basic_Tests.cs | 293 ++- .../Repository_Basic_Tests_With_Int_Pk.cs | 55 +- .../Testing/Repository_Queryable_Tests.cs | 87 +- .../Repository_Specifications_Tests.cs | 43 +- .../Testing/SoftDelete_Filter_Tests.cs | 121 +- .../Abp/TestApp/Testing/SoftDelete_Tests.cs | 215 +- .../Abp/TestApp/Testing/TestAppTestBase.cs | 77 +- .../TestApp/Testing/Uow_Completed_Tests.cs | 41 +- .../AbpCompiledViewProviderOptions_Tests.cs | 55 +- ...lizedTemplateContentReaderFactory_Tests.cs | 29 +- .../Razor/RazorTemplateDefinitionTests.cs | 7 +- .../RazorTemplateRendererProvider_Tests.cs | 229 +- .../RazorTestTemplateDefinitionProvider.cs | 35 +- .../Razor/RazorTextTemplatingTestModule.cs | 29 +- ...zorVirtualFileTemplateContributor_Tests.cs | 39 +- .../SampleTemplates/RazorTestTemplates.cs | 9 +- ...lizedTemplateContentReaderFactory_Tests.cs | 21 +- .../Scriban/ScribanTemplateDefinitionTests.cs | 7 +- .../ScribanTemplateRendererProvider_Tests.cs | 225 +- .../ScribanTestTemplateDefinitionProvider.cs | 33 +- .../ScribanTextTemplatingTestModule.cs | 21 +- ...banVirtualFileTemplateContributor_Tests.cs | 15 +- .../AbpTextTemplatingOptions_Tests.cs | 29 +- .../AbpTextTemplatingTestBase.cs | 13 +- .../AbpTextTemplatingTestModule.cs | 55 +- .../HybridTemplateRendererProvider_Tests.cs | 72 +- .../Localization/TestLocalizationSource.cs | 7 +- .../TextTemplating/TemplateDefinitionTests.cs | 61 +- .../TestTemplateDefinitionProvider.cs | 97 +- .../Volo/Abp/TextTemplating/TestTemplates.cs | 19 +- ...lizedTemplateContentReaderFactory_Tests.cs | 71 +- .../VirtualFileTemplateContributor_Tests.cs | 75 +- .../Abp/Threading/AbpThreadingTestModule.cs | 17 +- .../NullCancellationTokenProvider_Tests.cs | 75 +- .../Navigation/AbpUiNavigationTestModule.cs | 29 +- .../Abp/Ui/Navigation/FakePermissionStore.cs | 33 +- .../Abp/Ui/Navigation/MenuManager_Tests.cs | 211 +- .../TestPermissionDefinitionProvider.cs | 27 +- .../Abp/Uow/UnitOfWork_Ambient_Scope_Tests.cs | 85 +- .../Volo/Abp/Uow/UnitOfWork_Events_Tests.cs | 217 +- .../Volo/Abp/Uow/UnitOfWork_Nested_Tests.cs | 49 +- .../ApplicationService_Validation_Tests.cs | 559 +++-- .../DynamicFileProvider_Tests.cs | 131 +- .../VirtualFilePathHelper_Tests.cs | 13 +- .../VirtualFileProvider_Tests.cs | 129 +- 3233 files changed, 98694 insertions(+), 102163 deletions(-) diff --git a/framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/AbpApiVersioningAbstractionsModule.cs b/framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/AbpApiVersioningAbstractionsModule.cs index b4f679c927..70d960c8d5 100644 --- a/framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/AbpApiVersioningAbstractionsModule.cs +++ b/framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/AbpApiVersioningAbstractionsModule.cs @@ -1,13 +1,12 @@ using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Modularity; -namespace Volo.Abp.ApiVersioning +namespace Volo.Abp.ApiVersioning; + +public class AbpApiVersioningAbstractionsModule : AbpModule { - public class AbpApiVersioningAbstractionsModule : AbpModule + public override void ConfigureServices(ServiceConfigurationContext context) { - public override void ConfigureServices(ServiceConfigurationContext context) - { - context.Services.AddSingleton(NullRequestedApiVersion.Instance); - } + context.Services.AddSingleton(NullRequestedApiVersion.Instance); } } diff --git a/framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/IRequestedApiVersion.cs b/framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/IRequestedApiVersion.cs index 3d8a31c694..96c2ef33cd 100644 --- a/framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/IRequestedApiVersion.cs +++ b/framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/IRequestedApiVersion.cs @@ -1,7 +1,6 @@ -namespace Volo.Abp.ApiVersioning +namespace Volo.Abp.ApiVersioning; + +public interface IRequestedApiVersion { - public interface IRequestedApiVersion - { - string Current { get; } - } + string Current { get; } } diff --git a/framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/NullRequestedApiVersion.cs b/framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/NullRequestedApiVersion.cs index 721fa91815..0589c662ef 100644 --- a/framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/NullRequestedApiVersion.cs +++ b/framework/src/Volo.Abp.ApiVersioning.Abstractions/Volo/Abp/ApiVersioning/NullRequestedApiVersion.cs @@ -1,14 +1,13 @@ -namespace Volo.Abp.ApiVersioning +namespace Volo.Abp.ApiVersioning; + +public class NullRequestedApiVersion : IRequestedApiVersion { - public class NullRequestedApiVersion : IRequestedApiVersion - { - public static NullRequestedApiVersion Instance = new NullRequestedApiVersion(); + public static NullRequestedApiVersion Instance = new NullRequestedApiVersion(); - public string Current => null; + public string Current => null; + + private NullRequestedApiVersion() + { - private NullRequestedApiVersion() - { - - } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Microsoft/AspNetCore/Builder/ApplicationBuilderAbpJwtTokenMiddlewareExtension.cs b/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Microsoft/AspNetCore/Builder/ApplicationBuilderAbpJwtTokenMiddlewareExtension.cs index 4ff54f39bf..8171013854 100644 --- a/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Microsoft/AspNetCore/Builder/ApplicationBuilderAbpJwtTokenMiddlewareExtension.cs +++ b/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Microsoft/AspNetCore/Builder/ApplicationBuilderAbpJwtTokenMiddlewareExtension.cs @@ -1,25 +1,24 @@ using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.JwtBearer; -namespace Microsoft.AspNetCore.Builder +namespace Microsoft.AspNetCore.Builder; + +public static class ApplicationBuilderAbpJwtTokenMiddlewareExtension { - public static class ApplicationBuilderAbpJwtTokenMiddlewareExtension + public static IApplicationBuilder UseJwtTokenMiddleware(this IApplicationBuilder app, string schema = JwtBearerDefaults.AuthenticationScheme) { - public static IApplicationBuilder UseJwtTokenMiddleware(this IApplicationBuilder app, string schema = JwtBearerDefaults.AuthenticationScheme) + return app.Use(async (ctx, next) => { - return app.Use(async (ctx, next) => + if (ctx.User.Identity?.IsAuthenticated != true) { - if (ctx.User.Identity?.IsAuthenticated != true) + var result = await ctx.AuthenticateAsync(schema); + if (result.Succeeded && result.Principal != null) { - var result = await ctx.AuthenticateAsync(schema); - if (result.Succeeded && result.Principal != null) - { - ctx.User = result.Principal; - } + ctx.User = result.Principal; } + } - await next(); - }); - } + await next(); + }); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo/Abp/AspNetCore/Authentication/JwtBearer/AbpAspNetCoreAuthenticationJwtBearerModule.cs b/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo/Abp/AspNetCore/Authentication/JwtBearer/AbpAspNetCoreAuthenticationJwtBearerModule.cs index 8698e2283d..1fa5077a91 100644 --- a/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo/Abp/AspNetCore/Authentication/JwtBearer/AbpAspNetCoreAuthenticationJwtBearerModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Authentication.JwtBearer/Volo/Abp/AspNetCore/Authentication/JwtBearer/AbpAspNetCoreAuthenticationJwtBearerModule.cs @@ -1,11 +1,10 @@ using Volo.Abp.Modularity; using Volo.Abp.Security; -namespace Volo.Abp.AspNetCore.Authentication.JwtBearer +namespace Volo.Abp.AspNetCore.Authentication.JwtBearer; + +[DependsOn(typeof(AbpSecurityModule))] +public class AbpAspNetCoreAuthenticationJwtBearerModule : AbpModule { - [DependsOn(typeof(AbpSecurityModule))] - public class AbpAspNetCoreAuthenticationJwtBearerModule : AbpModule - { - } } diff --git a/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Microsoft/AspNetCore/Authentication/OAuth/Claims/AbpClaimActionCollectionExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Microsoft/AspNetCore/Authentication/OAuth/Claims/AbpClaimActionCollectionExtensions.cs index 2ad72955af..01dc489c54 100644 --- a/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Microsoft/AspNetCore/Authentication/OAuth/Claims/AbpClaimActionCollectionExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Microsoft/AspNetCore/Authentication/OAuth/Claims/AbpClaimActionCollectionExtensions.cs @@ -1,57 +1,56 @@ using Volo.Abp.AspNetCore.Authentication.OAuth.Claims; using Volo.Abp.Security.Claims; -namespace Microsoft.AspNetCore.Authentication.OAuth.Claims +namespace Microsoft.AspNetCore.Authentication.OAuth.Claims; + +public static class AbpClaimActionCollectionExtensions { - public static class AbpClaimActionCollectionExtensions + public static void MapAbpClaimTypes(this ClaimActionCollection claimActions) { - public static void MapAbpClaimTypes(this ClaimActionCollection claimActions) + if (AbpClaimTypes.UserName != "name") + { + claimActions.MapJsonKey(AbpClaimTypes.UserName, "name"); + claimActions.DeleteClaim("name"); + claimActions.RemoveDuplicate(AbpClaimTypes.UserName); + } + + if (AbpClaimTypes.Email != "email") + { + claimActions.MapJsonKey(AbpClaimTypes.Email, "email"); + claimActions.DeleteClaim("email"); + claimActions.RemoveDuplicate(AbpClaimTypes.Email); + } + + if (AbpClaimTypes.EmailVerified != "email_verified") + { + claimActions.MapJsonKey(AbpClaimTypes.EmailVerified, "email_verified"); + } + + if (AbpClaimTypes.PhoneNumber != "phone_number") { - if (AbpClaimTypes.UserName != "name") - { - claimActions.MapJsonKey(AbpClaimTypes.UserName, "name"); - claimActions.DeleteClaim("name"); - claimActions.RemoveDuplicate(AbpClaimTypes.UserName); - } - - if (AbpClaimTypes.Email != "email") - { - claimActions.MapJsonKey(AbpClaimTypes.Email, "email"); - claimActions.DeleteClaim("email"); - claimActions.RemoveDuplicate(AbpClaimTypes.Email); - } - - if (AbpClaimTypes.EmailVerified != "email_verified") - { - claimActions.MapJsonKey(AbpClaimTypes.EmailVerified, "email_verified"); - } - - if (AbpClaimTypes.PhoneNumber != "phone_number") - { - claimActions.MapJsonKey(AbpClaimTypes.PhoneNumber, "phone_number"); - } - - if (AbpClaimTypes.PhoneNumberVerified != "phone_number_verified") - { - claimActions.MapJsonKey(AbpClaimTypes.PhoneNumberVerified, "phone_number_verified"); - } - - if (AbpClaimTypes.Role != "role") - { - claimActions.MapJsonKeyMultiple(AbpClaimTypes.Role, "role"); - } - - claimActions.RemoveDuplicate(AbpClaimTypes.Name); + claimActions.MapJsonKey(AbpClaimTypes.PhoneNumber, "phone_number"); } - public static void MapJsonKeyMultiple(this ClaimActionCollection claimActions, string claimType, string jsonKey) + if (AbpClaimTypes.PhoneNumberVerified != "phone_number_verified") { - claimActions.Add(new MultipleClaimAction(claimType, jsonKey)); + claimActions.MapJsonKey(AbpClaimTypes.PhoneNumberVerified, "phone_number_verified"); } - - public static void RemoveDuplicate(this ClaimActionCollection claimActions, string claimType) + + if (AbpClaimTypes.Role != "role") { - claimActions.Add(new RemoveDuplicateClaimAction(claimType)); + claimActions.MapJsonKeyMultiple(AbpClaimTypes.Role, "role"); } + + claimActions.RemoveDuplicate(AbpClaimTypes.Name); + } + + public static void MapJsonKeyMultiple(this ClaimActionCollection claimActions, string claimType, string jsonKey) + { + claimActions.Add(new MultipleClaimAction(claimType, jsonKey)); + } + + public static void RemoveDuplicate(this ClaimActionCollection claimActions, string claimType) + { + claimActions.Add(new RemoveDuplicateClaimAction(claimType)); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Volo/Abp/AspNetCore/Authentication/OAuth/AbpAspNetCoreAuthenticationOAuthModule.cs b/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Volo/Abp/AspNetCore/Authentication/OAuth/AbpAspNetCoreAuthenticationOAuthModule.cs index cff3f437b7..b73c78782e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Volo/Abp/AspNetCore/Authentication/OAuth/AbpAspNetCoreAuthenticationOAuthModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Volo/Abp/AspNetCore/Authentication/OAuth/AbpAspNetCoreAuthenticationOAuthModule.cs @@ -1,11 +1,10 @@ using Volo.Abp.Modularity; using Volo.Abp.Security; -namespace Volo.Abp.AspNetCore.Authentication.OAuth +namespace Volo.Abp.AspNetCore.Authentication.OAuth; + +[DependsOn(typeof(AbpSecurityModule))] +public class AbpAspNetCoreAuthenticationOAuthModule : AbpModule { - [DependsOn(typeof(AbpSecurityModule))] - public class AbpAspNetCoreAuthenticationOAuthModule : AbpModule - { - } } diff --git a/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Volo/Abp/AspNetCore/Authentication/OAuth/Claims/MultipleClaimAction.cs b/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Volo/Abp/AspNetCore/Authentication/OAuth/Claims/MultipleClaimAction.cs index 66ca78026d..1910af63d5 100644 --- a/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Volo/Abp/AspNetCore/Authentication/OAuth/Claims/MultipleClaimAction.cs +++ b/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Volo/Abp/AspNetCore/Authentication/OAuth/Claims/MultipleClaimAction.cs @@ -3,51 +3,50 @@ using System.Security.Claims; using System.Text.Json; using Microsoft.AspNetCore.Authentication.OAuth.Claims; -namespace Volo.Abp.AspNetCore.Authentication.OAuth.Claims +namespace Volo.Abp.AspNetCore.Authentication.OAuth.Claims; + +public class MultipleClaimAction : ClaimAction { - public class MultipleClaimAction : ClaimAction + public MultipleClaimAction(string claimType, string jsonKey) + : base(claimType, jsonKey) { - public MultipleClaimAction(string claimType, string jsonKey) - : base(claimType, jsonKey) - { - } + } - public override void Run(JsonElement userData, ClaimsIdentity identity, string issuer) - { - JsonElement prop; + public override void Run(JsonElement userData, ClaimsIdentity identity, string issuer) + { + JsonElement prop; - if (!userData.TryGetProperty(ValueType, out prop)) - return; - - if (prop.ValueKind == JsonValueKind.Null) - { - return; - } + if (!userData.TryGetProperty(ValueType, out prop)) + return; - Claim claim; - switch (prop.ValueKind) - { - case JsonValueKind.String: - claim = new Claim(ClaimType, prop.GetString(), ValueType, issuer); + if (prop.ValueKind == JsonValueKind.Null) + { + return; + } + + Claim claim; + switch (prop.ValueKind) + { + case JsonValueKind.String: + claim = new Claim(ClaimType, prop.GetString(), ValueType, issuer); + if (!identity.Claims.Any(c => c.Type == claim.Type && c.Value == claim.Value)) + { + identity.AddClaim(claim); + } + break; + case JsonValueKind.Array: + foreach (var arramItem in prop.EnumerateArray()) + { + claim = new Claim(ClaimType, arramItem.GetString(), ValueType, issuer); if (!identity.Claims.Any(c => c.Type == claim.Type && c.Value == claim.Value)) { identity.AddClaim(claim); } - break; - case JsonValueKind.Array: - foreach (var arramItem in prop.EnumerateArray()) - { - claim = new Claim(ClaimType, arramItem.GetString(), ValueType, issuer); - if (!identity.Claims.Any(c => c.Type == claim.Type && c.Value == claim.Value)) - { - identity.AddClaim(claim); - } - } - break; - default: - throw new AbpException("Unhandled JsonValueKind: " + prop.ValueKind); - } + } + break; + default: + throw new AbpException("Unhandled JsonValueKind: " + prop.ValueKind); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Volo/Abp/AspNetCore/Authentication/OAuth/Claims/RemoveDuplicateClaimAction.cs b/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Volo/Abp/AspNetCore/Authentication/OAuth/Claims/RemoveDuplicateClaimAction.cs index ab3e4027c2..80773ed481 100644 --- a/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Volo/Abp/AspNetCore/Authentication/OAuth/Claims/RemoveDuplicateClaimAction.cs +++ b/framework/src/Volo.Abp.AspNetCore.Authentication.OAuth/Volo/Abp/AspNetCore/Authentication/OAuth/Claims/RemoveDuplicateClaimAction.cs @@ -5,36 +5,35 @@ using System.Security.Claims; using System.Text.Json; using Microsoft.AspNetCore.Authentication.OAuth.Claims; -namespace Volo.Abp.AspNetCore.Authentication.OAuth.Claims +namespace Volo.Abp.AspNetCore.Authentication.OAuth.Claims; + +public class RemoveDuplicateClaimAction : ClaimAction { - public class RemoveDuplicateClaimAction : ClaimAction + public RemoveDuplicateClaimAction(string claimType) + : base(claimType, ClaimValueTypes.String) { - public RemoveDuplicateClaimAction(string claimType) - : base(claimType, ClaimValueTypes.String) + } + + /// + public override void Run(JsonElement userData, ClaimsIdentity identity, string issuer) + { + var claims = identity.Claims.Where(c => c.Type == ClaimType).ToArray(); + if (claims.Length < 2) { + return; } - /// - public override void Run(JsonElement userData, ClaimsIdentity identity, string issuer) + var previousValues = new List(); + foreach (var claim in claims) { - var claims = identity.Claims.Where(c => c.Type == ClaimType).ToArray(); - if (claims.Length < 2) + if (claim.Value.IsIn(previousValues)) { - return; + identity.RemoveClaim(claim); } - - var previousValues = new List(); - foreach (var claim in claims) + else { - if (claim.Value.IsIn(previousValues)) - { - identity.RemoveClaim(claim); - } - else - { - previousValues.Add(claim.Value); - } + previousValues.Add(claim.Value); } } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Microsoft/Extensions/DependencyInjection/AbpOpenIdConnectExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Microsoft/Extensions/DependencyInjection/AbpOpenIdConnectExtensions.cs index acd4233512..02b292a984 100644 --- a/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Microsoft/Extensions/DependencyInjection/AbpOpenIdConnectExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Microsoft/Extensions/DependencyInjection/AbpOpenIdConnectExtensions.cs @@ -7,59 +7,58 @@ using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Protocols.OpenIdConnect; using Volo.Abp.AspNetCore.MultiTenancy; -namespace Microsoft.Extensions.DependencyInjection +namespace Microsoft.Extensions.DependencyInjection; + +public static class AbpOpenIdConnectExtensions { - public static class AbpOpenIdConnectExtensions - { - public static AuthenticationBuilder AddAbpOpenIdConnect(this AuthenticationBuilder builder) - => builder.AddAbpOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, _ => { }); + public static AuthenticationBuilder AddAbpOpenIdConnect(this AuthenticationBuilder builder) + => builder.AddAbpOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, _ => { }); - public static AuthenticationBuilder AddAbpOpenIdConnect(this AuthenticationBuilder builder, Action configureOptions) - => builder.AddAbpOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, configureOptions); + public static AuthenticationBuilder AddAbpOpenIdConnect(this AuthenticationBuilder builder, Action configureOptions) + => builder.AddAbpOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, configureOptions); - public static AuthenticationBuilder AddAbpOpenIdConnect(this AuthenticationBuilder builder, string authenticationScheme, Action configureOptions) - => builder.AddAbpOpenIdConnect(authenticationScheme, OpenIdConnectDefaults.DisplayName, configureOptions); + public static AuthenticationBuilder AddAbpOpenIdConnect(this AuthenticationBuilder builder, string authenticationScheme, Action configureOptions) + => builder.AddAbpOpenIdConnect(authenticationScheme, OpenIdConnectDefaults.DisplayName, configureOptions); - public static AuthenticationBuilder AddAbpOpenIdConnect(this AuthenticationBuilder builder, string authenticationScheme, string displayName, Action configureOptions) + public static AuthenticationBuilder AddAbpOpenIdConnect(this AuthenticationBuilder builder, string authenticationScheme, string displayName, Action configureOptions) + { + return builder.AddOpenIdConnect(authenticationScheme, displayName, options => { - return builder.AddOpenIdConnect(authenticationScheme, displayName, options => - { - options.ClaimActions.MapAbpClaimTypes(); + options.ClaimActions.MapAbpClaimTypes(); - configureOptions?.Invoke(options); + configureOptions?.Invoke(options); - options.Events ??= new OpenIdConnectEvents(); - var authorizationCodeReceived = options.Events.OnAuthorizationCodeReceived ?? (_ => Task.CompletedTask); + options.Events ??= new OpenIdConnectEvents(); + var authorizationCodeReceived = options.Events.OnAuthorizationCodeReceived ?? (_ => Task.CompletedTask); - options.Events.OnAuthorizationCodeReceived = receivedContext => - { - SetAbpTenantId(receivedContext); - return authorizationCodeReceived.Invoke(receivedContext); - }; + options.Events.OnAuthorizationCodeReceived = receivedContext => + { + SetAbpTenantId(receivedContext); + return authorizationCodeReceived.Invoke(receivedContext); + }; - options.Events.OnRemoteFailure = remoteFailureContext => + options.Events.OnRemoteFailure = remoteFailureContext => + { + if (remoteFailureContext.Failure is OpenIdConnectProtocolException && + remoteFailureContext.Failure.Message.Contains("access_denied")) { - if (remoteFailureContext.Failure is OpenIdConnectProtocolException && - remoteFailureContext.Failure.Message.Contains("access_denied")) - { - remoteFailureContext.HandleResponse(); - remoteFailureContext.Response.Redirect($"{remoteFailureContext.Request.PathBase}/"); - } - return Task.CompletedTask; - }; - }); - } + remoteFailureContext.HandleResponse(); + remoteFailureContext.Response.Redirect($"{remoteFailureContext.Request.PathBase}/"); + } + return Task.CompletedTask; + }; + }); + } - private static void SetAbpTenantId(AuthorizationCodeReceivedContext receivedContext) - { - var tenantKey = receivedContext.HttpContext.RequestServices - .GetRequiredService>().Value.TenantKey; + private static void SetAbpTenantId(AuthorizationCodeReceivedContext receivedContext) + { + var tenantKey = receivedContext.HttpContext.RequestServices + .GetRequiredService>().Value.TenantKey; - if (receivedContext.Request.Cookies.ContainsKey(tenantKey)) - { - receivedContext.TokenEndpointRequest.SetParameter(tenantKey, - receivedContext.Request.Cookies[tenantKey]); - } + if (receivedContext.Request.Cookies.ContainsKey(tenantKey)) + { + receivedContext.TokenEndpointRequest.SetParameter(tenantKey, + receivedContext.Request.Cookies[tenantKey]); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Volo/Abp/AspNetCore/Authentication/OpenIdConnect/AbpAspNetCoreAuthenticationOpenIdConnectModule.cs b/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Volo/Abp/AspNetCore/Authentication/OpenIdConnect/AbpAspNetCoreAuthenticationOpenIdConnectModule.cs index 13a8fd5c04..8670fbea17 100644 --- a/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Volo/Abp/AspNetCore/Authentication/OpenIdConnect/AbpAspNetCoreAuthenticationOpenIdConnectModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Authentication.OpenIdConnect/Volo/Abp/AspNetCore/Authentication/OpenIdConnect/AbpAspNetCoreAuthenticationOpenIdConnectModule.cs @@ -2,13 +2,12 @@ using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.Authentication.OpenIdConnect +namespace Volo.Abp.AspNetCore.Authentication.OpenIdConnect; + +[DependsOn( + typeof(AbpMultiTenancyModule), + typeof(AbpAspNetCoreAuthenticationOAuthModule))] +public class AbpAspNetCoreAuthenticationOpenIdConnectModule : AbpModule { - [DependsOn( - typeof(AbpMultiTenancyModule), - typeof(AbpAspNetCoreAuthenticationOAuthModule))] - public class AbpAspNetCoreAuthenticationOpenIdConnectModule : AbpModule - { - } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/AbpAspNetCoreComponentsServerThemingModule.cs b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/AbpAspNetCoreComponentsServerThemingModule.cs index 72462b97d6..dab511b595 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/AbpAspNetCoreComponentsServerThemingModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/AbpAspNetCoreComponentsServerThemingModule.cs @@ -4,34 +4,33 @@ using Volo.Abp.AspNetCore.Mvc.UI.Bundling; using Volo.Abp.AspNetCore.Mvc.UI.Packages; using Volo.Abp.Modularity; -namespace Volo.Abp.AspNetCore.Components.Server.Theming +namespace Volo.Abp.AspNetCore.Components.Server.Theming; + +[DependsOn( + typeof(AbpAspNetCoreComponentsServerModule), + typeof(AbpAspNetCoreMvcUiPackagesModule), + typeof(AbpAspNetCoreComponentsWebThemingModule), + typeof(AbpAspNetCoreMvcUiBundlingModule) + )] +public class AbpAspNetCoreComponentsServerThemingModule : AbpModule { - [DependsOn( - typeof(AbpAspNetCoreComponentsServerModule), - typeof(AbpAspNetCoreMvcUiPackagesModule), - typeof(AbpAspNetCoreComponentsWebThemingModule), - typeof(AbpAspNetCoreMvcUiBundlingModule) - )] - public class AbpAspNetCoreComponentsServerThemingModule : AbpModule + public override void ConfigureServices(ServiceConfigurationContext context) { - public override void ConfigureServices(ServiceConfigurationContext context) + Configure(options => { - Configure(options => - { - options - .StyleBundles - .Add(BlazorStandardBundles.Styles.Global, bundle => - { - bundle.AddContributors(typeof(BlazorGlobalStyleContributor)); - }); - - options - .ScriptBundles - .Add(BlazorStandardBundles.Scripts.Global, bundle => - { - bundle.AddContributors(typeof(BlazorGlobalScriptContributor)); - }); - }); - } + options + .StyleBundles + .Add(BlazorStandardBundles.Styles.Global, bundle => + { + bundle.AddContributors(typeof(BlazorGlobalStyleContributor)); + }); + + options + .ScriptBundles + .Add(BlazorStandardBundles.Scripts.Global, bundle => + { + bundle.AddContributors(typeof(BlazorGlobalScriptContributor)); + }); + }); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalBundles.cs b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalBundles.cs index 7112fd342d..d65efa0c3f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalBundles.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalBundles.cs @@ -1,15 +1,14 @@ -namespace Volo.Abp.AspNetCore.Components.Server.Theming.Bundling +namespace Volo.Abp.AspNetCore.Components.Server.Theming.Bundling; + +public class BlazorStandardBundles { - public class BlazorStandardBundles + public static class Styles { - public static class Styles - { - public static string Global = "Blazor.Global"; - } + public static string Global = "Blazor.Global"; + } - public static class Scripts - { - public static string Global = "Blazor.Global"; - } + public static class Scripts + { + public static string Global = "Blazor.Global"; } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalScriptContributor.cs b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalScriptContributor.cs index 6a0542f717..8977acc869 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalScriptContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalScriptContributor.cs @@ -1,14 +1,13 @@ using System.Collections.Generic; using Volo.Abp.AspNetCore.Mvc.UI.Bundling; -namespace Volo.Abp.AspNetCore.Components.Server.Theming.Bundling +namespace Volo.Abp.AspNetCore.Components.Server.Theming.Bundling; + +public class BlazorGlobalScriptContributor : BundleContributor { - public class BlazorGlobalScriptContributor : BundleContributor + public override void ConfigureBundle(BundleConfigurationContext context) { - public override void ConfigureBundle(BundleConfigurationContext context) - { - context.Files.AddIfNotContains("/_framework/blazor.server.js"); - context.Files.AddIfNotContains("/_content/Volo.Abp.AspNetCore.Components.Web/libs/abp/js/abp.js"); - } + context.Files.AddIfNotContains("/_framework/blazor.server.js"); + context.Files.AddIfNotContains("/_content/Volo.Abp.AspNetCore.Components.Web/libs/abp/js/abp.js"); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalStyleContributor.cs b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalStyleContributor.cs index 9e712ffba7..3223be417c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalStyleContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalStyleContributor.cs @@ -4,19 +4,18 @@ using Volo.Abp.AspNetCore.Mvc.UI.Packages.Bootstrap; using Volo.Abp.AspNetCore.Mvc.UI.Packages.FontAwesome; using Volo.Abp.Modularity; -namespace Volo.Abp.AspNetCore.Components.Server.Theming.Bundling +namespace Volo.Abp.AspNetCore.Components.Server.Theming.Bundling; + +[DependsOn( + typeof(BootstrapStyleContributor), + typeof(FontAwesomeStyleContributor) +)] +public class BlazorGlobalStyleContributor : BundleContributor { - [DependsOn( - typeof(BootstrapStyleContributor), - typeof(FontAwesomeStyleContributor) - )] - public class BlazorGlobalStyleContributor : BundleContributor + public override void ConfigureBundle(BundleConfigurationContext context) { - public override void ConfigureBundle(BundleConfigurationContext context) - { - context.Files.AddIfNotContains("/_content/Blazorise/blazorise.css"); - context.Files.AddIfNotContains("/_content/Blazorise.Bootstrap5/blazorise.bootstrap5.css"); - context.Files.AddIfNotContains("/_content/Blazorise.Snackbar/blazorise.snackbar.css"); - } + context.Files.AddIfNotContains("/_content/Blazorise/blazorise.css"); + context.Files.AddIfNotContains("/_content/Blazorise.Bootstrap5/blazorise.bootstrap5.css"); + context.Files.AddIfNotContains("/_content/Blazorise.Snackbar/blazorise.snackbar.css"); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/AbpAspNetCoreComponentsServerModule.cs b/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/AbpAspNetCoreComponentsServerModule.cs index 8077de5c8a..dfa515c1b8 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/AbpAspNetCoreComponentsServerModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/AbpAspNetCoreComponentsServerModule.cs @@ -13,55 +13,54 @@ using Volo.Abp.EventBus; using Volo.Abp.Http.Client; using Volo.Abp.Modularity; -namespace Volo.Abp.AspNetCore.Components.Server +namespace Volo.Abp.AspNetCore.Components.Server; + +[DependsOn( + typeof(AbpHttpClientModule), + typeof(AbpAspNetCoreComponentsWebModule), + typeof(AbpAspNetCoreSignalRModule), + typeof(AbpEventBusModule), + typeof(AbpAspNetCoreMvcContractsModule) + )] +public class AbpAspNetCoreComponentsServerModule : AbpModule { - [DependsOn( - typeof(AbpHttpClientModule), - typeof(AbpAspNetCoreComponentsWebModule), - typeof(AbpAspNetCoreSignalRModule), - typeof(AbpEventBusModule), - typeof(AbpAspNetCoreMvcContractsModule) - )] - public class AbpAspNetCoreComponentsServerModule : AbpModule + public override void ConfigureServices(ServiceConfigurationContext context) { - public override void ConfigureServices(ServiceConfigurationContext context) + var serverSideBlazorBuilder = context.Services.AddServerSideBlazor(options => { - var serverSideBlazorBuilder = context.Services.AddServerSideBlazor(options => + if (context.Services.GetHostingEnvironment().IsDevelopment()) { - if (context.Services.GetHostingEnvironment().IsDevelopment()) - { - options.DetailedErrors = true; - } - }); - context.Services.ExecutePreConfiguredActions(serverSideBlazorBuilder); + options.DetailedErrors = true; + } + }); + context.Services.ExecutePreConfiguredActions(serverSideBlazorBuilder); - Configure(options => - { - options.IgnoredUrls.AddIfNotContains("/_blazor"); - }); + Configure(options => + { + options.IgnoredUrls.AddIfNotContains("/_blazor"); + }); - Configure(options => - { - options.IgnoredUrls.AddIfNotContains("/_blazor"); - }); + Configure(options => + { + options.IgnoredUrls.AddIfNotContains("/_blazor"); + }); - Configure(options => + Configure(options => + { + options.EndpointConfigureActions.Add(endpointContext => { - options.EndpointConfigureActions.Add(endpointContext => - { - endpointContext.Endpoints.MapBlazorHub(); - endpointContext.Endpoints.MapFallbackToPage("/_Host"); - }); + endpointContext.Endpoints.MapBlazorHub(); + endpointContext.Endpoints.MapFallbackToPage("/_Host"); }); - } + }); + } - public override void OnApplicationInitialization(ApplicationInitializationContext context) - { - context.GetEnvironment().WebRootFileProvider = - new CompositeFileProvider( - new ManifestEmbeddedFileProvider(typeof(IServerSideBlazorBuilder).Assembly), - context.GetEnvironment().WebRootFileProvider - ); - } + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + context.GetEnvironment().WebRootFileProvider = + new CompositeFileProvider( + new ManifestEmbeddedFileProvider(typeof(IServerSideBlazorBuilder).Assembly), + context.GetEnvironment().WebRootFileProvider + ); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/Configuration/BlazorServerCurrentApplicationConfigurationCacheResetService.cs b/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/Configuration/BlazorServerCurrentApplicationConfigurationCacheResetService.cs index 1e3cd857e5..02de9d8bf7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/Configuration/BlazorServerCurrentApplicationConfigurationCacheResetService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/Configuration/BlazorServerCurrentApplicationConfigurationCacheResetService.cs @@ -4,26 +4,25 @@ using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; using Volo.Abp.DependencyInjection; using Volo.Abp.EventBus.Local; -namespace Volo.Abp.AspNetCore.Components.Server.Configuration +namespace Volo.Abp.AspNetCore.Components.Server.Configuration; + +[Dependency(ReplaceServices = true)] +public class BlazorServerCurrentApplicationConfigurationCacheResetService : + ICurrentApplicationConfigurationCacheResetService, + ITransientDependency { - [Dependency(ReplaceServices = true)] - public class BlazorServerCurrentApplicationConfigurationCacheResetService : - ICurrentApplicationConfigurationCacheResetService, - ITransientDependency - { - private readonly ILocalEventBus _localEventBus; + private readonly ILocalEventBus _localEventBus; - public BlazorServerCurrentApplicationConfigurationCacheResetService( - ILocalEventBus localEventBus) - { - _localEventBus = localEventBus; - } + public BlazorServerCurrentApplicationConfigurationCacheResetService( + ILocalEventBus localEventBus) + { + _localEventBus = localEventBus; + } - public async Task ResetAsync() - { - await _localEventBus.PublishAsync( - new CurrentApplicationConfigurationCacheResetEventData() - ); - } + public async Task ResetAsync() + { + await _localEventBus.PublishAsync( + new CurrentApplicationConfigurationCacheResetEventData() + ); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/Extensibility/BlazorServerLookupApiRequestService.cs b/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/Extensibility/BlazorServerLookupApiRequestService.cs index 952a2d6de4..2071e40f0b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/Extensibility/BlazorServerLookupApiRequestService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/Extensibility/BlazorServerLookupApiRequestService.cs @@ -13,78 +13,77 @@ using Volo.Abp.Http.Client; using Volo.Abp.Http.Client.Authentication; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.Components.Server.Extensibility +namespace Volo.Abp.AspNetCore.Components.Server.Extensibility; + +public class BlazorServerLookupApiRequestService : ILookupApiRequestService, ITransientDependency { - public class BlazorServerLookupApiRequestService : ILookupApiRequestService, ITransientDependency + public IHttpClientFactory HttpClientFactory { get; } + public IRemoteServiceHttpClientAuthenticator HttpClientAuthenticator { get; } + public IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider { get; } + public ICurrentTenant CurrentTenant { get; } + public IHttpContextAccessor HttpContextAccessor { get; } + public NavigationManager NavigationManager { get; } + + public BlazorServerLookupApiRequestService(IHttpClientFactory httpClientFactory, + IRemoteServiceHttpClientAuthenticator httpClientAuthenticator, + ICurrentTenant currentTenant, + IHttpContextAccessor httpContextAccessor, + NavigationManager navigationManager, + IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider) { - public IHttpClientFactory HttpClientFactory { get; } - public IRemoteServiceHttpClientAuthenticator HttpClientAuthenticator { get; } - public IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider { get; } - public ICurrentTenant CurrentTenant { get; } - public IHttpContextAccessor HttpContextAccessor { get; } - public NavigationManager NavigationManager { get; } + HttpClientFactory = httpClientFactory; + HttpClientAuthenticator = httpClientAuthenticator; + CurrentTenant = currentTenant; + HttpContextAccessor = httpContextAccessor; + NavigationManager = navigationManager; + RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider; + } - public BlazorServerLookupApiRequestService(IHttpClientFactory httpClientFactory, - IRemoteServiceHttpClientAuthenticator httpClientAuthenticator, - ICurrentTenant currentTenant, - IHttpContextAccessor httpContextAccessor, - NavigationManager navigationManager, - IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider) - { - HttpClientFactory = httpClientFactory; - HttpClientAuthenticator = httpClientAuthenticator; - CurrentTenant = currentTenant; - HttpContextAccessor = httpContextAccessor; - NavigationManager = navigationManager; - RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider; - } + public async Task SendAsync(string url) + { + var client = HttpClientFactory.CreateClient(); + var requestMessage = new HttpRequestMessage(HttpMethod.Get, url); - public async Task SendAsync(string url) + var uri = new Uri(url, UriKind.RelativeOrAbsolute); + if (!uri.IsAbsoluteUri) { - var client = HttpClientFactory.CreateClient(); - var requestMessage = new HttpRequestMessage(HttpMethod.Get, url); - - var uri = new Uri(url, UriKind.RelativeOrAbsolute); - if (!uri.IsAbsoluteUri) + var baseUrl = string.Empty; + try { - var baseUrl = string.Empty; - try - { - //Blazor tiered -- mode - var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync("Default"); - baseUrl = remoteServiceConfig.BaseUrl; - client.BaseAddress = new Uri(baseUrl); - AddHeaders(requestMessage); - await HttpClientAuthenticator.Authenticate(new RemoteServiceHttpClientAuthenticateContext(client, - requestMessage, new RemoteServiceConfiguration(baseUrl), string.Empty)); - } - catch (AbpException) // Blazor-Server mode. + //Blazor tiered -- mode + var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync("Default"); + baseUrl = remoteServiceConfig.BaseUrl; + client.BaseAddress = new Uri(baseUrl); + AddHeaders(requestMessage); + await HttpClientAuthenticator.Authenticate(new RemoteServiceHttpClientAuthenticateContext(client, + requestMessage, new RemoteServiceConfiguration(baseUrl), string.Empty)); + } + catch (AbpException) // Blazor-Server mode. + { + baseUrl = NavigationManager.BaseUri; + client.BaseAddress = new Uri(baseUrl); + foreach (var header in HttpContextAccessor.HttpContext.Request.Headers) { - baseUrl = NavigationManager.BaseUri; - client.BaseAddress = new Uri(baseUrl); - foreach (var header in HttpContextAccessor.HttpContext.Request.Headers) - { - requestMessage.Headers.Add(header.Key, header.Value.ToArray()); - } + requestMessage.Headers.Add(header.Key, header.Value.ToArray()); } } - - var response = await client.SendAsync(requestMessage); - return await response.Content.ReadAsStringAsync(); } - protected virtual void AddHeaders(HttpRequestMessage requestMessage) + var response = await client.SendAsync(requestMessage); + return await response.Content.ReadAsStringAsync(); + } + + protected virtual void AddHeaders(HttpRequestMessage requestMessage) + { + if (CurrentTenant.Id.HasValue) { - if (CurrentTenant.Id.HasValue) - { - requestMessage.Headers.Add(TenantResolverConsts.DefaultTenantKey, CurrentTenant.Id.Value.ToString()); - } + requestMessage.Headers.Add(TenantResolverConsts.DefaultTenantKey, CurrentTenant.Id.Value.ToString()); + } - var currentCulture = CultureInfo.CurrentUICulture.Name ?? CultureInfo.CurrentCulture.Name; - if (!currentCulture.IsNullOrEmpty()) - { - requestMessage.Headers.AcceptLanguage.Add(new(currentCulture)); - } + var currentCulture = CultureInfo.CurrentUICulture.Name ?? CultureInfo.CurrentCulture.Name; + if (!currentCulture.IsNullOrEmpty()) + { + requestMessage.Headers.AcceptLanguage.Add(new(currentCulture)); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/AbpAspNetCoreComponentsWebThemingModule.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/AbpAspNetCoreComponentsWebThemingModule.cs index e5c71c8496..e2a0617b90 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/AbpAspNetCoreComponentsWebThemingModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/AbpAspNetCoreComponentsWebThemingModule.cs @@ -2,14 +2,13 @@ using Volo.Abp.Modularity; using Volo.Abp.UI.Navigation; -namespace Volo.Abp.AspNetCore.Components.Web.Theming +namespace Volo.Abp.AspNetCore.Components.Web.Theming; + +[DependsOn( + typeof(AbpBlazoriseUIModule), + typeof(AbpUiNavigationModule) + )] +public class AbpAspNetCoreComponentsWebThemingModule : AbpModule { - [DependsOn( - typeof(AbpBlazoriseUIModule), - typeof(AbpUiNavigationModule) - )] - public class AbpAspNetCoreComponentsWebThemingModule : AbpModule - { - - } -} \ No newline at end of file + +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageHeader.razor.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageHeader.razor.cs index 7806aa4b44..594909cd52 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageHeader.razor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Layout/PageHeader.razor.cs @@ -5,69 +5,68 @@ using System.Threading.Tasks; using Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; using Volo.Abp.BlazoriseUI; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.Layout +namespace Volo.Abp.AspNetCore.Components.Web.Theming.Layout; + +public partial class PageHeader : ComponentBase { - public partial class PageHeader : ComponentBase - { - protected List ToolbarItemRenders { get; set; } - - public IPageToolbarManager PageToolbarManager { get; set; } - - [Parameter] - public string Title { get; set; } + protected List ToolbarItemRenders { get; set; } - [Parameter] - public bool BreadcrumbShowHome { get; set; } = true; + public IPageToolbarManager PageToolbarManager { get; set; } - [Parameter] - public bool BreadcrumbShowCurrent { get; set; } = true; + [Parameter] + public string Title { get; set; } - [Parameter] - public RenderFragment ChildContent { get; set; } + [Parameter] + public bool BreadcrumbShowHome { get; set; } = true; - [Parameter] - public List BreadcrumbItems { get; set; } - - [Parameter] - public PageToolbar Toolbar { get; set; } + [Parameter] + public bool BreadcrumbShowCurrent { get; set; } = true; - public PageHeader() - { - BreadcrumbItems = new List(); - ToolbarItemRenders = new List(); - } + [Parameter] + public RenderFragment ChildContent { get; set; } + + [Parameter] + public List BreadcrumbItems { get; set; } + + [Parameter] + public PageToolbar Toolbar { get; set; } + + public PageHeader() + { + BreadcrumbItems = new List(); + ToolbarItemRenders = new List(); + } - protected override async Task OnParametersSetAsync() + protected override async Task OnParametersSetAsync() + { + await base.OnParametersSetAsync(); + if (Toolbar != null) { - await base.OnParametersSetAsync(); - if (Toolbar!=null) - { - var toolbarItems = await PageToolbarManager.GetItemsAsync(Toolbar); - ToolbarItemRenders.Clear(); + var toolbarItems = await PageToolbarManager.GetItemsAsync(Toolbar); + ToolbarItemRenders.Clear(); - foreach (var item in toolbarItems) + foreach (var item in toolbarItems) + { + var sequence = 0; + ToolbarItemRenders.Add(builder => { - var sequence = 0; - ToolbarItemRenders.Add(builder => + builder.OpenComponent(sequence, item.ComponentType); + if (item.Arguments != null) { - builder.OpenComponent(sequence, item.ComponentType); - if (item.Arguments != null) + foreach (var argument in item.Arguments) { - foreach (var argument in item.Arguments) - { - sequence++; - builder.AddAttribute(sequence, argument.Key, argument.Value); - } + sequence++; + builder.AddAttribute(sequence, argument.Key, argument.Value); } - builder.CloseComponent(); - }); - } + } + builder.CloseComponent(); + }); } } + } - protected override async Task OnInitializedAsync() - { - await base.OnInitializedAsync(); - } + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/IPageToolbarContributor.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/IPageToolbarContributor.cs index dd04c0a1ff..426fdde4c9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/IPageToolbarContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/IPageToolbarContributor.cs @@ -1,9 +1,8 @@ using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; + +public interface IPageToolbarContributor { - public interface IPageToolbarContributor - { - Task ContributeAsync(PageToolbarContributionContext context); - } + Task ContributeAsync(PageToolbarContributionContext context); } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/IPageToolbarManager.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/IPageToolbarManager.cs index 507fa8070b..87e256b1ce 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/IPageToolbarManager.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/IPageToolbarManager.cs @@ -1,9 +1,8 @@ using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; + +public interface IPageToolbarManager { - public interface IPageToolbarManager - { - Task GetItemsAsync(PageToolbar toolbar); - } + Task GetItemsAsync(PageToolbar toolbar); } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbar.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbar.cs index 84a9bae7c4..f1fb792996 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbar.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbar.cs @@ -1,12 +1,11 @@ -namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; + +public class PageToolbar { - public class PageToolbar - { - public PageToolbarContributorList Contributors { get; set; } + public PageToolbarContributorList Contributors { get; set; } - public PageToolbar() - { - Contributors = new PageToolbarContributorList(); - } + public PageToolbar() + { + Contributors = new PageToolbarContributorList(); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarContributionContext.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarContributionContext.cs index 5544510b71..057777cfdf 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarContributionContext.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarContributionContext.cs @@ -1,21 +1,20 @@ using JetBrains.Annotations; using System; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; + +public class PageToolbarContributionContext { - public class PageToolbarContributionContext - { - [NotNull] - public IServiceProvider ServiceProvider { get; } + [NotNull] + public IServiceProvider ServiceProvider { get; } - [NotNull] - public PageToolbarItemList Items { get; } + [NotNull] + public PageToolbarItemList Items { get; } - public PageToolbarContributionContext( - [NotNull] IServiceProvider serviceProvider) - { - ServiceProvider = Check.NotNull(serviceProvider, nameof(serviceProvider)); - Items = new PageToolbarItemList(); - } + public PageToolbarContributionContext( + [NotNull] IServiceProvider serviceProvider) + { + ServiceProvider = Check.NotNull(serviceProvider, nameof(serviceProvider)); + Items = new PageToolbarItemList(); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarContributor.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarContributor.cs index 3c5196c449..87521c592f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarContributor.cs @@ -1,9 +1,8 @@ using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; + +public abstract class PageToolbarContributor : IPageToolbarContributor { - public abstract class PageToolbarContributor : IPageToolbarContributor - { - public abstract Task ContributeAsync(PageToolbarContributionContext context); - } + public abstract Task ContributeAsync(PageToolbarContributionContext context); } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarContributorList.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarContributorList.cs index 984f4618dc..02ef1bfb00 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarContributorList.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarContributorList.cs @@ -1,8 +1,7 @@ using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; + +public class PageToolbarContributorList : List { - public class PageToolbarContributorList : List - { - } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarDictionary.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarDictionary.cs index 2368ab9caf..65c2e8a25d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarDictionary.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarDictionary.cs @@ -1,9 +1,8 @@ using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; + +public class PageToolbarDictionary : Dictionary { - public class PageToolbarDictionary : Dictionary - { - } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarExtensions.cs index 3879e27e3c..dd2063d0cf 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarExtensions.cs @@ -5,67 +5,66 @@ using System.Threading.Tasks; using Volo.Abp.BlazoriseUI.Components; using Volo.Abp.Localization; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; + +public static class PageToolbarExtensions { - public static class PageToolbarExtensions + public static PageToolbar AddComponent( + this PageToolbar toolbar, + Dictionary arguments = null, + int order = 0, + string requiredPolicyName = null) { - public static PageToolbar AddComponent( - this PageToolbar toolbar, - Dictionary arguments = null, - int order = 0, - string requiredPolicyName = null) - { - return toolbar.AddComponent( - typeof(TComponent), + return toolbar.AddComponent( + typeof(TComponent), + arguments, + order, + requiredPolicyName + ); + } + + public static PageToolbar AddComponent( + this PageToolbar toolbar, + Type componentType, + Dictionary arguments = null, + int order = 0, + string requiredPolicyName = null) + { + toolbar.Contributors.Add( + new SimplePageToolbarContributor( + componentType, arguments, order, requiredPolicyName - ); - } - - public static PageToolbar AddComponent( - this PageToolbar toolbar, - Type componentType, - Dictionary arguments = null, - int order = 0, - string requiredPolicyName = null) - { - toolbar.Contributors.Add( - new SimplePageToolbarContributor( - componentType, - arguments, - order, - requiredPolicyName - ) - ); + ) + ); - return toolbar; - } + return toolbar; + } - public static PageToolbar AddButton( - this PageToolbar toolbar, - string text, - Func clicked, - object icon = null, - Color color = Color.Primary, - bool disabled = false, - int order = 0, - string requiredPolicyName = null) - { - toolbar.AddComponent( - new Dictionary - { + public static PageToolbar AddButton( + this PageToolbar toolbar, + string text, + Func clicked, + object icon = null, + Color color = Color.Primary, + bool disabled = false, + int order = 0, + string requiredPolicyName = null) + { + toolbar.AddComponent( + new Dictionary + { { nameof(ToolbarButton.Color), color}, { nameof(ToolbarButton.Text), text}, { nameof(ToolbarButton.Disabled), disabled}, { nameof(ToolbarButton.Icon), icon}, { nameof(ToolbarButton.Clicked),clicked}, - }, - order, - requiredPolicyName - ); + }, + order, + requiredPolicyName + ); - return toolbar; - } + return toolbar; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarItem.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarItem.cs index 0e1650a803..f62d770403 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarItem.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarItem.cs @@ -2,26 +2,25 @@ using System; using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; + +public class PageToolbarItem { - public class PageToolbarItem - { - [NotNull] - public Type ComponentType { get; } + [NotNull] + public Type ComponentType { get; } - [CanBeNull] - public Dictionary Arguments { get; set; } + [CanBeNull] + public Dictionary Arguments { get; set; } - public int Order { get; set; } + public int Order { get; set; } - public PageToolbarItem( - [NotNull] Type componentType, - [CanBeNull] Dictionary arguments = null, - int order = 0) - { - ComponentType = Check.NotNull(componentType, nameof(componentType)); - Arguments = arguments; - Order = order; - } + public PageToolbarItem( + [NotNull] Type componentType, + [CanBeNull] Dictionary arguments = null, + int order = 0) + { + ComponentType = Check.NotNull(componentType, nameof(componentType)); + Arguments = arguments; + Order = order; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarItemList.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarItemList.cs index 7042b2ed05..4be5e6fab1 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarItemList.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarItemList.cs @@ -1,9 +1,8 @@ using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; + +public class PageToolbarItemList : List { - public class PageToolbarItemList : List - { - } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarManager.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarManager.cs index adcd72f25e..05531096d4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarManager.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/PageToolbarManager.cs @@ -5,36 +5,35 @@ using System.Linq; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; + +public class PageToolbarManager : IPageToolbarManager, ITransientDependency { - public class PageToolbarManager : IPageToolbarManager, ITransientDependency + protected IHybridServiceScopeFactory ServiceScopeFactory { get; } + + public PageToolbarManager( + IHybridServiceScopeFactory serviceScopeFactory) { - protected IHybridServiceScopeFactory ServiceScopeFactory { get; } + ServiceScopeFactory = serviceScopeFactory; + } - public PageToolbarManager( - IHybridServiceScopeFactory serviceScopeFactory) + public virtual async Task GetItemsAsync(PageToolbar toolbar) + { + if (toolbar == null || !toolbar.Contributors.Any()) { - ServiceScopeFactory = serviceScopeFactory; + return Array.Empty(); } - public virtual async Task GetItemsAsync(PageToolbar toolbar) + using (var scope = ServiceScopeFactory.CreateScope()) { - if (toolbar == null || !toolbar.Contributors.Any()) - { - return Array.Empty(); - } + var context = new PageToolbarContributionContext(scope.ServiceProvider); - using (var scope = ServiceScopeFactory.CreateScope()) + foreach (var contributor in toolbar.Contributors) { - var context = new PageToolbarContributionContext(scope.ServiceProvider); - - foreach (var contributor in toolbar.Contributors) - { - await contributor.ContributeAsync(context); - } - - return context.Items.OrderBy(i => i.Order).ToArray(); + await contributor.ContributeAsync(context); } + + return context.Items.OrderBy(i => i.Order).ToArray(); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/SimplePageToolbarContributor.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/SimplePageToolbarContributor.cs index 82afe19f7f..d31b12e73c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/SimplePageToolbarContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/PageToolbars/SimplePageToolbarContributor.cs @@ -4,50 +4,49 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; + +public class SimplePageToolbarContributor : IPageToolbarContributor { - public class SimplePageToolbarContributor : IPageToolbarContributor - { - public Type ComponentType { get; } + public Type ComponentType { get; } - public Dictionary Arguments { get; set; } + public Dictionary Arguments { get; set; } - public int Order { get; } + public int Order { get; } - public string RequiredPolicyName { get; } + public string RequiredPolicyName { get; } - public SimplePageToolbarContributor( - Type componentType, - Dictionary arguments = null, - int order = 0, - string requiredPolicyName = null) - { - ComponentType = componentType; - Arguments = arguments; - Order = order; - RequiredPolicyName = requiredPolicyName; - } + public SimplePageToolbarContributor( + Type componentType, + Dictionary arguments = null, + int order = 0, + string requiredPolicyName = null) + { + ComponentType = componentType; + Arguments = arguments; + Order = order; + RequiredPolicyName = requiredPolicyName; + } - public async Task ContributeAsync(PageToolbarContributionContext context) + public async Task ContributeAsync(PageToolbarContributionContext context) + { + if (await ShouldAddComponentAsync(context)) { - if (await ShouldAddComponentAsync(context)) - { - context.Items.Add(new PageToolbarItem(ComponentType, Arguments, Order)); - } + context.Items.Add(new PageToolbarItem(ComponentType, Arguments, Order)); } + } - protected virtual async Task ShouldAddComponentAsync(PageToolbarContributionContext context) + protected virtual async Task ShouldAddComponentAsync(PageToolbarContributionContext context) + { + if (RequiredPolicyName != null) { - if (RequiredPolicyName != null) + var authorizationService = context.ServiceProvider.GetRequiredService(); + if (!await authorizationService.IsGrantedAsync(RequiredPolicyName)) { - var authorizationService = context.ServiceProvider.GetRequiredService(); - if (!await authorizationService.IsGrantedAsync(RequiredPolicyName)) - { - return false; - } + return false; } - - return true; } + + return true; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Routing/AbpRouterOptions.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Routing/AbpRouterOptions.cs index 9655d41186..ce3b2746e4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Routing/AbpRouterOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Routing/AbpRouterOptions.cs @@ -1,16 +1,15 @@ using System.Reflection; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.Routing +namespace Volo.Abp.AspNetCore.Components.Web.Theming.Routing; + +public class AbpRouterOptions { - public class AbpRouterOptions - { - public Assembly AppAssembly { get; set; } + public Assembly AppAssembly { get; set; } - public RouterAssemblyList AdditionalAssemblies { get; } + public RouterAssemblyList AdditionalAssemblies { get; } - public AbpRouterOptions() - { - AdditionalAssemblies = new RouterAssemblyList(); - } + public AbpRouterOptions() + { + AdditionalAssemblies = new RouterAssemblyList(); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Routing/RouterAssemblyList.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Routing/RouterAssemblyList.cs index ea1153ff1f..ad9d5ea404 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Routing/RouterAssemblyList.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Routing/RouterAssemblyList.cs @@ -1,10 +1,9 @@ using System.Collections.Generic; using System.Reflection; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.Routing +namespace Volo.Abp.AspNetCore.Components.Web.Theming.Routing; + +public class RouterAssemblyList : List { - public class RouterAssemblyList : List - { - - } -} \ No newline at end of file + +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/AbpToolbarOptions.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/AbpToolbarOptions.cs index a2bae7460d..b713386359 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/AbpToolbarOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/AbpToolbarOptions.cs @@ -1,16 +1,15 @@ using System.Collections.Generic; using JetBrains.Annotations; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars; + +public class AbpToolbarOptions { - public class AbpToolbarOptions - { - [NotNull] - public List Contributors { get; } + [NotNull] + public List Contributors { get; } - public AbpToolbarOptions() - { - Contributors = new List(); - } + public AbpToolbarOptions() + { + Contributors = new List(); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/IToolbarConfigurationContext.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/IToolbarConfigurationContext.cs index 8ebe76bcb4..e2bfaf06d0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/IToolbarConfigurationContext.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/IToolbarConfigurationContext.cs @@ -5,25 +5,24 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Localization; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars; + +public interface IToolbarConfigurationContext : IServiceProviderAccessor { - public interface IToolbarConfigurationContext : IServiceProviderAccessor - { - Toolbar Toolbar { get; } + Toolbar Toolbar { get; } - IAuthorizationService AuthorizationService { get; } + IAuthorizationService AuthorizationService { get; } - IStringLocalizerFactory StringLocalizerFactory { get; } + IStringLocalizerFactory StringLocalizerFactory { get; } - Task IsGrantedAsync(string policyName); + Task IsGrantedAsync(string policyName); - [CanBeNull] - IStringLocalizer GetDefaultLocalizer(); + [CanBeNull] + IStringLocalizer GetDefaultLocalizer(); - [NotNull] - public IStringLocalizer GetLocalizer(); + [NotNull] + public IStringLocalizer GetLocalizer(); - [NotNull] - public IStringLocalizer GetLocalizer(Type resourceType); - } + [NotNull] + public IStringLocalizer GetLocalizer(Type resourceType); } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/IToolbarContributor.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/IToolbarContributor.cs index 6a5de9c1c9..c56f964265 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/IToolbarContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/IToolbarContributor.cs @@ -1,9 +1,8 @@ using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars; + +public interface IToolbarContributor { - public interface IToolbarContributor - { - Task ConfigureToolbarAsync(IToolbarConfigurationContext context); - } -} \ No newline at end of file + Task ConfigureToolbarAsync(IToolbarConfigurationContext context); +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/IToolbarManager.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/IToolbarManager.cs index 0550ce75b6..df36b9ca32 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/IToolbarManager.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/IToolbarManager.cs @@ -1,9 +1,8 @@ using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars; + +public interface IToolbarManager { - public interface IToolbarManager - { - Task GetAsync(string name); - } + Task GetAsync(string name); } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/StandardToolbars.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/StandardToolbars.cs index 7cda0d8897..9c84d8165e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/StandardToolbars.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/StandardToolbars.cs @@ -1,7 +1,6 @@ -namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars; + +public static class StandardToolbars { - public static class StandardToolbars - { - public const string Main = "Main"; - } -} \ No newline at end of file + public const string Main = "Main"; +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/Toolbar.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/Toolbar.cs index b25cc608b6..cd02da35c2 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/Toolbar.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/Toolbar.cs @@ -1,18 +1,17 @@ using System.Collections.Generic; using JetBrains.Annotations; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars; + +public class Toolbar { - public class Toolbar - { - public string Name { get; } + public string Name { get; } - public List Items { get; } + public List Items { get; } - public Toolbar([NotNull] string name) - { - Name = Check.NotNull(name, nameof(name)); - Items = new List(); - } + public Toolbar([NotNull] string name) + { + Name = Check.NotNull(name, nameof(name)); + Items = new List(); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/ToolbarConfigurationContext.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/ToolbarConfigurationContext.cs index fab4eb8f6c..f773ba14e1 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/ToolbarConfigurationContext.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/ToolbarConfigurationContext.cs @@ -6,48 +6,47 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars; + +public class ToolbarConfigurationContext : IToolbarConfigurationContext { - public class ToolbarConfigurationContext : IToolbarConfigurationContext - { - public IServiceProvider ServiceProvider { get; } + public IServiceProvider ServiceProvider { get; } - private readonly IAbpLazyServiceProvider _lazyServiceProvider; + private readonly IAbpLazyServiceProvider _lazyServiceProvider; - public IAuthorizationService AuthorizationService => _lazyServiceProvider.LazyGetRequiredService(); + public IAuthorizationService AuthorizationService => _lazyServiceProvider.LazyGetRequiredService(); - public IStringLocalizerFactory StringLocalizerFactory => _lazyServiceProvider.LazyGetRequiredService(); + public IStringLocalizerFactory StringLocalizerFactory => _lazyServiceProvider.LazyGetRequiredService(); - public Toolbar Toolbar { get; } + public Toolbar Toolbar { get; } - public ToolbarConfigurationContext(Toolbar toolbar, IServiceProvider serviceProvider) - { - Toolbar = toolbar; - ServiceProvider = serviceProvider; - _lazyServiceProvider = ServiceProvider.GetRequiredService(); - } + public ToolbarConfigurationContext(Toolbar toolbar, IServiceProvider serviceProvider) + { + Toolbar = toolbar; + ServiceProvider = serviceProvider; + _lazyServiceProvider = ServiceProvider.GetRequiredService(); + } - public Task IsGrantedAsync(string policyName) - { - return AuthorizationService.IsGrantedAsync(policyName); - } + public Task IsGrantedAsync(string policyName) + { + return AuthorizationService.IsGrantedAsync(policyName); + } - [CanBeNull] - public IStringLocalizer GetDefaultLocalizer() - { - return StringLocalizerFactory.CreateDefaultOrNull(); - } + [CanBeNull] + public IStringLocalizer GetDefaultLocalizer() + { + return StringLocalizerFactory.CreateDefaultOrNull(); + } - [NotNull] - public IStringLocalizer GetLocalizer() - { - return StringLocalizerFactory.Create(); - } + [NotNull] + public IStringLocalizer GetLocalizer() + { + return StringLocalizerFactory.Create(); + } - [NotNull] - public IStringLocalizer GetLocalizer(Type resourceType) - { - return StringLocalizerFactory.Create(resourceType); - } + [NotNull] + public IStringLocalizer GetLocalizer(Type resourceType) + { + return StringLocalizerFactory.Create(resourceType); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/ToolbarItem.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/ToolbarItem.cs index d6bfcd1fb8..966145a4ee 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/ToolbarItem.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/ToolbarItem.cs @@ -1,23 +1,21 @@ using System; using JetBrains.Annotations; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars; + +public class ToolbarItem { - public class ToolbarItem - { - public Type ComponentType - { - get => _componentType; - set => _componentType = Check.NotNull(value, nameof(value)); - } - private Type _componentType; + public Type ComponentType { + get => _componentType; + set => _componentType = Check.NotNull(value, nameof(value)); + } + private Type _componentType; - public int Order { get; set; } + public int Order { get; set; } - public ToolbarItem([NotNull] Type componentType, int order = 0) - { - Order = order; - ComponentType = Check.NotNull(componentType, nameof(componentType)); - } + public ToolbarItem([NotNull] Type componentType, int order = 0) + { + Order = order; + ComponentType = Check.NotNull(componentType, nameof(componentType)); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/ToolbarManager.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/ToolbarManager.cs index 86bdfc751e..b4746fe85f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/ToolbarManager.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web.Theming/Toolbars/ToolbarManager.cs @@ -4,36 +4,35 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars +namespace Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars; + +public class ToolbarManager : IToolbarManager, ITransientDependency { - public class ToolbarManager : IToolbarManager, ITransientDependency + protected AbpToolbarOptions Options { get; } + protected IServiceProvider ServiceProvider { get; } + + public ToolbarManager( + IOptions options, + IServiceProvider serviceProvider) { - protected AbpToolbarOptions Options { get; } - protected IServiceProvider ServiceProvider { get; } + ServiceProvider = serviceProvider; + Options = options.Value; + } - public ToolbarManager( - IOptions options, - IServiceProvider serviceProvider) - { - ServiceProvider = serviceProvider; - Options = options.Value; - } + public async Task GetAsync(string name) + { + var toolbar = new Toolbar(name); - public async Task GetAsync(string name) + using (var scope = ServiceProvider.CreateScope()) { - var toolbar = new Toolbar(name); + var context = new ToolbarConfigurationContext(toolbar, scope.ServiceProvider); - using (var scope = ServiceProvider.CreateScope()) + foreach (var contributor in Options.Contributors) { - var context = new ToolbarConfigurationContext(toolbar, scope.ServiceProvider); - - foreach (var contributor in Options.Contributors) - { - await contributor.ConfigureToolbarAsync(context); - } + await contributor.ConfigureToolbarAsync(context); } - - return toolbar; } + + return toolbar; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpAspNetCoreApplicationCreationOptions.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpAspNetCoreApplicationCreationOptions.cs index 4eab62f819..27efa5f998 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpAspNetCoreApplicationCreationOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpAspNetCoreApplicationCreationOptions.cs @@ -1,13 +1,12 @@ -namespace Volo.Abp.AspNetCore.Components.Web +namespace Volo.Abp.AspNetCore.Components.Web; + +public class AbpAspNetCoreApplicationCreationOptions { - public class AbpAspNetCoreApplicationCreationOptions - { - public AbpApplicationCreationOptions ApplicationCreationOptions { get; } + public AbpApplicationCreationOptions ApplicationCreationOptions { get; } - public AbpAspNetCoreApplicationCreationOptions( - AbpApplicationCreationOptions applicationCreationOptions) - { - ApplicationCreationOptions = applicationCreationOptions; - } + public AbpAspNetCoreApplicationCreationOptions( + AbpApplicationCreationOptions applicationCreationOptions) + { + ApplicationCreationOptions = applicationCreationOptions; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpAspNetCoreComponentsWebModule.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpAspNetCoreComponentsWebModule.cs index ddcd839e3d..28984ce5d0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpAspNetCoreComponentsWebModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpAspNetCoreComponentsWebModule.cs @@ -5,22 +5,21 @@ using Volo.Abp.AspNetCore.Components.DependencyInjection; using Volo.Abp.Modularity; using Volo.Abp.UI; -namespace Volo.Abp.AspNetCore.Components.Web +namespace Volo.Abp.AspNetCore.Components.Web; + +[DependsOn( + typeof(AbpUiModule), + typeof(AbpAspNetCoreComponentsModule) + )] +public class AbpAspNetCoreComponentsWebModule : AbpModule { - [DependsOn( - typeof(AbpUiModule), - typeof(AbpAspNetCoreComponentsModule) - )] - public class AbpAspNetCoreComponentsWebModule : AbpModule + public override void PreConfigureServices(ServiceConfigurationContext context) { - public override void PreConfigureServices(ServiceConfigurationContext context) - { - } + } - public override void ConfigureServices(ServiceConfigurationContext context) - { - context.Services.Replace(ServiceDescriptor.Transient()); - } + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.Replace(ServiceDescriptor.Transient()); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpBlazorClientHttpMessageHandler.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpBlazorClientHttpMessageHandler.cs index 450481a646..eb8bee99bd 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpBlazorClientHttpMessageHandler.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpBlazorClientHttpMessageHandler.cs @@ -9,90 +9,89 @@ using Microsoft.JSInterop; using Volo.Abp.AspNetCore.Components.Progression; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Web +namespace Volo.Abp.AspNetCore.Components.Web; + +public class AbpBlazorClientHttpMessageHandler : DelegatingHandler, ITransientDependency { - public class AbpBlazorClientHttpMessageHandler : DelegatingHandler, ITransientDependency - { - private readonly IJSRuntime _jsRuntime; + private readonly IJSRuntime _jsRuntime; - private readonly ICookieService _cookieService; + private readonly ICookieService _cookieService; - private readonly NavigationManager _navigationManager; + private readonly NavigationManager _navigationManager; - private readonly IUiPageProgressService _uiPageProgressService; + private readonly IUiPageProgressService _uiPageProgressService; - private const string AntiForgeryCookieName = "XSRF-TOKEN"; + private const string AntiForgeryCookieName = "XSRF-TOKEN"; - private const string AntiForgeryHeaderName = "RequestVerificationToken"; + private const string AntiForgeryHeaderName = "RequestVerificationToken"; - public AbpBlazorClientHttpMessageHandler( - IJSRuntime jsRuntime, - ICookieService cookieService, - NavigationManager navigationManager, - IClientScopeServiceProviderAccessor clientScopeServiceProviderAccessor) - { - _jsRuntime = jsRuntime; - _cookieService = cookieService; - _navigationManager = navigationManager; - _uiPageProgressService = clientScopeServiceProviderAccessor.ServiceProvider.GetRequiredService(); - } + public AbpBlazorClientHttpMessageHandler( + IJSRuntime jsRuntime, + ICookieService cookieService, + NavigationManager navigationManager, + IClientScopeServiceProviderAccessor clientScopeServiceProviderAccessor) + { + _jsRuntime = jsRuntime; + _cookieService = cookieService; + _navigationManager = navigationManager; + _uiPageProgressService = clientScopeServiceProviderAccessor.ServiceProvider.GetRequiredService(); + } - protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + { + try { - try + await _uiPageProgressService.Go(null, options => { - await _uiPageProgressService.Go(null, options => - { - options.Type = UiPageProgressType.Info; - }); + options.Type = UiPageProgressType.Info; + }); - await SetLanguageAsync(request, cancellationToken); - await SetAntiForgeryTokenAsync(request); + await SetLanguageAsync(request, cancellationToken); + await SetAntiForgeryTokenAsync(request); - return await base.SendAsync(request, cancellationToken); - } - finally - { - await _uiPageProgressService.Go(-1); - } + return await base.SendAsync(request, cancellationToken); } - - private async Task SetLanguageAsync(HttpRequestMessage request, CancellationToken cancellationToken) + finally { - var selectedLanguage = await _jsRuntime.InvokeAsync( - "localStorage.getItem", - cancellationToken, - "Abp.SelectedLanguage" - ); + await _uiPageProgressService.Go(-1); + } + } - if (!selectedLanguage.IsNullOrWhiteSpace()) - { - request.Headers.AcceptLanguage.Clear(); - request.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue(selectedLanguage)); - } + private async Task SetLanguageAsync(HttpRequestMessage request, CancellationToken cancellationToken) + { + var selectedLanguage = await _jsRuntime.InvokeAsync( + "localStorage.getItem", + cancellationToken, + "Abp.SelectedLanguage" + ); + + if (!selectedLanguage.IsNullOrWhiteSpace()) + { + request.Headers.AcceptLanguage.Clear(); + request.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue(selectedLanguage)); } + } - private async Task SetAntiForgeryTokenAsync(HttpRequestMessage request) + private async Task SetAntiForgeryTokenAsync(HttpRequestMessage request) + { + if (request.Method == HttpMethod.Get || request.Method == HttpMethod.Head || + request.Method == HttpMethod.Trace || request.Method == HttpMethod.Options) { - if (request.Method == HttpMethod.Get || request.Method == HttpMethod.Head || - request.Method == HttpMethod.Trace || request.Method == HttpMethod.Options) - { - return; - } + return; + } - var selfUri = new Uri(_navigationManager.Uri); + var selfUri = new Uri(_navigationManager.Uri); - if (request.RequestUri.Host != selfUri.Host || request.RequestUri.Port != selfUri.Port) - { - return; - } + if (request.RequestUri.Host != selfUri.Host || request.RequestUri.Port != selfUri.Port) + { + return; + } - var token = await _cookieService.GetAsync(AntiForgeryCookieName); + var token = await _cookieService.GetAsync(AntiForgeryCookieName); - if (!token.IsNullOrWhiteSpace()) - { - request.Headers.Add(AntiForgeryHeaderName, token); - } + if (!token.IsNullOrWhiteSpace()) + { + request.Headers.Add(AntiForgeryHeaderName, token); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpBlazorMessageLocalizerHelper.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpBlazorMessageLocalizerHelper.cs index 5b5a838e17..52efbc6d11 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpBlazorMessageLocalizerHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpBlazorMessageLocalizerHelper.cs @@ -3,46 +3,45 @@ using System.Linq; using JetBrains.Annotations; using Microsoft.Extensions.Localization; -namespace Volo.Abp.AspNetCore.Components.Web +namespace Volo.Abp.AspNetCore.Components.Web; + +public class AbpBlazorMessageLocalizerHelper { - public class AbpBlazorMessageLocalizerHelper + private readonly IStringLocalizer stringLocalizer; + + public AbpBlazorMessageLocalizerHelper(IStringLocalizer stringLocalizer) { - private readonly IStringLocalizer stringLocalizer; + this.stringLocalizer = stringLocalizer; + } - public AbpBlazorMessageLocalizerHelper(IStringLocalizer stringLocalizer) + public string Localize(string message, [CanBeNull] IEnumerable arguments) + { + try { - this.stringLocalizer = stringLocalizer; + return arguments?.Count() > 0 + ? stringLocalizer[message, LocalizeMessageArguments(arguments)?.ToArray()] + : stringLocalizer[message]; } - - public string Localize(string message, [CanBeNull] IEnumerable arguments) + catch { - try - { - return arguments?.Count() > 0 - ? stringLocalizer[message, LocalizeMessageArguments(arguments)?.ToArray()] - : stringLocalizer[message]; - } - catch - { - return stringLocalizer[message]; - } + return stringLocalizer[message]; } + } - private IEnumerable LocalizeMessageArguments(IEnumerable arguments) + private IEnumerable LocalizeMessageArguments(IEnumerable arguments) + { + foreach (var argument in arguments) { - foreach (var argument in arguments) - { - // first try to localize with "DisplayName:{Name}" - var localization = stringLocalizer[$"DisplayName:{argument}"]; + // first try to localize with "DisplayName:{Name}" + var localization = stringLocalizer[$"DisplayName:{argument}"]; - if (localization.ResourceNotFound) - { - // then try to localize with just "{Name}" - localization = stringLocalizer[argument]; - } - - yield return localization; + if (localization.ResourceNotFound) + { + // then try to localize with just "{Name}" + localization = stringLocalizer[argument]; } + + yield return localization; } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpUtilsService.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpUtilsService.cs index b80e927154..082dd7c32f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpUtilsService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpUtilsService.cs @@ -2,50 +2,49 @@ using Microsoft.JSInterop; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Web +namespace Volo.Abp.AspNetCore.Components.Web; + +public class AbpUtilsService : IAbpUtilsService, ITransientDependency { - public class AbpUtilsService : IAbpUtilsService, ITransientDependency - { - protected IJSRuntime JsRuntime { get; } - - public AbpUtilsService(IJSRuntime jsRuntime) - { - JsRuntime = jsRuntime; - } - - public ValueTask AddClassToTagAsync(string tagName, string className) - { - return JsRuntime.InvokeVoidAsync("abp.utils.addClassToTag", tagName, className); - } - - public ValueTask RemoveClassFromTagAsync(string tagName, string className) - { - return JsRuntime.InvokeVoidAsync("abp.utils.removeClassFromTag", tagName, className); - } - - public ValueTask HasClassOnTagAsync(string tagName, string className) - { - return JsRuntime.InvokeAsync("abp.utils.hasClassOnTag", tagName, className); - } - - public ValueTask ReplaceLinkHrefByIdAsync(string linkId, string hrefValue) - { - return JsRuntime.InvokeVoidAsync("abp.utils.replaceLinkHrefById", linkId, hrefValue); - } - - public ValueTask ToggleFullscreenAsync() - { - return JsRuntime.InvokeVoidAsync("abp.utils.toggleFullscreen"); - } - - public ValueTask RequestFullscreenAsync() - { - return JsRuntime.InvokeVoidAsync("abp.utils.requestFullscreen"); - } - - public ValueTask ExitFullscreenAsync() - { - return JsRuntime.InvokeVoidAsync("abp.utils.exitFullscreen"); - } + protected IJSRuntime JsRuntime { get; } + + public AbpUtilsService(IJSRuntime jsRuntime) + { + JsRuntime = jsRuntime; + } + + public ValueTask AddClassToTagAsync(string tagName, string className) + { + return JsRuntime.InvokeVoidAsync("abp.utils.addClassToTag", tagName, className); + } + + public ValueTask RemoveClassFromTagAsync(string tagName, string className) + { + return JsRuntime.InvokeVoidAsync("abp.utils.removeClassFromTag", tagName, className); + } + + public ValueTask HasClassOnTagAsync(string tagName, string className) + { + return JsRuntime.InvokeAsync("abp.utils.hasClassOnTag", tagName, className); + } + + public ValueTask ReplaceLinkHrefByIdAsync(string linkId, string hrefValue) + { + return JsRuntime.InvokeVoidAsync("abp.utils.replaceLinkHrefById", linkId, hrefValue); + } + + public ValueTask ToggleFullscreenAsync() + { + return JsRuntime.InvokeVoidAsync("abp.utils.toggleFullscreen"); + } + + public ValueTask RequestFullscreenAsync() + { + return JsRuntime.InvokeVoidAsync("abp.utils.requestFullscreen"); + } + + public ValueTask ExitFullscreenAsync() + { + return JsRuntime.InvokeVoidAsync("abp.utils.exitFullscreen"); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Alerts/AlertManager.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Alerts/AlertManager.cs index aef46b97dd..218e3cbdea 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Alerts/AlertManager.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Alerts/AlertManager.cs @@ -1,15 +1,14 @@ using Volo.Abp.AspNetCore.Components.Alerts; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Web.Alerts +namespace Volo.Abp.AspNetCore.Components.Web.Alerts; + +public class AlertManager : IAlertManager, IScopedDependency { - public class AlertManager : IAlertManager, IScopedDependency - { - public AlertList Alerts { get; } + public AlertList Alerts { get; } - public AlertManager() - { - Alerts = new AlertList(); - } + public AlertManager() + { + Alerts = new AlertList(); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Configuration/ICurrentApplicationConfigurationCacheResetService.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Configuration/ICurrentApplicationConfigurationCacheResetService.cs index b1da30825d..c3e33a9e41 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Configuration/ICurrentApplicationConfigurationCacheResetService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Configuration/ICurrentApplicationConfigurationCacheResetService.cs @@ -1,9 +1,8 @@ using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Web.Configuration +namespace Volo.Abp.AspNetCore.Components.Web.Configuration; + +public interface ICurrentApplicationConfigurationCacheResetService { - public interface ICurrentApplicationConfigurationCacheResetService - { - Task ResetAsync(); - } -} \ No newline at end of file + Task ResetAsync(); +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Configuration/NullCurrentApplicationConfigurationCacheResetService.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Configuration/NullCurrentApplicationConfigurationCacheResetService.cs index 6eeb0e9471..bb91d70775 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Configuration/NullCurrentApplicationConfigurationCacheResetService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Configuration/NullCurrentApplicationConfigurationCacheResetService.cs @@ -1,13 +1,12 @@ using System.Threading.Tasks; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Web.Configuration +namespace Volo.Abp.AspNetCore.Components.Web.Configuration; + +public class NullCurrentApplicationConfigurationCacheResetService : ICurrentApplicationConfigurationCacheResetService, ISingletonDependency { - public class NullCurrentApplicationConfigurationCacheResetService : ICurrentApplicationConfigurationCacheResetService, ISingletonDependency + public Task ResetAsync() { - public Task ResetAsync() - { - return Task.CompletedTask; - } + return Task.CompletedTask; } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/CookieOptions.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/CookieOptions.cs index 2781d9ead3..283f665642 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/CookieOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/CookieOptions.cs @@ -1,11 +1,10 @@ using System; -namespace Volo.Abp.AspNetCore.Components.Web +namespace Volo.Abp.AspNetCore.Components.Web; + +public class CookieOptions { - public class CookieOptions - { - public DateTimeOffset? ExpireDate { get; set; } - public string Path { get; set; } - public bool Secure { get; set; } - } -} \ No newline at end of file + public DateTimeOffset? ExpireDate { get; set; } + public string Path { get; set; } + public bool Secure { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/CookieService.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/CookieService.cs index ed682261a3..1b61acb459 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/CookieService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/CookieService.cs @@ -2,31 +2,30 @@ using Microsoft.JSInterop; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Web +namespace Volo.Abp.AspNetCore.Components.Web; + +[Dependency(ReplaceServices = true)] +public class CookieService : ICookieService, ITransientDependency { - [Dependency(ReplaceServices = true)] - public class CookieService : ICookieService, ITransientDependency - { - public IJSRuntime JsRuntime { get; } + public IJSRuntime JsRuntime { get; } - public CookieService(IJSRuntime jsRuntime) - { - JsRuntime = jsRuntime; - } + public CookieService(IJSRuntime jsRuntime) + { + JsRuntime = jsRuntime; + } - public async ValueTask SetAsync(string key, string value, CookieOptions options) - { - await JsRuntime.InvokeVoidAsync("abp.utils.setCookieValue", key, value, options?.ExpireDate?.ToString("r"), options?.Path, options?.Secure); - } + public async ValueTask SetAsync(string key, string value, CookieOptions options) + { + await JsRuntime.InvokeVoidAsync("abp.utils.setCookieValue", key, value, options?.ExpireDate?.ToString("r"), options?.Path, options?.Secure); + } - public async ValueTask GetAsync(string key) - { - return await JsRuntime.InvokeAsync("abp.utils.getCookieValue", key); - } + public async ValueTask GetAsync(string key) + { + return await JsRuntime.InvokeAsync("abp.utils.getCookieValue", key); + } - public async ValueTask DeleteAsync(string key, string path = null) - { - await JsRuntime.InvokeVoidAsync("abp.utils.deleteCookie", key); - } + public async ValueTask DeleteAsync(string key, string path = null) + { + await JsRuntime.InvokeVoidAsync("abp.utils.deleteCookie", key); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/DefaultServerUrlProvider.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/DefaultServerUrlProvider.cs index 629a19d9f5..281ee3cd73 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/DefaultServerUrlProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/DefaultServerUrlProvider.cs @@ -1,13 +1,12 @@ using System.Threading.Tasks; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Web +namespace Volo.Abp.AspNetCore.Components.Web; + +public class DefaultServerUrlProvider : IServerUrlProvider, ISingletonDependency { - public class DefaultServerUrlProvider : IServerUrlProvider, ISingletonDependency + public Task GetBaseUrlAsync(string remoteServiceName = null) { - public Task GetBaseUrlAsync(string remoteServiceName = null) - { - return Task.FromResult("/"); - } + return Task.FromResult("/"); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/DependencyInjection/ComponentsClientScopeServiceProviderAccessor.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/DependencyInjection/ComponentsClientScopeServiceProviderAccessor.cs index 5ced9d658e..f5e07865a7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/DependencyInjection/ComponentsClientScopeServiceProviderAccessor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/DependencyInjection/ComponentsClientScopeServiceProviderAccessor.cs @@ -1,12 +1,11 @@ using System; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Web.DependencyInjection +namespace Volo.Abp.AspNetCore.Components.Web.DependencyInjection; + +public class ComponentsClientScopeServiceProviderAccessor : + IClientScopeServiceProviderAccessor, + ISingletonDependency { - public class ComponentsClientScopeServiceProviderAccessor : - IClientScopeServiceProviderAccessor, - ISingletonDependency - { - public IServiceProvider ServiceProvider { get; set; } - } + public IServiceProvider ServiceProvider { get; set; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ExceptionHandling/AbpExceptionHandlingLogger.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ExceptionHandling/AbpExceptionHandlingLogger.cs index 755947a481..cf66f107a0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ExceptionHandling/AbpExceptionHandlingLogger.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ExceptionHandling/AbpExceptionHandlingLogger.cs @@ -3,64 +3,63 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Volo.Abp.AspNetCore.Components.ExceptionHandling; -namespace Volo.Abp.AspNetCore.Components.Web.ExceptionHandling +namespace Volo.Abp.AspNetCore.Components.Web.ExceptionHandling; + +public class AbpExceptionHandlingLogger : ILogger { - public class AbpExceptionHandlingLogger : ILogger + private readonly IServiceCollection _serviceCollection; + private IUserExceptionInformer _userExceptionInformer; + + public AbpExceptionHandlingLogger(IServiceCollection serviceCollection) { - private readonly IServiceCollection _serviceCollection; - private IUserExceptionInformer _userExceptionInformer; + _serviceCollection = serviceCollection; + } - public AbpExceptionHandlingLogger(IServiceCollection serviceCollection) + public virtual void Log( + LogLevel logLevel, + EventId eventId, + TState state, + Exception exception, + Func formatter) + { + if (exception == null) { - _serviceCollection = serviceCollection; + return; } - public virtual void Log( - LogLevel logLevel, - EventId eventId, - TState state, - Exception exception, - Func formatter) + if (logLevel != LogLevel.Critical && logLevel != LogLevel.Error) { - if (exception == null) - { - return; - } - - if (logLevel != LogLevel.Critical && logLevel != LogLevel.Error) - { - return; - } - - TryInitialize(); - - if (_userExceptionInformer == null) - { - return; - } - - _userExceptionInformer.Inform(new UserExceptionInformerContext(exception)); + return; } - protected virtual void TryInitialize() - { - var serviceProvider = _serviceCollection.GetServiceProviderOrNull(); - if (serviceProvider == null) - { - return; - } - - _userExceptionInformer = serviceProvider.GetRequiredService(); - } + TryInitialize(); - public virtual bool IsEnabled(LogLevel logLevel) + if (_userExceptionInformer == null) { - return logLevel == LogLevel.Critical || logLevel == LogLevel.Error; + return; } - public virtual IDisposable BeginScope(TState state) + _userExceptionInformer.Inform(new UserExceptionInformerContext(exception)); + } + + protected virtual void TryInitialize() + { + var serviceProvider = _serviceCollection.GetServiceProviderOrNull(); + if (serviceProvider == null) { - return NullDisposable.Instance; + return; } + + _userExceptionInformer = serviceProvider.GetRequiredService(); + } + + public virtual bool IsEnabled(LogLevel logLevel) + { + return logLevel == LogLevel.Critical || logLevel == LogLevel.Error; + } + + public virtual IDisposable BeginScope(TState state) + { + return NullDisposable.Instance; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ExceptionHandling/AbpExceptionHandlingLoggerProvider.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ExceptionHandling/AbpExceptionHandlingLoggerProvider.cs index 85b16d08ba..3f895502fa 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ExceptionHandling/AbpExceptionHandlingLoggerProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ExceptionHandling/AbpExceptionHandlingLoggerProvider.cs @@ -1,38 +1,37 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -namespace Volo.Abp.AspNetCore.Components.Web.ExceptionHandling +namespace Volo.Abp.AspNetCore.Components.Web.ExceptionHandling; + +public class AbpExceptionHandlingLoggerProvider : ILoggerProvider { - public class AbpExceptionHandlingLoggerProvider : ILoggerProvider - { - private AbpExceptionHandlingLogger _logger; - private static readonly object SyncObj = new object(); - private readonly IServiceCollection _serviceCollection; + private AbpExceptionHandlingLogger _logger; + private static readonly object SyncObj = new object(); + private readonly IServiceCollection _serviceCollection; - public AbpExceptionHandlingLoggerProvider(IServiceCollection serviceCollection) - { - _serviceCollection = serviceCollection; - } + public AbpExceptionHandlingLoggerProvider(IServiceCollection serviceCollection) + { + _serviceCollection = serviceCollection; + } - public ILogger CreateLogger(string categoryName) + public ILogger CreateLogger(string categoryName) + { + if (_logger == null) { - if (_logger == null) + lock (SyncObj) { - lock (SyncObj) + if (_logger == null) { - if (_logger == null) - { - _logger = new AbpExceptionHandlingLogger(_serviceCollection); - } + _logger = new AbpExceptionHandlingLogger(_serviceCollection); } } - - return _logger; } - public void Dispose() - { + return _logger; + } + + public void Dispose() + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ExceptionHandling/UserExceptionInformer.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ExceptionHandling/UserExceptionInformer.cs index ecbeb16e81..0f0da11bdf 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ExceptionHandling/UserExceptionInformer.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ExceptionHandling/UserExceptionInformer.cs @@ -9,65 +9,64 @@ using Volo.Abp.AspNetCore.ExceptionHandling; using Volo.Abp.DependencyInjection; using Volo.Abp.Http; -namespace Volo.Abp.AspNetCore.Components.Web.ExceptionHandling +namespace Volo.Abp.AspNetCore.Components.Web.ExceptionHandling; + +[Dependency(ReplaceServices = true)] +public class UserExceptionInformer : IUserExceptionInformer, IScopedDependency { - [Dependency(ReplaceServices = true)] - public class UserExceptionInformer : IUserExceptionInformer, IScopedDependency + public ILogger Logger { get; set; } + protected IUiMessageService MessageService { get; } + protected IExceptionToErrorInfoConverter ExceptionToErrorInfoConverter { get; } + + protected AbpExceptionHandlingOptions Options { get; } + + public UserExceptionInformer( + IUiMessageService messageService, + IExceptionToErrorInfoConverter exceptionToErrorInfoConverter, + IOptions options) + { + MessageService = messageService; + ExceptionToErrorInfoConverter = exceptionToErrorInfoConverter; + Options = options.Value; + Logger = NullLogger.Instance; + } + + public void Inform(UserExceptionInformerContext context) { - public ILogger Logger { get; set; } - protected IUiMessageService MessageService { get; } - protected IExceptionToErrorInfoConverter ExceptionToErrorInfoConverter { get; } + //TODO: Create sync versions of the MessageService APIs. - protected AbpExceptionHandlingOptions Options { get; } + var errorInfo = GetErrorInfo(context); - public UserExceptionInformer( - IUiMessageService messageService, - IExceptionToErrorInfoConverter exceptionToErrorInfoConverter, - IOptions options) + if (errorInfo.Details.IsNullOrEmpty()) { - MessageService = messageService; - ExceptionToErrorInfoConverter = exceptionToErrorInfoConverter; - Options = options.Value; - Logger = NullLogger.Instance; + MessageService.Error(errorInfo.Message); } - - public void Inform(UserExceptionInformerContext context) + else { - //TODO: Create sync versions of the MessageService APIs. + MessageService.Error(errorInfo.Details, errorInfo.Message); + } + } - var errorInfo = GetErrorInfo(context); + public async Task InformAsync(UserExceptionInformerContext context) + { + var errorInfo = GetErrorInfo(context); - if (errorInfo.Details.IsNullOrEmpty()) - { - MessageService.Error(errorInfo.Message); - } - else - { - MessageService.Error(errorInfo.Details, errorInfo.Message); - } + if (errorInfo.Details.IsNullOrEmpty()) + { + await MessageService.Error(errorInfo.Message); } - - public async Task InformAsync(UserExceptionInformerContext context) + else { - var errorInfo = GetErrorInfo(context); - - if (errorInfo.Details.IsNullOrEmpty()) - { - await MessageService.Error(errorInfo.Message); - } - else - { - await MessageService.Error(errorInfo.Details, errorInfo.Message); - } + await MessageService.Error(errorInfo.Details, errorInfo.Message); } + } - protected virtual RemoteServiceErrorInfo GetErrorInfo(UserExceptionInformerContext context) + protected virtual RemoteServiceErrorInfo GetErrorInfo(UserExceptionInformerContext context) + { + return ExceptionToErrorInfoConverter.Convert(context.Exception, options => { - return ExceptionToErrorInfoConverter.Convert(context.Exception, options => - { - options.SendExceptionsDetailsToClients = Options.SendExceptionsDetailsToClients; - options.SendStackTraceToClients = Options.SendStackTraceToClients; - }); - } + options.SendExceptionsDetailsToClients = Options.SendExceptionsDetailsToClients; + options.SendStackTraceToClients = Options.SendStackTraceToClients; + }); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/EntityActions/EntityAction.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/EntityActions/EntityAction.cs index 61bea5c27a..2f800c7257 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/EntityActions/EntityAction.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/EntityActions/EntityAction.cs @@ -1,20 +1,19 @@ using System; using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Web.Extensibility.EntityActions +namespace Volo.Abp.AspNetCore.Components.Web.Extensibility.EntityActions; + +public class EntityAction : IEquatable { - public class EntityAction : IEquatable + public string Text { get; set; } + public Func Clicked { get; set; } + public Func ConfirmationMessage { get; set; } + public bool Primary { get; set; } + public object Color { get; set; } + public string Icon { get; set; } + public Func Visible { get; set; } + public bool Equals(EntityAction other) { - public string Text { get; set; } - public Func Clicked { get; set; } - public Func ConfirmationMessage { get; set; } - public bool Primary { get; set; } - public object Color { get; set; } - public string Icon { get; set; } - public Func Visible { get; set; } - public bool Equals(EntityAction other) - { - return string.Equals(Text, other?.Text, StringComparison.OrdinalIgnoreCase); - } + return string.Equals(Text, other?.Text, StringComparison.OrdinalIgnoreCase); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/EntityActions/EntityActionDictionary.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/EntityActions/EntityActionDictionary.cs index 36117abb37..0781870b69 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/EntityActions/EntityActionDictionary.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/EntityActions/EntityActionDictionary.cs @@ -1,12 +1,11 @@ using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Components.Web.Extensibility.EntityActions +namespace Volo.Abp.AspNetCore.Components.Web.Extensibility.EntityActions; + +public class EntityActionDictionary : Dictionary> { - public class EntityActionDictionary : Dictionary> + public List Get() { - public List Get() - { - return this.GetOrAdd(typeof(T).FullName, () => new List()); - } + return this.GetOrAdd(typeof(T).FullName, () => new List()); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/ILookupApiRequestService.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/ILookupApiRequestService.cs index 2351606306..f4b3e26e47 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/ILookupApiRequestService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/ILookupApiRequestService.cs @@ -1,10 +1,9 @@ using System.Threading.Tasks; using JetBrains.Annotations; -namespace Volo.Abp.AspNetCore.Components.Web.Extensibility +namespace Volo.Abp.AspNetCore.Components.Web.Extensibility; + +public interface ILookupApiRequestService { - public interface ILookupApiRequestService - { - Task SendAsync([NotNull]string url); - } -} \ No newline at end of file + Task SendAsync([NotNull] string url); +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs index 2121b8a128..9a6a40a17a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumn.cs @@ -4,25 +4,24 @@ using System.Collections.Generic; using System.Globalization; using Volo.Abp.AspNetCore.Components.Web.Extensibility.EntityActions; -namespace Volo.Abp.AspNetCore.Components.Web.Extensibility.TableColumns +namespace Volo.Abp.AspNetCore.Components.Web.Extensibility.TableColumns; + +public class TableColumn { - public class TableColumn - { - public string Title { get; set; } - public string Data { get; set; } - [CanBeNull] - public string DisplayFormat { get; set; } - public IFormatProvider DisplayFormatProvider { get; set; } = CultureInfo.CurrentCulture; - [CanBeNull] - public Type Component { get; set; } - public List Actions { get; set; } - [CanBeNull] - public Func ValueConverter { get; set; } - public bool Sortable { get; set; } + public string Title { get; set; } + public string Data { get; set; } + [CanBeNull] + public string DisplayFormat { get; set; } + public IFormatProvider DisplayFormatProvider { get; set; } = CultureInfo.CurrentCulture; + [CanBeNull] + public Type Component { get; set; } + public List Actions { get; set; } + [CanBeNull] + public Func ValueConverter { get; set; } + public bool Sortable { get; set; } - public TableColumn() - { - Actions = new List(); - } + public TableColumn() + { + Actions = new List(); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumnDictionary.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumnDictionary.cs index a68ad437d4..7eda70177c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumnDictionary.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Extensibility/TableColumns/TableColumnDictionary.cs @@ -1,12 +1,11 @@ using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Components.Web.Extensibility.TableColumns +namespace Volo.Abp.AspNetCore.Components.Web.Extensibility.TableColumns; + +public class TableColumnDictionary : Dictionary> { - public class TableColumnDictionary : Dictionary> + public List Get() { - public List Get() - { - return this.GetOrAdd(typeof(T).FullName, () => new List()); - } + return this.GetOrAdd(typeof(T).FullName, () => new List()); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/IAbpUtilsService.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/IAbpUtilsService.cs index a149691ba4..732ce11b4b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/IAbpUtilsService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/IAbpUtilsService.cs @@ -1,21 +1,20 @@ using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Web +namespace Volo.Abp.AspNetCore.Components.Web; + +public interface IAbpUtilsService { - public interface IAbpUtilsService - { - ValueTask AddClassToTagAsync(string tagName, string className); + ValueTask AddClassToTagAsync(string tagName, string className); - ValueTask RemoveClassFromTagAsync(string tagName, string className); + ValueTask RemoveClassFromTagAsync(string tagName, string className); - ValueTask HasClassOnTagAsync(string tagName, string className); + ValueTask HasClassOnTagAsync(string tagName, string className); - ValueTask ReplaceLinkHrefByIdAsync(string linkId, string hrefValue); + ValueTask ReplaceLinkHrefByIdAsync(string linkId, string hrefValue); - ValueTask ToggleFullscreenAsync(); + ValueTask ToggleFullscreenAsync(); - ValueTask RequestFullscreenAsync(); + ValueTask RequestFullscreenAsync(); - ValueTask ExitFullscreenAsync(); - } + ValueTask ExitFullscreenAsync(); } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ICookieService.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ICookieService.cs index 8f397bf554..afb124644e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ICookieService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/ICookieService.cs @@ -1,11 +1,10 @@ using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Web +namespace Volo.Abp.AspNetCore.Components.Web; + +public interface ICookieService { - public interface ICookieService - { - public ValueTask SetAsync(string key, string value, CookieOptions options = null); - public ValueTask GetAsync(string key); - public ValueTask DeleteAsync(string key, string path = null); - } -} \ No newline at end of file + public ValueTask SetAsync(string key, string value, CookieOptions options = null); + public ValueTask GetAsync(string key); + public ValueTask DeleteAsync(string key, string path = null); +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/IServerUrlProvider.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/IServerUrlProvider.cs index fffec2f606..f5266a9f18 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/IServerUrlProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/IServerUrlProvider.cs @@ -1,9 +1,8 @@ using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Web +namespace Volo.Abp.AspNetCore.Components.Web; + +public interface IServerUrlProvider { - public interface IServerUrlProvider - { - Task GetBaseUrlAsync(string remoteServiceName = null); - } -} \ No newline at end of file + Task GetBaseUrlAsync(string remoteServiceName = null); +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Messages/SimpleUiMessageService.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Messages/SimpleUiMessageService.cs index cc82625b4c..647be65b41 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Messages/SimpleUiMessageService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Messages/SimpleUiMessageService.cs @@ -4,40 +4,39 @@ using Microsoft.JSInterop; using Volo.Abp.AspNetCore.Components.Messages; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Web.Messages +namespace Volo.Abp.AspNetCore.Components.Web.Messages; + +public class SimpleUiMessageService : IUiMessageService, ITransientDependency { - public class SimpleUiMessageService : IUiMessageService, ITransientDependency + protected IJSRuntime JsRuntime { get; } + + public SimpleUiMessageService(IJSRuntime jsRuntime) + { + JsRuntime = jsRuntime; + } + + public async Task Info(string message, string title = null, Action options = null) + { + await JsRuntime.InvokeVoidAsync("alert", message); + } + + public async Task Success(string message, string title = null, Action options = null) + { + await JsRuntime.InvokeVoidAsync("alert", message); + } + + public async Task Warn(string message, string title = null, Action options = null) + { + await JsRuntime.InvokeVoidAsync("alert", message); + } + + public async Task Error(string message, string title = null, Action options = null) + { + await JsRuntime.InvokeVoidAsync("alert", message); + } + + public async Task Confirm(string message, string title = null, Action options = null) { - protected IJSRuntime JsRuntime { get; } - - public SimpleUiMessageService(IJSRuntime jsRuntime) - { - JsRuntime = jsRuntime; - } - - public async Task Info(string message, string title = null, Action options = null) - { - await JsRuntime.InvokeVoidAsync("alert", message); - } - - public async Task Success(string message, string title = null, Action options = null) - { - await JsRuntime.InvokeVoidAsync("alert", message); - } - - public async Task Warn(string message, string title = null, Action options = null) - { - await JsRuntime.InvokeVoidAsync("alert", message); - } - - public async Task Error(string message, string title = null, Action options = null) - { - await JsRuntime.InvokeVoidAsync("alert", message); - } - - public async Task Confirm(string message, string title = null, Action options = null) - { - return await JsRuntime.InvokeAsync("confirm", message); - } + return await JsRuntime.InvokeAsync("confirm", message); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Security/AbpComponentsClaimsCache.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Security/AbpComponentsClaimsCache.cs index 787bf5cb6e..bb053eac21 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Security/AbpComponentsClaimsCache.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Security/AbpComponentsClaimsCache.cs @@ -5,39 +5,38 @@ using Microsoft.AspNetCore.Components.Authorization; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Web.Security +namespace Volo.Abp.AspNetCore.Components.Web.Security; + +[ExposeServices( + typeof(AbpComponentsClaimsCache), + typeof(IAsyncInitialize) +)] +public class AbpComponentsClaimsCache : IScopedDependency, IAsyncInitialize { - [ExposeServices( - typeof(AbpComponentsClaimsCache), - typeof(IAsyncInitialize) - )] - public class AbpComponentsClaimsCache : IScopedDependency, IAsyncInitialize - { - public ClaimsPrincipal Principal { get; private set; } + public ClaimsPrincipal Principal { get; private set; } - [CanBeNull] - private readonly AuthenticationStateProvider _authenticationStateProvider; + [CanBeNull] + private readonly AuthenticationStateProvider _authenticationStateProvider; - public AbpComponentsClaimsCache( - IClientScopeServiceProviderAccessor serviceProviderAccessor) + public AbpComponentsClaimsCache( + IClientScopeServiceProviderAccessor serviceProviderAccessor) + { + _authenticationStateProvider = serviceProviderAccessor.ServiceProvider.GetService(); + if (_authenticationStateProvider != null) { - _authenticationStateProvider = serviceProviderAccessor.ServiceProvider.GetService(); - if (_authenticationStateProvider != null) + _authenticationStateProvider.AuthenticationStateChanged += async (task) => { - _authenticationStateProvider.AuthenticationStateChanged += async (task) => - { - Principal = (await task).User; - }; - } + Principal = (await task).User; + }; } + } - public virtual async Task InitializeAsync() + public virtual async Task InitializeAsync() + { + if (_authenticationStateProvider != null) { - if (_authenticationStateProvider != null) - { - var authenticationState = await _authenticationStateProvider.GetAuthenticationStateAsync(); - Principal = authenticationState.User; - } + var authenticationState = await _authenticationStateProvider.GetAuthenticationStateAsync(); + Principal = authenticationState.User; } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/AbpAspNetCoreComponentsWebAssemblyThemingModule.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/AbpAspNetCoreComponentsWebAssemblyThemingModule.cs index a19df06bc7..38eff974b8 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/AbpAspNetCoreComponentsWebAssemblyThemingModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/AbpAspNetCoreComponentsWebAssemblyThemingModule.cs @@ -1,14 +1,13 @@ using Volo.Abp.AspNetCore.Components.Web.Theming; using Volo.Abp.Modularity; -namespace Volo.Abp.AspNetCore.Components.WebAssembly.Theming +namespace Volo.Abp.AspNetCore.Components.WebAssembly.Theming; + +[DependsOn( + typeof(AbpAspNetCoreComponentsWebThemingModule), + typeof(AbpAspNetCoreComponentsWebAssemblyModule) +)] +public class AbpAspNetCoreComponentsWebAssemblyThemingModule : AbpModule { - [DependsOn( - typeof(AbpAspNetCoreComponentsWebThemingModule), - typeof(AbpAspNetCoreComponentsWebAssemblyModule) - )] - public class AbpAspNetCoreComponentsWebAssemblyThemingModule : AbpModule - { - } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/ComponentsComponentsBundleContributor.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/ComponentsComponentsBundleContributor.cs index 69933bd95f..61f42e8222 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/ComponentsComponentsBundleContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/ComponentsComponentsBundleContributor.cs @@ -1,31 +1,30 @@ using Volo.Abp.Bundling; -namespace Volo.Abp.AspNetCore.Components.WebAssembly.Theming +namespace Volo.Abp.AspNetCore.Components.WebAssembly.Theming; + +public class ComponentsComponentsBundleContributor : IBundleContributor { - public class ComponentsComponentsBundleContributor : IBundleContributor + public void AddScripts(BundleContext context) { - public void AddScripts(BundleContext context) - { - context.Add("_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js"); - context.Add("_content/Volo.Abp.AspNetCore.Components.Web/libs/abp/js/abp.js"); - context.Add("_content/Volo.Abp.AspNetCore.Components.Web/libs/abp/js/lang-utils.js"); - } + context.Add("_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js"); + context.Add("_content/Volo.Abp.AspNetCore.Components.Web/libs/abp/js/abp.js"); + context.Add("_content/Volo.Abp.AspNetCore.Components.Web/libs/abp/js/lang-utils.js"); + } - public void AddStyles(BundleContext context) + public void AddStyles(BundleContext context) + { + context.BundleDefinitions.Insert(0, new BundleDefinition + { + Source = "_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/bootstrap/css/bootstrap.min.css" + }); + context.BundleDefinitions.Insert(1, new BundleDefinition { - context.BundleDefinitions.Insert(0, new BundleDefinition - { - Source = "_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/bootstrap/css/bootstrap.min.css" - }); - context.BundleDefinitions.Insert(1, new BundleDefinition - { - Source = "_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/css/all.css" - }); + Source = "_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/css/all.css" + }); - context.Add("_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/css/flag-icon.css"); - context.Add("_content/Blazorise/blazorise.css"); - context.Add("_content/Blazorise.Bootstrap5/blazorise.bootstrap5.css"); - context.Add("_content/Blazorise.Snackbar/blazorise.snackbar.css"); - } + context.Add("_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/css/flag-icon.css"); + context.Add("_content/Blazorise/blazorise.css"); + context.Add("_content/Blazorise.Bootstrap5/blazorise.bootstrap5.css"); + context.Add("_content/Blazorise.Snackbar/blazorise.snackbar.css"); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs index f05feacae8..cb104533cb 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs @@ -13,74 +13,73 @@ using Volo.Abp.AspNetCore.Mvc.Client; using Volo.Abp.DependencyInjection; using Volo.Abp.Modularity; -namespace Microsoft.AspNetCore.Components.WebAssembly.Hosting +namespace Microsoft.AspNetCore.Components.WebAssembly.Hosting; + +public static class AbpWebAssemblyHostBuilderExtensions { - public static class AbpWebAssemblyHostBuilderExtensions + public static IAbpApplicationWithExternalServiceProvider AddApplication( + [NotNull] this WebAssemblyHostBuilder builder, + Action options) + where TStartupModule : IAbpModule { - public static IAbpApplicationWithExternalServiceProvider AddApplication( - [NotNull] this WebAssemblyHostBuilder builder, - Action options) - where TStartupModule : IAbpModule - { - Check.NotNull(builder, nameof(builder)); + Check.NotNull(builder, nameof(builder)); - // Related this commit(https://github.com/dotnet/aspnetcore/commit/b99d805bc037fcac56afb79abeb7d5a43141c85e) - // Microsoft.AspNetCore.Blazor.BuildTools has been removed in net 5.0. - // This call may be removed when we find a suitable solution. - // System.Runtime.CompilerServices.AsyncStateMachineAttribute - Castle.DynamicProxy.Generators.AttributesToAvoidReplicating.Add(); + // Related this commit(https://github.com/dotnet/aspnetcore/commit/b99d805bc037fcac56afb79abeb7d5a43141c85e) + // Microsoft.AspNetCore.Blazor.BuildTools has been removed in net 5.0. + // This call may be removed when we find a suitable solution. + // System.Runtime.CompilerServices.AsyncStateMachineAttribute + Castle.DynamicProxy.Generators.AttributesToAvoidReplicating.Add(); - builder.Services.AddSingleton(builder.Configuration); - builder.Services.AddSingleton(builder); + builder.Services.AddSingleton(builder.Configuration); + builder.Services.AddSingleton(builder); - var application = builder.Services.AddApplication(opts => - { - options?.Invoke(new AbpWebAssemblyApplicationCreationOptions(builder, opts)); - }); + var application = builder.Services.AddApplication(opts => + { + options?.Invoke(new AbpWebAssemblyApplicationCreationOptions(builder, opts)); + }); - return application; - } + return application; + } - public static async Task InitializeAsync( - [NotNull] this IAbpApplicationWithExternalServiceProvider application, - [NotNull] IServiceProvider serviceProvider) - { - Check.NotNull(application, nameof(application)); - Check.NotNull(serviceProvider, nameof(serviceProvider)); + public static async Task InitializeAsync( + [NotNull] this IAbpApplicationWithExternalServiceProvider application, + [NotNull] IServiceProvider serviceProvider) + { + Check.NotNull(application, nameof(application)); + Check.NotNull(serviceProvider, nameof(serviceProvider)); - ((ComponentsClientScopeServiceProviderAccessor) serviceProvider - .GetRequiredService()).ServiceProvider = serviceProvider; + ((ComponentsClientScopeServiceProviderAccessor)serviceProvider + .GetRequiredService()).ServiceProvider = serviceProvider; - application.Initialize(serviceProvider); - await InitializeModulesAsync(serviceProvider); - await SetCurrentLanguageAsync(serviceProvider); - } + application.Initialize(serviceProvider); + await InitializeModulesAsync(serviceProvider); + await SetCurrentLanguageAsync(serviceProvider); + } - private static async Task InitializeModulesAsync(IServiceProvider serviceProvider) + private static async Task InitializeModulesAsync(IServiceProvider serviceProvider) + { + foreach (var service in serviceProvider.GetServices()) { - foreach (var service in serviceProvider.GetServices()) - { - await service.InitializeAsync(); - } + await service.InitializeAsync(); } + } - private static async Task SetCurrentLanguageAsync(IServiceProvider serviceProvider) + private static async Task SetCurrentLanguageAsync(IServiceProvider serviceProvider) + { + var configurationClient = serviceProvider.GetRequiredService(); + var utilsService = serviceProvider.GetRequiredService(); + var configuration = await configurationClient.GetAsync(); + var cultureName = configuration.Localization?.CurrentCulture?.CultureName; + if (!cultureName.IsNullOrEmpty()) { - var configurationClient = serviceProvider.GetRequiredService(); - var utilsService = serviceProvider.GetRequiredService(); - var configuration = await configurationClient.GetAsync(); - var cultureName = configuration.Localization?.CurrentCulture?.CultureName; - if (!cultureName.IsNullOrEmpty()) - { - var culture = new CultureInfo(cultureName); - CultureInfo.DefaultThreadCurrentCulture = culture; - CultureInfo.DefaultThreadCurrentUICulture = culture; - } + var culture = new CultureInfo(cultureName); + CultureInfo.DefaultThreadCurrentCulture = culture; + CultureInfo.DefaultThreadCurrentUICulture = culture; + } - if (CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft) - { - await utilsService.AddClassToTagAsync("body", "rtl"); - } + if (CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft) + { + await utilsService.AddClassToTagAsync("body", "rtl"); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/Extensions/DependencyInjection/AbpWebAssemblyServiceCollectionExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/Extensions/DependencyInjection/AbpWebAssemblyServiceCollectionExtensions.cs index 2f541265d1..bbcf1d5a83 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/Extensions/DependencyInjection/AbpWebAssemblyServiceCollectionExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/Extensions/DependencyInjection/AbpWebAssemblyServiceCollectionExtensions.cs @@ -2,16 +2,15 @@ using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Volo.Abp; -namespace Microsoft.Extensions.DependencyInjection +namespace Microsoft.Extensions.DependencyInjection; + +public static class AbpWebAssemblyServiceCollectionExtensions { - public static class AbpWebAssemblyServiceCollectionExtensions + public static WebAssemblyHostBuilder GetHostBuilder( + [NotNull] this IServiceCollection services) { - public static WebAssemblyHostBuilder GetHostBuilder( - [NotNull] this IServiceCollection services) - { - Check.NotNull(services, nameof(services)); + Check.NotNull(services, nameof(services)); - return services.GetSingletonInstance(); - } + return services.GetSingletonInstance(); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpAspNetCoreComponentsWebAssemblyModule.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpAspNetCoreComponentsWebAssemblyModule.cs index 170bd9c327..56dd8106a3 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpAspNetCoreComponentsWebAssemblyModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpAspNetCoreComponentsWebAssemblyModule.cs @@ -7,31 +7,30 @@ using Volo.Abp.Http.Client; using Volo.Abp.Modularity; using Volo.Abp.UI; -namespace Volo.Abp.AspNetCore.Components.WebAssembly +namespace Volo.Abp.AspNetCore.Components.WebAssembly; + +[DependsOn( + typeof(AbpAspNetCoreMvcClientCommonModule), + typeof(AbpUiModule), + typeof(AbpAspNetCoreComponentsWebModule) + )] +public class AbpAspNetCoreComponentsWebAssemblyModule : AbpModule { - [DependsOn( - typeof(AbpAspNetCoreMvcClientCommonModule), - typeof(AbpUiModule), - typeof(AbpAspNetCoreComponentsWebModule) - )] - public class AbpAspNetCoreComponentsWebAssemblyModule : AbpModule + public override void PreConfigureServices(ServiceConfigurationContext context) { - public override void PreConfigureServices(ServiceConfigurationContext context) + PreConfigure(options => { - PreConfigure(options => + options.ProxyClientBuildActions.Add((_, builder) => { - options.ProxyClientBuildActions.Add((_, builder) => - { - builder.AddHttpMessageHandler(); - }); + builder.AddHttpMessageHandler(); }); - } + }); + } - public override void ConfigureServices(ServiceConfigurationContext context) - { - context.Services - .GetHostBuilder().Logging - .AddProvider(new AbpExceptionHandlingLoggerProvider(context.Services)); - } + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services + .GetHostBuilder().Logging + .AddProvider(new AbpExceptionHandlingLoggerProvider(context.Services)); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpWebAssemblyApplicationCreationOptions.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpWebAssemblyApplicationCreationOptions.cs index 54fdf7edb4..6ffe5fe17e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpWebAssemblyApplicationCreationOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpWebAssemblyApplicationCreationOptions.cs @@ -1,19 +1,18 @@ using Microsoft.AspNetCore.Components.WebAssembly.Hosting; -namespace Volo.Abp.AspNetCore.Components.WebAssembly +namespace Volo.Abp.AspNetCore.Components.WebAssembly; + +public class AbpWebAssemblyApplicationCreationOptions { - public class AbpWebAssemblyApplicationCreationOptions - { - public WebAssemblyHostBuilder HostBuilder { get; } + public WebAssemblyHostBuilder HostBuilder { get; } - public AbpApplicationCreationOptions ApplicationCreationOptions { get; } + public AbpApplicationCreationOptions ApplicationCreationOptions { get; } - public AbpWebAssemblyApplicationCreationOptions( - WebAssemblyHostBuilder hostBuilder, - AbpApplicationCreationOptions applicationCreationOptions) - { - HostBuilder = hostBuilder; - ApplicationCreationOptions = applicationCreationOptions; - } + public AbpWebAssemblyApplicationCreationOptions( + WebAssemblyHostBuilder hostBuilder, + AbpApplicationCreationOptions applicationCreationOptions) + { + HostBuilder = hostBuilder; + ApplicationCreationOptions = applicationCreationOptions; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ApplicationConfigurationCache.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ApplicationConfigurationCache.cs index ffbcf4e973..b55d8d8a56 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ApplicationConfigurationCache.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ApplicationConfigurationCache.cs @@ -1,20 +1,19 @@ using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.WebAssembly +namespace Volo.Abp.AspNetCore.Components.WebAssembly; + +public class ApplicationConfigurationCache : ISingletonDependency { - public class ApplicationConfigurationCache : ISingletonDependency - { - protected ApplicationConfigurationDto Configuration { get; set; } + protected ApplicationConfigurationDto Configuration { get; set; } - public virtual ApplicationConfigurationDto Get() - { - return Configuration; - } + public virtual ApplicationConfigurationDto Get() + { + return Configuration; + } - public void Set(ApplicationConfigurationDto configuration) - { - Configuration = configuration; - } + public void Set(ApplicationConfigurationDto configuration) + { + Configuration = configuration; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/Extensibility/WebAssemblyLookupApiRequestService.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/Extensibility/WebAssemblyLookupApiRequestService.cs index 594aa32bae..b8eadacdd6 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/Extensibility/WebAssemblyLookupApiRequestService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/Extensibility/WebAssemblyLookupApiRequestService.cs @@ -11,57 +11,56 @@ using Volo.Abp.Http.Client; using Microsoft.Extensions.Options; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.Components.WebAssembly.Extensibility +namespace Volo.Abp.AspNetCore.Components.WebAssembly.Extensibility; + +public class WebAssemblyLookupApiRequestService : ILookupApiRequestService, ITransientDependency { - public class WebAssemblyLookupApiRequestService : ILookupApiRequestService, ITransientDependency + public IHttpClientFactory HttpClientFactory { get; } + public IRemoteServiceHttpClientAuthenticator HttpClientAuthenticator { get; } + public IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider { get; } + public ICurrentTenant CurrentTenant { get; } + + public WebAssemblyLookupApiRequestService(IHttpClientFactory httpClientFactory, + IRemoteServiceHttpClientAuthenticator httpClientAuthenticator, + ICurrentTenant currentTenant, + IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider) + { + HttpClientFactory = httpClientFactory; + HttpClientAuthenticator = httpClientAuthenticator; + CurrentTenant = currentTenant; + RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider; + } + + public async Task SendAsync(string url) { - public IHttpClientFactory HttpClientFactory { get; } - public IRemoteServiceHttpClientAuthenticator HttpClientAuthenticator { get; } - public IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider { get; } - public ICurrentTenant CurrentTenant { get; } + var client = HttpClientFactory.CreateClient(); + var requestMessage = new HttpRequestMessage(HttpMethod.Get, url); + AddHeaders(requestMessage); - public WebAssemblyLookupApiRequestService(IHttpClientFactory httpClientFactory, - IRemoteServiceHttpClientAuthenticator httpClientAuthenticator, - ICurrentTenant currentTenant, - IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider) + var uri = new Uri(url, UriKind.RelativeOrAbsolute); + if (!uri.IsAbsoluteUri) { - HttpClientFactory = httpClientFactory; - HttpClientAuthenticator = httpClientAuthenticator; - CurrentTenant = currentTenant; - RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider; + var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync("Default"); + client.BaseAddress = new Uri(remoteServiceConfig.BaseUrl); + await HttpClientAuthenticator.Authenticate(new RemoteServiceHttpClientAuthenticateContext(client, requestMessage, new RemoteServiceConfiguration(remoteServiceConfig.BaseUrl), string.Empty)); } - public async Task SendAsync(string url) - { - var client = HttpClientFactory.CreateClient(); - var requestMessage = new HttpRequestMessage(HttpMethod.Get, url); - AddHeaders(requestMessage); + var response = await client.SendAsync(requestMessage); - var uri = new Uri(url, UriKind.RelativeOrAbsolute); - if (!uri.IsAbsoluteUri) - { - var remoteServiceConfig = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync("Default"); - client.BaseAddress = new Uri(remoteServiceConfig.BaseUrl); - await HttpClientAuthenticator.Authenticate(new RemoteServiceHttpClientAuthenticateContext(client, requestMessage, new RemoteServiceConfiguration(remoteServiceConfig.BaseUrl), string.Empty)); - } + return await response.Content.ReadAsStringAsync(); + } - var response = await client.SendAsync(requestMessage); - - return await response.Content.ReadAsStringAsync(); - } - - protected virtual void AddHeaders(HttpRequestMessage requestMessage) + protected virtual void AddHeaders(HttpRequestMessage requestMessage) + { + if (CurrentTenant.Id.HasValue) { - if (CurrentTenant.Id.HasValue) - { - requestMessage.Headers.Add(TenantResolverConsts.DefaultTenantKey, CurrentTenant.Id.Value.ToString()); - } + requestMessage.Headers.Add(TenantResolverConsts.DefaultTenantKey, CurrentTenant.Id.Value.ToString()); + } - var currentCulture = CultureInfo.CurrentUICulture.Name ?? CultureInfo.CurrentCulture.Name; - if (!currentCulture.IsNullOrEmpty()) - { - requestMessage.Headers.AcceptLanguage.Add(new (currentCulture)); - } + var currentCulture = CultureInfo.CurrentUICulture.Name ?? CultureInfo.CurrentCulture.Name; + if (!currentCulture.IsNullOrEmpty()) + { + requestMessage.Headers.AcceptLanguage.Add(new(currentCulture)); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs index c7b659a859..4dbd188a47 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs @@ -5,63 +5,62 @@ using Volo.Abp.AspNetCore.Mvc.Client; using Volo.Abp.DependencyInjection; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.Components.WebAssembly +namespace Volo.Abp.AspNetCore.Components.WebAssembly; + +[ExposeServices( + typeof(WebAssemblyCachedApplicationConfigurationClient), + typeof(ICachedApplicationConfigurationClient), + typeof(IAsyncInitialize) + )] +public class WebAssemblyCachedApplicationConfigurationClient : ICachedApplicationConfigurationClient, ITransientDependency { - [ExposeServices( - typeof(WebAssemblyCachedApplicationConfigurationClient), - typeof(ICachedApplicationConfigurationClient), - typeof(IAsyncInitialize) - )] - public class WebAssemblyCachedApplicationConfigurationClient : ICachedApplicationConfigurationClient, ITransientDependency - { - protected AbpApplicationConfigurationClientProxy ApplicationConfigurationAppService { get; } + protected AbpApplicationConfigurationClientProxy ApplicationConfigurationAppService { get; } - protected ApplicationConfigurationCache Cache { get; } + protected ApplicationConfigurationCache Cache { get; } - protected ICurrentTenantAccessor CurrentTenantAccessor { get; } + protected ICurrentTenantAccessor CurrentTenantAccessor { get; } - public WebAssemblyCachedApplicationConfigurationClient( - AbpApplicationConfigurationClientProxy applicationConfigurationAppService, - ApplicationConfigurationCache cache, - ICurrentTenantAccessor currentTenantAccessor) - { - ApplicationConfigurationAppService = applicationConfigurationAppService; - Cache = cache; - CurrentTenantAccessor = currentTenantAccessor; - } + public WebAssemblyCachedApplicationConfigurationClient( + AbpApplicationConfigurationClientProxy applicationConfigurationAppService, + ApplicationConfigurationCache cache, + ICurrentTenantAccessor currentTenantAccessor) + { + ApplicationConfigurationAppService = applicationConfigurationAppService; + Cache = cache; + CurrentTenantAccessor = currentTenantAccessor; + } - public virtual async Task InitializeAsync() - { - var configurationDto = await ApplicationConfigurationAppService.GetAsync(); + public virtual async Task InitializeAsync() + { + var configurationDto = await ApplicationConfigurationAppService.GetAsync(); - Cache.Set(configurationDto); + Cache.Set(configurationDto); - CurrentTenantAccessor.Current = new BasicTenantInfo( - configurationDto.CurrentTenant.Id, - configurationDto.CurrentTenant.Name - ); - } + CurrentTenantAccessor.Current = new BasicTenantInfo( + configurationDto.CurrentTenant.Id, + configurationDto.CurrentTenant.Name + ); + } - public virtual Task GetAsync() - { - return Task.FromResult(GetConfigurationByChecking()); - } + public virtual Task GetAsync() + { + return Task.FromResult(GetConfigurationByChecking()); + } - public virtual ApplicationConfigurationDto Get() - { - return GetConfigurationByChecking(); - } + public virtual ApplicationConfigurationDto Get() + { + return GetConfigurationByChecking(); + } - private ApplicationConfigurationDto GetConfigurationByChecking() + private ApplicationConfigurationDto GetConfigurationByChecking() + { + var configuration = Cache.Get(); + if (configuration == null) { - var configuration = Cache.Get(); - if (configuration == null) - { - throw new AbpException( - $"{nameof(WebAssemblyCachedApplicationConfigurationClient)} should be initialized before using it."); - } - - return configuration; + throw new AbpException( + $"{nameof(WebAssemblyCachedApplicationConfigurationClient)} should be initialized before using it."); } + + return configuration; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentPrincipalAccessor.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentPrincipalAccessor.cs index 36438871c1..9f1eb5d0b9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentPrincipalAccessor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentPrincipalAccessor.cs @@ -4,21 +4,20 @@ using Volo.Abp.AspNetCore.Components.Web.Security; using Volo.Abp.DependencyInjection; using Volo.Abp.Security.Claims; -namespace Volo.Abp.AspNetCore.Components.WebAssembly +namespace Volo.Abp.AspNetCore.Components.WebAssembly; + +public class WebAssemblyCurrentPrincipalAccessor : CurrentPrincipalAccessorBase, ITransientDependency { - public class WebAssemblyCurrentPrincipalAccessor : CurrentPrincipalAccessorBase, ITransientDependency - { - protected AbpComponentsClaimsCache ClaimsCache { get; } + protected AbpComponentsClaimsCache ClaimsCache { get; } - public WebAssemblyCurrentPrincipalAccessor( - IClientScopeServiceProviderAccessor clientScopeServiceProviderAccessor) - { - ClaimsCache = clientScopeServiceProviderAccessor.ServiceProvider.GetRequiredService(); - } + public WebAssemblyCurrentPrincipalAccessor( + IClientScopeServiceProviderAccessor clientScopeServiceProviderAccessor) + { + ClaimsCache = clientScopeServiceProviderAccessor.ServiceProvider.GetRequiredService(); + } - protected override ClaimsPrincipal GetClaimsPrincipal() - { - return ClaimsCache.Principal; - } + protected override ClaimsPrincipal GetClaimsPrincipal() + { + return ClaimsCache.Principal; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentTenantAccessor.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentTenantAccessor.cs index eb0ee781ad..e24746f85a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentTenantAccessor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCurrentTenantAccessor.cs @@ -1,11 +1,10 @@ using Volo.Abp.DependencyInjection; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.Components.WebAssembly +namespace Volo.Abp.AspNetCore.Components.WebAssembly; + +[Dependency(ReplaceServices = true)] +public class WebAssemblyCurrentTenantAccessor : ICurrentTenantAccessor, ISingletonDependency { - [Dependency(ReplaceServices = true)] - public class WebAssemblyCurrentTenantAccessor : ICurrentTenantAccessor, ISingletonDependency - { - public BasicTenantInfo Current { get; set; } - } + public BasicTenantInfo Current { get; set; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyServerUrlProvider.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyServerUrlProvider.cs index 477dba5418..2fb133a10d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyServerUrlProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyServerUrlProvider.cs @@ -4,26 +4,25 @@ using Volo.Abp.AspNetCore.Components.Web; using Volo.Abp.DependencyInjection; using Volo.Abp.Http.Client; -namespace Volo.Abp.AspNetCore.Components.WebAssembly +namespace Volo.Abp.AspNetCore.Components.WebAssembly; + +[Dependency(ReplaceServices = true)] +public class WebAssemblyServerUrlProvider : IServerUrlProvider, ITransientDependency { - [Dependency(ReplaceServices = true)] - public class WebAssemblyServerUrlProvider : IServerUrlProvider, ITransientDependency + protected IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider { get; } + + public WebAssemblyServerUrlProvider( + IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider) + { + RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider; + } + + public async Task GetBaseUrlAsync(string remoteServiceName = null) { - protected IRemoteServiceConfigurationProvider RemoteServiceConfigurationProvider { get; } + var remoteServiceConfiguration = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync( + remoteServiceName ?? RemoteServiceConfigurationDictionary.DefaultName + ); - public WebAssemblyServerUrlProvider( - IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider) - { - RemoteServiceConfigurationProvider = remoteServiceConfigurationProvider; - } - - public async Task GetBaseUrlAsync(string remoteServiceName = null) - { - var remoteServiceConfiguration = await RemoteServiceConfigurationProvider.GetConfigurationOrDefaultAsync( - remoteServiceName ?? RemoteServiceConfigurationDictionary.DefaultName - ); - - return remoteServiceConfiguration.BaseUrl.EnsureEndsWith('/'); - } + return remoteServiceConfiguration.BaseUrl.EnsureEndsWith('/'); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpAspNetCoreComponentsModule.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpAspNetCoreComponentsModule.cs index 08c7ed8e9f..677f9d8cca 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpAspNetCoreComponentsModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpAspNetCoreComponentsModule.cs @@ -7,19 +7,18 @@ using Volo.Abp.Modularity; using Volo.Abp.ObjectMapping; using Volo.Abp.Security; -namespace Volo.Abp.AspNetCore.Components +namespace Volo.Abp.AspNetCore.Components; + +[DependsOn( + typeof(AbpObjectMappingModule), + typeof(AbpSecurityModule), + typeof(AbpLocalizationModule) + )] +public class AbpAspNetCoreComponentsModule : AbpModule { - [DependsOn( - typeof(AbpObjectMappingModule), - typeof(AbpSecurityModule), - typeof(AbpLocalizationModule) - )] - public class AbpAspNetCoreComponentsModule : AbpModule + public override void PreConfigureServices(ServiceConfigurationContext context) { - public override void PreConfigureServices(ServiceConfigurationContext context) - { - DynamicProxyIgnoreTypes.Add(); - context.Services.AddConventionalRegistrar(new AbpWebAssemblyConventionalRegistrar()); - } + DynamicProxyIgnoreTypes.Add(); + context.Services.AddConventionalRegistrar(new AbpWebAssemblyConventionalRegistrar()); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs index 163b2217fa..b9c97b30b4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs @@ -14,164 +14,157 @@ using Volo.Abp.Localization; using Volo.Abp.ObjectMapping; using Volo.Abp.Users; -namespace Volo.Abp.AspNetCore.Components +namespace Volo.Abp.AspNetCore.Components; + +public abstract class AbpComponentBase : OwningComponentBase { - public abstract class AbpComponentBase : OwningComponentBase - { - protected IStringLocalizerFactory StringLocalizerFactory => LazyGetRequiredService(ref _stringLocalizerFactory); - private IStringLocalizerFactory _stringLocalizerFactory; + protected IStringLocalizerFactory StringLocalizerFactory => LazyGetRequiredService(ref _stringLocalizerFactory); + private IStringLocalizerFactory _stringLocalizerFactory; - protected IStringLocalizer L - { - get + protected IStringLocalizer L { + get { + if (_localizer == null) { - if (_localizer == null) - { - _localizer = CreateLocalizer(); - } - - return _localizer; + _localizer = CreateLocalizer(); } - } - private IStringLocalizer _localizer; - protected Type LocalizationResource - { - get => _localizationResource; - set - { - _localizationResource = value; - _localizer = null; - } + return _localizer; } - private Type _localizationResource = typeof(DefaultResource); + } + private IStringLocalizer _localizer; - protected ILogger Logger => _lazyLogger.Value; - private Lazy _lazyLogger => new Lazy(() => LoggerFactory?.CreateLogger(GetType().FullName) ?? NullLogger.Instance, true); + protected Type LocalizationResource { + get => _localizationResource; + set { + _localizationResource = value; + _localizer = null; + } + } + private Type _localizationResource = typeof(DefaultResource); - protected ILoggerFactory LoggerFactory => LazyGetRequiredService(ref _loggerFactory); - private ILoggerFactory _loggerFactory; + protected ILogger Logger => _lazyLogger.Value; + private Lazy _lazyLogger => new Lazy(() => LoggerFactory?.CreateLogger(GetType().FullName) ?? NullLogger.Instance, true); - protected IAuthorizationService AuthorizationService => LazyGetRequiredService(ref _authorizationService); - private IAuthorizationService _authorizationService; + protected ILoggerFactory LoggerFactory => LazyGetRequiredService(ref _loggerFactory); + private ILoggerFactory _loggerFactory; - protected ICurrentUser CurrentUser => LazyGetRequiredService(ref _currentUser); - private ICurrentUser _currentUser; - - protected IUiMessageService Message => LazyGetNonScopedRequiredService(ref _message); - private IUiMessageService _message; + protected IAuthorizationService AuthorizationService => LazyGetRequiredService(ref _authorizationService); + private IAuthorizationService _authorizationService; - protected IUiNotificationService Notify => LazyGetNonScopedRequiredService(ref _notify); - private IUiNotificationService _notify; - - protected IUserExceptionInformer UserExceptionInformer => LazyGetNonScopedRequiredService(ref _userExceptionInformer); - private IUserExceptionInformer _userExceptionInformer; + protected ICurrentUser CurrentUser => LazyGetRequiredService(ref _currentUser); + private ICurrentUser _currentUser; - protected IAlertManager AlertManager => LazyGetNonScopedRequiredService(ref _alertManager); - private IAlertManager _alertManager; + protected IUiMessageService Message => LazyGetNonScopedRequiredService(ref _message); + private IUiMessageService _message; - protected AlertList Alerts => AlertManager.Alerts; + protected IUiNotificationService Notify => LazyGetNonScopedRequiredService(ref _notify); + private IUiNotificationService _notify; - protected IObjectMapper ObjectMapper - { - get - { - if (_objectMapper != null) - { - return _objectMapper; - } - - if (ObjectMapperContext == null) - { - return LazyGetRequiredService(ref _objectMapper); - } - - return LazyGetRequiredService( - typeof(IObjectMapper<>).MakeGenericType(ObjectMapperContext), - ref _objectMapper - ); - } - } + protected IUserExceptionInformer UserExceptionInformer => LazyGetNonScopedRequiredService(ref _userExceptionInformer); + private IUserExceptionInformer _userExceptionInformer; - private IObjectMapper _objectMapper; + protected IAlertManager AlertManager => LazyGetNonScopedRequiredService(ref _alertManager); + private IAlertManager _alertManager; - protected Type ObjectMapperContext { get; set; } + protected AlertList Alerts => AlertManager.Alerts; - protected TService LazyGetRequiredService(ref TService reference) => LazyGetRequiredService(typeof(TService), ref reference); - - protected TRef LazyGetRequiredService(Type serviceType, ref TRef reference) - { - if (reference == null) + protected IObjectMapper ObjectMapper { + get { + if (_objectMapper != null) { - reference = (TRef)ScopedServices.GetRequiredService(serviceType); + return _objectMapper; } - return reference; - } - - protected TService LazyGetService(ref TService reference) => LazyGetService(typeof(TService), ref reference); - - protected TRef LazyGetService(Type serviceType, ref TRef reference) - { - if (reference == null) + if (ObjectMapperContext == null) { - reference = (TRef)ScopedServices.GetService(serviceType); + return LazyGetRequiredService(ref _objectMapper); } - return reference; + return LazyGetRequiredService( + typeof(IObjectMapper<>).MakeGenericType(ObjectMapperContext), + ref _objectMapper + ); } + } - protected TService LazyGetNonScopedRequiredService(ref TService reference) => LazyGetNonScopedRequiredService(typeof(TService), ref reference); + private IObjectMapper _objectMapper; - protected TRef LazyGetNonScopedRequiredService(Type serviceType, ref TRef reference) - { - if (reference == null) - { - reference = (TRef)NonScopedServices.GetRequiredService(serviceType); - } + protected Type ObjectMapperContext { get; set; } - return reference; + protected TService LazyGetRequiredService(ref TService reference) => LazyGetRequiredService(typeof(TService), ref reference); + + protected TRef LazyGetRequiredService(Type serviceType, ref TRef reference) + { + if (reference == null) + { + reference = (TRef)ScopedServices.GetRequiredService(serviceType); } - - protected TService LazyGetNonScopedService(ref TService reference) => LazyGetNonScopedService(typeof(TService), ref reference); - protected TRef LazyGetNonScopedService(Type serviceType, ref TRef reference) + return reference; + } + + protected TService LazyGetService(ref TService reference) => LazyGetService(typeof(TService), ref reference); + + protected TRef LazyGetService(Type serviceType, ref TRef reference) + { + if (reference == null) { - if (reference == null) - { - reference = (TRef)NonScopedServices.GetService(serviceType); - } + reference = (TRef)ScopedServices.GetService(serviceType); + } + + return reference; + } + + protected TService LazyGetNonScopedRequiredService(ref TService reference) => LazyGetNonScopedRequiredService(typeof(TService), ref reference); - return reference; + protected TRef LazyGetNonScopedRequiredService(Type serviceType, ref TRef reference) + { + if (reference == null) + { + reference = (TRef)NonScopedServices.GetRequiredService(serviceType); } - [Inject] - protected IServiceProvider NonScopedServices { get; set; } + return reference; + } + + protected TService LazyGetNonScopedService(ref TService reference) => LazyGetNonScopedService(typeof(TService), ref reference); - protected virtual IStringLocalizer CreateLocalizer() + protected TRef LazyGetNonScopedService(Type serviceType, ref TRef reference) + { + if (reference == null) { - if (LocalizationResource != null) - { - return StringLocalizerFactory.Create(LocalizationResource); - } + reference = (TRef)NonScopedServices.GetService(serviceType); + } - var localizer = StringLocalizerFactory.CreateDefaultOrNull(); - if (localizer == null) - { - throw new AbpException($"Set {nameof(LocalizationResource)} or define the default localization resource type (by configuring the {nameof(AbpLocalizationOptions)}.{nameof(AbpLocalizationOptions.DefaultResourceType)}) to be able to use the {nameof(L)} object!"); - } + return reference; + } - return localizer; + [Inject] + protected IServiceProvider NonScopedServices { get; set; } + + protected virtual IStringLocalizer CreateLocalizer() + { + if (LocalizationResource != null) + { + return StringLocalizerFactory.Create(LocalizationResource); } - - protected async Task HandleErrorAsync(Exception exception) + + var localizer = StringLocalizerFactory.CreateDefaultOrNull(); + if (localizer == null) { - Logger.LogException(exception); - await InvokeAsync(async () => - { - await UserExceptionInformer.InformAsync(new UserExceptionInformerContext(exception)); - StateHasChanged(); - }); + throw new AbpException($"Set {nameof(LocalizationResource)} or define the default localization resource type (by configuring the {nameof(AbpLocalizationOptions)}.{nameof(AbpLocalizationOptions.DefaultResourceType)}) to be able to use the {nameof(L)} object!"); } + + return localizer; + } + + protected async Task HandleErrorAsync(Exception exception) + { + Logger.LogException(exception); + await InvokeAsync(async () => + { + await UserExceptionInformer.InformAsync(new UserExceptionInformerContext(exception)); + StateHasChanged(); + }); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/AlertList.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/AlertList.cs index 866095a9b9..6ea0031352 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/AlertList.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/AlertList.cs @@ -5,33 +5,32 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Alerts +namespace Volo.Abp.AspNetCore.Components.Alerts; + +public class AlertList : ObservableCollection { - public class AlertList : ObservableCollection + public void Add(AlertType type, string text, string title = null, bool dismissible = true) { - public void Add(AlertType type, string text, string title = null, bool dismissible = true) - { - Add(new AlertMessage(type, text, title, dismissible)); - } + Add(new AlertMessage(type, text, title, dismissible)); + } - public void Info(string text, string title = null, bool dismissible = true) - { - Add(new AlertMessage(AlertType.Info, text, title, dismissible)); - } + public void Info(string text, string title = null, bool dismissible = true) + { + Add(new AlertMessage(AlertType.Info, text, title, dismissible)); + } - public void Warning(string text, string title = null, bool dismissible = true) - { - Add(new AlertMessage(AlertType.Warning, text, title, dismissible)); - } + public void Warning(string text, string title = null, bool dismissible = true) + { + Add(new AlertMessage(AlertType.Warning, text, title, dismissible)); + } - public void Danger(string text, string title = null, bool dismissible = true) - { - Add(new AlertMessage(AlertType.Danger, text, title, dismissible)); - } + public void Danger(string text, string title = null, bool dismissible = true) + { + Add(new AlertMessage(AlertType.Danger, text, title, dismissible)); + } - public void Success(string text, string title = null, bool dismissible = true) - { - Add(new AlertMessage(AlertType.Success, text, title, dismissible)); - } + public void Success(string text, string title = null, bool dismissible = true) + { + Add(new AlertMessage(AlertType.Success, text, title, dismissible)); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/AlertMessage.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/AlertMessage.cs index 1b6a7dd21d..7a38e422a0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/AlertMessage.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/AlertMessage.cs @@ -1,30 +1,28 @@ using JetBrains.Annotations; -namespace Volo.Abp.AspNetCore.Components.Alerts +namespace Volo.Abp.AspNetCore.Components.Alerts; + +public class AlertMessage { - public class AlertMessage - { - [NotNull] - public string Text - { - get => _text; - set => _text = Check.NotNullOrWhiteSpace(value, nameof(value)); - } - private string _text; + [NotNull] + public string Text { + get => _text; + set => _text = Check.NotNullOrWhiteSpace(value, nameof(value)); + } + private string _text; - public AlertType Type { get; set; } + public AlertType Type { get; set; } - [CanBeNull] - public string Title { get; set; } + [CanBeNull] + public string Title { get; set; } - public bool Dismissible { get; set; } + public bool Dismissible { get; set; } - public AlertMessage(AlertType type, [NotNull] string text, string title = null, bool dismissible = true) - { - Type = type; - Text = Check.NotNullOrWhiteSpace(text, nameof(text)); - Title = title; - Dismissible = dismissible; - } + public AlertMessage(AlertType type, [NotNull] string text, string title = null, bool dismissible = true) + { + Type = type; + Text = Check.NotNullOrWhiteSpace(text, nameof(text)); + Title = title; + Dismissible = dismissible; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/AlertType.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/AlertType.cs index 4703158b12..6149f9bb24 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/AlertType.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/AlertType.cs @@ -4,18 +4,17 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Alerts +namespace Volo.Abp.AspNetCore.Components.Alerts; + +public enum AlertType { - public enum AlertType - { - Default, - Primary, - Secondary, - Success, - Danger, - Warning, - Info, - Light, - Dark - } + Default, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/IAlertManager.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/IAlertManager.cs index 542b576b01..0e6344baaf 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/IAlertManager.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Alerts/IAlertManager.cs @@ -4,10 +4,9 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Alerts +namespace Volo.Abp.AspNetCore.Components.Alerts; + +public interface IAlertManager { - public interface IAlertManager - { - AlertList Alerts { get; } - } + AlertList Alerts { get; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/DependencyInjection/AbpWebAssemblyConventionalRegistrar.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/DependencyInjection/AbpWebAssemblyConventionalRegistrar.cs index 3929f6c4cc..776c80108a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/DependencyInjection/AbpWebAssemblyConventionalRegistrar.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/DependencyInjection/AbpWebAssemblyConventionalRegistrar.cs @@ -3,23 +3,22 @@ using Microsoft.AspNetCore.Components; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.DependencyInjection +namespace Volo.Abp.AspNetCore.Components.DependencyInjection; + +public class AbpWebAssemblyConventionalRegistrar : DefaultConventionalRegistrar { - public class AbpWebAssemblyConventionalRegistrar : DefaultConventionalRegistrar + protected override bool IsConventionalRegistrationDisabled(Type type) { - protected override bool IsConventionalRegistrationDisabled(Type type) - { - return !IsComponent(type) || base.IsConventionalRegistrationDisabled(type); - } + return !IsComponent(type) || base.IsConventionalRegistrationDisabled(type); + } - private static bool IsComponent(Type type) - { - return typeof(ComponentBase).IsAssignableFrom(type); - } + private static bool IsComponent(Type type) + { + return typeof(ComponentBase).IsAssignableFrom(type); + } - protected override ServiceLifetime? GetDefaultLifeTimeOrNull(Type type) - { - return ServiceLifetime.Transient; - } + protected override ServiceLifetime? GetDefaultLifeTimeOrNull(Type type) + { + return ServiceLifetime.Transient; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/DependencyInjection/ServiceProviderComponentActivator.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/DependencyInjection/ServiceProviderComponentActivator.cs index 3841f48c4a..001659395e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/DependencyInjection/ServiceProviderComponentActivator.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/DependencyInjection/ServiceProviderComponentActivator.cs @@ -1,32 +1,31 @@ using System; using Microsoft.AspNetCore.Components; -namespace Volo.Abp.AspNetCore.Components.DependencyInjection +namespace Volo.Abp.AspNetCore.Components.DependencyInjection; + +public class ServiceProviderComponentActivator : IComponentActivator { - public class ServiceProviderComponentActivator : IComponentActivator + public IServiceProvider ServiceProvider { get; } + + public ServiceProviderComponentActivator(IServiceProvider serviceProvider) + { + ServiceProvider = serviceProvider; + } + + public IComponent CreateInstance(Type componentType) { - public IServiceProvider ServiceProvider { get; } + var instance = ServiceProvider.GetService(componentType); - public ServiceProviderComponentActivator(IServiceProvider serviceProvider) + if (instance == null) { - ServiceProvider = serviceProvider; + instance = Activator.CreateInstance(componentType); } - public IComponent CreateInstance(Type componentType) + if (!(instance is IComponent component)) { - var instance = ServiceProvider.GetService(componentType); - - if (instance == null) - { - instance = Activator.CreateInstance(componentType); - } - - if (!(instance is IComponent component)) - { - throw new ArgumentException($"The type {componentType.FullName} does not implement {nameof(IComponent)}.", nameof(componentType)); - } - - return component; + throw new ArgumentException($"The type {componentType.FullName} does not implement {nameof(IComponent)}.", nameof(componentType)); } + + return component; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/ExceptionHandling/IUserExceptionInformer.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/ExceptionHandling/IUserExceptionInformer.cs index aaab5057eb..26b04b805e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/ExceptionHandling/IUserExceptionInformer.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/ExceptionHandling/IUserExceptionInformer.cs @@ -1,11 +1,10 @@ using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.ExceptionHandling +namespace Volo.Abp.AspNetCore.Components.ExceptionHandling; + +public interface IUserExceptionInformer { - public interface IUserExceptionInformer - { - void Inform(UserExceptionInformerContext context); - - Task InformAsync(UserExceptionInformerContext context); - } + void Inform(UserExceptionInformerContext context); + + Task InformAsync(UserExceptionInformerContext context); } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/ExceptionHandling/NullUserExceptionInformer.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/ExceptionHandling/NullUserExceptionInformer.cs index 56522bef01..3a23390f51 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/ExceptionHandling/NullUserExceptionInformer.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/ExceptionHandling/NullUserExceptionInformer.cs @@ -1,18 +1,17 @@ using System.Threading.Tasks; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.ExceptionHandling +namespace Volo.Abp.AspNetCore.Components.ExceptionHandling; + +public class NullUserExceptionInformer : IUserExceptionInformer, ISingletonDependency { - public class NullUserExceptionInformer : IUserExceptionInformer, ISingletonDependency + public void Inform(UserExceptionInformerContext context) { - public void Inform(UserExceptionInformerContext context) - { - - } - public Task InformAsync(UserExceptionInformerContext context) - { - return Task.CompletedTask; - } } -} \ No newline at end of file + + public Task InformAsync(UserExceptionInformerContext context) + { + return Task.CompletedTask; + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/ExceptionHandling/UserExceptionInformerContext.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/ExceptionHandling/UserExceptionInformerContext.cs index d174a98488..978e6b82e9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/ExceptionHandling/UserExceptionInformerContext.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/ExceptionHandling/UserExceptionInformerContext.cs @@ -1,16 +1,15 @@ using System; using JetBrains.Annotations; -namespace Volo.Abp.AspNetCore.Components.ExceptionHandling +namespace Volo.Abp.AspNetCore.Components.ExceptionHandling; + +public class UserExceptionInformerContext { - public class UserExceptionInformerContext - { - [NotNull] - public Exception Exception { get; } + [NotNull] + public Exception Exception { get; } - public UserExceptionInformerContext(Exception exception) - { - Exception = exception; - } + public UserExceptionInformerContext(Exception exception) + { + Exception = exception; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/IUiMessageService.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/IUiMessageService.cs index 4f43cb90d6..86e878d2a9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/IUiMessageService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/IUiMessageService.cs @@ -1,18 +1,17 @@ using System; using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Messages +namespace Volo.Abp.AspNetCore.Components.Messages; + +public interface IUiMessageService { - public interface IUiMessageService - { - Task Info(string message, string title = null, Action options = null); + Task Info(string message, string title = null, Action options = null); - Task Success(string message, string title = null, Action options = null); + Task Success(string message, string title = null, Action options = null); - Task Warn(string message, string title = null, Action options = null); + Task Warn(string message, string title = null, Action options = null); - Task Error(string message, string title = null, Action options = null); + Task Error(string message, string title = null, Action options = null); - Task Confirm(string message, string title = null, Action options = null); - } + Task Confirm(string message, string title = null, Action options = null); } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/UiMessageEventArgs.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/UiMessageEventArgs.cs index 51ef8ed558..4d73fb2812 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/UiMessageEventArgs.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/UiMessageEventArgs.cs @@ -1,35 +1,34 @@ using System; using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Messages +namespace Volo.Abp.AspNetCore.Components.Messages; + +public class UiMessageEventArgs : EventArgs { - public class UiMessageEventArgs : EventArgs + public UiMessageEventArgs(UiMessageType messageType, string message, string title, UiMessageOptions options) { - public UiMessageEventArgs(UiMessageType messageType, string message, string title, UiMessageOptions options) - { - MessageType = messageType; - Message = message; - Title = title; - Options = options; - } + MessageType = messageType; + Message = message; + Title = title; + Options = options; + } - public UiMessageEventArgs(UiMessageType messageType, string message, string title, UiMessageOptions options, TaskCompletionSource callback) - { - MessageType = messageType; - Message = message; - Title = title; - Options = options; - Callback = callback; - } + public UiMessageEventArgs(UiMessageType messageType, string message, string title, UiMessageOptions options, TaskCompletionSource callback) + { + MessageType = messageType; + Message = message; + Title = title; + Options = options; + Callback = callback; + } - public UiMessageType MessageType { get; set; } + public UiMessageType MessageType { get; set; } - public string Message { get; } + public string Message { get; } - public string Title { get; } + public string Title { get; } - public UiMessageOptions Options { get; } + public UiMessageOptions Options { get; } - public TaskCompletionSource Callback { get; } - } + public TaskCompletionSource Callback { get; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/UiMessageOptions.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/UiMessageOptions.cs index 9da4bcad60..5cb8e56eee 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/UiMessageOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/UiMessageOptions.cs @@ -1,53 +1,52 @@ -namespace Volo.Abp.AspNetCore.Components.Messages +namespace Volo.Abp.AspNetCore.Components.Messages; + +/// +/// Options to override message dialog appearance. +/// +public class UiMessageOptions { /// - /// Options to override message dialog appearance. - /// - public class UiMessageOptions - { - /// - /// If true, the message dialogue will be centered on the screen. - /// - public bool CenterMessage { get; set; } - - /// - /// If true, the message dialogue will show the large icon for the current message type. - /// - public bool ShowMessageIcon { get; set; } - - /// - /// Overrides the build-in message icon. - /// - public object MessageIcon { get; set; } - - /// - /// Custom text for the Ok button. - /// - public string OkButtonText { get; set; } - - /// - /// Custom icon for the Ok button. - /// - public object OkButtonIcon { get; set; } - - /// - /// Custom text for the Confirmation button. - /// - public string ConfirmButtonText { get; set; } - - /// - /// Custom icon for the Confirmation button. - /// - public object ConfirmButtonIcon { get; set; } - - /// - /// Custom text for the Cancel button. - /// - public string CancelButtonText { get; set; } - - /// - /// Custom icon for the Cancel button. - /// - public object CancelButtonIcon { get; set; } - } + /// If true, the message dialogue will be centered on the screen. + /// + public bool CenterMessage { get; set; } + + /// + /// If true, the message dialogue will show the large icon for the current message type. + /// + public bool ShowMessageIcon { get; set; } + + /// + /// Overrides the build-in message icon. + /// + public object MessageIcon { get; set; } + + /// + /// Custom text for the Ok button. + /// + public string OkButtonText { get; set; } + + /// + /// Custom icon for the Ok button. + /// + public object OkButtonIcon { get; set; } + + /// + /// Custom text for the Confirmation button. + /// + public string ConfirmButtonText { get; set; } + + /// + /// Custom icon for the Confirmation button. + /// + public object ConfirmButtonIcon { get; set; } + + /// + /// Custom text for the Cancel button. + /// + public string CancelButtonText { get; set; } + + /// + /// Custom icon for the Cancel button. + /// + public object CancelButtonIcon { get; set; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/UiMessageType.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/UiMessageType.cs index 677297055e..0f8264ecd1 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/UiMessageType.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Messages/UiMessageType.cs @@ -1,14 +1,13 @@ -namespace Volo.Abp.AspNetCore.Components.Messages +namespace Volo.Abp.AspNetCore.Components.Messages; + +/// +/// Defines the possible ui message types with predefined actions. +/// +public enum UiMessageType { - /// - /// Defines the possible ui message types with predefined actions. - /// - public enum UiMessageType - { - Info, - Success, - Warning, - Error, - Confirmation, - } + Info, + Success, + Warning, + Error, + Confirmation, } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/IUiNotificationService.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/IUiNotificationService.cs index dfbde9b1eb..394fdec2a7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/IUiNotificationService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/IUiNotificationService.cs @@ -1,16 +1,15 @@ using System; using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Notifications +namespace Volo.Abp.AspNetCore.Components.Notifications; + +public interface IUiNotificationService { - public interface IUiNotificationService - { - Task Info(string message, string title = null, Action options = null); - - Task Success(string message, string title = null, Action options = null); - - Task Warn(string message, string title = null, Action options = null); - - Task Error(string message, string title = null, Action options = null); - } + Task Info(string message, string title = null, Action options = null); + + Task Success(string message, string title = null, Action options = null); + + Task Warn(string message, string title = null, Action options = null); + + Task Error(string message, string title = null, Action options = null); } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/NullUiNotificationService.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/NullUiNotificationService.cs index ed8217348e..6c47586325 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/NullUiNotificationService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/NullUiNotificationService.cs @@ -2,27 +2,26 @@ using System.Threading.Tasks; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Notifications +namespace Volo.Abp.AspNetCore.Components.Notifications; + +public class NullUiNotificationService : IUiNotificationService, ITransientDependency { - public class NullUiNotificationService : IUiNotificationService, ITransientDependency + public Task Info(string message, string title = null, Action options = null) { - public Task Info(string message, string title = null, Action options = null) - { - return Task.CompletedTask; - } + return Task.CompletedTask; + } - public Task Success(string message, string title = null, Action options = null) - { - return Task.CompletedTask; - } + public Task Success(string message, string title = null, Action options = null) + { + return Task.CompletedTask; + } - public Task Warn(string message, string title = null, Action options = null) - { - return Task.CompletedTask; - } - public Task Error(string message, string title = null, Action options = null) - { - return Task.CompletedTask; - } + public Task Warn(string message, string title = null, Action options = null) + { + return Task.CompletedTask; + } + public Task Error(string message, string title = null, Action options = null) + { + return Task.CompletedTask; } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/UiNotificationEventArgs.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/UiNotificationEventArgs.cs index 30d497d2ab..554450d025 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/UiNotificationEventArgs.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/UiNotificationEventArgs.cs @@ -1,23 +1,22 @@ using System; -namespace Volo.Abp.AspNetCore.Components.Notifications +namespace Volo.Abp.AspNetCore.Components.Notifications; + +public class UiNotificationEventArgs : EventArgs { - public class UiNotificationEventArgs : EventArgs + public UiNotificationEventArgs(UiNotificationType notificationType, string message, string title, UiNotificationOptions options) { - public UiNotificationEventArgs(UiNotificationType notificationType, string message, string title, UiNotificationOptions options) - { - NotificationType = notificationType; - Message = message; - Title = title; - Options = options; - } + NotificationType = notificationType; + Message = message; + Title = title; + Options = options; + } - public UiNotificationType NotificationType { get; set; } + public UiNotificationType NotificationType { get; set; } - public string Message { get; } + public string Message { get; } - public string Title { get; } + public string Title { get; } - public UiNotificationOptions Options { get; } - } + public UiNotificationOptions Options { get; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/UiNotificationOptions.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/UiNotificationOptions.cs index eb1c5d7102..c3f6a74fa5 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/UiNotificationOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/UiNotificationOptions.cs @@ -1,20 +1,19 @@ using Volo.Abp.Localization; -namespace Volo.Abp.AspNetCore.Components.Notifications +namespace Volo.Abp.AspNetCore.Components.Notifications; + +/// +/// Options to override notification appearance. +/// +public class UiNotificationOptions { /// - /// Options to override notification appearance. + /// Custom text for the Ok button. /// - public class UiNotificationOptions - { - /// - /// Custom text for the Ok button. - /// - public ILocalizableString OkButtonText { get; set; } + public ILocalizableString OkButtonText { get; set; } - /// - /// Custom icon for the Ok button. - /// - public object OkButtonIcon { get; set; } - } + /// + /// Custom icon for the Ok button. + /// + public object OkButtonIcon { get; set; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/UiNotificationType.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/UiNotificationType.cs index 3547d451e9..bd31445558 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/UiNotificationType.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Notifications/UiNotificationType.cs @@ -1,10 +1,9 @@ -namespace Volo.Abp.AspNetCore.Components.Notifications +namespace Volo.Abp.AspNetCore.Components.Notifications; + +public enum UiNotificationType { - public enum UiNotificationType - { - Info, - Success, - Warning, - Error, - } + Info, + Success, + Warning, + Error, } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/IUiPageProgressService.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/IUiPageProgressService.cs index fa9781e2d9..156c763722 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/IUiPageProgressService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/IUiPageProgressService.cs @@ -1,21 +1,20 @@ using System; using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Components.Progression +namespace Volo.Abp.AspNetCore.Components.Progression; + +public interface IUiPageProgressService { - public interface IUiPageProgressService - { - /// - /// An event raised after the notification is received. - /// - public event EventHandler ProgressChanged; + /// + /// An event raised after the notification is received. + /// + public event EventHandler ProgressChanged; - /// - /// Sets the progress percentage. - /// - /// Value of the progress from 0 to 100, or null for indeterminate progress. - /// Additional options. - /// Awaitable task. - Task Go(int? percentage, Action options = null); - } + /// + /// Sets the progress percentage. + /// + /// Value of the progress from 0 to 100, or null for indeterminate progress. + /// Additional options. + /// Awaitable task. + Task Go(int? percentage, Action options = null); } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/NullUiPageProgressService.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/NullUiPageProgressService.cs index 5c375e2b40..2277122418 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/NullUiPageProgressService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/NullUiPageProgressService.cs @@ -2,15 +2,14 @@ using System.Threading.Tasks; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Components.Progression +namespace Volo.Abp.AspNetCore.Components.Progression; + +public class NullUiPageProgressService : IUiPageProgressService, ISingletonDependency { - public class NullUiPageProgressService : IUiPageProgressService, ISingletonDependency - { - public event EventHandler ProgressChanged; + public event EventHandler ProgressChanged; - public Task Go(int? percentage, Action options = null) - { - return Task.CompletedTask; - } + public Task Go(int? percentage, Action options = null) + { + return Task.CompletedTask; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressEventArgs.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressEventArgs.cs index 74af5cb971..adb4b73a64 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressEventArgs.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressEventArgs.cs @@ -1,17 +1,16 @@ using System; -namespace Volo.Abp.AspNetCore.Components.Progression +namespace Volo.Abp.AspNetCore.Components.Progression; + +public class UiPageProgressEventArgs : EventArgs { - public class UiPageProgressEventArgs : EventArgs + public UiPageProgressEventArgs(int? percentage, UiPageProgressOptions options) { - public UiPageProgressEventArgs(int? percentage, UiPageProgressOptions options) - { - Percentage = percentage; - Options = options; - } + Percentage = percentage; + Options = options; + } - public int? Percentage { get; } + public int? Percentage { get; } - public UiPageProgressOptions Options { get; } - } + public UiPageProgressOptions Options { get; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressOptions.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressOptions.cs index 0ce243552d..d747e60d03 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressOptions.cs @@ -1,13 +1,12 @@ -namespace Volo.Abp.AspNetCore.Components.Progression +namespace Volo.Abp.AspNetCore.Components.Progression; + +/// +/// Options to override page progress appearance. +/// +public class UiPageProgressOptions { /// - /// Options to override page progress appearance. + /// Type or color, of the page progress. /// - public class UiPageProgressOptions - { - /// - /// Type or color, of the page progress. - /// - public UiPageProgressType Type { get; set; } - } + public UiPageProgressType Type { get; set; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressType.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressType.cs index db1d00932d..fe9c02b98e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressType.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/UiPageProgressType.cs @@ -1,11 +1,10 @@ -namespace Volo.Abp.AspNetCore.Components.Progression +namespace Volo.Abp.AspNetCore.Components.Progression; + +public enum UiPageProgressType { - public enum UiPageProgressType - { - Default, - Info, - Success, - Warning, - Error, - } + Default, + Info, + Success, + Warning, + Error, } diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Microsoft/AspNetCore/Builder/AbpAspNetCoreMultiTenancyApplicationBuilderExtensions.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Microsoft/AspNetCore/Builder/AbpAspNetCoreMultiTenancyApplicationBuilderExtensions.cs index afc05f9233..ceb872e5c3 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Microsoft/AspNetCore/Builder/AbpAspNetCoreMultiTenancyApplicationBuilderExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Microsoft/AspNetCore/Builder/AbpAspNetCoreMultiTenancyApplicationBuilderExtensions.cs @@ -1,13 +1,12 @@ using Volo.Abp.AspNetCore.MultiTenancy; -namespace Microsoft.AspNetCore.Builder +namespace Microsoft.AspNetCore.Builder; + +public static class AbpAspNetCoreMultiTenancyApplicationBuilderExtensions { - public static class AbpAspNetCoreMultiTenancyApplicationBuilderExtensions + public static IApplicationBuilder UseMultiTenancy(this IApplicationBuilder app) { - public static IApplicationBuilder UseMultiTenancy(this IApplicationBuilder app) - { - return app - .UseMiddleware(); - } + return app + .UseMiddleware(); } } diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyModule.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyModule.cs index 1d0268556f..ad36cf0f11 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyModule.cs @@ -2,24 +2,23 @@ using Volo.Abp.Modularity; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.MultiTenancy +namespace Volo.Abp.AspNetCore.MultiTenancy; + +[DependsOn( + typeof(AbpMultiTenancyModule), + typeof(AbpAspNetCoreModule) + )] +public class AbpAspNetCoreMultiTenancyModule : AbpModule { - [DependsOn( - typeof(AbpMultiTenancyModule), - typeof(AbpAspNetCoreModule) - )] - public class AbpAspNetCoreMultiTenancyModule : AbpModule + public override void ConfigureServices(ServiceConfigurationContext context) { - public override void ConfigureServices(ServiceConfigurationContext context) + Configure(options => { - Configure(options => - { - options.TenantResolvers.Add(new QueryStringTenantResolveContributor()); - options.TenantResolvers.Add(new FormTenantResolveContributor()); - options.TenantResolvers.Add(new RouteTenantResolveContributor()); - options.TenantResolvers.Add(new HeaderTenantResolveContributor()); - options.TenantResolvers.Add(new CookieTenantResolveContributor()); - }); - } + options.TenantResolvers.Add(new QueryStringTenantResolveContributor()); + options.TenantResolvers.Add(new FormTenantResolveContributor()); + options.TenantResolvers.Add(new RouteTenantResolveContributor()); + options.TenantResolvers.Add(new HeaderTenantResolveContributor()); + options.TenantResolvers.Add(new CookieTenantResolveContributor()); + }); } } diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyOptions.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyOptions.cs index b2ecf708c5..4f89ef7b97 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpAspNetCoreMultiTenancyOptions.cs @@ -5,35 +5,34 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.MultiTenancy +namespace Volo.Abp.AspNetCore.MultiTenancy; + +public class AbpAspNetCoreMultiTenancyOptions { - public class AbpAspNetCoreMultiTenancyOptions - { - /// - /// Default: . - /// - public string TenantKey { get; set; } + /// + /// Default: . + /// + public string TenantKey { get; set; } - public Func MultiTenancyMiddlewareErrorPageBuilder { get; set; } + public Func MultiTenancyMiddlewareErrorPageBuilder { get; set; } - public AbpAspNetCoreMultiTenancyOptions() + public AbpAspNetCoreMultiTenancyOptions() + { + TenantKey = TenantResolverConsts.DefaultTenantKey; + MultiTenancyMiddlewareErrorPageBuilder = async (context, exception) => { - TenantKey = TenantResolverConsts.DefaultTenantKey; - MultiTenancyMiddlewareErrorPageBuilder = async (context, exception)=> - { - context.Response.StatusCode = (int) HttpStatusCode.InternalServerError;; - context.Response.ContentType = "text/html"; + context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; ; + context.Response.ContentType = "text/html"; - var message = exception.Message; - var details = exception is BusinessException businessException ? businessException.Details : string.Empty; + var message = exception.Message; + var details = exception is BusinessException businessException ? businessException.Details : string.Empty; - await context.Response.WriteAsync($"\r\n"); - await context.Response.WriteAsync($"

{message}

{details}
\r\n"); - await context.Response.WriteAsync("\r\n"); + await context.Response.WriteAsync($"\r\n"); + await context.Response.WriteAsync($"

{message}

{details}
\r\n"); + await context.Response.WriteAsync("\r\n"); // Note the 500 spaces are to work around an IE 'feature' await context.Response.WriteAsync(new string(' ', 500)); - }; - } + }; } } diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpMultiTenancyCookieHelper.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpMultiTenancyCookieHelper.cs index 2c2b2de0e9..d4a91f3b12 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpMultiTenancyCookieHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/AbpMultiTenancyCookieHelper.cs @@ -1,33 +1,32 @@ using System; using Microsoft.AspNetCore.Http; -namespace Volo.Abp.AspNetCore.MultiTenancy +namespace Volo.Abp.AspNetCore.MultiTenancy; + +public static class AbpMultiTenancyCookieHelper { - public static class AbpMultiTenancyCookieHelper + public static void SetTenantCookie( + HttpContext context, + Guid? tenantId, + string tenantKey) { - public static void SetTenantCookie( - HttpContext context, - Guid? tenantId, - string tenantKey) + if (tenantId != null) + { + context.Response.Cookies.Append( + tenantKey, + tenantId.ToString(), + new CookieOptions + { + Path = "/", + HttpOnly = false, + IsEssential = true, + Expires = DateTimeOffset.Now.AddYears(10) + } + ); + } + else { - if (tenantId != null) - { - context.Response.Cookies.Append( - tenantKey, - tenantId.ToString(), - new CookieOptions - { - Path = "/", - HttpOnly = false, - IsEssential = true, - Expires = DateTimeOffset.Now.AddYears(10) - } - ); - } - else - { - context.Response.Cookies.Delete(tenantKey); - } + context.Response.Cookies.Delete(tenantKey); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/CookieTenantResolveContributor.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/CookieTenantResolveContributor.cs index dd7ca5685e..1eabd3ebfb 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/CookieTenantResolveContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/CookieTenantResolveContributor.cs @@ -2,17 +2,16 @@ using Microsoft.AspNetCore.Http; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.MultiTenancy +namespace Volo.Abp.AspNetCore.MultiTenancy; + +public class CookieTenantResolveContributor : HttpTenantResolveContributorBase { - public class CookieTenantResolveContributor : HttpTenantResolveContributorBase - { - public const string ContributorName = "Cookie"; + public const string ContributorName = "Cookie"; - public override string Name => ContributorName; + public override string Name => ContributorName; - protected override Task GetTenantIdOrNameFromHttpContextOrNullAsync(ITenantResolveContext context, HttpContext httpContext) - { - return Task.FromResult(httpContext.Request.Cookies[context.GetAbpAspNetCoreMultiTenancyOptions().TenantKey]); - } + protected override Task GetTenantIdOrNameFromHttpContextOrNullAsync(ITenantResolveContext context, HttpContext httpContext) + { + return Task.FromResult(httpContext.Request.Cookies[context.GetAbpAspNetCoreMultiTenancyOptions().TenantKey]); } } diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/DomainTenantResolveContributor.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/DomainTenantResolveContributor.cs index 255e0ac89b..78f92ac20e 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/DomainTenantResolveContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/DomainTenantResolveContributor.cs @@ -4,38 +4,37 @@ using Microsoft.AspNetCore.Http; using Volo.Abp.MultiTenancy; using Volo.Abp.Text.Formatting; -namespace Volo.Abp.AspNetCore.MultiTenancy +namespace Volo.Abp.AspNetCore.MultiTenancy; + +//TODO: Create a better domain format. We can accept regex for example. + +public class DomainTenantResolveContributor : HttpTenantResolveContributorBase { - //TODO: Create a better domain format. We can accept regex for example. + public const string ContributorName = "Domain"; - public class DomainTenantResolveContributor : HttpTenantResolveContributorBase - { - public const string ContributorName = "Domain"; + public override string Name => ContributorName; - public override string Name => ContributorName; + private static readonly string[] ProtocolPrefixes = { "http://", "https://" }; - private static readonly string[] ProtocolPrefixes = { "http://", "https://" }; + private readonly string _domainFormat; - private readonly string _domainFormat; + public DomainTenantResolveContributor(string domainFormat) + { + _domainFormat = domainFormat.RemovePreFix(ProtocolPrefixes); + } - public DomainTenantResolveContributor(string domainFormat) + protected override Task GetTenantIdOrNameFromHttpContextOrNullAsync(ITenantResolveContext context, HttpContext httpContext) + { + if (!httpContext.Request.Host.HasValue) { - _domainFormat = domainFormat.RemovePreFix(ProtocolPrefixes); + return Task.FromResult(null); } - protected override Task GetTenantIdOrNameFromHttpContextOrNullAsync(ITenantResolveContext context, HttpContext httpContext) - { - if (!httpContext.Request.Host.HasValue) - { - return Task.FromResult(null); - } - - var hostName = httpContext.Request.Host.Value.RemovePreFix(ProtocolPrefixes); - var extractResult = FormattedStringValueExtracter.Extract(hostName, _domainFormat, ignoreCase: true); + var hostName = httpContext.Request.Host.Value.RemovePreFix(ProtocolPrefixes); + var extractResult = FormattedStringValueExtracter.Extract(hostName, _domainFormat, ignoreCase: true); - context.Handled = true; + context.Handled = true; - return Task.FromResult(extractResult.IsMatch ? extractResult.Matches[0].Value : null); - } + return Task.FromResult(extractResult.IsMatch ? extractResult.Matches[0].Value : null); } } diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/FormTenantResolveContributor.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/FormTenantResolveContributor.cs index 77c12bef7b..67ef0a4c2c 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/FormTenantResolveContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/FormTenantResolveContributor.cs @@ -3,23 +3,22 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.MultiTenancy +namespace Volo.Abp.AspNetCore.MultiTenancy; + +public class FormTenantResolveContributor : HttpTenantResolveContributorBase { - public class FormTenantResolveContributor : HttpTenantResolveContributorBase - { - public const string ContributorName = "Form"; + public const string ContributorName = "Form"; - public override string Name => ContributorName; + public override string Name => ContributorName; - protected override async Task GetTenantIdOrNameFromHttpContextOrNullAsync(ITenantResolveContext context, HttpContext httpContext) + protected override async Task GetTenantIdOrNameFromHttpContextOrNullAsync(ITenantResolveContext context, HttpContext httpContext) + { + if (!httpContext.Request.HasFormContentType) { - if (!httpContext.Request.HasFormContentType) - { - return null; - } - - var form = await httpContext.Request.ReadFormAsync(); - return form[context.GetAbpAspNetCoreMultiTenancyOptions().TenantKey]; + return null; } + + var form = await httpContext.Request.ReadFormAsync(); + return form[context.GetAbpAspNetCoreMultiTenancyOptions().TenantKey]; } } diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HeaderTenantResolveContributor.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HeaderTenantResolveContributor.cs index a6a52290be..a0bec0d606 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HeaderTenantResolveContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HeaderTenantResolveContributor.cs @@ -6,43 +6,42 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.MultiTenancy +namespace Volo.Abp.AspNetCore.MultiTenancy; + +public class HeaderTenantResolveContributor : HttpTenantResolveContributorBase { - public class HeaderTenantResolveContributor : HttpTenantResolveContributorBase - { - public const string ContributorName = "Header"; + public const string ContributorName = "Header"; - public override string Name => ContributorName; + public override string Name => ContributorName; - protected override Task GetTenantIdOrNameFromHttpContextOrNullAsync(ITenantResolveContext context, HttpContext httpContext) + protected override Task GetTenantIdOrNameFromHttpContextOrNullAsync(ITenantResolveContext context, HttpContext httpContext) + { + if (httpContext.Request.Headers.IsNullOrEmpty()) { - if (httpContext.Request.Headers.IsNullOrEmpty()) - { - return Task.FromResult((string)null); - } - - var tenantIdKey = context.GetAbpAspNetCoreMultiTenancyOptions().TenantKey; - - var tenantIdHeader = httpContext.Request.Headers[tenantIdKey]; - if (tenantIdHeader == string.Empty || tenantIdHeader.Count < 1) - { - return Task.FromResult((string)null); - } + return Task.FromResult((string)null); + } - if (tenantIdHeader.Count > 1) - { - Log(context, $"HTTP request includes more than one {tenantIdKey} header value. First one will be used. All of them: {tenantIdHeader.JoinAsString(", ")}"); - } + var tenantIdKey = context.GetAbpAspNetCoreMultiTenancyOptions().TenantKey; - return Task.FromResult(tenantIdHeader.First()); + var tenantIdHeader = httpContext.Request.Headers[tenantIdKey]; + if (tenantIdHeader == string.Empty || tenantIdHeader.Count < 1) + { + return Task.FromResult((string)null); } - protected virtual void Log(ITenantResolveContext context, string text) + if (tenantIdHeader.Count > 1) { - context - .ServiceProvider - .GetRequiredService>() - .LogWarning(text); + Log(context, $"HTTP request includes more than one {tenantIdKey} header value. First one will be used. All of them: {tenantIdHeader.JoinAsString(", ")}"); } + + return Task.FromResult(tenantIdHeader.First()); + } + + protected virtual void Log(ITenantResolveContext context, string text) + { + context + .ServiceProvider + .GetRequiredService>() + .LogWarning(text); } } diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HttpContextTenantResolveResultAccessor.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HttpContextTenantResolveResultAccessor.cs index 593d9a7024..1197e16baa 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HttpContextTenantResolveResultAccessor.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HttpContextTenantResolveResultAccessor.cs @@ -2,32 +2,29 @@ using Volo.Abp.DependencyInjection; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.MultiTenancy +namespace Volo.Abp.AspNetCore.MultiTenancy; + +[Dependency(ReplaceServices = true)] +public class HttpContextTenantResolveResultAccessor : ITenantResolveResultAccessor, ITransientDependency { - [Dependency(ReplaceServices = true)] - public class HttpContextTenantResolveResultAccessor : ITenantResolveResultAccessor, ITransientDependency - { - public const string HttpContextItemName = "__AbpTenantResolveResult"; + public const string HttpContextItemName = "__AbpTenantResolveResult"; - public TenantResolveResult Result - { - get => _httpContextAccessor.HttpContext?.Items[HttpContextItemName] as TenantResolveResult; - set + public TenantResolveResult Result { + get => _httpContextAccessor.HttpContext?.Items[HttpContextItemName] as TenantResolveResult; + set { + if (_httpContextAccessor.HttpContext == null) { - if (_httpContextAccessor.HttpContext == null) - { - return; - } - - _httpContextAccessor.HttpContext.Items[HttpContextItemName] = value; + return; } + + _httpContextAccessor.HttpContext.Items[HttpContextItemName] = value; } + } - private readonly IHttpContextAccessor _httpContextAccessor; + private readonly IHttpContextAccessor _httpContextAccessor; - public HttpContextTenantResolveResultAccessor(IHttpContextAccessor httpContextAccessor) - { - _httpContextAccessor = httpContextAccessor; - } + public HttpContextTenantResolveResultAccessor(IHttpContextAccessor httpContextAccessor) + { + _httpContextAccessor = httpContextAccessor; } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HttpTenantResolveContributorBase.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HttpTenantResolveContributorBase.cs index 3b454b5ef9..b0900c899f 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HttpTenantResolveContributorBase.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/HttpTenantResolveContributorBase.cs @@ -6,39 +6,38 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.MultiTenancy +namespace Volo.Abp.AspNetCore.MultiTenancy; + +public abstract class HttpTenantResolveContributorBase : TenantResolveContributorBase { - public abstract class HttpTenantResolveContributorBase : TenantResolveContributorBase + public override async Task ResolveAsync(ITenantResolveContext context) { - public override async Task ResolveAsync(ITenantResolveContext context) + var httpContext = context.GetHttpContext(); + if (httpContext == null) { - var httpContext = context.GetHttpContext(); - if (httpContext == null) - { - return; - } - - try - { - await ResolveFromHttpContextAsync(context, httpContext); - } - catch (Exception e) - { - context.ServiceProvider - .GetRequiredService>() - .LogWarning(e.ToString()); - } + return; } - protected virtual async Task ResolveFromHttpContextAsync(ITenantResolveContext context, HttpContext httpContext) + try { - var tenantIdOrName = await GetTenantIdOrNameFromHttpContextOrNullAsync(context, httpContext); - if (!tenantIdOrName.IsNullOrEmpty()) - { - context.TenantIdOrName = tenantIdOrName; - } + await ResolveFromHttpContextAsync(context, httpContext); } + catch (Exception e) + { + context.ServiceProvider + .GetRequiredService>() + .LogWarning(e.ToString()); + } + } - protected abstract Task GetTenantIdOrNameFromHttpContextOrNullAsync([NotNull] ITenantResolveContext context, [NotNull] HttpContext httpContext); + protected virtual async Task ResolveFromHttpContextAsync(ITenantResolveContext context, HttpContext httpContext) + { + var tenantIdOrName = await GetTenantIdOrNameFromHttpContextOrNullAsync(context, httpContext); + if (!tenantIdOrName.IsNullOrEmpty()) + { + context.TenantIdOrName = tenantIdOrName; + } } + + protected abstract Task GetTenantIdOrNameFromHttpContextOrNullAsync([NotNull] ITenantResolveContext context, [NotNull] HttpContext httpContext); } diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs index f3d21a804b..9cd89272f4 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs @@ -11,112 +11,111 @@ using Volo.Abp.Localization; using Volo.Abp.MultiTenancy; using Volo.Abp.Settings; -namespace Volo.Abp.AspNetCore.MultiTenancy +namespace Volo.Abp.AspNetCore.MultiTenancy; + +public class MultiTenancyMiddleware : IMiddleware, ITransientDependency { - public class MultiTenancyMiddleware : IMiddleware, ITransientDependency + private readonly ITenantConfigurationProvider _tenantConfigurationProvider; + private readonly ICurrentTenant _currentTenant; + private readonly AbpAspNetCoreMultiTenancyOptions _options; + private readonly ITenantResolveResultAccessor _tenantResolveResultAccessor; + + public MultiTenancyMiddleware( + ITenantConfigurationProvider tenantConfigurationProvider, + ICurrentTenant currentTenant, + IOptions options, + ITenantResolveResultAccessor tenantResolveResultAccessor) { - private readonly ITenantConfigurationProvider _tenantConfigurationProvider; - private readonly ICurrentTenant _currentTenant; - private readonly AbpAspNetCoreMultiTenancyOptions _options; - private readonly ITenantResolveResultAccessor _tenantResolveResultAccessor; + _tenantConfigurationProvider = tenantConfigurationProvider; + _currentTenant = currentTenant; + _tenantResolveResultAccessor = tenantResolveResultAccessor; + _options = options.Value; + } - public MultiTenancyMiddleware( - ITenantConfigurationProvider tenantConfigurationProvider, - ICurrentTenant currentTenant, - IOptions options, - ITenantResolveResultAccessor tenantResolveResultAccessor) + public async Task InvokeAsync(HttpContext context, RequestDelegate next) + { + TenantConfiguration tenant; + try { - _tenantConfigurationProvider = tenantConfigurationProvider; - _currentTenant = currentTenant; - _tenantResolveResultAccessor = tenantResolveResultAccessor; - _options = options.Value; + tenant = await _tenantConfigurationProvider.GetAsync(saveResolveResult: true); } - - public async Task InvokeAsync(HttpContext context, RequestDelegate next) + catch (Exception e) { - TenantConfiguration tenant; - try - { - tenant = await _tenantConfigurationProvider.GetAsync(saveResolveResult: true); - } - catch (Exception e) - { - await _options.MultiTenancyMiddlewareErrorPageBuilder(context, e); - return; - } + await _options.MultiTenancyMiddlewareErrorPageBuilder(context, e); + return; + } - if (tenant?.Id != _currentTenant.Id) + if (tenant?.Id != _currentTenant.Id) + { + using (_currentTenant.Change(tenant?.Id, tenant?.Name)) { - using (_currentTenant.Change(tenant?.Id, tenant?.Name)) + if (_tenantResolveResultAccessor.Result != null && + _tenantResolveResultAccessor.Result.AppliedResolvers.Contains(QueryStringTenantResolveContributor.ContributorName)) { - if (_tenantResolveResultAccessor.Result != null && - _tenantResolveResultAccessor.Result.AppliedResolvers.Contains(QueryStringTenantResolveContributor.ContributorName)) - { - AbpMultiTenancyCookieHelper.SetTenantCookie(context, _currentTenant.Id, _options.TenantKey); - } - - var requestCulture = await TryGetRequestCultureAsync(context); - if (requestCulture != null) - { - CultureInfo.CurrentCulture = requestCulture.Culture; - CultureInfo.CurrentUICulture = requestCulture.UICulture; - AbpRequestCultureCookieHelper.SetCultureCookie( - context, - requestCulture - ); - context.Items[AbpRequestLocalizationMiddleware.HttpContextItemName] = true; - } + AbpMultiTenancyCookieHelper.SetTenantCookie(context, _currentTenant.Id, _options.TenantKey); + } - await next(context); + var requestCulture = await TryGetRequestCultureAsync(context); + if (requestCulture != null) + { + CultureInfo.CurrentCulture = requestCulture.Culture; + CultureInfo.CurrentUICulture = requestCulture.UICulture; + AbpRequestCultureCookieHelper.SetCultureCookie( + context, + requestCulture + ); + context.Items[AbpRequestLocalizationMiddleware.HttpContextItemName] = true; } - } - else - { + await next(context); } } - - private async Task TryGetRequestCultureAsync(HttpContext httpContext) + else { - var requestCultureFeature = httpContext.Features.Get(); + await next(context); + } + } - /* If requestCultureFeature == null, that means the RequestLocalizationMiddleware was not used - * and we don't want to set the culture. */ - if (requestCultureFeature == null) - { - return null; - } + private async Task TryGetRequestCultureAsync(HttpContext httpContext) + { + var requestCultureFeature = httpContext.Features.Get(); - /* If requestCultureFeature.Provider is not null, that means RequestLocalizationMiddleware - * already picked a language, so we don't need to set the default. */ - if (requestCultureFeature.Provider != null) - { - return null; - } + /* If requestCultureFeature == null, that means the RequestLocalizationMiddleware was not used + * and we don't want to set the culture. */ + if (requestCultureFeature == null) + { + return null; + } - var settingProvider = httpContext.RequestServices.GetRequiredService(); - var defaultLanguage = await settingProvider.GetOrNullAsync(LocalizationSettingNames.DefaultLanguage); - if (defaultLanguage.IsNullOrWhiteSpace()) - { - return null; - } + /* If requestCultureFeature.Provider is not null, that means RequestLocalizationMiddleware + * already picked a language, so we don't need to set the default. */ + if (requestCultureFeature.Provider != null) + { + return null; + } - string culture; - string uiCulture; + var settingProvider = httpContext.RequestServices.GetRequiredService(); + var defaultLanguage = await settingProvider.GetOrNullAsync(LocalizationSettingNames.DefaultLanguage); + if (defaultLanguage.IsNullOrWhiteSpace()) + { + return null; + } - if (defaultLanguage.Contains(';')) - { - var splitted = defaultLanguage.Split(';'); - culture = splitted[0]; - uiCulture = splitted[1]; - } - else - { - culture = defaultLanguage; - uiCulture = defaultLanguage; - } + string culture; + string uiCulture; - return new RequestCulture(culture, uiCulture); + if (defaultLanguage.Contains(';')) + { + var splitted = defaultLanguage.Split(';'); + culture = splitted[0]; + uiCulture = splitted[1]; } + else + { + culture = defaultLanguage; + uiCulture = defaultLanguage; + } + + return new RequestCulture(culture, uiCulture); } } diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolveContributor.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolveContributor.cs index 2edcac0eaf..f4f2cf8cb6 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolveContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolveContributor.cs @@ -3,33 +3,32 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.MultiTenancy +namespace Volo.Abp.AspNetCore.MultiTenancy; + +public class QueryStringTenantResolveContributor : HttpTenantResolveContributorBase { - public class QueryStringTenantResolveContributor : HttpTenantResolveContributorBase - { - public const string ContributorName = "QueryString"; + public const string ContributorName = "QueryString"; - public override string Name => ContributorName; + public override string Name => ContributorName; - protected override Task GetTenantIdOrNameFromHttpContextOrNullAsync(ITenantResolveContext context, HttpContext httpContext) + protected override Task GetTenantIdOrNameFromHttpContextOrNullAsync(ITenantResolveContext context, HttpContext httpContext) + { + if (httpContext.Request.QueryString.HasValue) { - if (httpContext.Request.QueryString.HasValue) + var tenantKey = context.GetAbpAspNetCoreMultiTenancyOptions().TenantKey; + if (httpContext.Request.Query.ContainsKey(tenantKey)) { - var tenantKey = context.GetAbpAspNetCoreMultiTenancyOptions().TenantKey; - if (httpContext.Request.Query.ContainsKey(tenantKey)) + var tenantValue = httpContext.Request.Query[tenantKey].ToString(); + if (tenantValue.IsNullOrWhiteSpace()) { - var tenantValue = httpContext.Request.Query[tenantKey].ToString(); - if (tenantValue.IsNullOrWhiteSpace()) - { - context.Handled = true; - return Task.FromResult(null); - } - - return Task.FromResult(tenantValue); + context.Handled = true; + return Task.FromResult(null); } - } - return Task.FromResult(null); + return Task.FromResult(tenantValue); + } } + + return Task.FromResult(null); } } diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/RouteTenantResolveContributor.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/RouteTenantResolveContributor.cs index 7ac3943c84..06e7972aa1 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/RouteTenantResolveContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/RouteTenantResolveContributor.cs @@ -4,18 +4,17 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.MultiTenancy +namespace Volo.Abp.AspNetCore.MultiTenancy; + +public class RouteTenantResolveContributor : HttpTenantResolveContributorBase { - public class RouteTenantResolveContributor : HttpTenantResolveContributorBase - { - public const string ContributorName = "Route"; + public const string ContributorName = "Route"; - public override string Name => ContributorName; + public override string Name => ContributorName; - protected override Task GetTenantIdOrNameFromHttpContextOrNullAsync(ITenantResolveContext context, HttpContext httpContext) - { - var tenantId = httpContext.GetRouteValue(context.GetAbpAspNetCoreMultiTenancyOptions().TenantKey); - return Task.FromResult(tenantId != null ? Convert.ToString(tenantId) : null); - } + protected override Task GetTenantIdOrNameFromHttpContextOrNullAsync(ITenantResolveContext context, HttpContext httpContext) + { + var tenantId = httpContext.GetRouteValue(context.GetAbpAspNetCoreMultiTenancyOptions().TenantKey); + return Task.FromResult(tenantId != null ? Convert.ToString(tenantId) : null); } } diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/TenantResolveContextExtensions.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/TenantResolveContextExtensions.cs index 701833bc70..a4a8669304 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/TenantResolveContextExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/TenantResolveContextExtensions.cs @@ -2,13 +2,12 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Volo.Abp.MultiTenancy; -namespace Volo.Abp.AspNetCore.MultiTenancy +namespace Volo.Abp.AspNetCore.MultiTenancy; + +public static class TenantResolveContextExtensions { - public static class TenantResolveContextExtensions + public static AbpAspNetCoreMultiTenancyOptions GetAbpAspNetCoreMultiTenancyOptions(this ITenantResolveContext context) { - public static AbpAspNetCoreMultiTenancyOptions GetAbpAspNetCoreMultiTenancyOptions(this ITenantResolveContext context) - { - return context.ServiceProvider.GetRequiredService>().Value; - } + return context.ServiceProvider.GetRequiredService>().Value; } } diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/MultiTenancy/AbpMultiTenancyOptionsExtensions.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/MultiTenancy/AbpMultiTenancyOptionsExtensions.cs index aa6f0fdb0e..8ec02c027a 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/MultiTenancy/AbpMultiTenancyOptionsExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/MultiTenancy/AbpMultiTenancyOptionsExtensions.cs @@ -1,16 +1,15 @@ using System.Collections.Generic; using Volo.Abp.AspNetCore.MultiTenancy; -namespace Volo.Abp.MultiTenancy +namespace Volo.Abp.MultiTenancy; + +public static class AbpMultiTenancyOptionsExtensions { - public static class AbpMultiTenancyOptionsExtensions + public static void AddDomainTenantResolver(this AbpTenantResolveOptions options, string domainFormat) { - public static void AddDomainTenantResolver(this AbpTenantResolveOptions options, string domainFormat) - { - options.TenantResolvers.InsertAfter( - r => r is CurrentUserTenantResolveContributor, - new DomainTenantResolveContributor(domainFormat) - ); - } + options.TenantResolvers.InsertAfter( + r => r is CurrentUserTenantResolveContributor, + new DomainTenantResolveContributor(domainFormat) + ); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/ClientProxies/AbpApplicationConfigurationClientProxy.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/ClientProxies/AbpApplicationConfigurationClientProxy.cs index dfe8e66417..c53a4c73a0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/ClientProxies/AbpApplicationConfigurationClientProxy.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/ClientProxies/AbpApplicationConfigurationClientProxy.cs @@ -1,8 +1,7 @@ // This file is part of AbpApplicationConfigurationClientProxy, you can customize it here // ReSharper disable once CheckNamespace -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClientProxies +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClientProxies; + +public partial class AbpApplicationConfigurationClientProxy { - public partial class AbpApplicationConfigurationClientProxy - { - } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/ClientProxies/AbpTenantClientProxy.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/ClientProxies/AbpTenantClientProxy.cs index e8384e04b2..0f11d389a1 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/ClientProxies/AbpTenantClientProxy.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/ClientProxies/AbpTenantClientProxy.cs @@ -1,8 +1,7 @@ // This file is part of AbpTenantClientProxy, you can customize it here // ReSharper disable once CheckNamespace -namespace Pages.Abp.MultiTenancy.ClientProxies +namespace Pages.Abp.MultiTenancy.ClientProxies; + +public partial class AbpTenantClientProxy { - public partial class AbpTenantClientProxy - { - } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientCommonModule.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientCommonModule.cs index 394a84e220..ad2cc29cec 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientCommonModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientCommonModule.cs @@ -7,34 +7,33 @@ using Volo.Abp.Localization; using Volo.Abp.Modularity; using Volo.Abp.VirtualFileSystem; -namespace Volo.Abp.AspNetCore.Mvc.Client +namespace Volo.Abp.AspNetCore.Mvc.Client; + +[DependsOn( + typeof(AbpHttpClientModule), + typeof(AbpAspNetCoreMvcContractsModule), + typeof(AbpCachingModule), + typeof(AbpLocalizationModule), + typeof(AbpAuthorizationModule), + typeof(AbpFeaturesModule), + typeof(AbpVirtualFileSystemModule) +)] +public class AbpAspNetCoreMvcClientCommonModule : AbpModule { - [DependsOn( - typeof(AbpHttpClientModule), - typeof(AbpAspNetCoreMvcContractsModule), - typeof(AbpCachingModule), - typeof(AbpLocalizationModule), - typeof(AbpAuthorizationModule), - typeof(AbpFeaturesModule), - typeof(AbpVirtualFileSystemModule) - )] - public class AbpAspNetCoreMvcClientCommonModule : AbpModule + public const string RemoteServiceName = "AbpMvcClient"; + + public override void ConfigureServices(ServiceConfigurationContext context) { - public const string RemoteServiceName = "AbpMvcClient"; + context.Services.AddStaticHttpClientProxies(typeof(AbpAspNetCoreMvcContractsModule).Assembly, RemoteServiceName); - public override void ConfigureServices(ServiceConfigurationContext context) + Configure(options => { - context.Services.AddStaticHttpClientProxies(typeof(AbpAspNetCoreMvcContractsModule).Assembly, RemoteServiceName); + options.FileSets.AddEmbedded(); + }); - Configure(options => - { - options.FileSets.AddEmbedded(); - }); - - Configure(options => - { - options.GlobalContributors.Add(); - }); - } + Configure(options => + { + options.GlobalContributors.Add(); + }); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/ICachedApplicationConfigurationClient.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/ICachedApplicationConfigurationClient.cs index 80e6c4e054..f173082fa3 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/ICachedApplicationConfigurationClient.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/ICachedApplicationConfigurationClient.cs @@ -1,12 +1,11 @@ using System.Threading.Tasks; using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; -namespace Volo.Abp.AspNetCore.Mvc.Client +namespace Volo.Abp.AspNetCore.Mvc.Client; + +public interface ICachedApplicationConfigurationClient : IAsyncInitialize { - public interface ICachedApplicationConfigurationClient : IAsyncInitialize - { - Task GetAsync(); + Task GetAsync(); - ApplicationConfigurationDto Get(); - } + ApplicationConfigurationDto Get(); } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteFeatureChecker.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteFeatureChecker.cs index f769f512a5..d3969e7888 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteFeatureChecker.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteFeatureChecker.cs @@ -2,21 +2,20 @@ using System.Threading.Tasks; using Volo.Abp.Features; -namespace Volo.Abp.AspNetCore.Mvc.Client +namespace Volo.Abp.AspNetCore.Mvc.Client; + +public class RemoteFeatureChecker : FeatureCheckerBase { - public class RemoteFeatureChecker : FeatureCheckerBase - { - protected ICachedApplicationConfigurationClient ConfigurationClient { get; } + protected ICachedApplicationConfigurationClient ConfigurationClient { get; } - public RemoteFeatureChecker(ICachedApplicationConfigurationClient configurationClient) - { - ConfigurationClient = configurationClient; - } + public RemoteFeatureChecker(ICachedApplicationConfigurationClient configurationClient) + { + ConfigurationClient = configurationClient; + } - public override async Task GetOrNullAsync(string name) - { - var configuration = await ConfigurationClient.GetAsync(); - return configuration.Features.Values.GetOrDefault(name); - } + public override async Task GetOrNullAsync(string name) + { + var configuration = await ConfigurationClient.GetAsync(); + return configuration.Features.Values.GetOrDefault(name); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLanguageProvider.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLanguageProvider.cs index 02c97c0598..cb6b76ad74 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLanguageProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLanguageProvider.cs @@ -3,21 +3,20 @@ using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Localization; -namespace Volo.Abp.AspNetCore.Mvc.Client +namespace Volo.Abp.AspNetCore.Mvc.Client; + +public class RemoteLanguageProvider : ILanguageProvider, ITransientDependency { - public class RemoteLanguageProvider : ILanguageProvider, ITransientDependency - { - protected ICachedApplicationConfigurationClient ConfigurationClient { get; } + protected ICachedApplicationConfigurationClient ConfigurationClient { get; } - public RemoteLanguageProvider(ICachedApplicationConfigurationClient configurationClient) - { - ConfigurationClient = configurationClient; - } + public RemoteLanguageProvider(ICachedApplicationConfigurationClient configurationClient) + { + ConfigurationClient = configurationClient; + } - public async Task> GetLanguagesAsync() - { - var configuration = await ConfigurationClient.GetAsync(); - return configuration.Localization.Languages; - } + public async Task> GetLanguagesAsync() + { + var configuration = await ConfigurationClient.GetAsync(); + return configuration.Localization.Languages; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs index f8502fce78..c01fc6a1af 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteLocalizationContributor.cs @@ -5,67 +5,66 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Volo.Abp.Localization; -namespace Volo.Abp.AspNetCore.Mvc.Client +namespace Volo.Abp.AspNetCore.Mvc.Client; + +public class RemoteLocalizationContributor : ILocalizationResourceContributor { - public class RemoteLocalizationContributor : ILocalizationResourceContributor + private LocalizationResource _resource; + private ICachedApplicationConfigurationClient _applicationConfigurationClient; + private ILogger _logger; + + public void Initialize(LocalizationResourceInitializationContext context) { - private LocalizationResource _resource; - private ICachedApplicationConfigurationClient _applicationConfigurationClient; - private ILogger _logger; + _resource = context.Resource; + _applicationConfigurationClient = context.ServiceProvider.GetRequiredService(); + _logger = context.ServiceProvider.GetService>() + ?? NullLogger.Instance; + } - public void Initialize(LocalizationResourceInitializationContext context) + public LocalizedString GetOrNull(string cultureName, string name) + { + var resource = GetResourceOrNull(); + if (resource == null) { - _resource = context.Resource; - _applicationConfigurationClient = context.ServiceProvider.GetRequiredService(); - _logger = context.ServiceProvider.GetService>() - ?? NullLogger.Instance; + return null; } - public LocalizedString GetOrNull(string cultureName, string name) + var value = resource.GetOrDefault(name); + if (value == null) { - var resource = GetResourceOrNull(); - if (resource == null) - { - return null; - } - - var value = resource.GetOrDefault(name); - if (value == null) - { - return null; - } - - return new LocalizedString(name, value); + return null; } - public void Fill(string cultureName, Dictionary dictionary) - { - var resource = GetResourceOrNull(); - if (resource == null) - { - return; - } + return new LocalizedString(name, value); + } - foreach (var keyValue in resource) - { - dictionary[keyValue.Key] = new LocalizedString(keyValue.Key, keyValue.Value); - } + public void Fill(string cultureName, Dictionary dictionary) + { + var resource = GetResourceOrNull(); + if (resource == null) + { + return; } - private Dictionary GetResourceOrNull() + foreach (var keyValue in resource) { - var applicationConfigurationDto = _applicationConfigurationClient.Get(); + dictionary[keyValue.Key] = new LocalizedString(keyValue.Key, keyValue.Value); + } + } - var resource = applicationConfigurationDto - .Localization.Values - .GetOrDefault(_resource.ResourceName); + private Dictionary GetResourceOrNull() + { + var applicationConfigurationDto = _applicationConfigurationClient.Get(); - if (resource == null) - { - _logger.LogWarning($"Could not find the localization resource {_resource.ResourceName} on the remote server!"); - } + var resource = applicationConfigurationDto + .Localization.Values + .GetOrDefault(_resource.ResourceName); - return resource; + if (resource == null) + { + _logger.LogWarning($"Could not find the localization resource {_resource.ResourceName} on the remote server!"); } + + return resource; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemotePermissionChecker.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemotePermissionChecker.cs index 5ce1ea9edc..3274c5010c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemotePermissionChecker.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemotePermissionChecker.cs @@ -3,48 +3,47 @@ using System.Threading.Tasks; using Volo.Abp.Authorization.Permissions; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Mvc.Client +namespace Volo.Abp.AspNetCore.Mvc.Client; + +public class RemotePermissionChecker : IPermissionChecker, ITransientDependency { - public class RemotePermissionChecker : IPermissionChecker, ITransientDependency + protected ICachedApplicationConfigurationClient ConfigurationClient { get; } + + public RemotePermissionChecker(ICachedApplicationConfigurationClient configurationClient) { - protected ICachedApplicationConfigurationClient ConfigurationClient { get; } + ConfigurationClient = configurationClient; + } - public RemotePermissionChecker(ICachedApplicationConfigurationClient configurationClient) - { - ConfigurationClient = configurationClient; - } + public async Task IsGrantedAsync(string name) + { + var configuration = await ConfigurationClient.GetAsync(); - public async Task IsGrantedAsync(string name) - { - var configuration = await ConfigurationClient.GetAsync(); + return configuration.Auth.GrantedPolicies.ContainsKey(name); + } - return configuration.Auth.GrantedPolicies.ContainsKey(name); - } + public async Task IsGrantedAsync(ClaimsPrincipal claimsPrincipal, string name) + { + /* This provider always works for the current principal. */ + return await IsGrantedAsync(name); + } - public async Task IsGrantedAsync(ClaimsPrincipal claimsPrincipal, string name) + public async Task IsGrantedAsync(string[] names) + { + var result = new MultiplePermissionGrantResult(); + var configuration = await ConfigurationClient.GetAsync(); + foreach (var name in names) { - /* This provider always works for the current principal. */ - return await IsGrantedAsync(name); + result.Result.Add(name, configuration.Auth.GrantedPolicies.ContainsKey(name) ? + PermissionGrantResult.Granted : + PermissionGrantResult.Undefined); } - public async Task IsGrantedAsync(string[] names) - { - var result = new MultiplePermissionGrantResult(); - var configuration = await ConfigurationClient.GetAsync(); - foreach (var name in names) - { - result.Result.Add(name, configuration.Auth.GrantedPolicies.ContainsKey(name) ? - PermissionGrantResult.Granted : - PermissionGrantResult.Undefined); - } - - return result; - } + return result; + } - public async Task IsGrantedAsync(ClaimsPrincipal claimsPrincipal, string[] names) - { - /* This provider always works for the current principal. */ - return await IsGrantedAsync(names); - } + public async Task IsGrantedAsync(ClaimsPrincipal claimsPrincipal, string[] names) + { + /* This provider always works for the current principal. */ + return await IsGrantedAsync(names); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteSettingProvider.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteSettingProvider.cs index 89db44b43d..2599df1ef6 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteSettingProvider.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common/Volo/Abp/AspNetCore/Mvc/Client/RemoteSettingProvider.cs @@ -4,36 +4,35 @@ using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Settings; -namespace Volo.Abp.AspNetCore.Mvc.Client +namespace Volo.Abp.AspNetCore.Mvc.Client; + +public class RemoteSettingProvider : ISettingProvider, ITransientDependency { - public class RemoteSettingProvider : ISettingProvider, ITransientDependency - { - protected ICachedApplicationConfigurationClient ConfigurationClient { get; } + protected ICachedApplicationConfigurationClient ConfigurationClient { get; } - public RemoteSettingProvider(ICachedApplicationConfigurationClient configurationClient) - { - ConfigurationClient = configurationClient; - } + public RemoteSettingProvider(ICachedApplicationConfigurationClient configurationClient) + { + ConfigurationClient = configurationClient; + } - public async Task GetOrNullAsync(string name) - { - var configuration = await ConfigurationClient.GetAsync(); - return configuration.Setting.Values.GetOrDefault(name); - } + public async Task GetOrNullAsync(string name) + { + var configuration = await ConfigurationClient.GetAsync(); + return configuration.Setting.Values.GetOrDefault(name); + } - public async Task> GetAllAsync(string[] names) - { - var configuration = await ConfigurationClient.GetAsync(); - return names.Select(x => new SettingValue(x, configuration.Setting.Values.GetOrDefault(x))).ToList(); - } + public async Task> GetAllAsync(string[] names) + { + var configuration = await ConfigurationClient.GetAsync(); + return names.Select(x => new SettingValue(x, configuration.Setting.Values.GetOrDefault(x))).ToList(); + } - public async Task> GetAllAsync() - { - var configuration = await ConfigurationClient.GetAsync(); - return configuration - .Setting.Values - .Select(s => new SettingValue(s.Key, s.Value)) - .ToList(); - } + public async Task> GetAllAsync() + { + var configuration = await ConfigurationClient.GetAsync(); + return configuration + .Setting.Values + .Select(s => new SettingValue(s.Key, s.Value)) + .ToList(); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientModule.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientModule.cs index 48e2461167..a7dc58f82a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/AbpAspNetCoreMvcClientModule.cs @@ -1,13 +1,12 @@ using Volo.Abp.EventBus; using Volo.Abp.Modularity; -namespace Volo.Abp.AspNetCore.Mvc.Client +namespace Volo.Abp.AspNetCore.Mvc.Client; + +[DependsOn( + typeof(AbpAspNetCoreMvcClientCommonModule), + typeof(AbpEventBusModule) + )] +public class AbpAspNetCoreMvcClientModule : AbpModule { - [DependsOn( - typeof(AbpAspNetCoreMvcClientCommonModule), - typeof(AbpEventBusModule) - )] - public class AbpAspNetCoreMvcClientModule : AbpModule - { - } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs index 6c67031da9..92152ac807 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs @@ -9,82 +9,81 @@ using Volo.Abp.DependencyInjection; using Volo.Abp.Threading; using Volo.Abp.Users; -namespace Volo.Abp.AspNetCore.Mvc.Client +namespace Volo.Abp.AspNetCore.Mvc.Client; + +[ExposeServices( + typeof(MvcCachedApplicationConfigurationClient), + typeof(ICachedApplicationConfigurationClient), + typeof(IAsyncInitialize) + )] +public class MvcCachedApplicationConfigurationClient : ICachedApplicationConfigurationClient, ITransientDependency { - [ExposeServices( - typeof(MvcCachedApplicationConfigurationClient), - typeof(ICachedApplicationConfigurationClient), - typeof(IAsyncInitialize) - )] - public class MvcCachedApplicationConfigurationClient : ICachedApplicationConfigurationClient, ITransientDependency + protected IHttpContextAccessor HttpContextAccessor { get; } + protected AbpApplicationConfigurationClientProxy ApplicationConfigurationAppService { get; } + protected ICurrentUser CurrentUser { get; } + protected IDistributedCache Cache { get; } + + public MvcCachedApplicationConfigurationClient( + IDistributedCache cache, + AbpApplicationConfigurationClientProxy applicationConfigurationAppService, + ICurrentUser currentUser, + IHttpContextAccessor httpContextAccessor) { - protected IHttpContextAccessor HttpContextAccessor { get; } - protected AbpApplicationConfigurationClientProxy ApplicationConfigurationAppService { get; } - protected ICurrentUser CurrentUser { get; } - protected IDistributedCache Cache { get; } + ApplicationConfigurationAppService = applicationConfigurationAppService; + CurrentUser = currentUser; + HttpContextAccessor = httpContextAccessor; + Cache = cache; + } - public MvcCachedApplicationConfigurationClient( - IDistributedCache cache, - AbpApplicationConfigurationClientProxy applicationConfigurationAppService, - ICurrentUser currentUser, - IHttpContextAccessor httpContextAccessor) - { - ApplicationConfigurationAppService = applicationConfigurationAppService; - CurrentUser = currentUser; - HttpContextAccessor = httpContextAccessor; - Cache = cache; - } + public async Task InitializeAsync() + { + await GetAsync(); + } - public async Task InitializeAsync() - { - await GetAsync(); - } + public async Task GetAsync() + { + var cacheKey = CreateCacheKey(); + var httpContext = HttpContextAccessor?.HttpContext; - public async Task GetAsync() + if (httpContext != null && !httpContext.WebSockets.IsWebSocketRequest && httpContext.Items[cacheKey] is ApplicationConfigurationDto configuration) { - var cacheKey = CreateCacheKey(); - var httpContext = HttpContextAccessor?.HttpContext; - - if (httpContext != null && !httpContext.WebSockets.IsWebSocketRequest && httpContext.Items[cacheKey] is ApplicationConfigurationDto configuration) - { - - return configuration; - } - - - configuration = await Cache.GetOrAddAsync( - cacheKey, - async () => await ApplicationConfigurationAppService.GetAsync(), - () => new DistributedCacheEntryOptions - { - AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(300) //TODO: Should be configurable. - } - ); - - if (httpContext != null && !httpContext.WebSockets.IsWebSocketRequest) - { - httpContext.Items[cacheKey] = configuration; - } return configuration; } - public ApplicationConfigurationDto Get() - { - var cacheKey = CreateCacheKey(); - var httpContext = HttpContextAccessor?.HttpContext; - if (httpContext != null && !httpContext.WebSockets.IsWebSocketRequest && httpContext.Items[cacheKey] is ApplicationConfigurationDto configuration) + configuration = await Cache.GetOrAddAsync( + cacheKey, + async () => await ApplicationConfigurationAppService.GetAsync(), + () => new DistributedCacheEntryOptions { - return configuration; - } + AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(300) //TODO: Should be configurable. + } + ); - return AsyncHelper.RunSync(GetAsync); + if (httpContext != null && !httpContext.WebSockets.IsWebSocketRequest) + { + httpContext.Items[cacheKey] = configuration; } - protected virtual string CreateCacheKey() + return configuration; + } + + public ApplicationConfigurationDto Get() + { + var cacheKey = CreateCacheKey(); + var httpContext = HttpContextAccessor?.HttpContext; + + if (httpContext != null && !httpContext.WebSockets.IsWebSocketRequest && httpContext.Items[cacheKey] is ApplicationConfigurationDto configuration) { - return MvcCachedApplicationConfigurationClientHelper.CreateCacheKey(CurrentUser); + return configuration; } + + return AsyncHelper.RunSync(GetAsync); + } + + protected virtual string CreateCacheKey() + { + return MvcCachedApplicationConfigurationClientHelper.CreateCacheKey(CurrentUser); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClientHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClientHelper.cs index ae013c4343..740a79c884 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClientHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClientHelper.cs @@ -1,14 +1,13 @@ using System.Globalization; using Volo.Abp.Users; -namespace Volo.Abp.AspNetCore.Mvc.Client +namespace Volo.Abp.AspNetCore.Mvc.Client; + +internal static class MvcCachedApplicationConfigurationClientHelper { - internal static class MvcCachedApplicationConfigurationClientHelper + public static string CreateCacheKey(ICurrentUser currentUser) { - public static string CreateCacheKey(ICurrentUser currentUser) - { - var userKey = currentUser.Id?.ToString("N") ?? "Anonymous"; - return $"ApplicationConfiguration_{userKey}_{CultureInfo.CurrentUICulture.Name}"; - } + var userKey = currentUser.Id?.ToString("N") ?? "Anonymous"; + return $"ApplicationConfiguration_{userKey}_{CultureInfo.CurrentUICulture.Name}"; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCurrentApplicationConfigurationCacheResetEventHandler.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCurrentApplicationConfigurationCacheResetEventHandler.cs index e8f5b201da..8bd3971779 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCurrentApplicationConfigurationCacheResetEventHandler.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCurrentApplicationConfigurationCacheResetEventHandler.cs @@ -5,30 +5,29 @@ using Volo.Abp.DependencyInjection; using Volo.Abp.EventBus; using Volo.Abp.Users; -namespace Volo.Abp.AspNetCore.Mvc.Client +namespace Volo.Abp.AspNetCore.Mvc.Client; + +public class MvcCurrentApplicationConfigurationCacheResetEventHandler : + ILocalEventHandler, + ITransientDependency { - public class MvcCurrentApplicationConfigurationCacheResetEventHandler : - ILocalEventHandler, - ITransientDependency - { - protected ICurrentUser CurrentUser { get; } - protected IDistributedCache Cache { get; } + protected ICurrentUser CurrentUser { get; } + protected IDistributedCache Cache { get; } - public MvcCurrentApplicationConfigurationCacheResetEventHandler(ICurrentUser currentUser, - IDistributedCache cache) - { - CurrentUser = currentUser; - Cache = cache; - } + public MvcCurrentApplicationConfigurationCacheResetEventHandler(ICurrentUser currentUser, + IDistributedCache cache) + { + CurrentUser = currentUser; + Cache = cache; + } - public virtual async Task HandleEventAsync(CurrentApplicationConfigurationCacheResetEventData eventData) - { - await Cache.RemoveAsync(CreateCacheKey()); - } + public virtual async Task HandleEventAsync(CurrentApplicationConfigurationCacheResetEventData eventData) + { + await Cache.RemoveAsync(CreateCacheKey()); + } - protected virtual string CreateCacheKey() - { - return MvcCachedApplicationConfigurationClientHelper.CreateCacheKey(CurrentUser); - } + protected virtual string CreateCacheKey() + { + return MvcCachedApplicationConfigurationClientHelper.CreateCacheKey(CurrentUser); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcRemoteTenantStore.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcRemoteTenantStore.cs index f4744ca587..dd4411255e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcRemoteTenantStore.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcRemoteTenantStore.cs @@ -9,154 +9,153 @@ using Volo.Abp.DependencyInjection; using Volo.Abp.MultiTenancy; using Volo.Abp.Threading; -namespace Volo.Abp.AspNetCore.Mvc.Client +namespace Volo.Abp.AspNetCore.Mvc.Client; + +public class MvcRemoteTenantStore : ITenantStore, ITransientDependency { - public class MvcRemoteTenantStore : ITenantStore, ITransientDependency + protected AbpTenantClientProxy TenantAppService { get; } + protected IHttpContextAccessor HttpContextAccessor { get; } + protected IDistributedCache Cache { get; } + + public MvcRemoteTenantStore( + AbpTenantClientProxy tenantAppService, + IHttpContextAccessor httpContextAccessor, + IDistributedCache cache) { - protected AbpTenantClientProxy TenantAppService { get; } - protected IHttpContextAccessor HttpContextAccessor { get; } - protected IDistributedCache Cache { get; } - - public MvcRemoteTenantStore( - AbpTenantClientProxy tenantAppService, - IHttpContextAccessor httpContextAccessor, - IDistributedCache cache) - { - TenantAppService = tenantAppService; - HttpContextAccessor = httpContextAccessor; - Cache = cache; - } + TenantAppService = tenantAppService; + HttpContextAccessor = httpContextAccessor; + Cache = cache; + } - public async Task FindAsync(string name) + public async Task FindAsync(string name) + { + var cacheKey = CreateCacheKey(name); + var httpContext = HttpContextAccessor?.HttpContext; + + if (httpContext != null && httpContext.Items[cacheKey] is TenantConfiguration tenantConfiguration) { - var cacheKey = CreateCacheKey(name); - var httpContext = HttpContextAccessor?.HttpContext; + return tenantConfiguration; + } - if (httpContext != null && httpContext.Items[cacheKey] is TenantConfiguration tenantConfiguration) + tenantConfiguration = await Cache.GetOrAddAsync( + cacheKey, + async () => CreateTenantConfiguration(await TenantAppService.FindTenantByNameAsync(name)), + () => new DistributedCacheEntryOptions { - return tenantConfiguration; - } - - tenantConfiguration = await Cache.GetOrAddAsync( - cacheKey, - async () => CreateTenantConfiguration(await TenantAppService.FindTenantByNameAsync(name)), - () => new DistributedCacheEntryOptions - { - AbsoluteExpirationRelativeToNow = - TimeSpan.FromMinutes(5) //TODO: Should be configurable. + AbsoluteExpirationRelativeToNow = + TimeSpan.FromMinutes(5) //TODO: Should be configurable. } - ); - - if (httpContext != null) - { - httpContext.Items[cacheKey] = tenantConfiguration; - } + ); - return tenantConfiguration; - } - - public async Task FindAsync(Guid id) + if (httpContext != null) { - var cacheKey = CreateCacheKey(id); - var httpContext = HttpContextAccessor?.HttpContext; + httpContext.Items[cacheKey] = tenantConfiguration; + } - if (httpContext != null && httpContext.Items[cacheKey] is TenantConfiguration tenantConfiguration) - { - return tenantConfiguration; - } - - tenantConfiguration = await Cache.GetOrAddAsync( - cacheKey, - async () => CreateTenantConfiguration(await TenantAppService.FindTenantByIdAsync(id)), - () => new DistributedCacheEntryOptions - { - AbsoluteExpirationRelativeToNow = - TimeSpan.FromMinutes(5) //TODO: Should be configurable. - } - ); + return tenantConfiguration; + } - if (httpContext != null) - { - httpContext.Items[cacheKey] = tenantConfiguration; - } + public async Task FindAsync(Guid id) + { + var cacheKey = CreateCacheKey(id); + var httpContext = HttpContextAccessor?.HttpContext; + if (httpContext != null && httpContext.Items[cacheKey] is TenantConfiguration tenantConfiguration) + { return tenantConfiguration; } - public TenantConfiguration Find(string name) - { - var cacheKey = CreateCacheKey(name); - var httpContext = HttpContextAccessor?.HttpContext; - - if (httpContext != null && httpContext.Items[cacheKey] is TenantConfiguration tenantConfiguration) + tenantConfiguration = await Cache.GetOrAddAsync( + cacheKey, + async () => CreateTenantConfiguration(await TenantAppService.FindTenantByIdAsync(id)), + () => new DistributedCacheEntryOptions { - return tenantConfiguration; - } - - tenantConfiguration = Cache.GetOrAdd( - cacheKey, - () => AsyncHelper.RunSync(async () => CreateTenantConfiguration(await TenantAppService.FindTenantByNameAsync(name))), - () => new DistributedCacheEntryOptions - { - AbsoluteExpirationRelativeToNow = - TimeSpan.FromMinutes(5) //TODO: Should be configurable. + AbsoluteExpirationRelativeToNow = + TimeSpan.FromMinutes(5) //TODO: Should be configurable. } - ); - - if (httpContext != null) - { - httpContext.Items[cacheKey] = tenantConfiguration; - } + ); - return tenantConfiguration; + if (httpContext != null) + { + httpContext.Items[cacheKey] = tenantConfiguration; } - public TenantConfiguration Find(Guid id) + return tenantConfiguration; + } + + public TenantConfiguration Find(string name) + { + var cacheKey = CreateCacheKey(name); + var httpContext = HttpContextAccessor?.HttpContext; + + if (httpContext != null && httpContext.Items[cacheKey] is TenantConfiguration tenantConfiguration) { - var cacheKey = CreateCacheKey(id); - var httpContext = HttpContextAccessor?.HttpContext; + return tenantConfiguration; + } - if (httpContext != null && httpContext.Items[cacheKey] is TenantConfiguration tenantConfiguration) + tenantConfiguration = Cache.GetOrAdd( + cacheKey, + () => AsyncHelper.RunSync(async () => CreateTenantConfiguration(await TenantAppService.FindTenantByNameAsync(name))), + () => new DistributedCacheEntryOptions { - return tenantConfiguration; - } - - tenantConfiguration = Cache.GetOrAdd( - cacheKey, - () => AsyncHelper.RunSync(async () => CreateTenantConfiguration(await TenantAppService.FindTenantByIdAsync(id))), - () => new DistributedCacheEntryOptions - { - AbsoluteExpirationRelativeToNow = - TimeSpan.FromMinutes(5) //TODO: Should be configurable. + AbsoluteExpirationRelativeToNow = + TimeSpan.FromMinutes(5) //TODO: Should be configurable. } - ); + ); - if (httpContext != null) - { - httpContext.Items[cacheKey] = tenantConfiguration; - } + if (httpContext != null) + { + httpContext.Items[cacheKey] = tenantConfiguration; + } + + return tenantConfiguration; + } + public TenantConfiguration Find(Guid id) + { + var cacheKey = CreateCacheKey(id); + var httpContext = HttpContextAccessor?.HttpContext; + + if (httpContext != null && httpContext.Items[cacheKey] is TenantConfiguration tenantConfiguration) + { return tenantConfiguration; } - protected virtual TenantConfiguration CreateTenantConfiguration(FindTenantResultDto tenantResultDto) - { - if (!tenantResultDto.Success || tenantResultDto.TenantId == null) + tenantConfiguration = Cache.GetOrAdd( + cacheKey, + () => AsyncHelper.RunSync(async () => CreateTenantConfiguration(await TenantAppService.FindTenantByIdAsync(id))), + () => new DistributedCacheEntryOptions { - return null; - } - - return new TenantConfiguration(tenantResultDto.TenantId.Value, tenantResultDto.Name); - } + AbsoluteExpirationRelativeToNow = + TimeSpan.FromMinutes(5) //TODO: Should be configurable. + } + ); - protected virtual string CreateCacheKey(string tenantName) + if (httpContext != null) { - return $"RemoteTenantStore_Name_{tenantName}"; + httpContext.Items[cacheKey] = tenantConfiguration; } - protected virtual string CreateCacheKey(Guid tenantId) + return tenantConfiguration; + } + + protected virtual TenantConfiguration CreateTenantConfiguration(FindTenantResultDto tenantResultDto) + { + if (!tenantResultDto.Success || tenantResultDto.TenantId == null) { - return $"RemoteTenantStore_Id_{tenantId:N}"; + return null; } + + return new TenantConfiguration(tenantResultDto.TenantId.Value, tenantResultDto.Name); + } + + protected virtual string CreateCacheKey(string tenantName) + { + return $"RemoteTenantStore_Name_{tenantName}"; + } + + protected virtual string CreateCacheKey(Guid tenantId) + { + return $"RemoteTenantStore_Id_{tenantId:N}"; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcContractsModule.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcContractsModule.cs index 3bf299437c..278fe6eb21 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcContractsModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcContractsModule.cs @@ -1,13 +1,12 @@ using Volo.Abp.Application; using Volo.Abp.Modularity; -namespace Volo.Abp.AspNetCore.Mvc +namespace Volo.Abp.AspNetCore.Mvc; + +[DependsOn( + typeof(AbpDddApplicationContractsModule) + )] +public class AbpAspNetCoreMvcContractsModule : AbpModule { - [DependsOn( - typeof(AbpDddApplicationContractsModule) - )] - public class AbpAspNetCoreMvcContractsModule : AbpModule - { - } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationAuthConfigurationDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationAuthConfigurationDto.cs index 39b3ca394b..be5a022b01 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationAuthConfigurationDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationAuthConfigurationDto.cs @@ -1,19 +1,18 @@ using System; using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; + +[Serializable] +public class ApplicationAuthConfigurationDto { - [Serializable] - public class ApplicationAuthConfigurationDto - { - public Dictionary Policies { get; set; } + public Dictionary Policies { get; set; } - public Dictionary GrantedPolicies { get; set; } + public Dictionary GrantedPolicies { get; set; } - public ApplicationAuthConfigurationDto() - { - Policies = new Dictionary(); - GrantedPolicies = new Dictionary(); - } + public ApplicationAuthConfigurationDto() + { + Policies = new Dictionary(); + GrantedPolicies = new Dictionary(); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationConfigurationDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationConfigurationDto.cs index 6a4aa49a1b..9b6a66992f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationConfigurationDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationConfigurationDto.cs @@ -2,29 +2,28 @@ using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; using Volo.Abp.AspNetCore.Mvc.MultiTenancy; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; + +[Serializable] +public class ApplicationConfigurationDto { - [Serializable] - public class ApplicationConfigurationDto - { - public ApplicationLocalizationConfigurationDto Localization { get; set; } + public ApplicationLocalizationConfigurationDto Localization { get; set; } - public ApplicationAuthConfigurationDto Auth { get; set; } + public ApplicationAuthConfigurationDto Auth { get; set; } - public ApplicationSettingConfigurationDto Setting { get; set; } + public ApplicationSettingConfigurationDto Setting { get; set; } - public CurrentUserDto CurrentUser { get; set; } + public CurrentUserDto CurrentUser { get; set; } - public ApplicationFeatureConfigurationDto Features { get; set; } + public ApplicationFeatureConfigurationDto Features { get; set; } - public MultiTenancyInfoDto MultiTenancy { get; set; } + public MultiTenancyInfoDto MultiTenancy { get; set; } - public CurrentTenantDto CurrentTenant { get; set; } + public CurrentTenantDto CurrentTenant { get; set; } - public TimingDto Timing { get; set; } + public TimingDto Timing { get; set; } - public ClockDto Clock { get; set; } + public ClockDto Clock { get; set; } - public ObjectExtensionsDto ObjectExtensions { get; set; } - } + public ObjectExtensionsDto ObjectExtensions { get; set; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationFeatureConfigurationDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationFeatureConfigurationDto.cs index 4972d2242d..9215a46616 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationFeatureConfigurationDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationFeatureConfigurationDto.cs @@ -1,16 +1,15 @@ using System; using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; + +[Serializable] +public class ApplicationFeatureConfigurationDto { - [Serializable] - public class ApplicationFeatureConfigurationDto - { - public Dictionary Values { get; set; } + public Dictionary Values { get; set; } - public ApplicationFeatureConfigurationDto() - { - Values = new Dictionary(); - } + public ApplicationFeatureConfigurationDto() + { + Values = new Dictionary(); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationConfigurationDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationConfigurationDto.cs index 5f53694177..0b229235fa 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationConfigurationDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationConfigurationDto.cs @@ -2,28 +2,27 @@ using System.Collections.Generic; using Volo.Abp.Localization; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; + +[Serializable] +public class ApplicationLocalizationConfigurationDto { - [Serializable] - public class ApplicationLocalizationConfigurationDto - { - //TODO: Rename to Texts? - public Dictionary> Values { get; set; } + //TODO: Rename to Texts? + public Dictionary> Values { get; set; } - public List Languages { get; set; } + public List Languages { get; set; } - public CurrentCultureDto CurrentCulture { get; set; } + public CurrentCultureDto CurrentCulture { get; set; } - public string DefaultResourceName { get; set; } + public string DefaultResourceName { get; set; } - public Dictionary> LanguagesMap { get; set; } + public Dictionary> LanguagesMap { get; set; } - public Dictionary> LanguageFilesMap { get; set; } + public Dictionary> LanguageFilesMap { get; set; } - public ApplicationLocalizationConfigurationDto() - { - Values = new Dictionary>(); - Languages = new List(); - } + public ApplicationLocalizationConfigurationDto() + { + Values = new Dictionary>(); + Languages = new List(); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationSettingConfigurationDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationSettingConfigurationDto.cs index 40cbd89fd1..a1fbba2bbf 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationSettingConfigurationDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationSettingConfigurationDto.cs @@ -1,11 +1,10 @@ using System; using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; + +[Serializable] +public class ApplicationSettingConfigurationDto { - [Serializable] - public class ApplicationSettingConfigurationDto - { - public Dictionary Values { get; set; } - } -} \ No newline at end of file + public Dictionary Values { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ClockDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ClockDto.cs index 2cff97f814..5112ac80ed 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ClockDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ClockDto.cs @@ -1,7 +1,6 @@ -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; + +public class ClockDto { - public class ClockDto - { - public string Kind { get; set; } - } + public string Kind { get; set; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentApplicationConfigurationCacheResetEventData.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentApplicationConfigurationCacheResetEventData.cs index e84e96d9dd..a50cb7b136 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentApplicationConfigurationCacheResetEventData.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentApplicationConfigurationCacheResetEventData.cs @@ -1,10 +1,9 @@ -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; + +/// +/// This event is used to invalidate current user's cached configuration. +/// +public class CurrentApplicationConfigurationCacheResetEventData { - /// - /// This event is used to invalidate current user's cached configuration. - /// - public class CurrentApplicationConfigurationCacheResetEventData - { - } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentCultureDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentCultureDto.cs index b225fac8f0..8f1896e31f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentCultureDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentCultureDto.cs @@ -1,23 +1,22 @@ -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; + +public class CurrentCultureDto { - public class CurrentCultureDto - { - public string DisplayName { get; set; } + public string DisplayName { get; set; } - public string EnglishName { get; set; } + public string EnglishName { get; set; } - public string ThreeLetterIsoLanguageName { get; set; } + public string ThreeLetterIsoLanguageName { get; set; } - public string TwoLetterIsoLanguageName { get; set; } + public string TwoLetterIsoLanguageName { get; set; } - public bool IsRightToLeft { get; set; } + public bool IsRightToLeft { get; set; } - public string CultureName { get; set; } + public string CultureName { get; set; } - public string Name { get; set; } + public string Name { get; set; } - public string NativeName { get; set; } + public string NativeName { get; set; } - public DateTimeFormatDto DateTimeFormat { get; set; } - } -} \ No newline at end of file + public DateTimeFormatDto DateTimeFormat { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentUserDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentUserDto.cs index b1b97c4b91..534ca68d80 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentUserDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/CurrentUserDto.cs @@ -1,34 +1,33 @@ using System; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; + +[Serializable] +public class CurrentUserDto { - [Serializable] - public class CurrentUserDto - { - public bool IsAuthenticated { get; set; } + public bool IsAuthenticated { get; set; } - public Guid? Id { get; set; } + public Guid? Id { get; set; } - public Guid? TenantId { get; set; } + public Guid? TenantId { get; set; } - public Guid? ImpersonatorUserId { get; set; } + public Guid? ImpersonatorUserId { get; set; } - public Guid? ImpersonatorTenantId { get; set; } + public Guid? ImpersonatorTenantId { get; set; } - public string UserName { get; set; } + public string UserName { get; set; } - public string Name { get; set; } + public string Name { get; set; } - public string SurName { get; set; } + public string SurName { get; set; } - public string Email { get; set; } + public string Email { get; set; } - public bool EmailVerified { get; set; } + public bool EmailVerified { get; set; } - public string PhoneNumber { get; set; } + public string PhoneNumber { get; set; } - public bool PhoneNumberVerified { get; set; } + public bool PhoneNumberVerified { get; set; } - public string[] Roles { get; set; } - } + public string[] Roles { get; set; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/DateTimeFormatDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/DateTimeFormatDto.cs index 259dff1da6..5f5ad14a5a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/DateTimeFormatDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/DateTimeFormatDto.cs @@ -1,19 +1,18 @@ -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; + +public class DateTimeFormatDto { - public class DateTimeFormatDto - { - public string CalendarAlgorithmType { get; set; } + public string CalendarAlgorithmType { get; set; } - public string DateTimeFormatLong { get; set; } + public string DateTimeFormatLong { get; set; } - public string ShortDatePattern { get; set; } + public string ShortDatePattern { get; set; } - public string FullDateTimePattern { get; set; } + public string FullDateTimePattern { get; set; } - public string DateSeparator { get; set; } + public string DateSeparator { get; set; } - public string ShortTimePattern { get; set; } + public string ShortTimePattern { get; set; } - public string LongTimePattern { get; set; } - } -} \ No newline at end of file + public string LongTimePattern { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/IAbpApplicationConfigurationAppService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/IAbpApplicationConfigurationAppService.cs index 4c521b9efc..9c8fd3d414 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/IAbpApplicationConfigurationAppService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/IAbpApplicationConfigurationAppService.cs @@ -1,10 +1,9 @@ using System.Threading.Tasks; using Volo.Abp.Application.Services; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; + +public interface IAbpApplicationConfigurationAppService : IApplicationService { - public interface IAbpApplicationConfigurationAppService : IApplicationService - { - Task GetAsync(); - } -} \ No newline at end of file + Task GetAsync(); +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/EntityExtensionDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/EntityExtensionDto.cs index d15870e7c1..742da779f6 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/EntityExtensionDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/EntityExtensionDto.cs @@ -1,13 +1,12 @@ using System; using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class EntityExtensionDto { - [Serializable] - public class EntityExtensionDto - { - public Dictionary Properties { get; set; } + public Dictionary Properties { get; set; } - public Dictionary Configuration { get; set; } - } -} \ No newline at end of file + public Dictionary Configuration { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionEnumDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionEnumDto.cs index 4f2dc526eb..24e9ec9a2f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionEnumDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionEnumDto.cs @@ -1,13 +1,12 @@ using System; using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class ExtensionEnumDto { - [Serializable] - public class ExtensionEnumDto - { - public List Fields { get; set; } + public List Fields { get; set; } - public string LocalizationResource { get; set; } - } -} \ No newline at end of file + public string LocalizationResource { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionEnumFieldDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionEnumFieldDto.cs index ddc7c349d4..13728d8409 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionEnumFieldDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionEnumFieldDto.cs @@ -1,12 +1,11 @@ using System; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class ExtensionEnumFieldDto { - [Serializable] - public class ExtensionEnumFieldDto - { - public string Name { get; set; } + public string Name { get; set; } - public object Value { get; set; } - } -} \ No newline at end of file + public object Value { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiCreateDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiCreateDto.cs index a2a588a358..9179ce7e2e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiCreateDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiCreateDto.cs @@ -1,13 +1,12 @@ using System; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class ExtensionPropertyApiCreateDto { - [Serializable] - public class ExtensionPropertyApiCreateDto - { - /// - /// Default: true. - /// - public bool IsAvailable { get; set; } = true; - } -} \ No newline at end of file + /// + /// Default: true. + /// + public bool IsAvailable { get; set; } = true; +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiDto.cs index a9b4ec5b24..920e66141a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiDto.cs @@ -1,23 +1,22 @@ using JetBrains.Annotations; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +public class ExtensionPropertyApiDto { - public class ExtensionPropertyApiDto - { - [NotNull] - public ExtensionPropertyApiGetDto OnGet { get; set; } + [NotNull] + public ExtensionPropertyApiGetDto OnGet { get; set; } - [NotNull] - public ExtensionPropertyApiCreateDto OnCreate { get; set; } + [NotNull] + public ExtensionPropertyApiCreateDto OnCreate { get; set; } - [NotNull] - public ExtensionPropertyApiUpdateDto OnUpdate { get; set; } + [NotNull] + public ExtensionPropertyApiUpdateDto OnUpdate { get; set; } - public ExtensionPropertyApiDto() - { - OnGet = new ExtensionPropertyApiGetDto(); - OnCreate = new ExtensionPropertyApiCreateDto(); - OnUpdate = new ExtensionPropertyApiUpdateDto(); - } + public ExtensionPropertyApiDto() + { + OnGet = new ExtensionPropertyApiGetDto(); + OnCreate = new ExtensionPropertyApiCreateDto(); + OnUpdate = new ExtensionPropertyApiUpdateDto(); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiGetDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiGetDto.cs index e50a45d15a..2a9f71295c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiGetDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiGetDto.cs @@ -1,13 +1,12 @@ using System; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class ExtensionPropertyApiGetDto { - [Serializable] - public class ExtensionPropertyApiGetDto - { - /// - /// Default: true. - /// - public bool IsAvailable { get; set; } = true; - } -} \ No newline at end of file + /// + /// Default: true. + /// + public bool IsAvailable { get; set; } = true; +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiUpdateDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiUpdateDto.cs index a517b258da..d234fe37b0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiUpdateDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyApiUpdateDto.cs @@ -1,13 +1,12 @@ using System; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class ExtensionPropertyApiUpdateDto { - [Serializable] - public class ExtensionPropertyApiUpdateDto - { - /// - /// Default: true. - /// - public bool IsAvailable { get; set; } = true; - } -} \ No newline at end of file + /// + /// Default: true. + /// + public bool IsAvailable { get; set; } = true; +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyAttributeDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyAttributeDto.cs index 12941a3b89..492756168d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyAttributeDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyAttributeDto.cs @@ -1,13 +1,12 @@ using System; using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class ExtensionPropertyAttributeDto { - [Serializable] - public class ExtensionPropertyAttributeDto - { - public string TypeSimple { get; set; } + public string TypeSimple { get; set; } - public Dictionary Config { get; set; } - } -} \ No newline at end of file + public Dictionary Config { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyDto.cs index b1ba6f7ea9..a1fb628e1a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyDto.cs @@ -2,26 +2,25 @@ using System.Collections.Generic; using JetBrains.Annotations; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class ExtensionPropertyDto { - [Serializable] - public class ExtensionPropertyDto - { - public string Type { get; set; } + public string Type { get; set; } + + public string TypeSimple { get; set; } + + [CanBeNull] + public LocalizableStringDto DisplayName { get; set; } - public string TypeSimple { get; set; } + public ExtensionPropertyApiDto Api { get; set; } - [CanBeNull] - public LocalizableStringDto DisplayName { get; set; } + public ExtensionPropertyUiDto Ui { get; set; } - public ExtensionPropertyApiDto Api { get; set; } - - public ExtensionPropertyUiDto Ui { get; set; } + public List Attributes { get; set; } - public List Attributes { get; set; } + public Dictionary Configuration { get; set; } - public Dictionary Configuration { get; set; } - - public object DefaultValue { get; set; } - } -} \ No newline at end of file + public object DefaultValue { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiDto.cs index caa5d67957..cd43df5446 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiDto.cs @@ -1,13 +1,12 @@ using System; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class ExtensionPropertyUiDto { - [Serializable] - public class ExtensionPropertyUiDto - { - public ExtensionPropertyUiTableDto OnTable { get; set; } - public ExtensionPropertyUiFormDto OnCreateForm { get; set; } - public ExtensionPropertyUiFormDto OnEditForm { get; set; } - public ExtensionPropertyUiLookupDto Lookup { get; set; } - } -} \ No newline at end of file + public ExtensionPropertyUiTableDto OnTable { get; set; } + public ExtensionPropertyUiFormDto OnCreateForm { get; set; } + public ExtensionPropertyUiFormDto OnEditForm { get; set; } + public ExtensionPropertyUiLookupDto Lookup { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiFormDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiFormDto.cs index c4f6f5211c..2eb506c13d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiFormDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiFormDto.cs @@ -1,10 +1,9 @@ using System; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class ExtensionPropertyUiFormDto { - [Serializable] - public class ExtensionPropertyUiFormDto - { - public bool IsVisible { get; set; } - } -} \ No newline at end of file + public bool IsVisible { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiLookupDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiLookupDto.cs index 035178df1e..b9bc94399c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiLookupDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiLookupDto.cs @@ -1,14 +1,13 @@ using System; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class ExtensionPropertyUiLookupDto { - [Serializable] - public class ExtensionPropertyUiLookupDto - { - public string Url { get; set; } - public string ResultListPropertyName { get; set; } - public string DisplayPropertyName { get; set; } - public string ValuePropertyName { get; set; } - public string FilterParamName { get; set; } - } -} \ No newline at end of file + public string Url { get; set; } + public string ResultListPropertyName { get; set; } + public string DisplayPropertyName { get; set; } + public string ValuePropertyName { get; set; } + public string FilterParamName { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiTableDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiTableDto.cs index 4c9e4a7ce0..cba33fb2f8 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiTableDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ExtensionPropertyUiTableDto.cs @@ -1,10 +1,9 @@ using System; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class ExtensionPropertyUiTableDto { - [Serializable] - public class ExtensionPropertyUiTableDto - { - public bool IsVisible { get; set; } - } -} \ No newline at end of file + public bool IsVisible { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/LocalizableStringDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/LocalizableStringDto.cs index b80352d791..8127a90bd7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/LocalizableStringDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/LocalizableStringDto.cs @@ -1,21 +1,20 @@ using System; using JetBrains.Annotations; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class LocalizableStringDto { - [Serializable] - public class LocalizableStringDto - { - [NotNull] - public string Name { get; private set; } + [NotNull] + public string Name { get; private set; } - [CanBeNull] - public string Resource { get; set; } + [CanBeNull] + public string Resource { get; set; } - public LocalizableStringDto([NotNull] string name, string resource = null) - { - Name = Check.NotNullOrEmpty(name, nameof(name)); - Resource = resource; - } + public LocalizableStringDto([NotNull] string name, string resource = null) + { + Name = Check.NotNullOrEmpty(name, nameof(name)); + Resource = resource; } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ModuleExtensionDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ModuleExtensionDto.cs index e077596f59..aadd08cd28 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ModuleExtensionDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ModuleExtensionDto.cs @@ -1,13 +1,12 @@ using System; using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class ModuleExtensionDto { - [Serializable] - public class ModuleExtensionDto - { - public Dictionary Entities { get; set; } + public Dictionary Entities { get; set; } - public Dictionary Configuration { get; set; } - } -} \ No newline at end of file + public Dictionary Configuration { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ObjectExtensionsDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ObjectExtensionsDto.cs index 0338bbd4dc..f63935847b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ObjectExtensionsDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ObjectExtending/ObjectExtensionsDto.cs @@ -1,13 +1,12 @@ using System; using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; + +[Serializable] +public class ObjectExtensionsDto { - [Serializable] - public class ObjectExtensionsDto - { - public Dictionary Modules { get; set; } - - public Dictionary Enums { get; set; } - } -} \ No newline at end of file + public Dictionary Modules { get; set; } + + public Dictionary Enums { get; set; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/TimingDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/TimingDto.cs index bd95bfba0d..ca03407ee5 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/TimingDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/TimingDto.cs @@ -1,24 +1,23 @@ -namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations +namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; + +public class TimingDto { - public class TimingDto - { - public TimeZone TimeZone { get; set; } - } + public TimeZone TimeZone { get; set; } +} - public class TimeZone - { - public IanaTimeZone Iana { get; set; } +public class TimeZone +{ + public IanaTimeZone Iana { get; set; } - public WindowsTimeZone Windows { get; set; } - } + public WindowsTimeZone Windows { get; set; } +} - public class WindowsTimeZone - { - public string TimeZoneId { get; set; } - } +public class WindowsTimeZone +{ + public string TimeZoneId { get; set; } +} - public class IanaTimeZone - { - public string TimeZoneName { get; set; } - } +public class IanaTimeZone +{ + public string TimeZoneName { get; set; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/CurrentTenantDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/CurrentTenantDto.cs index 06b24f1235..b8b361e7c8 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/CurrentTenantDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/CurrentTenantDto.cs @@ -2,14 +2,13 @@ using System.Collections.Generic; using System.Text; -namespace Volo.Abp.AspNetCore.Mvc.MultiTenancy +namespace Volo.Abp.AspNetCore.Mvc.MultiTenancy; + +public class CurrentTenantDto { - public class CurrentTenantDto - { - public Guid? Id { get; set; } + public Guid? Id { get; set; } - public string Name { get; set; } + public string Name { get; set; } - public bool IsAvailable { get; set; } - } + public bool IsAvailable { get; set; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/FindTenantResultDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/FindTenantResultDto.cs index 6f834b18ea..64bcc77554 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/FindTenantResultDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/FindTenantResultDto.cs @@ -1,16 +1,15 @@ using System; -namespace Volo.Abp.AspNetCore.Mvc.MultiTenancy +namespace Volo.Abp.AspNetCore.Mvc.MultiTenancy; + +[Serializable] +public class FindTenantResultDto { - [Serializable] - public class FindTenantResultDto - { - public bool Success { get; set; } + public bool Success { get; set; } - public Guid? TenantId { get; set; } + public Guid? TenantId { get; set; } - public string Name { get; set; } + public string Name { get; set; } - public bool IsActive { get; set; } - } + public bool IsActive { get; set; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/IAbpTenantAppService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/IAbpTenantAppService.cs index eb02e84ceb..feb4fc4af7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/IAbpTenantAppService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/IAbpTenantAppService.cs @@ -2,12 +2,11 @@ using System.Threading.Tasks; using Volo.Abp.Application.Services; -namespace Volo.Abp.AspNetCore.Mvc.MultiTenancy +namespace Volo.Abp.AspNetCore.Mvc.MultiTenancy; + +public interface IAbpTenantAppService : IApplicationService { - public interface IAbpTenantAppService : IApplicationService - { - Task FindTenantByNameAsync(string name); + Task FindTenantByNameAsync(string name); - Task FindTenantByIdAsync(Guid id); - } -} \ No newline at end of file + Task FindTenantByIdAsync(Guid id); +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/MultiTenancyInfoDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/MultiTenancyInfoDto.cs index 165a0e5c21..c08e4ab60d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/MultiTenancyInfoDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/MultiTenancy/MultiTenancyInfoDto.cs @@ -2,10 +2,9 @@ using System.Collections.Generic; using System.Text; -namespace Volo.Abp.AspNetCore.Mvc.MultiTenancy +namespace Volo.Abp.AspNetCore.Mvc.MultiTenancy; + +public class MultiTenancyInfoDto { - public class MultiTenancyInfoDto - { - public bool IsEnabled { get; set; } - } + public bool IsEnabled { get; set; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/AbpAspNetCoreMvcUiBootstrapModule.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/AbpAspNetCoreMvcUiBootstrapModule.cs index 889ffdc96e..fe06c4e084 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/AbpAspNetCoreMvcUiBootstrapModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/AbpAspNetCoreMvcUiBootstrapModule.cs @@ -1,17 +1,16 @@ using Volo.Abp.Modularity; using Volo.Abp.VirtualFileSystem; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; + +[DependsOn(typeof(AbpAspNetCoreMvcUiModule))] +public class AbpAspNetCoreMvcUiBootstrapModule : AbpModule { - [DependsOn(typeof(AbpAspNetCoreMvcUiModule))] - public class AbpAspNetCoreMvcUiBootstrapModule : AbpModule + public override void ConfigureServices(ServiceConfigurationContext context) { - public override void ConfigureServices(ServiceConfigurationContext context) + Configure(options => { - Configure(options => - { - options.FileSets.AddEmbedded("Volo.Abp.AspNetCore.Mvc.UI.Bootstrap"); - }); - } + options.FileSets.AddEmbedded("Volo.Abp.AspNetCore.Mvc.UI.Bootstrap"); + }); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/Microsoft/AspNetCore/Razor/TagHelpers/AbpTagHelperAttributeListExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/Microsoft/AspNetCore/Razor/TagHelpers/AbpTagHelperAttributeListExtensions.cs index ae6684a6a6..81aefb7382 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/Microsoft/AspNetCore/Razor/TagHelpers/AbpTagHelperAttributeListExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/Microsoft/AspNetCore/Razor/TagHelpers/AbpTagHelperAttributeListExtensions.cs @@ -4,54 +4,54 @@ using System.Linq; using Microsoft.AspNetCore.Razor.TagHelpers; namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers //TODO: Move to AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers namespace +; + +public static class AbpTagHelperAttributeListExtensions { - public static class AbpTagHelperAttributeListExtensions + public static void AddClass(this TagHelperAttributeList attributes, string className) { - public static void AddClass(this TagHelperAttributeList attributes, string className) + if (string.IsNullOrWhiteSpace(className)) { - if (string.IsNullOrWhiteSpace(className)) - { - return; - } - - var classAttribute = attributes["class"]; - if (classAttribute == null) - { - attributes.Add("class", className); - } - else - { - var existingClasses = classAttribute.Value.ToString().Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList(); - existingClasses.AddIfNotContains(className); - attributes.SetAttribute("class", string.Join(" ", existingClasses)); - } + return; } - public static void RemoveClass(this TagHelperAttributeList attributes, string className) + var classAttribute = attributes["class"]; + if (classAttribute == null) { - if (string.IsNullOrWhiteSpace(className)) - { - return; - } - - var classAttribute = attributes["class"]; - if (classAttribute == null) - { - return; - } + attributes.Add("class", className); + } + else + { + var existingClasses = classAttribute.Value.ToString().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList(); + existingClasses.AddIfNotContains(className); + attributes.SetAttribute("class", string.Join(" ", existingClasses)); + } + } - var classList = classAttribute.Value.ToString().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList(); - classList.RemoveAll(c => c == className); + public static void RemoveClass(this TagHelperAttributeList attributes, string className) + { + if (string.IsNullOrWhiteSpace(className)) + { + return; + } - attributes.SetAttribute("class", classList.JoinAsString(" ")); + var classAttribute = attributes["class"]; + if (classAttribute == null) + { + return; } - public static void AddIfNotContains(this TagHelperAttributeList attributes, string name, object value) + var classList = classAttribute.Value.ToString().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList(); + classList.RemoveAll(c => c == className); + + attributes.SetAttribute("class", classList.JoinAsString(" ")); + } + + public static void AddIfNotContains(this TagHelperAttributeList attributes, string name, object value) + { + if (!attributes.ContainsName(name)) { - if (!attributes.ContainsName(name)) - { - attributes.Add(name, value); - } + attributes.Add(name, value); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelper.cs index 1188d68056..5b9c1430f2 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelper.cs @@ -6,44 +6,43 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.DependencyInjection; using Volo.Abp.Threading; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers; + +public abstract class AbpTagHelper : TagHelper, ITransientDependency { - public abstract class AbpTagHelper : TagHelper, ITransientDependency + +} + +public abstract class AbpTagHelper : AbpTagHelper + where TTagHelper : AbpTagHelper + where TService : class, IAbpTagHelperService +{ + protected TService Service { get; } + + public override int Order => Service.Order; + + [HtmlAttributeNotBound] + [ViewContext] + public ViewContext ViewContext { get; set; } + + protected AbpTagHelper(TService service) + { + Service = service; + Service.As>().TagHelper = (TTagHelper)this; + } + + public override void Init(TagHelperContext context) { + Service.Init(context); + } + public override void Process(TagHelperContext context, TagHelperOutput output) + { + Service.Process(context, output); } - public abstract class AbpTagHelper : AbpTagHelper - where TTagHelper : AbpTagHelper - where TService : class, IAbpTagHelperService + public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { - protected TService Service { get; } - - public override int Order => Service.Order; - - [HtmlAttributeNotBound] - [ViewContext] - public ViewContext ViewContext { get; set; } - - protected AbpTagHelper(TService service) - { - Service = service; - Service.As>().TagHelper = (TTagHelper)this; - } - - public override void Init(TagHelperContext context) - { - Service.Init(context); - } - - public override void Process(TagHelperContext context, TagHelperOutput output) - { - Service.Process(context, output); - } - - public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) - { - return Service.ProcessAsync(context, output); - } + return Service.ProcessAsync(context, output); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperLocalizer.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperLocalizer.cs index 700a5f4ee9..c4314134be 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperLocalizer.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperLocalizer.cs @@ -6,45 +6,44 @@ using Microsoft.Extensions.Localization; using Microsoft.Extensions.Options; using Volo.Abp.AspNetCore.Mvc.Localization; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers; + +public class AbpTagHelperLocalizer : IAbpTagHelperLocalizer { - public class AbpTagHelperLocalizer : IAbpTagHelperLocalizer - { - private readonly IStringLocalizerFactory _stringLocalizerFactory; - private readonly AbpMvcDataAnnotationsLocalizationOptions _options; + private readonly IStringLocalizerFactory _stringLocalizerFactory; + private readonly AbpMvcDataAnnotationsLocalizationOptions _options; - public AbpTagHelperLocalizer(IOptions options, IStringLocalizerFactory stringLocalizerFactory) - { - _stringLocalizerFactory = stringLocalizerFactory; - _options = options.Value; - } + public AbpTagHelperLocalizer(IOptions options, IStringLocalizerFactory stringLocalizerFactory) + { + _stringLocalizerFactory = stringLocalizerFactory; + _options = options.Value; + } - public string GetLocalizedText(string text, ModelExplorer explorer) - { - var localizer = GetLocalizerOrNull(explorer); - return localizer == null - ? text - : localizer[text].Value; - } + public string GetLocalizedText(string text, ModelExplorer explorer) + { + var localizer = GetLocalizerOrNull(explorer); + return localizer == null + ? text + : localizer[text].Value; + } - public IStringLocalizer GetLocalizerOrNull(ModelExplorer explorer) - { - return GetLocalizerOrNull(explorer.Container.ModelType.Assembly); - } + public IStringLocalizer GetLocalizerOrNull(ModelExplorer explorer) + { + return GetLocalizerOrNull(explorer.Container.ModelType.Assembly); + } - public IStringLocalizer GetLocalizerOrNull(Assembly assembly) - { - var resourceType = GetResourceType(assembly); - return resourceType == null - ? _stringLocalizerFactory.CreateDefaultOrNull() - : _stringLocalizerFactory.Create(resourceType); - } + public IStringLocalizer GetLocalizerOrNull(Assembly assembly) + { + var resourceType = GetResourceType(assembly); + return resourceType == null + ? _stringLocalizerFactory.CreateDefaultOrNull() + : _stringLocalizerFactory.Create(resourceType); + } - private Type GetResourceType(Assembly assembly) - { - return _options - .AssemblyResources - .GetOrDefault(assembly); - } + private Type GetResourceType(Assembly assembly) + { + return _options + .AssemblyResources + .GetOrDefault(assembly); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs index b53b2b4d56..b9c3aa92e6 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/AbpTagHelperService.cs @@ -1,46 +1,45 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers; + +//TODO: Refactor this class, extract bootstrap functionality! +public abstract class AbpTagHelperService : IAbpTagHelperService + where TTagHelper : TagHelper { - //TODO: Refactor this class, extract bootstrap functionality! - public abstract class AbpTagHelperService : IAbpTagHelperService - where TTagHelper : TagHelper + protected const string FormGroupContents = "FormGroupContents"; + protected const string TabItems = "TabItems"; + protected const string AccordionItems = "AccordionItems"; + protected const string BreadcrumbItemsContent = "BreadcrumbItemsContent"; + protected const string CarouselItemsContent = "CarouselItemsContent"; + protected const string TabItemsDataTogglePlaceHolder = "{_data_toggle_Placeholder_}"; + protected const string TabItemNamePlaceHolder = "{_Tab_Tag_Name_Placeholder_}"; + protected const string AbpFormContentPlaceHolder = "{_AbpFormContentPlaceHolder_}"; + protected const string AbpTabItemActivePlaceholder = "{_Tab_Active_Placeholder_}"; + protected const string AbpTabDropdownItemsActivePlaceholder = "{_Tab_DropDown_Items_Placeholder_}"; + protected const string AbpTabItemShowActivePlaceholder = "{_Tab_Show_Active_Placeholder_}"; + protected const string AbpBreadcrumbItemActivePlaceholder = "{_Breadcrumb_Active_Placeholder_}"; + protected const string AbpCarouselItemActivePlaceholder = "{_CarouselItem_Active_Placeholder_}"; + protected const string AbpTabItemSelectedPlaceholder = "{_Tab_Selected_Placeholder_}"; + protected const string AbpAccordionParentIdPlaceholder = "{_Parent_Accordion_Id_}"; + + public TTagHelper TagHelper { get; internal set; } + + public virtual int Order { get; } + + public virtual void Init(TagHelperContext context) + { + + } + + public virtual void Process(TagHelperContext context, TagHelperOutput output) + { + + } + + public virtual Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { - protected const string FormGroupContents = "FormGroupContents"; - protected const string TabItems = "TabItems"; - protected const string AccordionItems = "AccordionItems"; - protected const string BreadcrumbItemsContent = "BreadcrumbItemsContent"; - protected const string CarouselItemsContent = "CarouselItemsContent"; - protected const string TabItemsDataTogglePlaceHolder = "{_data_toggle_Placeholder_}"; - protected const string TabItemNamePlaceHolder = "{_Tab_Tag_Name_Placeholder_}"; - protected const string AbpFormContentPlaceHolder = "{_AbpFormContentPlaceHolder_}"; - protected const string AbpTabItemActivePlaceholder = "{_Tab_Active_Placeholder_}"; - protected const string AbpTabDropdownItemsActivePlaceholder = "{_Tab_DropDown_Items_Placeholder_}"; - protected const string AbpTabItemShowActivePlaceholder = "{_Tab_Show_Active_Placeholder_}"; - protected const string AbpBreadcrumbItemActivePlaceholder = "{_Breadcrumb_Active_Placeholder_}"; - protected const string AbpCarouselItemActivePlaceholder = "{_CarouselItem_Active_Placeholder_}"; - protected const string AbpTabItemSelectedPlaceholder = "{_Tab_Selected_Placeholder_}"; - protected const string AbpAccordionParentIdPlaceholder = "{_Parent_Accordion_Id_}"; - - public TTagHelper TagHelper { get; internal set; } - - public virtual int Order { get; } - - public virtual void Init(TagHelperContext context) - { - - } - - public virtual void Process(TagHelperContext context, TagHelperOutput output) - { - - } - - public virtual Task ProcessAsync(TagHelperContext context, TagHelperOutput output) - { - Process(context, output); - return Task.CompletedTask; - } + Process(context, output); + return Task.CompletedTask; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertHeaderTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertHeaderTagHelper.cs index b32acb7b1b..d86ef557fa 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertHeaderTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertHeaderTagHelper.cs @@ -1,19 +1,18 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert; + +[HtmlTargetElement("h1", ParentTag = "abp-alert", TagStructure = TagStructure.NormalOrSelfClosing)] +[HtmlTargetElement("h2", ParentTag = "abp-alert", TagStructure = TagStructure.NormalOrSelfClosing)] +[HtmlTargetElement("h3", ParentTag = "abp-alert", TagStructure = TagStructure.NormalOrSelfClosing)] +[HtmlTargetElement("h4", ParentTag = "abp-alert", TagStructure = TagStructure.NormalOrSelfClosing)] +[HtmlTargetElement("h5", ParentTag = "abp-alert", TagStructure = TagStructure.NormalOrSelfClosing)] +[HtmlTargetElement("h6", ParentTag = "abp-alert", TagStructure = TagStructure.NormalOrSelfClosing)] +public class AbpAlertHeaderTagHelper : AbpTagHelper { - [HtmlTargetElement("h1", ParentTag = "abp-alert", TagStructure = TagStructure.NormalOrSelfClosing)] - [HtmlTargetElement("h2", ParentTag = "abp-alert", TagStructure = TagStructure.NormalOrSelfClosing)] - [HtmlTargetElement("h3", ParentTag = "abp-alert", TagStructure = TagStructure.NormalOrSelfClosing)] - [HtmlTargetElement("h4", ParentTag = "abp-alert", TagStructure = TagStructure.NormalOrSelfClosing)] - [HtmlTargetElement("h5", ParentTag = "abp-alert", TagStructure = TagStructure.NormalOrSelfClosing)] - [HtmlTargetElement("h6", ParentTag = "abp-alert", TagStructure = TagStructure.NormalOrSelfClosing)] - public class AbpAlertHeaderTagHelper : AbpTagHelper + public AbpAlertHeaderTagHelper(AbpAlertHeaderTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpAlertHeaderTagHelper(AbpAlertHeaderTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertHeaderTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertHeaderTagHelperService.cs index 1e3b9e7c2a..46d3bbf5ef 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertHeaderTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertHeaderTagHelperService.cs @@ -1,13 +1,12 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert; + +public class AbpAlertHeaderTagHelperService : AbpTagHelperService { - public class AbpAlertHeaderTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.Attributes.AddClass("alert-heading"); - } + output.Attributes.AddClass("alert-heading"); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertLinkTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertLinkTagHelper.cs index 17e9a335b9..af659ac401 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertLinkTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertLinkTagHelper.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert; + +[HtmlTargetElement("a", Attributes = "abp-alert-link", TagStructure = TagStructure.NormalOrSelfClosing)] +public class AbpAlertLinkTagHelper : AbpTagHelper { - [HtmlTargetElement("a", Attributes = "abp-alert-link", TagStructure = TagStructure.NormalOrSelfClosing)] - public class AbpAlertLinkTagHelper : AbpTagHelper + public AbpAlertLinkTagHelper(AbpAlertLinkTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpAlertLinkTagHelper(AbpAlertLinkTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertLinkTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertLinkTagHelperService.cs index 79372688c3..40746eac6c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertLinkTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertLinkTagHelperService.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert; + +public class AbpAlertLinkTagHelperService : AbpTagHelperService { - public class AbpAlertLinkTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.Attributes.AddClass("alert-link"); - output.Attributes.RemoveAll("abp-alert-link"); - } + output.Attributes.AddClass("alert-link"); + output.Attributes.RemoveAll("abp-alert-link"); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelper.cs index f4d0c33ced..19728a99b3 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelper.cs @@ -1,17 +1,16 @@ using Volo.Abp.AspNetCore.Mvc.UI.Alerts; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert; + +public class AbpAlertTagHelper : AbpTagHelper { - public class AbpAlertTagHelper : AbpTagHelper - { - public AlertType AlertType { get; set; } = AlertType.Default; + public AlertType AlertType { get; set; } = AlertType.Default; - public bool? Dismissible { get; set; } + public bool? Dismissible { get; set; } - public AbpAlertTagHelper(AbpAlertTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpAlertTagHelper(AbpAlertTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelperService.cs index a8d2342978..6d465f4bb4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Alert/AbpAlertTagHelperService.cs @@ -3,48 +3,47 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Alerts; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Alert; + +public class AbpAlertTagHelperService : AbpTagHelperService { - public class AbpAlertTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "div"; - output.TagMode = TagMode.StartTagAndEndTag; + output.TagName = "div"; + output.TagMode = TagMode.StartTagAndEndTag; + + AddClasses(context, output); + AddDismissButtonIfDismissible(context, output); + } + + protected virtual void AddClasses(TagHelperContext context, TagHelperOutput output) + { + output.Attributes.Add("role", "alert"); + output.Attributes.AddClass("alert"); - AddClasses(context, output); - AddDismissButtonIfDismissible(context, output); + if (TagHelper.AlertType != AlertType.Default) + { + output.Attributes.AddClass("alert-" + TagHelper.AlertType.ToString().ToLowerInvariant()); } - protected virtual void AddClasses(TagHelperContext context, TagHelperOutput output) + if (TagHelper.Dismissible ?? false) { - output.Attributes.Add("role", "alert"); - output.Attributes.AddClass("alert"); - - if (TagHelper.AlertType != AlertType.Default) - { - output.Attributes.AddClass("alert-" + TagHelper.AlertType.ToString().ToLowerInvariant()); - } - - if (TagHelper.Dismissible ?? false) - { - output.Attributes.AddClass("alert-dismissible"); - output.Attributes.AddClass("fade"); - output.Attributes.AddClass("show"); - } + output.Attributes.AddClass("alert-dismissible"); + output.Attributes.AddClass("fade"); + output.Attributes.AddClass("show"); } + } - protected virtual void AddDismissButtonIfDismissible(TagHelperContext context, TagHelperOutput output) + protected virtual void AddDismissButtonIfDismissible(TagHelperContext context, TagHelperOutput output) + { + if (!TagHelper.Dismissible ?? true) { - if (!TagHelper.Dismissible ?? true) - { - return; - } + return; + } - var buttonAsHtml = - ""; + var buttonAsHtml = + ""; - output.PostContent.SetHtmlContent(buttonAsHtml); - } + output.PostContent.SetHtmlContent(buttonAsHtml); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Badge/AbpBadgeTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Badge/AbpBadgeTagHelper.cs index bfb83f7363..82da24d088 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Badge/AbpBadgeTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Badge/AbpBadgeTagHelper.cs @@ -1,24 +1,22 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Badge -{ +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Badge; - [HtmlTargetElement("a", Attributes = "abp-badge")] - [HtmlTargetElement("span", Attributes = "abp-badge")] - [HtmlTargetElement("a", Attributes = "abp-badge-pill")] - [HtmlTargetElement("span", Attributes = "abp-badge-pill")] - public class AbpBadgeTagHelper : AbpTagHelper - { - [HtmlAttributeName("abp-badge")] - public AbpBadgeType BadgeType { get; set; } = AbpBadgeType._; +[HtmlTargetElement("a", Attributes = "abp-badge")] +[HtmlTargetElement("span", Attributes = "abp-badge")] +[HtmlTargetElement("a", Attributes = "abp-badge-pill")] +[HtmlTargetElement("span", Attributes = "abp-badge-pill")] +public class AbpBadgeTagHelper : AbpTagHelper +{ + [HtmlAttributeName("abp-badge")] + public AbpBadgeType BadgeType { get; set; } = AbpBadgeType._; - [HtmlAttributeName("abp-badge-pill")] - public AbpBadgeType BadgePillType { get; set; } = AbpBadgeType._; + [HtmlAttributeName("abp-badge-pill")] + public AbpBadgeType BadgePillType { get; set; } = AbpBadgeType._; - public AbpBadgeTagHelper(AbpBadgeTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpBadgeTagHelper(AbpBadgeTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Badge/AbpBadgeTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Badge/AbpBadgeTagHelperService.cs index 14aeefeb25..384b7383ec 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Badge/AbpBadgeTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Badge/AbpBadgeTagHelperService.cs @@ -1,39 +1,38 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Badge +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Badge; + +public class AbpBadgeTagHelperService : AbpTagHelperService { - public class AbpBadgeTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - SetBadgeClass(context, output); - SetBadgeStyle(context, output); - } - - protected virtual void SetBadgeStyle(TagHelperContext context, TagHelperOutput output) - { - var badgeType = GetBadgeType(context, output); + SetBadgeClass(context, output); + SetBadgeStyle(context, output); + } - if (badgeType != AbpBadgeType.Default && badgeType != AbpBadgeType._) - { - output.Attributes.AddClass("bg-" + badgeType.ToString().ToLowerInvariant()); - } - } + protected virtual void SetBadgeStyle(TagHelperContext context, TagHelperOutput output) + { + var badgeType = GetBadgeType(context, output); - protected virtual void SetBadgeClass(TagHelperContext context, TagHelperOutput output) + if (badgeType != AbpBadgeType.Default && badgeType != AbpBadgeType._) { - output.Attributes.AddClass("badge"); - - if (TagHelper.BadgePillType != AbpBadgeType._) - { - output.Attributes.AddClass("rounded-pill"); - } + output.Attributes.AddClass("bg-" + badgeType.ToString().ToLowerInvariant()); } + } + + protected virtual void SetBadgeClass(TagHelperContext context, TagHelperOutput output) + { + output.Attributes.AddClass("badge"); - protected virtual AbpBadgeType GetBadgeType(TagHelperContext context, TagHelperOutput output) + if (TagHelper.BadgePillType != AbpBadgeType._) { - return TagHelper.BadgeType != AbpBadgeType._ ? TagHelper.BadgeType : TagHelper.BadgePillType; + output.Attributes.AddClass("rounded-pill"); } } + + protected virtual AbpBadgeType GetBadgeType(TagHelperContext context, TagHelperOutput output) + { + return TagHelper.BadgeType != AbpBadgeType._ ? TagHelper.BadgeType : TagHelper.BadgePillType; + } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Badge/AbpBadgeType.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Badge/AbpBadgeType.cs index ffc78d377a..77dafac397 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Badge/AbpBadgeType.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Badge/AbpBadgeType.cs @@ -1,16 +1,15 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Badge +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Badge; + +public enum AbpBadgeType { - public enum AbpBadgeType - { - _, - Default, - Primary, - Secondary, - Success, - Danger, - Warning, - Info, - Light, - Dark - } -} \ No newline at end of file + _, + Default, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteFooterTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteFooterTagHelper.cs index d4619390ef..ac3a6342c5 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteFooterTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteFooterTagHelper.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote; + +[HtmlTargetElement("footer", ParentTag = "blockquote")] +public class AbpBlockquoteFooterTagHelper : AbpTagHelper { - [HtmlTargetElement("footer", ParentTag = "blockquote")] - public class AbpBlockquoteFooterTagHelper : AbpTagHelper + public AbpBlockquoteFooterTagHelper(AbpBlockquoteFooterTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpBlockquoteFooterTagHelper(AbpBlockquoteFooterTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteFooterTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteFooterTagHelperService.cs index 6280f5de99..55d9d0673e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteFooterTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteFooterTagHelperService.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote; + +public class AbpBlockquoteFooterTagHelperService : AbpTagHelperService { - public class AbpBlockquoteFooterTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.Attributes.AddClass("blockquote-footer"); - } - + output.Attributes.AddClass("blockquote-footer"); } -} \ No newline at end of file + +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteParagraphTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteParagraphTagHelper.cs index 0e915f2a36..8734cc52e8 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteParagraphTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteParagraphTagHelper.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote; + +[HtmlTargetElement("p", ParentTag = "blockquote")] +public class AbpBlockquoteParagraphTagHelper : AbpTagHelper { - [HtmlTargetElement("p", ParentTag = "blockquote")] - public class AbpBlockquoteParagraphTagHelper : AbpTagHelper + public AbpBlockquoteParagraphTagHelper(AbpBlockquoteParagraphTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpBlockquoteParagraphTagHelper(AbpBlockquoteParagraphTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteParagraphTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteParagraphTagHelperService.cs index d3ce37cbc5..513cee7833 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteParagraphTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteParagraphTagHelperService.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote; + +public class AbpBlockquoteParagraphTagHelperService : AbpTagHelperService { - public class AbpBlockquoteParagraphTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.Attributes.AddClass("mb-0"); - } - + output.Attributes.AddClass("mb-0"); } -} \ No newline at end of file + +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteTagHelper.cs index 74e2a10e2d..72835b53e0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteTagHelper.cs @@ -1,11 +1,10 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote; + +public class AbpBlockquoteTagHelper : AbpTagHelper { - public class AbpBlockquoteTagHelper : AbpTagHelper + public AbpBlockquoteTagHelper(AbpBlockquoteTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpBlockquoteTagHelper(AbpBlockquoteTagHelperService tagHelperService) - : base(tagHelperService) - { - - } + } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteTagHelperService.cs index 6c26747d11..53fa7b0b5d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Blockquote/AbpBlockquoteTagHelperService.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Blockquote; + +public class AbpBlockquoteTagHelperService : AbpTagHelperService { - public class AbpBlockquoteTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.Attributes.AddClass("blockquote"); - output.TagName = "blockquote"; - } + output.Attributes.AddClass("blockquote"); + output.TagName = "blockquote"; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelper.cs index bc7a6f9829..f701ca4c2d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelper.cs @@ -1,16 +1,15 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border; + +[HtmlTargetElement(Attributes = "abp-border")] +public class AbpBorderTagHelper : AbpTagHelper { - [HtmlTargetElement(Attributes = "abp-border")] - public class AbpBorderTagHelper : AbpTagHelper - { - public AbpBorderType AbpBorder { get; set; } = AbpBorderType.Default; + public AbpBorderType AbpBorder { get; set; } = AbpBorderType.Default; - public AbpBorderTagHelper(AbpBorderTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpBorderTagHelper(AbpBorderTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelperService.cs index 3bf4bc16d4..f8446a493d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderTagHelperService.cs @@ -1,91 +1,90 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border; + +public class AbpBorderTagHelperService : AbpTagHelperService { - public class AbpBorderTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - var borderAttributeAsString = TagHelper.AbpBorder.ToString().ToLowerInvariant(); + var borderAttributeAsString = TagHelper.AbpBorder.ToString().ToLowerInvariant(); - var borderClass = "border" + GetBorderDirection(context, output, borderAttributeAsString) + GetExtensionIfBorderIsSubtractive(context, output, borderAttributeAsString); + var borderClass = "border" + GetBorderDirection(context, output, borderAttributeAsString) + GetExtensionIfBorderIsSubtractive(context, output, borderAttributeAsString); - output.Attributes.AddClass(borderClass); + output.Attributes.AddClass(borderClass); - SetBorderType(context, output, borderAttributeAsString); - } + SetBorderType(context, output, borderAttributeAsString); + } - protected virtual string GetBorderDirection(TagHelperContext context, TagHelperOutput output, string borderAttributeAsString) + protected virtual string GetBorderDirection(TagHelperContext context, TagHelperOutput output, string borderAttributeAsString) + { + if (borderAttributeAsString.Contains("top")) { - if (borderAttributeAsString.Contains("top")) - { - return "-top"; - } - if (borderAttributeAsString.Contains("right")) - { - return "-right"; - } - if (borderAttributeAsString.Contains("left")) - { - return "-left"; - } - if (borderAttributeAsString.Contains("bottom")) - { - return "-bottom"; - } - - return ""; + return "-top"; } - - protected virtual string GetExtensionIfBorderIsSubtractive(TagHelperContext context, TagHelperOutput output, string borderAttributeAsString) + if (borderAttributeAsString.Contains("right")) + { + return "-right"; + } + if (borderAttributeAsString.Contains("left")) { - if (borderAttributeAsString.Contains("_0")) - { - return "-0"; - } + return "-left"; + } + if (borderAttributeAsString.Contains("bottom")) + { + return "-bottom"; + } + + return ""; + } - return ""; + protected virtual string GetExtensionIfBorderIsSubtractive(TagHelperContext context, TagHelperOutput output, string borderAttributeAsString) + { + if (borderAttributeAsString.Contains("_0")) + { + return "-0"; } - protected virtual void SetBorderType(TagHelperContext context, TagHelperOutput output, string borderAttributeAsString) + return ""; + } + + protected virtual void SetBorderType(TagHelperContext context, TagHelperOutput output, string borderAttributeAsString) + { + if (borderAttributeAsString.Contains("primary")) + { + output.Attributes.AddClass("border-primary"); + } + if (borderAttributeAsString.Contains("secondary")) + { + output.Attributes.AddClass("border-secondary"); + } + if (borderAttributeAsString.Contains("success")) + { + output.Attributes.AddClass("border-success"); + } + if (borderAttributeAsString.Contains("danger")) + { + output.Attributes.AddClass("border-danger"); + } + if (borderAttributeAsString.Contains("warning")) + { + output.Attributes.AddClass("border-warning"); + } + if (borderAttributeAsString.Contains("info")) + { + output.Attributes.AddClass("border-info"); + } + if (borderAttributeAsString.Contains("light")) + { + output.Attributes.AddClass("border-light"); + } + if (borderAttributeAsString.Contains("dark")) + { + output.Attributes.AddClass("border-dark"); + } + if (borderAttributeAsString.Contains("white")) { - if (borderAttributeAsString.Contains("primary")) - { - output.Attributes.AddClass("border-primary"); - } - if (borderAttributeAsString.Contains("secondary")) - { - output.Attributes.AddClass("border-secondary"); - } - if (borderAttributeAsString.Contains("success")) - { - output.Attributes.AddClass("border-success"); - } - if (borderAttributeAsString.Contains("danger")) - { - output.Attributes.AddClass("border-danger"); - } - if (borderAttributeAsString.Contains("warning")) - { - output.Attributes.AddClass("border-warning"); - } - if (borderAttributeAsString.Contains("info")) - { - output.Attributes.AddClass("border-info"); - } - if (borderAttributeAsString.Contains("light")) - { - output.Attributes.AddClass("border-light"); - } - if (borderAttributeAsString.Contains("dark")) - { - output.Attributes.AddClass("border-dark"); - } - if (borderAttributeAsString.Contains("white")) - { - output.Attributes.AddClass("border-white"); - } + output.Attributes.AddClass("border-white"); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderType.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderType.cs index 14b1684876..c59780971b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderType.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpBorderType.cs @@ -1,106 +1,105 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border; + +public enum AbpBorderType { - public enum AbpBorderType - { - Default, - _0, - Primary, - Secondary, - Success, - Danger, - Warning, - Info, - Light, - Dark, - White, - Primary_0, - Secondary_0, - Success_0, - Danger_0, - Warning_0, - Info_0, - Light_0, - Dark_0, - White_0, - Top, - Top_0, - Top_Primary, - Top_Secondary, - Top_Success, - Top_Danger, - Top_Warning, - Top_Info, - Top_Light, - Top_Dark, - Top_White, - Top_Primary_0, - Top_Secondary_0, - Top_Success_0, - Top_Danger_0, - Top_Warning_0, - Top_Info_0, - Top_Light_0, - Top_Dark_0, - Top_White_0, - Right, - Right_0, - Right_Primary, - Right_Secondary, - Right_Success, - Right_Danger, - Right_Warning, - Right_Info, - Right_Light, - Right_Dark, - Right_White, - Right_Primary_0, - Right_Secondary_0, - Right_Success_0, - Right_Danger_0, - Right_Warning_0, - Right_Info_0, - Right_Light_0, - Right_Dark_0, - Right_White_0, - Left, - Left_0, - Left_Primary, - Left_Secondary, - Left_Success, - Left_Danger, - Left_Warning, - Left_Info, - Left_Light, - Left_Dark, - Left_White, - Left_Primary_0, - Left_Secondary_0, - Left_Success_0, - Left_Danger_0, - Left_Warning_0, - Left_Info_0, - Left_Light_0, - Left_Dark_0, - Left_White_0, - Bottom, - Bottom_0, - Bottom_Primary, - Bottom_Secondary, - Bottom_Success, - Bottom_Danger, - Bottom_Warning, - Bottom_Info, - Bottom_Light, - Bottom_Dark, - Bottom_White, - Bottom_Primary_0, - Bottom_Secondary_0, - Bottom_Success_0, - Bottom_Danger_0, - Bottom_Warning_0, - Bottom_Info_0, - Bottom_Light_0, - Bottom_Dark_0, - Bottom_White_0, - } -} \ No newline at end of file + Default, + _0, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark, + White, + Primary_0, + Secondary_0, + Success_0, + Danger_0, + Warning_0, + Info_0, + Light_0, + Dark_0, + White_0, + Top, + Top_0, + Top_Primary, + Top_Secondary, + Top_Success, + Top_Danger, + Top_Warning, + Top_Info, + Top_Light, + Top_Dark, + Top_White, + Top_Primary_0, + Top_Secondary_0, + Top_Success_0, + Top_Danger_0, + Top_Warning_0, + Top_Info_0, + Top_Light_0, + Top_Dark_0, + Top_White_0, + Right, + Right_0, + Right_Primary, + Right_Secondary, + Right_Success, + Right_Danger, + Right_Warning, + Right_Info, + Right_Light, + Right_Dark, + Right_White, + Right_Primary_0, + Right_Secondary_0, + Right_Success_0, + Right_Danger_0, + Right_Warning_0, + Right_Info_0, + Right_Light_0, + Right_Dark_0, + Right_White_0, + Left, + Left_0, + Left_Primary, + Left_Secondary, + Left_Success, + Left_Danger, + Left_Warning, + Left_Info, + Left_Light, + Left_Dark, + Left_White, + Left_Primary_0, + Left_Secondary_0, + Left_Success_0, + Left_Danger_0, + Left_Warning_0, + Left_Info_0, + Left_Light_0, + Left_Dark_0, + Left_White_0, + Bottom, + Bottom_0, + Bottom_Primary, + Bottom_Secondary, + Bottom_Success, + Bottom_Danger, + Bottom_Warning, + Bottom_Info, + Bottom_Light, + Bottom_Dark, + Bottom_White, + Bottom_Primary_0, + Bottom_Secondary_0, + Bottom_Success_0, + Bottom_Danger_0, + Bottom_Warning_0, + Bottom_Info_0, + Bottom_Light_0, + Bottom_Dark_0, + Bottom_White_0, +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelper.cs index f8c3489cc9..6dc0ecd305 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelper.cs @@ -1,16 +1,15 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border; + +[HtmlTargetElement(Attributes = "abp-rounded")] +public class AbpRoundedTagHelper : AbpTagHelper { - [HtmlTargetElement(Attributes = "abp-rounded")] - public class AbpRoundedTagHelper : AbpTagHelper - { - public AbpRoundedType AbpRounded { get; set; } = AbpRoundedType.Default; + public AbpRoundedType AbpRounded { get; set; } = AbpRoundedType.Default; - public AbpRoundedTagHelper(AbpRoundedTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpRoundedTagHelper(AbpRoundedTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelperService.cs index 89436785ba..798380e411 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedTagHelperService.cs @@ -1,20 +1,19 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border; + +public class AbpRoundedTagHelperService : AbpTagHelperService { - public class AbpRoundedTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - var roundedClass = "rounded"; - - if (TagHelper.AbpRounded != AbpRoundedType.Default) - { - roundedClass += "-" + TagHelper.AbpRounded.ToString().ToLowerInvariant().Replace("_",""); - } + var roundedClass = "rounded"; - output.Attributes.AddClass(roundedClass); + if (TagHelper.AbpRounded != AbpRoundedType.Default) + { + roundedClass += "-" + TagHelper.AbpRounded.ToString().ToLowerInvariant().Replace("_", ""); } + + output.Attributes.AddClass(roundedClass); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedType.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedType.cs index 1910ffc714..ab4620f0f5 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedType.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Border/AbpRoundedType.cs @@ -1,12 +1,11 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Border; + +public enum AbpRoundedType { - public enum AbpRoundedType - { - Default, - _0, - Top, - Right, - Left, - Bottom - } -} \ No newline at end of file + Default, + _0, + Top, + Right, + Left, + Bottom +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelper.cs index e27781479f..71ce3406fa 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelper.cs @@ -1,17 +1,16 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb; + +public class AbpBreadcrumbItemTagHelper : AbpTagHelper { - public class AbpBreadcrumbItemTagHelper : AbpTagHelper - { - public string Href { get; set; } + public string Href { get; set; } - public string Title { get; set; } + public string Title { get; set; } - public bool Active { get; set; } + public bool Active { get; set; } - public AbpBreadcrumbItemTagHelper(AbpBreadcrumbItemTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpBreadcrumbItemTagHelper(AbpBreadcrumbItemTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs index 3fa8a27472..9935b90903 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbItemTagHelperService.cs @@ -5,49 +5,48 @@ using System.Text.Encodings.Web; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb; + +public class AbpBreadcrumbItemTagHelperService : AbpTagHelperService { - public class AbpBreadcrumbItemTagHelperService : AbpTagHelperService - { - private readonly HtmlEncoder _encoder; + private readonly HtmlEncoder _encoder; - public AbpBreadcrumbItemTagHelperService(HtmlEncoder encoder) - { - _encoder = encoder; - } + public AbpBreadcrumbItemTagHelperService(HtmlEncoder encoder) + { + _encoder = encoder; + } - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "li"; - output.TagMode = TagMode.StartTagAndEndTag; - output.Attributes.AddClass("breadcrumb-item"); - output.Attributes.AddClass(AbpBreadcrumbItemActivePlaceholder); + public override void Process(TagHelperContext context, TagHelperOutput output) + { + output.TagName = "li"; + output.TagMode = TagMode.StartTagAndEndTag; + output.Attributes.AddClass("breadcrumb-item"); + output.Attributes.AddClass(AbpBreadcrumbItemActivePlaceholder); - var list = context.GetValue>(BreadcrumbItemsContent); + var list = context.GetValue>(BreadcrumbItemsContent); - output.Content.SetHtmlContent(GetInnerHtml(context, output)); + output.Content.SetHtmlContent(GetInnerHtml(context, output)); - list.Add(new BreadcrumbItem - { - Html = output.Render(_encoder), - Active = TagHelper.Active - }); + list.Add(new BreadcrumbItem + { + Html = output.Render(_encoder), + Active = TagHelper.Active + }); - output.SuppressOutput(); - } + output.SuppressOutput(); + } - protected virtual string GetInnerHtml(TagHelperContext context, TagHelperOutput output) + protected virtual string GetInnerHtml(TagHelperContext context, TagHelperOutput output) + { + if (string.IsNullOrWhiteSpace(TagHelper.Href)) { - if (string.IsNullOrWhiteSpace(TagHelper.Href)) - { - output.Attributes.Add("aria-current", "page"); - return _encoder.Encode(TagHelper.Title); - } - - var link = new TagBuilder("a"); - link.Attributes.Add("href", TagHelper.Href); - link.InnerHtml.AppendHtml(TagHelper.Title); - return link.ToHtmlString(); + output.Attributes.Add("aria-current", "page"); + return _encoder.Encode(TagHelper.Title); } + + var link = new TagBuilder("a"); + link.Attributes.Add("href", TagHelper.Href); + link.InnerHtml.AppendHtml(TagHelper.Title); + return link.ToHtmlString(); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelper.cs index a207d46a49..cdb9f29741 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelper.cs @@ -1,11 +1,10 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb; + +public class AbpBreadcrumbTagHelper : AbpTagHelper { - public class AbpBreadcrumbTagHelper : AbpTagHelper + public AbpBreadcrumbTagHelper(AbpBreadcrumbTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpBreadcrumbTagHelper(AbpBreadcrumbTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs index 4b433ac495..a23dc6c294 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/AbpBreadcrumbTagHelperService.cs @@ -4,66 +4,65 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb; + +public class AbpBreadcrumbTagHelperService : AbpTagHelperService { - public class AbpBreadcrumbTagHelperService : AbpTagHelperService + public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { - public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "nav"; - output.Attributes.Add("aria-label", "breadcrumb"); - - var list = InitilizeFormGroupContentsContext(context, output); + output.TagName = "nav"; + output.Attributes.Add("aria-label", "breadcrumb"); - await output.GetChildContentAsync(); + var list = InitilizeFormGroupContentsContext(context, output); - var listTagBuilder = GetOlTagBuilder(); + await output.GetChildContentAsync(); - SetInnerList(context, output, list, listTagBuilder); + var listTagBuilder = GetOlTagBuilder(); - output.Content.SetHtmlContent(listTagBuilder); - } - - protected virtual TagBuilder GetOlTagBuilder() - { - var builder = new TagBuilder("ol"); - builder.AddCssClass("breadcrumb"); - return builder; - } + SetInnerList(context, output, list, listTagBuilder); - protected virtual void SetInnerList(TagHelperContext context, TagHelperOutput output, List list, TagBuilder listTagBuilder) - { - SetLastOneActiveIfThereIsNotAny(context, output, list); + output.Content.SetHtmlContent(listTagBuilder); + } - foreach (var breadcrumbItem in list) - { - var htmlPart = SetActiveClassIfActiveAndGetHtml(breadcrumbItem); + protected virtual TagBuilder GetOlTagBuilder() + { + var builder = new TagBuilder("ol"); + builder.AddCssClass("breadcrumb"); + return builder; + } - listTagBuilder.InnerHtml.AppendHtml(htmlPart); - } - } + protected virtual void SetInnerList(TagHelperContext context, TagHelperOutput output, List list, TagBuilder listTagBuilder) + { + SetLastOneActiveIfThereIsNotAny(context, output, list); - protected virtual List InitilizeFormGroupContentsContext(TagHelperContext context, TagHelperOutput output) + foreach (var breadcrumbItem in list) { - var items = new List(); - context.Items[BreadcrumbItemsContent] = items; - return items; - } + var htmlPart = SetActiveClassIfActiveAndGetHtml(breadcrumbItem); - protected virtual void SetLastOneActiveIfThereIsNotAny(TagHelperContext context, TagHelperOutput output, List list) - { - if (list.Count > 0 && !list.Any(bc => bc.Active)) - { - list.Last().Active = true; - } + listTagBuilder.InnerHtml.AppendHtml(htmlPart); } + } - protected virtual string SetActiveClassIfActiveAndGetHtml(BreadcrumbItem item) + protected virtual List InitilizeFormGroupContentsContext(TagHelperContext context, TagHelperOutput output) + { + var items = new List(); + context.Items[BreadcrumbItemsContent] = items; + return items; + } + + protected virtual void SetLastOneActiveIfThereIsNotAny(TagHelperContext context, TagHelperOutput output, List list) + { + if (list.Count > 0 && !list.Any(bc => bc.Active)) { - return item.Active ? - item.Html.Replace(AbpBreadcrumbItemActivePlaceholder, " active") : - item.Html.Replace(AbpBreadcrumbItemActivePlaceholder, ""); + list.Last().Active = true; } + } + protected virtual string SetActiveClassIfActiveAndGetHtml(BreadcrumbItem item) + { + return item.Active ? + item.Html.Replace(AbpBreadcrumbItemActivePlaceholder, " active") : + item.Html.Replace(AbpBreadcrumbItemActivePlaceholder, ""); } + } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/BreadcrumbItem.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/BreadcrumbItem.cs index 7f69abdfca..37a194b906 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/BreadcrumbItem.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Breadcrumb/BreadcrumbItem.cs @@ -1,9 +1,8 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Breadcrumb; + +public class BreadcrumbItem { - public class BreadcrumbItem - { - public string Html { get; set; } + public string Html { get; set; } - public bool Active { get; set; } - } + public bool Active { get; set; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupDirection.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupDirection.cs index 53f3c3b6f9..9b4e42805d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupDirection.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupDirection.cs @@ -3,11 +3,10 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +public enum AbpButtonGroupDirection { - public enum AbpButtonGroupDirection - { - Horizontal, - Vertical - } + Horizontal, + Vertical } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupSize.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupSize.cs index 42635dd232..d54cdcea8c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupSize.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupSize.cs @@ -1,10 +1,9 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +public enum AbpButtonGroupSize { - public enum AbpButtonGroupSize - { - Default, - Small, - Medium, - Large - } + Default, + Small, + Medium, + Large } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupTagHelper.cs index b1958fc8af..cc48c96bf9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupTagHelper.cs @@ -1,15 +1,14 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +public class AbpButtonGroupTagHelper : AbpTagHelper { - public class AbpButtonGroupTagHelper : AbpTagHelper - { - public AbpButtonGroupDirection Direction { get; set; } = AbpButtonGroupDirection.Horizontal; + public AbpButtonGroupDirection Direction { get; set; } = AbpButtonGroupDirection.Horizontal; - public AbpButtonGroupSize Size { get; set; } = AbpButtonGroupSize.Default; + public AbpButtonGroupSize Size { get; set; } = AbpButtonGroupSize.Default; - public AbpButtonGroupTagHelper(AbpButtonGroupTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpButtonGroupTagHelper(AbpButtonGroupTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupTagHelperService.cs index 3250fe6877..fb646e9941 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonGroupTagHelperService.cs @@ -2,56 +2,55 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +public class AbpButtonGroupTagHelperService : AbpTagHelperService { - public class AbpButtonGroupTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - AddButtonGroupClass(context, output); - AddSizeClass(context, output); - AddAttributes(context, output); + AddButtonGroupClass(context, output); + AddSizeClass(context, output); + AddAttributes(context, output); - output.TagName = "div"; - } + output.TagName = "div"; + } - protected virtual void AddSizeClass(TagHelperContext context, TagHelperOutput output) + protected virtual void AddSizeClass(TagHelperContext context, TagHelperOutput output) + { + switch (TagHelper.Size) { - switch (TagHelper.Size) - { - case AbpButtonGroupSize.Default: - break; - case AbpButtonGroupSize.Small: - output.Attributes.AddClass("btn-group-sm"); - break; - case AbpButtonGroupSize.Medium: - output.Attributes.AddClass("btn-group-md"); - break; - case AbpButtonGroupSize.Large: - output.Attributes.AddClass("btn-group-lg"); - break; - } + case AbpButtonGroupSize.Default: + break; + case AbpButtonGroupSize.Small: + output.Attributes.AddClass("btn-group-sm"); + break; + case AbpButtonGroupSize.Medium: + output.Attributes.AddClass("btn-group-md"); + break; + case AbpButtonGroupSize.Large: + output.Attributes.AddClass("btn-group-lg"); + break; } + } - protected virtual void AddButtonGroupClass(TagHelperContext context, TagHelperOutput output) + protected virtual void AddButtonGroupClass(TagHelperContext context, TagHelperOutput output) + { + switch (TagHelper.Direction) { - switch (TagHelper.Direction) - { - case AbpButtonGroupDirection.Horizontal: - output.Attributes.AddClass("btn-group"); - break; - case AbpButtonGroupDirection.Vertical: - output.Attributes.AddClass("btn-group-vertical"); - break; - default: - output.Attributes.AddClass("btn-group"); - break; - } + case AbpButtonGroupDirection.Horizontal: + output.Attributes.AddClass("btn-group"); + break; + case AbpButtonGroupDirection.Vertical: + output.Attributes.AddClass("btn-group-vertical"); + break; + default: + output.Attributes.AddClass("btn-group"); + break; } + } - protected virtual void AddAttributes(TagHelperContext context, TagHelperOutput output) - { - output.Attributes.Add("role", "group"); - } + protected virtual void AddAttributes(TagHelperContext context, TagHelperOutput output) + { + output.Attributes.Add("role", "group"); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonSize.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonSize.cs index b3aae45f6d..96f7b27d1e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonSize.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonSize.cs @@ -1,20 +1,19 @@ using System; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +public enum AbpButtonSize { - public enum AbpButtonSize - { - Default, - Small, - Medium, - Large, - [Obsolete("https://getbootstrap.com/docs/5.0/components/buttons/#block-buttons")] - Block, - [Obsolete("https://getbootstrap.com/docs/5.0/components/buttons/#block-buttons")] - Block_Small, - [Obsolete("https://getbootstrap.com/docs/5.0/components/buttons/#block-buttons")] - Block_Medium, - [Obsolete("https://getbootstrap.com/docs/5.0/components/buttons/#block-buttons")] - Block_Large, - } + Default, + Small, + Medium, + Large, + [Obsolete("https://getbootstrap.com/docs/5.0/components/buttons/#block-buttons")] + Block, + [Obsolete("https://getbootstrap.com/docs/5.0/components/buttons/#block-buttons")] + Block_Small, + [Obsolete("https://getbootstrap.com/docs/5.0/components/buttons/#block-buttons")] + Block_Medium, + [Obsolete("https://getbootstrap.com/docs/5.0/components/buttons/#block-buttons")] + Block_Large, } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonSizeExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonSizeExtensions.cs index 5927d06e43..bdd0de72f2 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonSizeExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonSizeExtensions.cs @@ -1,26 +1,25 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +public static class AbpButtonSizeExtensions { - public static class AbpButtonSizeExtensions + public static string ToClassName(this AbpButtonSize size) { - public static string ToClassName(this AbpButtonSize size) + switch (size) { - switch (size) - { - case AbpButtonSize.Small: - case AbpButtonSize.Block_Small: - return "btn-sm"; - case AbpButtonSize.Medium: - case AbpButtonSize.Block_Medium: - return "btn-md"; - case AbpButtonSize.Large: - case AbpButtonSize.Block_Large: - return "btn-lg"; - case AbpButtonSize.Block: - case AbpButtonSize.Default: - return ""; - default: - throw new AbpException($"Unknown {nameof(AbpButtonSize)}: {size}"); - } + case AbpButtonSize.Small: + case AbpButtonSize.Block_Small: + return "btn-sm"; + case AbpButtonSize.Medium: + case AbpButtonSize.Block_Medium: + return "btn-md"; + case AbpButtonSize.Large: + case AbpButtonSize.Block_Large: + return "btn-lg"; + case AbpButtonSize.Block: + case AbpButtonSize.Default: + return ""; + default: + throw new AbpException($"Unknown {nameof(AbpButtonSize)}: {size}"); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelper.cs index f7ffa84c39..624d750274 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelper.cs @@ -1,31 +1,30 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +[HtmlTargetElement("abp-button", TagStructure = TagStructure.NormalOrSelfClosing)] +public class AbpButtonTagHelper : AbpTagHelper, IButtonTagHelperBase { - [HtmlTargetElement("abp-button", TagStructure = TagStructure.NormalOrSelfClosing)] - public class AbpButtonTagHelper : AbpTagHelper, IButtonTagHelperBase - { - public AbpButtonType ButtonType { get; set; } = AbpButtonType.Default; + public AbpButtonType ButtonType { get; set; } = AbpButtonType.Default; - public AbpButtonSize Size { get; set; } = AbpButtonSize.Default; + public AbpButtonSize Size { get; set; } = AbpButtonSize.Default; - public string BusyText { get; set; } + public string BusyText { get; set; } - public string Text { get; set; } + public string Text { get; set; } - public string Icon { get; set; } + public string Icon { get; set; } - public bool? Disabled { get; set; } + public bool? Disabled { get; set; } - public FontIconType IconType { get; set; } = FontIconType.FontAwesome; + public FontIconType IconType { get; set; } = FontIconType.FontAwesome; - public bool BusyTextIsHtml { get; set; } + public bool BusyTextIsHtml { get; set; } - public AbpButtonTagHelper(AbpButtonTagHelperService service) - : base(service) - { + public AbpButtonTagHelper(AbpButtonTagHelperService service) + : base(service) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperService.cs index fb74d5c1da..e5576332b3 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperService.cs @@ -3,58 +3,57 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.Extensions.Localization; using System; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +public class AbpButtonTagHelperService : AbpButtonTagHelperServiceBase { - public class AbpButtonTagHelperService : AbpButtonTagHelperServiceBase + protected const string DataBusyTextAttributeName = "data-busy-text"; + protected const string DataBusyTextIsHtmlAttributeName = "data-busy-text-is-html"; + + protected IStringLocalizer L { get; } + + public AbpButtonTagHelperService(IStringLocalizer localizer) { - protected const string DataBusyTextAttributeName = "data-busy-text"; - protected const string DataBusyTextIsHtmlAttributeName = "data-busy-text-is-html"; + L = localizer; + } - protected IStringLocalizer L { get; } + public override void Process(TagHelperContext context, TagHelperOutput output) + { + base.Process(context, output); + output.TagName = "button"; + AddType(context, output); + AddBusyText(context, output); + AddBusyTextIsHtml(context, output); + } - public AbpButtonTagHelperService(IStringLocalizer localizer) + protected virtual void AddType(TagHelperContext context, TagHelperOutput output) + { + if (output.Attributes.ContainsName("type")) { - L = localizer; + return; } - public override void Process(TagHelperContext context, TagHelperOutput output) - { - base.Process(context, output); - output.TagName = "button"; - AddType(context, output); - AddBusyText(context, output); - AddBusyTextIsHtml(context, output); - } + output.Attributes.Add("type", "button"); + } - protected virtual void AddType(TagHelperContext context, TagHelperOutput output) + protected virtual void AddBusyText(TagHelperContext context, TagHelperOutput output) + { + var busyText = TagHelper.BusyText ?? L["ProcessingWithThreeDot"]; + if (busyText.IsNullOrWhiteSpace()) { - if (output.Attributes.ContainsName("type")) - { - return; - } - - output.Attributes.Add("type", "button"); + return; } - protected virtual void AddBusyText(TagHelperContext context, TagHelperOutput output) - { - var busyText = TagHelper.BusyText ?? L["ProcessingWithThreeDot"]; - if (busyText.IsNullOrWhiteSpace()) - { - return; - } - - output.Attributes.SetAttribute(DataBusyTextAttributeName, busyText); - } + output.Attributes.SetAttribute(DataBusyTextAttributeName, busyText); + } - protected virtual void AddBusyTextIsHtml(TagHelperContext context, TagHelperOutput output) + protected virtual void AddBusyTextIsHtml(TagHelperContext context, TagHelperOutput output) + { + if (!TagHelper.BusyTextIsHtml) { - if (!TagHelper.BusyTextIsHtml) - { - return; - } - - output.Attributes.SetAttribute(DataBusyTextIsHtmlAttributeName, TagHelper.BusyTextIsHtml.ToString().ToLower()); + return; } + + output.Attributes.SetAttribute(DataBusyTextIsHtmlAttributeName, TagHelper.BusyTextIsHtml.ToString().ToLower()); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperServiceBase.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperServiceBase.cs index cb795bdc6c..17422327c8 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperServiceBase.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonTagHelperServiceBase.cs @@ -3,82 +3,81 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using System; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +public abstract class AbpButtonTagHelperServiceBase : AbpTagHelperService + where TTagHelper : TagHelper, IButtonTagHelperBase { - public abstract class AbpButtonTagHelperServiceBase : AbpTagHelperService - where TTagHelper : TagHelper, IButtonTagHelperBase + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - NormalizeTagMode(context, output); - AddClasses(context, output); - AddIcon(context, output); - AddText(context, output); - AddDisabled(context, output); - } + NormalizeTagMode(context, output); + AddClasses(context, output); + AddIcon(context, output); + AddText(context, output); + AddDisabled(context, output); + } + + protected virtual void NormalizeTagMode(TagHelperContext context, TagHelperOutput output) + { + output.TagMode = TagMode.StartTagAndEndTag; + } + + protected virtual void AddClasses(TagHelperContext context, TagHelperOutput output) + { + output.Attributes.AddClass("btn"); - protected virtual void NormalizeTagMode(TagHelperContext context, TagHelperOutput output) + if (TagHelper.ButtonType != AbpButtonType.Default) { - output.TagMode = TagMode.StartTagAndEndTag; + output.Attributes.AddClass("btn-" + TagHelper.ButtonType.ToString().ToLowerInvariant().Replace("_", "-")); } - protected virtual void AddClasses(TagHelperContext context, TagHelperOutput output) + if (TagHelper.Size != AbpButtonSize.Default) { - output.Attributes.AddClass("btn"); - - if (TagHelper.ButtonType != AbpButtonType.Default) - { - output.Attributes.AddClass("btn-" + TagHelper.ButtonType.ToString().ToLowerInvariant().Replace("_","-")); - } - - if (TagHelper.Size != AbpButtonSize.Default) - { - output.Attributes.AddClass(TagHelper.Size.ToClassName()); - } + output.Attributes.AddClass(TagHelper.Size.ToClassName()); } + } - protected virtual void AddIcon(TagHelperContext context, TagHelperOutput output) + protected virtual void AddIcon(TagHelperContext context, TagHelperOutput output) + { + if (TagHelper.Icon.IsNullOrWhiteSpace()) { - if (TagHelper.Icon.IsNullOrWhiteSpace()) - { - return; - } - - var icon = new TagBuilder("i"); - icon.AddCssClass(GetIconClass(context, output)); - output.Content.AppendHtml(icon); - output.Content.Append(" "); + return; } - protected virtual string GetIconClass(TagHelperContext context, TagHelperOutput output) + var icon = new TagBuilder("i"); + icon.AddCssClass(GetIconClass(context, output)); + output.Content.AppendHtml(icon); + output.Content.Append(" "); + } + + protected virtual string GetIconClass(TagHelperContext context, TagHelperOutput output) + { + switch (TagHelper.IconType) { - switch (TagHelper.IconType) - { - case FontIconType.FontAwesome: - return "fa fa-" + TagHelper.Icon; - default: - return TagHelper.Icon; - } + case FontIconType.FontAwesome: + return "fa fa-" + TagHelper.Icon; + default: + return TagHelper.Icon; } + } - protected virtual void AddText(TagHelperContext context, TagHelperOutput output) + protected virtual void AddText(TagHelperContext context, TagHelperOutput output) + { + if (TagHelper.Text.IsNullOrWhiteSpace()) { - if (TagHelper.Text.IsNullOrWhiteSpace()) - { - return; - } - - var span = new TagBuilder("span"); - span.InnerHtml.AppendHtml(TagHelper.Text); - output.Content.AppendHtml(span); + return; } - protected virtual void AddDisabled(TagHelperContext context, TagHelperOutput output) + var span = new TagBuilder("span"); + span.InnerHtml.AppendHtml(TagHelper.Text); + output.Content.AppendHtml(span); + } + + protected virtual void AddDisabled(TagHelperContext context, TagHelperOutput output) + { + if (TagHelper.Disabled ?? false) { - if (TagHelper.Disabled ?? false) - { - output.Attributes.Add("disabled", "disabled"); - } + output.Attributes.Add("disabled", "disabled"); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonToolbarTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonToolbarTagHelper.cs index 7c716b88f8..afbd6bb53a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonToolbarTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonToolbarTagHelper.cs @@ -1,11 +1,10 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +public class AbpButtonToolbarTagHelper : AbpTagHelper { - public class AbpButtonToolbarTagHelper : AbpTagHelper + public AbpButtonToolbarTagHelper(AbpButtonToolbarTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpButtonToolbarTagHelper(AbpButtonToolbarTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonToolbarTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonToolbarTagHelperService.cs index 1581cc8bd3..6033621614 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonToolbarTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonToolbarTagHelperService.cs @@ -1,15 +1,14 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +public class AbpButtonToolbarTagHelperService : AbpTagHelperService { - public class AbpButtonToolbarTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "div"; - output.Attributes.AddClass("btn-toolbar"); - output.Attributes.Add("role","toolbar"); - } + output.TagName = "div"; + output.Attributes.AddClass("btn-toolbar"); + output.Attributes.Add("role", "toolbar"); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonType.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonType.cs index a6ced457e0..0e9990e683 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonType.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpButtonType.cs @@ -1,24 +1,23 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +public enum AbpButtonType { - public enum AbpButtonType - { - Default, - Primary, - Secondary, - Success, - Danger, - Warning, - Info, - Light, - Dark, - Outline_Primary, - Outline_Secondary, - Outline_Success, - Outline_Danger, - Outline_Warning, - Outline_Info, - Outline_Light, - Outline_Dark, - Link - } -} \ No newline at end of file + Default, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark, + Outline_Primary, + Outline_Secondary, + Outline_Success, + Outline_Danger, + Outline_Warning, + Outline_Info, + Outline_Light, + Outline_Dark, + Link +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpLinkButtonTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpLinkButtonTagHelper.cs index 9a553a1be5..bf3b4d8bac 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpLinkButtonTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpLinkButtonTagHelper.cs @@ -1,28 +1,27 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +[HtmlTargetElement("a", Attributes = "abp-button", TagStructure = TagStructure.NormalOrSelfClosing)] +[HtmlTargetElement("input", Attributes = "abp-button", TagStructure = TagStructure.WithoutEndTag)] +public class AbpLinkButtonTagHelper : AbpTagHelper, IButtonTagHelperBase { - [HtmlTargetElement("a", Attributes = "abp-button", TagStructure = TagStructure.NormalOrSelfClosing)] - [HtmlTargetElement("input", Attributes = "abp-button", TagStructure = TagStructure.WithoutEndTag)] - public class AbpLinkButtonTagHelper : AbpTagHelper, IButtonTagHelperBase - { - [HtmlAttributeName("abp-button")] - public AbpButtonType ButtonType { get; set; } + [HtmlAttributeName("abp-button")] + public AbpButtonType ButtonType { get; set; } - public AbpButtonSize Size { get; set; } = AbpButtonSize.Default; + public AbpButtonSize Size { get; set; } = AbpButtonSize.Default; - public string Text { get; set; } + public string Text { get; set; } - public string Icon { get; set; } + public string Icon { get; set; } - public bool? Disabled { get; set; } + public bool? Disabled { get; set; } - public FontIconType IconType { get; } = FontIconType.FontAwesome; + public FontIconType IconType { get; } = FontIconType.FontAwesome; - public AbpLinkButtonTagHelper(AbpLinkButtonTagHelperService service) - : base(service) - { + public AbpLinkButtonTagHelper(AbpLinkButtonTagHelperService service) + : base(service) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpLinkButtonTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpLinkButtonTagHelperService.cs index f92e2d5137..44dc996284 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpLinkButtonTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/AbpLinkButtonTagHelperService.cs @@ -1,32 +1,31 @@ using System; using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +public class AbpLinkButtonTagHelperService : AbpButtonTagHelperServiceBase { - public class AbpLinkButtonTagHelperService : AbpButtonTagHelperServiceBase + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - base.Process(context, output); - AddType(context, output); - AddRole(context, output); - } + base.Process(context, output); + AddType(context, output); + AddRole(context, output); + } - protected virtual void AddType(TagHelperContext context, TagHelperOutput output) + protected virtual void AddType(TagHelperContext context, TagHelperOutput output) + { + if (!output.Attributes.ContainsName("type") && + output.TagName.Equals("input", StringComparison.InvariantCultureIgnoreCase)) { - if (!output.Attributes.ContainsName("type") && - output.TagName.Equals("input", StringComparison.InvariantCultureIgnoreCase)) - { - output.Attributes.Add("type", "button"); - } + output.Attributes.Add("type", "button"); } + } - protected virtual void AddRole(TagHelperContext context, TagHelperOutput output) + protected virtual void AddRole(TagHelperContext context, TagHelperOutput output) + { + if (!output.Attributes.ContainsName("role")) { - if (!output.Attributes.ContainsName("role")) - { - output.Attributes.Add("role", "button"); - } + output.Attributes.Add("role", "button"); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/IButtonTagHelperBase.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/IButtonTagHelperBase.cs index ee88c4d294..8ba73b2ab9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/IButtonTagHelperBase.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Button/IButtonTagHelperBase.cs @@ -1,17 +1,16 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; + +public interface IButtonTagHelperBase { - public interface IButtonTagHelperBase - { - AbpButtonType ButtonType { get; } + AbpButtonType ButtonType { get; } - AbpButtonSize Size { get; } + AbpButtonSize Size { get; } - string Text { get; } + string Text { get; } - string Icon { get; } + string Icon { get; } - bool? Disabled { get; } + bool? Disabled { get; } - FontIconType IconType { get; } - } -} \ No newline at end of file + FontIconType IconType { get; } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBackgroundTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBackgroundTagHelper.cs index 5e95e8bf87..9b4697c44a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBackgroundTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBackgroundTagHelper.cs @@ -1,19 +1,18 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +[HtmlTargetElement("abp-card", Attributes = "background")] +[HtmlTargetElement("abp-card-header", Attributes = "background")] +[HtmlTargetElement("abp-card-body", Attributes = "background")] +[HtmlTargetElement("abp-card-footer", Attributes = "background")] +public class AbpCardBackgroundTagHelper : AbpTagHelper { - [HtmlTargetElement("abp-card", Attributes = "background")] - [HtmlTargetElement("abp-card-header", Attributes = "background")] - [HtmlTargetElement("abp-card-body", Attributes = "background")] - [HtmlTargetElement("abp-card-footer", Attributes = "background")] - public class AbpCardBackgroundTagHelper : AbpTagHelper - { - public AbpCardBackgroundType Background { get; set; } = AbpCardBackgroundType.Default; + public AbpCardBackgroundType Background { get; set; } = AbpCardBackgroundType.Default; - public AbpCardBackgroundTagHelper(AbpCardBackgroundTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpCardBackgroundTagHelper(AbpCardBackgroundTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBackgroundTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBackgroundTagHelperService.cs index 248d737648..af8e0bbf51 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBackgroundTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBackgroundTagHelperService.cs @@ -1,23 +1,22 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardBackgroundTagHelperService : AbpTagHelperService { - public class AbpCardBackgroundTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - SetBackground(context, output); - } + SetBackground(context, output); + } - protected virtual void SetBackground(TagHelperContext context, TagHelperOutput output) + protected virtual void SetBackground(TagHelperContext context, TagHelperOutput output) + { + if (TagHelper.Background == AbpCardBackgroundType.Default) { - if (TagHelper.Background == AbpCardBackgroundType.Default) - { - return; - } - - output.Attributes.AddClass("bg-" + TagHelper.Background.ToString().ToLowerInvariant()); + return; } + + output.Attributes.AddClass("bg-" + TagHelper.Background.ToString().ToLowerInvariant()); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBackgroundType.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBackgroundType.cs index 2eb9732ce8..da7aca4eec 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBackgroundType.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBackgroundType.cs @@ -1,15 +1,14 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public enum AbpCardBackgroundType { - public enum AbpCardBackgroundType - { - Default, - Primary, - Secondary, - Success, - Danger, - Warning, - Info, - Light, - Dark, - } + Default, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark, } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelper.cs index b28b126cf2..34a14e6f33 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelper.cs @@ -1,15 +1,14 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardBodyTagHelper : AbpTagHelper { - public class AbpCardBodyTagHelper : AbpTagHelper - { - public string Title { get; set; } + public string Title { get; set; } - public string Subtitle { get; set; } + public string Subtitle { get; set; } - public AbpCardBodyTagHelper(AbpCardBodyTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpCardBodyTagHelper(AbpCardBodyTagHelperService tagHelperService) + : base(tagHelperService) + { - } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelperService.cs index 5707775a3a..172fa778b6 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBodyTagHelperService.cs @@ -3,39 +3,38 @@ using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardBodyTagHelperService : AbpTagHelperService { - public class AbpCardBodyTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "div"; - output.Attributes.AddClass("card-body"); + output.TagName = "div"; + output.Attributes.AddClass("card-body"); - ProcessTitle(output); - ProcessSubtitle(output); - } + ProcessTitle(output); + ProcessSubtitle(output); + } - protected virtual void ProcessTitle(TagHelperOutput output) + protected virtual void ProcessTitle(TagHelperOutput output) + { + if (!TagHelper.Title.IsNullOrWhiteSpace()) { - if (!TagHelper.Title.IsNullOrWhiteSpace()) - { - var cardTitle = new TagBuilder(AbpCardTitleTagHelper.DefaultHeading.ToHtmlTag()); - cardTitle.AddCssClass("card-title"); - cardTitle.InnerHtml.AppendHtml(TagHelper.Title); - output.PreContent.AppendHtml(cardTitle); - } + var cardTitle = new TagBuilder(AbpCardTitleTagHelper.DefaultHeading.ToHtmlTag()); + cardTitle.AddCssClass("card-title"); + cardTitle.InnerHtml.AppendHtml(TagHelper.Title); + output.PreContent.AppendHtml(cardTitle); } + } - protected virtual void ProcessSubtitle(TagHelperOutput output) + protected virtual void ProcessSubtitle(TagHelperOutput output) + { + if (!TagHelper.Subtitle.IsNullOrWhiteSpace()) { - if (!TagHelper.Subtitle.IsNullOrWhiteSpace()) - { - var cardSubtitle = new TagBuilder(AbpCardSubtitleTagHelper.DefaultHeading.ToHtmlTag()); - cardSubtitle.AddCssClass("card-subtitle text-muted mb-2"); - cardSubtitle.InnerHtml.AppendHtml(TagHelper.Subtitle); - output.PreContent.AppendHtml(cardSubtitle); - } + var cardSubtitle = new TagBuilder(AbpCardSubtitleTagHelper.DefaultHeading.ToHtmlTag()); + cardSubtitle.AddCssClass("card-subtitle text-muted mb-2"); + cardSubtitle.InnerHtml.AppendHtml(TagHelper.Subtitle); + output.PreContent.AppendHtml(cardSubtitle); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBorderColorType.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBorderColorType.cs index 0f5ccc3363..8da13ccbb8 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBorderColorType.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardBorderColorType.cs @@ -1,15 +1,14 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public enum AbpCardBorderColorType { - public enum AbpCardBorderColorType - { - Default, - Primary, - Secondary, - Success, - Danger, - Warning, - Info, - Light, - Dark, - } + Default, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark, } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardFooterTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardFooterTagHelper.cs index 44b8588576..087c02320e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardFooterTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardFooterTagHelper.cs @@ -1,11 +1,10 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardFooterTagHelper : AbpTagHelper { - public class AbpCardFooterTagHelper : AbpTagHelper + public AbpCardFooterTagHelper(AbpCardFooterTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpCardFooterTagHelper(AbpCardFooterTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardFooterTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardFooterTagHelperService.cs index 2a127a495b..abf4e71020 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardFooterTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardFooterTagHelperService.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardFooterTagHelperService : AbpTagHelperService { - public class AbpCardFooterTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.Attributes.AddClass("card-footer"); - output.TagName = "div"; - } + output.Attributes.AddClass("card-footer"); + output.TagName = "div"; } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardHeaderTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardHeaderTagHelper.cs index 0584d40ced..54d61cf61d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardHeaderTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardHeaderTagHelper.cs @@ -1,10 +1,9 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardHeaderTagHelper : AbpTagHelper { - public class AbpCardHeaderTagHelper : AbpTagHelper + public AbpCardHeaderTagHelper(AbpCardHeaderTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpCardHeaderTagHelper(AbpCardHeaderTagHelperService tagHelperService) - : base(tagHelperService) - { - } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardHeaderTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardHeaderTagHelperService.cs index 2f68196607..96e8f91a83 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardHeaderTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardHeaderTagHelperService.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardHeaderTagHelperService : AbpTagHelperService { - public class AbpCardHeaderTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "div"; - output.Attributes.AddClass("card-header"); - } + output.TagName = "div"; + output.Attributes.AddClass("card-header"); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImagePosition.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImagePosition.cs index b3396a513b..f101e44313 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImagePosition.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImagePosition.cs @@ -1,9 +1,8 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public enum AbpCardImagePosition { - public enum AbpCardImagePosition - { - None, - Top, - Bottom - } -} \ No newline at end of file + None, + Top, + Bottom +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImagePositionExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImagePositionExtensions.cs index 7a3f74449c..5ab3676651 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImagePositionExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImagePositionExtensions.cs @@ -1,20 +1,19 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public static class AbpCardImagePositionExtensions { - public static class AbpCardImagePositionExtensions + public static string ToClassName(this AbpCardImagePosition position) { - public static string ToClassName(this AbpCardImagePosition position) + switch (position) { - switch (position) - { - case AbpCardImagePosition.None: - return "card-img"; - case AbpCardImagePosition.Top: - return "card-img-top"; - case AbpCardImagePosition.Bottom: - return "card-img-bottom"; - default: - throw new AbpException("Unknown AbpCardImagePosition: " + position); - } + case AbpCardImagePosition.None: + return "card-img"; + case AbpCardImagePosition.Top: + return "card-img-top"; + case AbpCardImagePosition.Bottom: + return "card-img-bottom"; + default: + throw new AbpException("Unknown AbpCardImagePosition: " + position); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImageTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImageTagHelper.cs index 4a173968d0..0610cfa150 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImageTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImageTagHelper.cs @@ -1,18 +1,17 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +[HtmlTargetElement("img", Attributes = "abp-card-image", TagStructure = TagStructure.WithoutEndTag)] +[HtmlTargetElement("abp-image", Attributes = "abp-card-image", TagStructure = TagStructure.WithoutEndTag)] +public class AbpCardImageTagHelper : AbpTagHelper { - [HtmlTargetElement("img", Attributes = "abp-card-image", TagStructure = TagStructure.WithoutEndTag)] - [HtmlTargetElement("abp-image", Attributes = "abp-card-image", TagStructure = TagStructure.WithoutEndTag)] - public class AbpCardImageTagHelper : AbpTagHelper - { - [HtmlAttributeName("abp-card-image")] - public AbpCardImagePosition Position { get; set; } = AbpCardImagePosition.Top; + [HtmlAttributeName("abp-card-image")] + public AbpCardImagePosition Position { get; set; } = AbpCardImagePosition.Top; - public AbpCardImageTagHelper(AbpCardImageTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpCardImageTagHelper(AbpCardImageTagHelperService tagHelperService) + : base(tagHelperService) + { - } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImageTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImageTagHelperService.cs index 65cb8ff2bc..4d91cd30c9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImageTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardImageTagHelperService.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardImageTagHelperService : AbpTagHelperService { - public class AbpCardImageTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.Attributes.AddClass(TagHelper.Position.ToClassName()); - output.Attributes.RemoveAll("abp-card-image"); - } + output.Attributes.AddClass(TagHelper.Position.ToClassName()); + output.Attributes.RemoveAll("abp-card-image"); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardLinkTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardLinkTagHelper.cs index 8f7f29bbb5..9626dd2bd4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardLinkTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardLinkTagHelper.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +[HtmlTargetElement("a", Attributes = "abp-card-link")] +public class AbpCardLinkTagHelper : AbpTagHelper { - [HtmlTargetElement("a", Attributes = "abp-card-link")] - public class AbpCardLinkTagHelper : AbpTagHelper + public AbpCardLinkTagHelper(AbpCardLinkTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpCardLinkTagHelper(AbpCardLinkTagHelperService tagHelperService) - : base(tagHelperService) - { - - } + } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardLinkTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardLinkTagHelperService.cs index 5cdba7cdba..d4dc775479 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardLinkTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardLinkTagHelperService.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardLinkTagHelperService : AbpTagHelperService { - public class AbpCardLinkTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.Attributes.AddClass("card-link"); - output.Attributes.RemoveAll("abp-card-link"); - } + output.Attributes.AddClass("card-link"); + output.Attributes.RemoveAll("abp-card-link"); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardSubtitleTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardSubtitleTagHelper.cs index cc6ef506dd..e740af2664 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardSubtitleTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardSubtitleTagHelper.cs @@ -1,15 +1,14 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardSubtitleTagHelper : AbpTagHelper { - public class AbpCardSubtitleTagHelper : AbpTagHelper - { - public static HtmlHeadingType DefaultHeading { get; set; } = HtmlHeadingType.H6; + public static HtmlHeadingType DefaultHeading { get; set; } = HtmlHeadingType.H6; - public HtmlHeadingType Heading { get; set; } = DefaultHeading; + public HtmlHeadingType Heading { get; set; } = DefaultHeading; - public AbpCardSubtitleTagHelper(AbpCardSubtitleTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpCardSubtitleTagHelper(AbpCardSubtitleTagHelperService tagHelperService) + : base(tagHelperService) + { - } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardSubtitleTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardSubtitleTagHelperService.cs index 8f9084d3bf..5710c81000 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardSubtitleTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardSubtitleTagHelperService.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardSubtitleTagHelperService : AbpTagHelperService { - public class AbpCardSubtitleTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = TagHelper.Heading.ToHtmlTag(); - output.Attributes.AddClass("card-subtitle"); - } + output.TagName = TagHelper.Heading.ToHtmlTag(); + output.Attributes.AddClass("card-subtitle"); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTagHelper.cs index c186e8857c..5b568e16a6 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTagHelper.cs @@ -1,12 +1,11 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardTagHelper : AbpTagHelper { - public class AbpCardTagHelper : AbpTagHelper - { - public AbpCardBorderColorType Border { get; set; } = AbpCardBorderColorType.Default; + public AbpCardBorderColorType Border { get; set; } = AbpCardBorderColorType.Default; - public AbpCardTagHelper(AbpCardTagHelperService tagHelperService) - : base(tagHelperService) - { - } + public AbpCardTagHelper(AbpCardTagHelperService tagHelperService) + : base(tagHelperService) + { } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTagHelperService.cs index 29a462797d..6169154904 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTagHelperService.cs @@ -1,25 +1,24 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardTagHelperService : AbpTagHelperService { - public class AbpCardTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "div"; - output.Attributes.AddClass("card"); + output.TagName = "div"; + output.Attributes.AddClass("card"); - SetBorder(context, output); - } - protected virtual void SetBorder(TagHelperContext context, TagHelperOutput output) + SetBorder(context, output); + } + protected virtual void SetBorder(TagHelperContext context, TagHelperOutput output) + { + if (TagHelper.Border == AbpCardBorderColorType.Default) { - if (TagHelper.Border == AbpCardBorderColorType.Default) - { - return; - } - - output.Attributes.AddClass("border-" + TagHelper.Border.ToString().ToLowerInvariant()); + return; } + + output.Attributes.AddClass("border-" + TagHelper.Border.ToString().ToLowerInvariant()); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextColorTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextColorTagHelper.cs index f9787b1f18..45ddf9725a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextColorTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextColorTagHelper.cs @@ -1,19 +1,18 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +[HtmlTargetElement("abp-card", Attributes = "text-color")] +[HtmlTargetElement("abp-card-header", Attributes = "text-color")] +[HtmlTargetElement("abp-card-body", Attributes = "text-color")] +[HtmlTargetElement("abp-card-footer", Attributes = "text-color")] +public class AbpCardTextColorTagHelper : AbpTagHelper { - [HtmlTargetElement("abp-card", Attributes = "text-color")] - [HtmlTargetElement("abp-card-header", Attributes = "text-color")] - [HtmlTargetElement("abp-card-body", Attributes = "text-color")] - [HtmlTargetElement("abp-card-footer", Attributes = "text-color")] - public class AbpCardTextColorTagHelper : AbpTagHelper - { - public AbpCardTextColorType TextColor { get; set; } = AbpCardTextColorType.Default; + public AbpCardTextColorType TextColor { get; set; } = AbpCardTextColorType.Default; - public AbpCardTextColorTagHelper(AbpCardTextColorTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpCardTextColorTagHelper(AbpCardTextColorTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextColorTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextColorTagHelperService.cs index 36484a33f8..04be1fa5bb 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextColorTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextColorTagHelperService.cs @@ -1,23 +1,22 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardTextColorTagHelperService : AbpTagHelperService { - public class AbpCardTextColorTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - SetTextColor(context, output); - } + SetTextColor(context, output); + } - protected virtual void SetTextColor(TagHelperContext context, TagHelperOutput output) + protected virtual void SetTextColor(TagHelperContext context, TagHelperOutput output) + { + if (TagHelper.TextColor == AbpCardTextColorType.Default) { - if (TagHelper.TextColor == AbpCardTextColorType.Default) - { - return; - } - - output.Attributes.AddClass("text-" + TagHelper.TextColor.ToString().ToLowerInvariant()); + return; } + + output.Attributes.AddClass("text-" + TagHelper.TextColor.ToString().ToLowerInvariant()); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextColorType.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextColorType.cs index eb415945b0..45df26f761 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextColorType.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextColorType.cs @@ -1,16 +1,15 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public enum AbpCardTextColorType { - public enum AbpCardTextColorType - { - Default, - White, - Primary, - Secondary, - Success, - Danger, - Warning, - Info, - Light, - Dark - } + Default, + White, + Primary, + Secondary, + Success, + Danger, + Warning, + Info, + Light, + Dark } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextTagHelper.cs index 00e2468dfe..6cb434b17a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextTagHelper.cs @@ -1,10 +1,9 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardTextTagHelper : AbpTagHelper { - public class AbpCardTextTagHelper : AbpTagHelper + public AbpCardTextTagHelper(AbpCardTextTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpCardTextTagHelper(AbpCardTextTagHelperService tagHelperService) - : base(tagHelperService) - { - } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextTagHelperService.cs index ba2d619126..41195ef966 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTextTagHelperService.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardTextTagHelperService : AbpTagHelperService { - public class AbpCardTextTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "p"; - output.Attributes.AddClass("card-text"); - } + output.TagName = "p"; + output.Attributes.AddClass("card-text"); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTitleTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTitleTagHelper.cs index 410a64d76d..ba3b6a41e1 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTitleTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTitleTagHelper.cs @@ -1,14 +1,13 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardTitleTagHelper : AbpTagHelper { - public class AbpCardTitleTagHelper : AbpTagHelper - { - public static HtmlHeadingType DefaultHeading { get; set; } = HtmlHeadingType.H5; + public static HtmlHeadingType DefaultHeading { get; set; } = HtmlHeadingType.H5; - public HtmlHeadingType Heading { get; set; } = DefaultHeading; + public HtmlHeadingType Heading { get; set; } = DefaultHeading; - public AbpCardTitleTagHelper(AbpCardTitleTagHelperService tagHelperService) - : base(tagHelperService) - { - } + public AbpCardTitleTagHelper(AbpCardTitleTagHelperService tagHelperService) + : base(tagHelperService) + { } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTitleTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTitleTagHelperService.cs index 9ad27a49a0..2977fc42e9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTitleTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Card/AbpCardTitleTagHelperService.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card; + +public class AbpCardTitleTagHelperService : AbpTagHelperService { - public class AbpCardTitleTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = TagHelper.Heading.ToHtmlTag(); - output.Attributes.AddClass("card-title"); - } + output.TagName = TagHelper.Heading.ToHtmlTag(); + output.Attributes.AddClass("card-title"); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelper.cs index e8e983b34a..65a47b73c4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelper.cs @@ -1,21 +1,20 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel; + +public class AbpCarouselItemTagHelper : AbpTagHelper { - public class AbpCarouselItemTagHelper : AbpTagHelper - { - public bool? Active { get; set; } + public bool? Active { get; set; } - public string Src { get; set; } + public string Src { get; set; } - public string Alt { get; set; } + public string Alt { get; set; } - public string CaptionTitle { get; set; } + public string CaptionTitle { get; set; } - public string Caption { get; set; } + public string Caption { get; set; } - public AbpCarouselItemTagHelper(AbpCarouselItemTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpCarouselItemTagHelper(AbpCarouselItemTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs index 1af2b759a4..a8a3030e95 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselItemTagHelperService.cs @@ -5,79 +5,78 @@ using System.Text.Encodings.Web; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel; + +public class AbpCarouselItemTagHelperService : AbpTagHelperService { - public class AbpCarouselItemTagHelperService : AbpTagHelperService - { - private readonly HtmlEncoder _encoder; + private readonly HtmlEncoder _encoder; - public AbpCarouselItemTagHelperService(HtmlEncoder encoder) - { - _encoder = encoder; - } + public AbpCarouselItemTagHelperService(HtmlEncoder encoder) + { + _encoder = encoder; + } - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "div"; - output.Attributes.AddClass("carousel-item"); - output.Attributes.AddClass(AbpCarouselItemActivePlaceholder); + public override void Process(TagHelperContext context, TagHelperOutput output) + { + output.TagName = "div"; + output.Attributes.AddClass("carousel-item"); + output.Attributes.AddClass(AbpCarouselItemActivePlaceholder); - SetInnerImgTag(context, output); - SetActive(context, output); - AddCaption(context, output); + SetInnerImgTag(context, output); + SetActive(context, output); + AddCaption(context, output); - AddToContext(context, output); + AddToContext(context, output); - output.SuppressOutput(); - } + output.SuppressOutput(); + } - private void AddToContext(TagHelperContext context, TagHelperOutput output) - { - var getOutputAsHtml = output.Render(_encoder); + private void AddToContext(TagHelperContext context, TagHelperOutput output) + { + var getOutputAsHtml = output.Render(_encoder); - var itemList = context.GetValue>(CarouselItemsContent); + var itemList = context.GetValue>(CarouselItemsContent); - itemList.Add(new CarouselItem(getOutputAsHtml, TagHelper.Active ?? false)); - } + itemList.Add(new CarouselItem(getOutputAsHtml, TagHelper.Active ?? false)); + } - protected virtual void SetInnerImgTag(TagHelperContext context, TagHelperOutput output) - { - var img = new TagBuilder("img"); - img.AddCssClass("d-block w-100"); - img.Attributes.Add("src", TagHelper.Src); - img.Attributes.Add("alt", TagHelper.Alt); + protected virtual void SetInnerImgTag(TagHelperContext context, TagHelperOutput output) + { + var img = new TagBuilder("img"); + img.AddCssClass("d-block w-100"); + img.Attributes.Add("src", TagHelper.Src); + img.Attributes.Add("alt", TagHelper.Alt); - output.Content.SetHtmlContent(img); - } + output.Content.SetHtmlContent(img); + } - protected virtual void SetActive(TagHelperContext context, TagHelperOutput output) + protected virtual void SetActive(TagHelperContext context, TagHelperOutput output) + { + if (TagHelper.Active ?? false) { - if (TagHelper.Active??false) - { - output.Attributes.AddClass("active"); - } + output.Attributes.AddClass("active"); } + } - protected virtual void AddCaption(TagHelperContext context, TagHelperOutput output) + protected virtual void AddCaption(TagHelperContext context, TagHelperOutput output) + { + if (string.IsNullOrWhiteSpace(TagHelper.Caption) && string.IsNullOrWhiteSpace(TagHelper.CaptionTitle)) { - if (string.IsNullOrWhiteSpace(TagHelper.Caption) && string.IsNullOrWhiteSpace(TagHelper.CaptionTitle)) - { - return; - } - - var title = new TagBuilder("h5"); - title.InnerHtml.AppendHtml(TagHelper.CaptionTitle); + return; + } - var caption = new TagBuilder("p"); - caption.InnerHtml.AppendHtml(TagHelper.Caption); + var title = new TagBuilder("h5"); + title.InnerHtml.AppendHtml(TagHelper.CaptionTitle); - var wrapper = new TagBuilder("div"); - wrapper.AddCssClass("carousel-caption d-none d-md-block"); - wrapper.InnerHtml.AppendHtml(title); - wrapper.InnerHtml.AppendHtml(caption); + var caption = new TagBuilder("p"); + caption.InnerHtml.AppendHtml(TagHelper.Caption); - output.PostContent.SetHtmlContent(wrapper); - } + var wrapper = new TagBuilder("div"); + wrapper.AddCssClass("carousel-caption d-none d-md-block"); + wrapper.InnerHtml.AppendHtml(title); + wrapper.InnerHtml.AppendHtml(caption); + output.PostContent.SetHtmlContent(wrapper); } + } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelper.cs index becb13ca47..e9931241c2 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelper.cs @@ -1,19 +1,18 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel; + +public class AbpCarouselTagHelper : AbpTagHelper { - public class AbpCarouselTagHelper : AbpTagHelper - { - public string Id { get; set; } + public string Id { get; set; } - public bool? Crossfade { get; set; } + public bool? Crossfade { get; set; } - public bool? Controls { get; set; } + public bool? Controls { get; set; } - public bool? Indicators { get; set; } + public bool? Indicators { get; set; } - public AbpCarouselTagHelper(AbpCarouselTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpCarouselTagHelper(AbpCarouselTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs index bb3c38f12b..9264737b7b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/AbpCarouselTagHelperService.cs @@ -8,174 +8,173 @@ using System.Linq; using System.Threading.Tasks; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel; + +public class AbpCarouselTagHelperService : AbpTagHelperService { - public class AbpCarouselTagHelperService : AbpTagHelperService + protected IStringLocalizer L { get; } + + public AbpCarouselTagHelperService(IStringLocalizer localizer) { - protected IStringLocalizer L { get; } + L = localizer; + } - public AbpCarouselTagHelperService(IStringLocalizer localizer) - { - L = localizer; - } + public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) + { + output.TagName = "div"; - public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "div"; + SetRandomIdIfNotProvided(); + AddBasicAttributes(context, output); - SetRandomIdIfNotProvided(); - AddBasicAttributes(context, output); + var itemList = InitilizeCarouselItemsContentsContext(context, output); - var itemList = InitilizeCarouselItemsContentsContext(context, output); + await output.GetChildContentAsync(); - await output.GetChildContentAsync(); + SetOneItemAsActive(context, output, itemList); + SetItems(context, output, itemList); + SetControls(context, output, itemList); + SetIndicators(context, output, itemList); + } - SetOneItemAsActive(context, output, itemList); - SetItems(context, output, itemList); - SetControls(context, output, itemList); - SetIndicators(context, output, itemList); - } + protected virtual List InitilizeCarouselItemsContentsContext(TagHelperContext context, TagHelperOutput output) + { + var items = new List(); + context.Items[CarouselItemsContent] = items; + return items; + } - protected virtual List InitilizeCarouselItemsContentsContext(TagHelperContext context, TagHelperOutput output) - { - var items = new List(); - context.Items[CarouselItemsContent] = items; - return items; - } + protected virtual void SetItems(TagHelperContext context, TagHelperOutput output, List itemList) + { + var wrapper = new TagBuilder("div"); + wrapper.AddCssClass("carousel-inner"); - protected virtual void SetItems(TagHelperContext context, TagHelperOutput output, List itemList) + foreach (var carouselItem in itemList) { - var wrapper = new TagBuilder("div"); - wrapper.AddCssClass("carousel-inner"); + SetActiveIfActive(carouselItem); - foreach (var carouselItem in itemList) - { - SetActiveIfActive(carouselItem); + wrapper.InnerHtml.AppendHtml(carouselItem.Html); + } - wrapper.InnerHtml.AppendHtml(carouselItem.Html); - } + output.Content.SetHtmlContent(wrapper); + } - output.Content.SetHtmlContent(wrapper); + protected virtual void SetControls(TagHelperContext context, TagHelperOutput output, List itemList) + { + if (!TagHelper.Controls ?? false) + { + return; } - protected virtual void SetControls(TagHelperContext context, TagHelperOutput output, List itemList) - { - if (!TagHelper.Controls ?? false) - { - return; - } + // create 'previous' item + var prevIcon = new TagBuilder("span"); + prevIcon.AddCssClass("carousel-control-prev-icon"); + prevIcon.Attributes.Add("aria-hidden", "true"); + + var prevText = new TagBuilder("span"); + prevText.AddCssClass("visually-hidden"); + prevText.InnerHtml.Append(L["Previous"].Value); + + var prevAnchor = new TagBuilder("a"); + prevAnchor.AddCssClass("carousel-control-prev"); + prevAnchor.Attributes.Add("href", "#" + TagHelper.Id); + prevAnchor.Attributes.Add("role", "button"); + prevAnchor.Attributes.Add("data-bs-slide", "prev"); + + prevAnchor.InnerHtml.AppendHtml(prevIcon); + prevAnchor.InnerHtml.AppendHtml(prevText); + + // create 'next' item + var nextIcon = new TagBuilder("span"); + nextIcon.AddCssClass("carousel-control-next-icon"); + nextIcon.Attributes.Add("aria-hidden", "true"); + + var nextText = new TagBuilder("span"); + nextText.AddCssClass("visually-hidden"); + nextText.InnerHtml.Append(L["Next"].Value); + + var nextAnchor = new TagBuilder("a"); + nextAnchor.AddCssClass("carousel-control-next"); + nextAnchor.Attributes.Add("href", "#" + TagHelper.Id); + nextAnchor.Attributes.Add("role", "button"); + nextAnchor.Attributes.Add("data-bs-slide", "next"); + + nextAnchor.InnerHtml.AppendHtml(nextIcon); + nextAnchor.InnerHtml.AppendHtml(nextText); + + // append post content + output.PostContent.AppendHtml(prevAnchor); + output.PostContent.AppendHtml(nextAnchor); + } - // create 'previous' item - var prevIcon = new TagBuilder("span"); - prevIcon.AddCssClass("carousel-control-prev-icon"); - prevIcon.Attributes.Add("aria-hidden", "true"); - - var prevText = new TagBuilder("span"); - prevText.AddCssClass("visually-hidden"); - prevText.InnerHtml.Append(L["Previous"].Value); - - var prevAnchor = new TagBuilder("a"); - prevAnchor.AddCssClass("carousel-control-prev"); - prevAnchor.Attributes.Add("href", "#" + TagHelper.Id); - prevAnchor.Attributes.Add("role", "button"); - prevAnchor.Attributes.Add("data-bs-slide", "prev"); - - prevAnchor.InnerHtml.AppendHtml(prevIcon); - prevAnchor.InnerHtml.AppendHtml(prevText); - - // create 'next' item - var nextIcon = new TagBuilder("span"); - nextIcon.AddCssClass("carousel-control-next-icon"); - nextIcon.Attributes.Add("aria-hidden", "true"); - - var nextText = new TagBuilder("span"); - nextText.AddCssClass("visually-hidden"); - nextText.InnerHtml.Append(L["Next"].Value); - - var nextAnchor = new TagBuilder("a"); - nextAnchor.AddCssClass("carousel-control-next"); - nextAnchor.Attributes.Add("href", "#" + TagHelper.Id); - nextAnchor.Attributes.Add("role", "button"); - nextAnchor.Attributes.Add("data-bs-slide", "next"); - - nextAnchor.InnerHtml.AppendHtml(nextIcon); - nextAnchor.InnerHtml.AppendHtml(nextText); - - // append post content - output.PostContent.AppendHtml(prevAnchor); - output.PostContent.AppendHtml(nextAnchor); + protected virtual void SetIndicators(TagHelperContext context, TagHelperOutput output, List itemList) + { + if (!TagHelper.Indicators ?? false) + { + return; } - protected virtual void SetIndicators(TagHelperContext context, TagHelperOutput output, List itemList) - { - if (!TagHelper.Indicators ?? false) - { - return; - } + var list = new TagBuilder("ol"); + list.AddCssClass("carousel-indicators"); - var list = new TagBuilder("ol"); - list.AddCssClass("carousel-indicators"); + for (var i = 0; i < itemList.Count; i++) + { + var listItem = new TagBuilder("li"); + listItem.Attributes.Add("data-bs-target", "#" + TagHelper.Id); + listItem.Attributes.Add("data-bs-slide-to", i.ToString()); - for (var i = 0; i < itemList.Count; i++) + if (itemList[i].Active) { - var listItem = new TagBuilder("li"); - listItem.Attributes.Add("data-bs-target", "#" + TagHelper.Id); - listItem.Attributes.Add("data-bs-slide-to", i.ToString()); - - if (itemList[i].Active) - { - listItem.AddCssClass("active"); - } - - list.InnerHtml.AppendHtml(listItem); + listItem.AddCssClass("active"); } - output.PreContent.SetHtmlContent(list); + list.InnerHtml.AppendHtml(listItem); } - protected virtual void SetOneItemAsActive(TagHelperContext context, TagHelperOutput output, List itemList) - { - if (!itemList.Any(it => it.Active) && itemList.Count > 0) - { - itemList.FirstOrDefault().Active = true; - } - } + output.PreContent.SetHtmlContent(list); + } - protected virtual void AddBasicAttributes(TagHelperContext context, TagHelperOutput output) + protected virtual void SetOneItemAsActive(TagHelperContext context, TagHelperOutput output, List itemList) + { + if (!itemList.Any(it => it.Active) && itemList.Count > 0) { - output.Attributes.Add("data-bs-ride", "carousel"); - output.Attributes.Add("id", TagHelper.Id); - AddBasicClasses(context, output); + itemList.FirstOrDefault().Active = true; } + } - protected virtual void AddBasicClasses(TagHelperContext context, TagHelperOutput output) - { - output.Attributes.AddClass("carousel"); - output.Attributes.AddClass("slide"); - SetFadeAnimation(context, output); - } + protected virtual void AddBasicAttributes(TagHelperContext context, TagHelperOutput output) + { + output.Attributes.Add("data-bs-ride", "carousel"); + output.Attributes.Add("id", TagHelper.Id); + AddBasicClasses(context, output); + } - protected virtual void SetFadeAnimation(TagHelperContext context, TagHelperOutput output) - { - if (TagHelper.Crossfade ?? false) - { - output.Attributes.AddClass("carousel-fade"); - } - } + protected virtual void AddBasicClasses(TagHelperContext context, TagHelperOutput output) + { + output.Attributes.AddClass("carousel"); + output.Attributes.AddClass("slide"); + SetFadeAnimation(context, output); + } - protected virtual void SetRandomIdIfNotProvided() + protected virtual void SetFadeAnimation(TagHelperContext context, TagHelperOutput output) + { + if (TagHelper.Crossfade ?? false) { - if (string.IsNullOrWhiteSpace(TagHelper.Id)) - { - TagHelper.Id = "C" + Guid.NewGuid().ToString("N"); - } + output.Attributes.AddClass("carousel-fade"); } + } - protected virtual void SetActiveIfActive(CarouselItem item) + protected virtual void SetRandomIdIfNotProvided() + { + if (string.IsNullOrWhiteSpace(TagHelper.Id)) { - item.Html = item.Html.Replace(AbpCarouselItemActivePlaceholder, item.Active ? "active" : ""); + TagHelper.Id = "C" + Guid.NewGuid().ToString("N"); } + } + protected virtual void SetActiveIfActive(CarouselItem item) + { + item.Html = item.Html.Replace(AbpCarouselItemActivePlaceholder, item.Active ? "active" : ""); } + } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/CarouselItem.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/CarouselItem.cs index da901f39b0..2942a62541 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/CarouselItem.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Carousel/CarouselItem.cs @@ -1,15 +1,14 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Carousel; + +public class CarouselItem { - public class CarouselItem + public CarouselItem(string html, bool active) { - public CarouselItem(string html, bool active) - { - Html = html; - Active = active; - } + Html = html; + Active = active; + } - public string Html { get; set; } + public string Html { get; set; } - public bool Active { get; set; } - } + public bool Active { get; set; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelper.cs index d1ec7e41b4..8742631e9a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelper.cs @@ -1,17 +1,16 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse; + +public class AbpAccordionItemTagHelper : AbpTagHelper { - public class AbpAccordionItemTagHelper : AbpTagHelper - { - public string Id { get; set; } + public string Id { get; set; } - public string Title { get; set; } + public string Title { get; set; } - public bool? Active { get; set; } + public bool? Active { get; set; } - public AbpAccordionItemTagHelper(AbpAccordionItemTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpAccordionItemTagHelper(AbpAccordionItemTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs index 3ea2824b62..7f3f7e9c17 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionItemTagHelperService.cs @@ -5,81 +5,80 @@ using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse; + +public class AbpAccordionItemTagHelperService : AbpTagHelperService { - public class AbpAccordionItemTagHelperService : AbpTagHelperService + public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { - public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) - { - SetRandomIdIfNotProvided(); + SetRandomIdIfNotProvided(); - var childContent = await output.GetChildContentAsync(); + var childContent = await output.GetChildContentAsync(); - var html = GetAccordionHeaderItem(context, output) + GetAccordionContentItem(context, output, childContent); + var html = GetAccordionHeaderItem(context, output) + GetAccordionContentItem(context, output, childContent); - var tabHeaderItems = context.GetValue>(AccordionItems); - tabHeaderItems.Add(html); + var tabHeaderItems = context.GetValue>(AccordionItems); + tabHeaderItems.Add(html); - output.SuppressOutput(); - } + output.SuppressOutput(); + } - protected virtual string GetAccordionHeaderItem(TagHelperContext context, TagHelperOutput output) - { - var button = new TagBuilder("button"); - button.AddCssClass("btn btn-link"); - button.Attributes.Add("type", "button"); - button.Attributes.Add("data-bs-toggle", "collapse"); - button.Attributes.Add("data-bs-target", "#" + GetContentId()); - button.Attributes.Add("aria-expanded", "true"); - button.Attributes.Add("aria-controls", GetContentId()); - button.InnerHtml.AppendHtml(TagHelper.Title); - - var h5 = new TagBuilder("h5"); - h5.AddCssClass("mb-0"); - h5.InnerHtml.AppendHtml(button); - - var header = new TagBuilder("div"); - header.AddCssClass("card-header"); - header.Attributes.Add("id", GetHeadingId()); - header.InnerHtml.AppendHtml(h5); - - return header.ToHtmlString(); - } + protected virtual string GetAccordionHeaderItem(TagHelperContext context, TagHelperOutput output) + { + var button = new TagBuilder("button"); + button.AddCssClass("btn btn-link"); + button.Attributes.Add("type", "button"); + button.Attributes.Add("data-bs-toggle", "collapse"); + button.Attributes.Add("data-bs-target", "#" + GetContentId()); + button.Attributes.Add("aria-expanded", "true"); + button.Attributes.Add("aria-controls", GetContentId()); + button.InnerHtml.AppendHtml(TagHelper.Title); + + var h5 = new TagBuilder("h5"); + h5.AddCssClass("mb-0"); + h5.InnerHtml.AppendHtml(button); + + var header = new TagBuilder("div"); + header.AddCssClass("card-header"); + header.Attributes.Add("id", GetHeadingId()); + header.InnerHtml.AppendHtml(h5); + + return header.ToHtmlString(); + } - protected virtual string GetAccordionContentItem(TagHelperContext context, TagHelperOutput output, TagHelperContent content) - { - var show = (TagHelper.Active ?? false) ? " show" : ""; + protected virtual string GetAccordionContentItem(TagHelperContext context, TagHelperOutput output, TagHelperContent content) + { + var show = (TagHelper.Active ?? false) ? " show" : ""; - var cardBody = new TagBuilder("div"); - cardBody.AddCssClass("card-body"); - cardBody.InnerHtml.AppendHtml(content); + var cardBody = new TagBuilder("div"); + cardBody.AddCssClass("card-body"); + cardBody.InnerHtml.AppendHtml(content); - var wrapper = new TagBuilder("div"); - wrapper.AddCssClass("collapse" + show); - wrapper.Attributes.Add("id", GetContentId()); - wrapper.Attributes.Add("aria-labelledby", GetHeadingId()); - wrapper.Attributes.Add("data-bs-parent", "#" + AbpAccordionParentIdPlaceholder); - wrapper.InnerHtml.AppendHtml(cardBody); + var wrapper = new TagBuilder("div"); + wrapper.AddCssClass("collapse" + show); + wrapper.Attributes.Add("id", GetContentId()); + wrapper.Attributes.Add("aria-labelledby", GetHeadingId()); + wrapper.Attributes.Add("data-bs-parent", "#" + AbpAccordionParentIdPlaceholder); + wrapper.InnerHtml.AppendHtml(cardBody); - return wrapper.ToHtmlString(); - } + return wrapper.ToHtmlString(); + } - protected virtual string GetHeadingId() - { - return "heading" + TagHelper.Id; ; - } + protected virtual string GetHeadingId() + { + return "heading" + TagHelper.Id; ; + } - protected virtual string GetContentId() - { - return "content" + TagHelper.Id; ; - } + protected virtual string GetContentId() + { + return "content" + TagHelper.Id; ; + } - protected virtual void SetRandomIdIfNotProvided() + protected virtual void SetRandomIdIfNotProvided() + { + if (string.IsNullOrWhiteSpace(TagHelper.Id)) { - if (string.IsNullOrWhiteSpace(TagHelper.Id)) - { - TagHelper.Id = "A" + Guid.NewGuid().ToString("N"); - } + TagHelper.Id = "A" + Guid.NewGuid().ToString("N"); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelper.cs index c297a7c630..49cca3199f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelper.cs @@ -1,13 +1,12 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse; + +public class AbpAccordionTagHelper : AbpTagHelper { - public class AbpAccordionTagHelper : AbpTagHelper - { - public string Id { get; set; } + public string Id { get; set; } - public AbpAccordionTagHelper(AbpAccordionTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpAccordionTagHelper(AbpAccordionTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs index d55bb04d21..c33b25022b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpAccordionTagHelperService.cs @@ -6,60 +6,59 @@ using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse; + +public class AbpAccordionTagHelperService : AbpTagHelperService { - public class AbpAccordionTagHelperService : AbpTagHelperService - { - protected IHtmlGenerator HtmlGenerator { get; } + protected IHtmlGenerator HtmlGenerator { get; } - public AbpAccordionTagHelperService(IHtmlGenerator htmlGenerator) - { - HtmlGenerator = htmlGenerator; - } + public AbpAccordionTagHelperService(IHtmlGenerator htmlGenerator) + { + HtmlGenerator = htmlGenerator; + } - public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) - { - SetRandomIdIfNotProvided(); + public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) + { + SetRandomIdIfNotProvided(); - output.TagName = "div"; - output.TagMode = TagMode.StartTagAndEndTag; - output.Attributes.AddClass("accordion"); - output.Attributes.Add("id",TagHelper.Id); + output.TagName = "div"; + output.TagMode = TagMode.StartTagAndEndTag; + output.Attributes.AddClass("accordion"); + output.Attributes.Add("id", TagHelper.Id); - var items = InitilizeFormGroupContentsContext(context, output); + var items = InitilizeFormGroupContentsContext(context, output); - await output.GetChildContentAsync(); + await output.GetChildContentAsync(); - SetContent(context, output, items); - } + SetContent(context, output, items); + } - protected virtual void SetContent(TagHelperContext context, TagHelperOutput output, List items) + protected virtual void SetContent(TagHelperContext context, TagHelperOutput output, List items) + { + foreach (var item in items) { - foreach (var item in items) - { - var content = item.Replace(AbpAccordionParentIdPlaceholder, HtmlGenerator.Encode(TagHelper.Id)); + var content = item.Replace(AbpAccordionParentIdPlaceholder, HtmlGenerator.Encode(TagHelper.Id)); - var wrapper = new TagBuilder("div"); - wrapper.AddCssClass("card"); - wrapper.InnerHtml.AppendHtml(content); + var wrapper = new TagBuilder("div"); + wrapper.AddCssClass("card"); + wrapper.InnerHtml.AppendHtml(content); - output.Content.AppendHtml(wrapper); - } + output.Content.AppendHtml(wrapper); } + } - protected virtual List InitilizeFormGroupContentsContext(TagHelperContext context, TagHelperOutput output) - { - var items = new List(); - context.Items[AccordionItems] = items; - return items; - } + protected virtual List InitilizeFormGroupContentsContext(TagHelperContext context, TagHelperOutput output) + { + var items = new List(); + context.Items[AccordionItems] = items; + return items; + } - protected virtual void SetRandomIdIfNotProvided() + protected virtual void SetRandomIdIfNotProvided() + { + if (string.IsNullOrWhiteSpace(TagHelper.Id)) { - if (string.IsNullOrWhiteSpace(TagHelper.Id)) - { - TagHelper.Id = "A" + Guid.NewGuid().ToString("N"); - } + TagHelper.Id = "A" + Guid.NewGuid().ToString("N"); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseBodyTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseBodyTagHelper.cs index a50907addb..cd6d5d43ed 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseBodyTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseBodyTagHelper.cs @@ -1,17 +1,16 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse; + +public class AbpCollapseBodyTagHelper : AbpTagHelper { - public class AbpCollapseBodyTagHelper : AbpTagHelper - { - public string Id { get; set; } + public string Id { get; set; } - public bool? Multi { get; set; } + public bool? Multi { get; set; } - public bool? Show { get; set; } + public bool? Show { get; set; } - public AbpCollapseBodyTagHelper(AbpCollapseBodyTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpCollapseBodyTagHelper(AbpCollapseBodyTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseBodyTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseBodyTagHelperService.cs index 843efae0f4..85685ccf80 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseBodyTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseBodyTagHelperService.cs @@ -2,29 +2,28 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse; + +public class AbpCollapseBodyTagHelperService : AbpTagHelperService { - public class AbpCollapseBodyTagHelperService : AbpTagHelperService + public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) { - public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "div"; - output.Attributes.AddClass("collapse"); - output.Attributes.Add("id", TagHelper.Id); + output.TagName = "div"; + output.Attributes.AddClass("collapse"); + output.Attributes.Add("id", TagHelper.Id); - if (TagHelper.Show ?? false) - { - output.Attributes.AddClass("show"); - } + if (TagHelper.Show ?? false) + { + output.Attributes.AddClass("show"); + } - if (TagHelper.Multi ?? false) - { - output.Attributes.AddClass("multi-collapse"); - } + if (TagHelper.Multi ?? false) + { + output.Attributes.AddClass("multi-collapse"); + } - var childContent = await output.GetChildContentAsync(); + var childContent = await output.GetChildContentAsync(); - output.Content.SetHtmlContent(childContent); - } + output.Content.SetHtmlContent(childContent); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseButtonTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseButtonTagHelper.cs index 6b8fc8c30b..c1219b3bbb 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseButtonTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseButtonTagHelper.cs @@ -1,20 +1,18 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse; + +[HtmlTargetElement("abp-button", Attributes = "abp-collapse-id")] +[HtmlTargetElement("a", Attributes = "abp-collapse-id")] +public class AbpCollapseButtonTagHelper : AbpTagHelper { + [HtmlAttributeName("abp-collapse-id")] + public string BodyId { get; set; } - [HtmlTargetElement("abp-button", Attributes = "abp-collapse-id")] - [HtmlTargetElement("a", Attributes = "abp-collapse-id")] - public class AbpCollapseButtonTagHelper : AbpTagHelper + public AbpCollapseButtonTagHelper(AbpCollapseButtonTagHelperService tagHelperService) + : base(tagHelperService) { - [HtmlAttributeName("abp-collapse-id")] - public string BodyId { get; set; } - - public AbpCollapseButtonTagHelper(AbpCollapseButtonTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseButtonTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseButtonTagHelperService.cs index fcc4ff413e..49b356379a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseButtonTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Collapse/AbpCollapseButtonTagHelperService.cs @@ -2,54 +2,53 @@ using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Collapse; + +public class AbpCollapseButtonTagHelperService : AbpTagHelperService { - public class AbpCollapseButtonTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - AddCommonAttributes(context, output); + AddCommonAttributes(context, output); - if (output.TagName == "abp-button" || output.TagName == "button") - { - AddButtonAttributes(context,output); - } - else if (output.TagName == "a") - { - AddLinkAttributes(context, output); - } + if (output.TagName == "abp-button" || output.TagName == "button") + { + AddButtonAttributes(context, output); } - - protected virtual void AddCommonAttributes(TagHelperContext context, TagHelperOutput output) + else if (output.TagName == "a") { - output.Attributes.Add("data-bs-toggle", "collapse"); - output.Attributes.Add("aria-expanded", "false"); - output.Attributes.Add("aria-controls", TagHelper.BodyId); + AddLinkAttributes(context, output); } + } - protected virtual void AddButtonAttributes(TagHelperContext context, TagHelperOutput output) - { - if (TagHelper.BodyId.Trim().Split(' ').Length > 1) - { - output.Attributes.Add("data-bs-target", ".multi-collapse"); - return; - } + protected virtual void AddCommonAttributes(TagHelperContext context, TagHelperOutput output) + { + output.Attributes.Add("data-bs-toggle", "collapse"); + output.Attributes.Add("aria-expanded", "false"); + output.Attributes.Add("aria-controls", TagHelper.BodyId); + } - output.Attributes.Add("data-bs-target", "#" + TagHelper.BodyId); + protected virtual void AddButtonAttributes(TagHelperContext context, TagHelperOutput output) + { + if (TagHelper.BodyId.Trim().Split(' ').Length > 1) + { + output.Attributes.Add("data-bs-target", ".multi-collapse"); + return; } - protected virtual void AddLinkAttributes(TagHelperContext context, TagHelperOutput output) - { - if (TagHelper.BodyId.Trim().Split(' ').Length > 1) - { - output.Attributes.Add("href", ".multi-collapse"); - return; - } + output.Attributes.Add("data-bs-target", "#" + TagHelper.BodyId); + } - output.Attributes.Add("href", "#" + TagHelper.BodyId); + protected virtual void AddLinkAttributes(TagHelperContext context, TagHelperOutput output) + { + if (TagHelper.BodyId.Trim().Split(' ').Length > 1) + { + output.Attributes.Add("href", ".multi-collapse"); + return; } + output.Attributes.Add("href", "#" + TagHelper.BodyId); } + } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownButtonTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownButtonTagHelper.cs index de20c8743c..ac87900307 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownButtonTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownButtonTagHelper.cs @@ -1,29 +1,28 @@ using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public class AbpDropdownButtonTagHelper : AbpTagHelper { - public class AbpDropdownButtonTagHelper : AbpTagHelper - { - public string Text { get; set; } + public string Text { get; set; } - public AbpButtonSize Size { get; set; } = AbpButtonSize.Default; + public AbpButtonSize Size { get; set; } = AbpButtonSize.Default; - public DropdownStyle DropdownStyle { get; set; } = DropdownStyle.Single; + public DropdownStyle DropdownStyle { get; set; } = DropdownStyle.Single; - public AbpButtonType ButtonType { get; set; } = AbpButtonType.Default; + public AbpButtonType ButtonType { get; set; } = AbpButtonType.Default; - public string Icon { get; set; } + public string Icon { get; set; } - public FontIconType IconType { get; set; } = FontIconType.FontAwesome; + public FontIconType IconType { get; set; } = FontIconType.FontAwesome; - public bool? Link { get; set; } + public bool? Link { get; set; } - public bool? NavLink { get; set; } + public bool? NavLink { get; set; } - public AbpDropdownButtonTagHelper(AbpDropdownButtonTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpDropdownButtonTagHelper(AbpDropdownButtonTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownButtonTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownButtonTagHelperService.cs index faa8fe7d75..8a5f5df409 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownButtonTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownButtonTagHelperService.cs @@ -8,138 +8,137 @@ using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown -{ - public class AbpDropdownButtonTagHelperService : AbpTagHelperService - { +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; - private readonly HtmlEncoder _htmlEncoder; - private readonly IServiceProvider _serviceProvider; +public class AbpDropdownButtonTagHelperService : AbpTagHelperService +{ - public AbpDropdownButtonTagHelperService( - HtmlEncoder htmlEncoder, - IServiceProvider serviceProvider) - { - _htmlEncoder = htmlEncoder; - _serviceProvider = serviceProvider; - } + private readonly HtmlEncoder _htmlEncoder; + private readonly IServiceProvider _serviceProvider; - public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) - { - var content = await output.GetChildContentAsync(); + public AbpDropdownButtonTagHelperService( + HtmlEncoder htmlEncoder, + IServiceProvider serviceProvider) + { + _htmlEncoder = htmlEncoder; + _serviceProvider = serviceProvider; + } - var buttonsAsHtml = await GetButtonsAsHtmlAsync(context, output, content); + public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) + { + var content = await output.GetChildContentAsync(); - output.PreElement.SetHtmlContent(buttonsAsHtml); + var buttonsAsHtml = await GetButtonsAsHtmlAsync(context, output, content); - output.TagName = "div"; - output.TagMode = TagMode.StartTagAndEndTag; - output.Content.SetContent(""); - output.Attributes.Clear(); - } + output.PreElement.SetHtmlContent(buttonsAsHtml); - protected virtual async Task GetButtonsAsHtmlAsync(TagHelperContext context, TagHelperOutput output, - TagHelperContent content) - { - var buttonBuilder = new StringBuilder(""); + output.TagName = "div"; + output.TagMode = TagMode.StartTagAndEndTag; + output.Content.SetContent(""); + output.Attributes.Clear(); + } - var mainButton = await GetMainButtonAsync(context, output, content); + protected virtual async Task GetButtonsAsHtmlAsync(TagHelperContext context, TagHelperOutput output, + TagHelperContent content) + { + var buttonBuilder = new StringBuilder(""); - buttonBuilder.AppendLine(mainButton); + var mainButton = await GetMainButtonAsync(context, output, content); - if (TagHelper.DropdownStyle == DropdownStyle.Split) - { - var splitButton = await GetSplitButtonAsync(context, output); + buttonBuilder.AppendLine(mainButton); - buttonBuilder.AppendLine(splitButton); - } + if (TagHelper.DropdownStyle == DropdownStyle.Split) + { + var splitButton = await GetSplitButtonAsync(context, output); - return buttonBuilder.ToString(); + buttonBuilder.AppendLine(splitButton); } - protected virtual async Task GetMainButtonAsync(TagHelperContext context, TagHelperOutput output, TagHelperContent content) - { - var abpButtonTagHelper = _serviceProvider.GetRequiredService(); - - abpButtonTagHelper.Icon = TagHelper.Icon; - abpButtonTagHelper.Text = TagHelper.Text; - abpButtonTagHelper.IconType = TagHelper.IconType; - abpButtonTagHelper.Size = TagHelper.Size; - abpButtonTagHelper.ButtonType = TagHelper.ButtonType; - var attributes = GetAttributesForMainButton(context, output); + return buttonBuilder.ToString(); + } - var buttonTag = await abpButtonTagHelper.ProcessAndGetOutputAsync(attributes, context, "button", TagMode.StartTagAndEndTag); + protected virtual async Task GetMainButtonAsync(TagHelperContext context, TagHelperOutput output, TagHelperContent content) + { + var abpButtonTagHelper = _serviceProvider.GetRequiredService(); - buttonTag.PreContent.SetHtmlContent(content); + abpButtonTagHelper.Icon = TagHelper.Icon; + abpButtonTagHelper.Text = TagHelper.Text; + abpButtonTagHelper.IconType = TagHelper.IconType; + abpButtonTagHelper.Size = TagHelper.Size; + abpButtonTagHelper.ButtonType = TagHelper.ButtonType; + var attributes = GetAttributesForMainButton(context, output); - if ((TagHelper.NavLink ?? false) || (TagHelper.Link ?? false)) - { - var linkTag = ConvertButtonToLink(buttonTag); - return linkTag.Render(_htmlEncoder); - } + var buttonTag = await abpButtonTagHelper.ProcessAndGetOutputAsync(attributes, context, "button", TagMode.StartTagAndEndTag); - return buttonTag.Render(_htmlEncoder); - } + buttonTag.PreContent.SetHtmlContent(content); - protected virtual async Task GetSplitButtonAsync(TagHelperContext context, TagHelperOutput output) + if ((TagHelper.NavLink ?? false) || (TagHelper.Link ?? false)) { - var abpButtonTagHelper = _serviceProvider.GetRequiredService(); + var linkTag = ConvertButtonToLink(buttonTag); + return linkTag.Render(_htmlEncoder); + } - abpButtonTagHelper.Size = TagHelper.Size; - abpButtonTagHelper.ButtonType = TagHelper.ButtonType; - var attributes = GetAttributesForSplitButton(context, output); + return buttonTag.Render(_htmlEncoder); + } - return await abpButtonTagHelper.RenderAsync(attributes, context, _htmlEncoder, "button", TagMode.StartTagAndEndTag); - } + protected virtual async Task GetSplitButtonAsync(TagHelperContext context, TagHelperOutput output) + { + var abpButtonTagHelper = _serviceProvider.GetRequiredService(); - protected virtual TagHelperAttributeList GetAttributesForMainButton(TagHelperContext context, TagHelperOutput output) - { + abpButtonTagHelper.Size = TagHelper.Size; + abpButtonTagHelper.ButtonType = TagHelper.ButtonType; + var attributes = GetAttributesForSplitButton(context, output); - var attributes = new TagHelperAttributeList(); + return await abpButtonTagHelper.RenderAsync(attributes, context, _htmlEncoder, "button", TagMode.StartTagAndEndTag); + } - foreach (var tagHelperAttribute in output.Attributes) - { - attributes.Add(tagHelperAttribute); - } + protected virtual TagHelperAttributeList GetAttributesForMainButton(TagHelperContext context, TagHelperOutput output) + { - if (TagHelper.DropdownStyle != DropdownStyle.Split) - { - attributes.AddClass("dropdown-toggle"); - attributes.Add("data-bs-toggle", "dropdown"); - attributes.Add("aria-haspopup", "true"); - attributes.Add("aria-expanded", "false"); - } + var attributes = new TagHelperAttributeList(); - return attributes; + foreach (var tagHelperAttribute in output.Attributes) + { + attributes.Add(tagHelperAttribute); } - protected virtual TagHelperAttributeList GetAttributesForSplitButton(TagHelperContext context, TagHelperOutput output) + if (TagHelper.DropdownStyle != DropdownStyle.Split) { - var attributes = new TagHelperAttributeList + attributes.AddClass("dropdown-toggle"); + attributes.Add("data-bs-toggle", "dropdown"); + attributes.Add("aria-haspopup", "true"); + attributes.Add("aria-expanded", "false"); + } + + return attributes; + } + + protected virtual TagHelperAttributeList GetAttributesForSplitButton(TagHelperContext context, TagHelperOutput output) + { + var attributes = new TagHelperAttributeList { {"data-bs-toggle", "dropdown"}, {"aria-haspopup", "true"}, {"aria-expanded", "false"}, }; - attributes.AddClass("dropdown-toggle"); - attributes.AddClass("dropdown-toggle-split"); + attributes.AddClass("dropdown-toggle"); + attributes.AddClass("dropdown-toggle-split"); - return attributes; - } + return attributes; + } - protected virtual TagHelperOutput ConvertButtonToLink(TagHelperOutput buttonTag) - { - buttonTag.TagName = "a"; - buttonTag.Attributes.RemoveAll("type"); - buttonTag.Attributes.Add("roles", "button"); - buttonTag.Attributes.Add("href", "#"); + protected virtual TagHelperOutput ConvertButtonToLink(TagHelperOutput buttonTag) + { + buttonTag.TagName = "a"; + buttonTag.Attributes.RemoveAll("type"); + buttonTag.Attributes.Add("roles", "button"); + buttonTag.Attributes.Add("href", "#"); - if (TagHelper.NavLink??false) - { - buttonTag.Attributes.AddClass("nav-link"); - } - return buttonTag; + if (TagHelper.NavLink ?? false) + { + buttonTag.Attributes.AddClass("nav-link"); } + return buttonTag; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownDividerTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownDividerTagHelper.cs index 691d7c23a5..f87abb78f7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownDividerTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownDividerTagHelper.cs @@ -1,11 +1,10 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public class AbpDropdownDividerTagHelper : AbpTagHelper { - public class AbpDropdownDividerTagHelper : AbpTagHelper + public AbpDropdownDividerTagHelper(AbpDropdownDividerTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpDropdownDividerTagHelper(AbpDropdownDividerTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownDividerTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownDividerTagHelperService.cs index 4e420f538b..7ff04e4f1d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownDividerTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownDividerTagHelperService.cs @@ -1,15 +1,14 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public class AbpDropdownDividerTagHelperService : AbpTagHelperService { - public class AbpDropdownDividerTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "div"; - output.Attributes.AddClass("dropdown-divider"); - output.TagMode = TagMode.StartTagAndEndTag; - } + output.TagName = "div"; + output.Attributes.AddClass("dropdown-divider"); + output.TagMode = TagMode.StartTagAndEndTag; } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownHeaderTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownHeaderTagHelper.cs index cc2a910a07..da0ee56f40 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownHeaderTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownHeaderTagHelper.cs @@ -1,11 +1,10 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public class AbpDropdownHeaderTagHelper : AbpTagHelper { - public class AbpDropdownHeaderTagHelper : AbpTagHelper + public AbpDropdownHeaderTagHelper(AbpDropdownHeaderTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpDropdownHeaderTagHelper(AbpDropdownHeaderTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownHeaderTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownHeaderTagHelperService.cs index 73157f45cc..aed611f6e0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownHeaderTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownHeaderTagHelperService.cs @@ -1,15 +1,14 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public class AbpDropdownHeaderTagHelperService : AbpTagHelperService { - public class AbpDropdownHeaderTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "h6"; - output.Attributes.AddClass("dropdown-header"); - output.TagMode = TagMode.StartTagAndEndTag; - } + output.TagName = "h6"; + output.Attributes.AddClass("dropdown-header"); + output.TagMode = TagMode.StartTagAndEndTag; } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTagHelper.cs index c017986271..a2a8403863 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTagHelper.cs @@ -1,15 +1,14 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public class AbpDropdownItemTagHelper : AbpTagHelper { - public class AbpDropdownItemTagHelper : AbpTagHelper - { - public bool? Active { get; set; } + public bool? Active { get; set; } - public bool? Disabled { get; set; } + public bool? Disabled { get; set; } - public AbpDropdownItemTagHelper(AbpDropdownItemTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpDropdownItemTagHelper(AbpDropdownItemTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTagHelperService.cs index 5f74b7a303..29815c5a4e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTagHelperService.cs @@ -1,34 +1,33 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public class AbpDropdownItemTagHelperService : AbpTagHelperService { - public class AbpDropdownItemTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "a"; - output.Attributes.AddClass("dropdown-item"); - output.TagMode = TagMode.StartTagAndEndTag; + output.TagName = "a"; + output.Attributes.AddClass("dropdown-item"); + output.TagMode = TagMode.StartTagAndEndTag; - SetActiveClassIfActive(context,output); - SetDisabledClassIfDisabled(context,output); - } + SetActiveClassIfActive(context, output); + SetDisabledClassIfDisabled(context, output); + } - protected virtual void SetActiveClassIfActive(TagHelperContext context, TagHelperOutput output) + protected virtual void SetActiveClassIfActive(TagHelperContext context, TagHelperOutput output) + { + if (TagHelper.Active ?? false) { - if (TagHelper.Active??false) - { - output.Attributes.AddClass("active"); - } + output.Attributes.AddClass("active"); } + } - protected virtual void SetDisabledClassIfDisabled(TagHelperContext context, TagHelperOutput output) + protected virtual void SetDisabledClassIfDisabled(TagHelperContext context, TagHelperOutput output) + { + if (TagHelper.Disabled ?? false) { - if (TagHelper.Disabled??false) - { - output.Attributes.AddClass("disabled"); - } + output.Attributes.AddClass("disabled"); } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTextTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTextTagHelper.cs index 4c5e82fac7..b231aa63ef 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTextTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTextTagHelper.cs @@ -1,11 +1,10 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public class AbpDropdownItemTextTagHelper : AbpTagHelper { - public class AbpDropdownItemTextTagHelper : AbpTagHelper + public AbpDropdownItemTextTagHelper(AbpDropdownItemTextTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpDropdownItemTextTagHelper(AbpDropdownItemTextTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTextTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTextTagHelperService.cs index 8cd84eade6..51b8af6250 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTextTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownItemTextTagHelperService.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public class AbpDropdownItemTextTagHelperService : AbpTagHelperService { - public class AbpDropdownItemTextTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.Attributes.AddClass("dropdown-item-text"); - output.TagName = "span"; - } + output.Attributes.AddClass("dropdown-item-text"); + output.TagName = "span"; } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownMenuTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownMenuTagHelper.cs index 04523033bc..1744d1922f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownMenuTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownMenuTagHelper.cs @@ -1,13 +1,12 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public class AbpDropdownMenuTagHelper : AbpTagHelper { - public class AbpDropdownMenuTagHelper : AbpTagHelper - { - public DropdownAlign Align { get; set; } = DropdownAlign.Start; + public DropdownAlign Align { get; set; } = DropdownAlign.Start; - public AbpDropdownMenuTagHelper(AbpDropdownMenuTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpDropdownMenuTagHelper(AbpDropdownMenuTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownMenuTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownMenuTagHelperService.cs index 80c4d31c87..1a9a1b6c55 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownMenuTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownMenuTagHelperService.cs @@ -1,29 +1,28 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public class AbpDropdownMenuTagHelperService : AbpTagHelperService { - public class AbpDropdownMenuTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "div"; - output.Attributes.AddClass("dropdown-menu"); - output.TagMode = TagMode.StartTagAndEndTag; + output.TagName = "div"; + output.Attributes.AddClass("dropdown-menu"); + output.TagMode = TagMode.StartTagAndEndTag; - SetAlign(context, output); - } + SetAlign(context, output); + } - protected virtual void SetAlign(TagHelperContext context, TagHelperOutput output) + protected virtual void SetAlign(TagHelperContext context, TagHelperOutput output) + { + switch (TagHelper.Align) { - switch (TagHelper.Align) - { - case DropdownAlign.End: - output.Attributes.AddClass("dropdown-menu-end"); - return; - case DropdownAlign.Start: - return; - } + case DropdownAlign.End: + output.Attributes.AddClass("dropdown-menu-end"); + return; + case DropdownAlign.Start: + return; } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownTagHelper.cs index 5daad8a9b7..2cd06cff74 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownTagHelper.cs @@ -1,13 +1,12 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public class AbpDropdownTagHelper : AbpTagHelper { - public class AbpDropdownTagHelper : AbpTagHelper - { - public DropdownDirection Direction { get; set; } = DropdownDirection.Down; + public DropdownDirection Direction { get; set; } = DropdownDirection.Down; - public AbpDropdownTagHelper(AbpDropdownTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpDropdownTagHelper(AbpDropdownTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownTagHelperService.cs index 8f37fca5ee..581239a4b6 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/AbpDropdownTagHelperService.cs @@ -1,37 +1,36 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public class AbpDropdownTagHelperService : AbpTagHelperService { - public class AbpDropdownTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "div"; - output.Attributes.AddClass("dropdown"); - output.Attributes.AddClass("btn-group"); + output.TagName = "div"; + output.Attributes.AddClass("dropdown"); + output.Attributes.AddClass("btn-group"); - SetDirection(context, output); + SetDirection(context, output); - output.TagMode = TagMode.StartTagAndEndTag; - } + output.TagMode = TagMode.StartTagAndEndTag; + } - protected virtual void SetDirection(TagHelperContext context, TagHelperOutput output) + protected virtual void SetDirection(TagHelperContext context, TagHelperOutput output) + { + switch (TagHelper.Direction) { - switch (TagHelper.Direction) - { - case DropdownDirection.Down: - return; - case DropdownDirection.Up: - output.Attributes.AddClass("dropup"); - return; - case DropdownDirection.Right: - output.Attributes.AddClass("dropright"); - return; - case DropdownDirection.Left: - output.Attributes.AddClass("dropleft"); - return; - } + case DropdownDirection.Down: + return; + case DropdownDirection.Up: + output.Attributes.AddClass("dropup"); + return; + case DropdownDirection.Right: + output.Attributes.AddClass("dropright"); + return; + case DropdownDirection.Left: + output.Attributes.AddClass("dropleft"); + return; } } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/DropdownAlign.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/DropdownAlign.cs index a15cf821ea..331a0c3e5f 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/DropdownAlign.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/DropdownAlign.cs @@ -1,8 +1,7 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public enum DropdownAlign { - public enum DropdownAlign - { - Start, - End - } -} \ No newline at end of file + Start, + End +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/DropdownDirection.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/DropdownDirection.cs index f7c90ae58c..e67025e614 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/DropdownDirection.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/DropdownDirection.cs @@ -1,10 +1,9 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public enum DropdownDirection { - public enum DropdownDirection - { - Down, - Up, - Right, - Left - } -} \ No newline at end of file + Down, + Up, + Right, + Left +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/DropdownStyle.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/DropdownStyle.cs index 67d02ace22..6ea9256748 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/DropdownStyle.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Dropdown/DropdownStyle.cs @@ -1,8 +1,7 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Dropdown; + +public enum DropdownStyle { - public enum DropdownStyle - { - Single, - Split - } -} \ No newline at end of file + Single, + Split +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/ModelExplorerExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/ModelExplorerExtensions.cs index b6bedac11b..eced70b75e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/ModelExplorerExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/ModelExplorerExtensions.cs @@ -3,18 +3,17 @@ using System.Reflection; using Microsoft.AspNetCore.Mvc.ViewFeatures; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; + +public static class ModelExplorerExtensions { - public static class ModelExplorerExtensions + public static T GetAttribute(this ModelExplorer property) where T : Attribute { - public static T GetAttribute(this ModelExplorer property) where T : Attribute - { - return property?.Metadata?.ContainerType?.GetTypeInfo()?.GetProperty(property.Metadata.PropertyName)?.GetCustomAttribute(); - } + return property?.Metadata?.ContainerType?.GetTypeInfo()?.GetProperty(property.Metadata.PropertyName)?.GetCustomAttribute(); + } - public static int GetDisplayOrder(this ModelExplorer explorer) - { - return GetAttribute(explorer)?.Number ?? DisplayOrder.Default; - } + public static int GetDisplayOrder(this ModelExplorer explorer) + { + return GetAttribute(explorer)?.Number ?? DisplayOrder.Default; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperAttributeExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperAttributeExtensions.cs index ef581529a6..09d0513fbd 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperAttributeExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperAttributeExtensions.cs @@ -1,25 +1,24 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using System.Collections.Generic; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; + +public static class TagHelperAttributeExtensions { - public static class TagHelperAttributeExtensions + public static string ToHtmlAttributeAsString(this TagHelperAttribute attribute) { - public static string ToHtmlAttributeAsString(this TagHelperAttribute attribute) - { - return attribute.Name + "=\"" + attribute.Value + "\""; - } - - public static string ToHtmlAttributesAsString(this List attributes) - { - var attributesAsString = ""; + return attribute.Name + "=\"" + attribute.Value + "\""; + } - foreach (var attribute in attributes) - { - attributesAsString += attribute.ToHtmlAttributeAsString() + " "; - } + public static string ToHtmlAttributesAsString(this List attributes) + { + var attributesAsString = ""; - return attributesAsString; + foreach (var attribute in attributes) + { + attributesAsString += attribute.ToHtmlAttributeAsString() + " "; } + + return attributesAsString; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperContextExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperContextExtensions.cs index c2b3e41192..47ab8827e7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperContextExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperContextExtensions.cs @@ -3,18 +3,17 @@ using System.Linq; using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; + +public static class TagHelperContextExtensions { - public static class TagHelperContextExtensions + public static T GetValue(this TagHelperContext context, string key) { - public static T GetValue(this TagHelperContext context, string key) + if (!context.Items.ContainsKey(key)) { - if (!context.Items.ContainsKey(key)) - { - return default(T); - } - - return (T)context.Items[key]; + return default(T); } + + return (T)context.Items[key]; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperExtensions.cs index 761b72ec99..227c824002 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperExtensions.cs @@ -3,43 +3,42 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Razor.TagHelpers; using System.Text.Encodings.Web; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; + +public static class TagHelperExtensions { - public static class TagHelperExtensions + public static async Task ProcessAndGetOutputAsync( + this TagHelper tagHelper, + TagHelperAttributeList attributeList, + TagHelperContext context, + string tagName = "div", + TagMode tagMode = TagMode.SelfClosing) { - public static async Task ProcessAndGetOutputAsync( - this TagHelper tagHelper, - TagHelperAttributeList attributeList, - TagHelperContext context, - string tagName = "div", - TagMode tagMode = TagMode.SelfClosing) - { - var innerOutput = new TagHelperOutput( - tagName, - attributeList, - (useCachedResult, encoder) => Task.Run(() => new DefaultTagHelperContent())) - { - TagMode = tagMode - }; - - var innerContext = new TagHelperContext( - attributeList, - context.Items, - Guid.NewGuid().ToString() - ); - - tagHelper.Init(context); - - await tagHelper.ProcessAsync(innerContext, innerOutput); - - return innerOutput; - } - - public static async Task RenderAsync(this TagHelper tagHelper, TagHelperAttributeList attributeList, TagHelperContext context, HtmlEncoder htmlEncoder, string tagName = "div", TagMode tagMode = TagMode.SelfClosing) + var innerOutput = new TagHelperOutput( + tagName, + attributeList, + (useCachedResult, encoder) => Task.Run(() => new DefaultTagHelperContent())) { - var innerOutput = await tagHelper.ProcessAndGetOutputAsync(attributeList, context, tagName, tagMode); + TagMode = tagMode + }; + + var innerContext = new TagHelperContext( + attributeList, + context.Items, + Guid.NewGuid().ToString() + ); + + tagHelper.Init(context); + + await tagHelper.ProcessAsync(innerContext, innerOutput); + + return innerOutput; + } + + public static async Task RenderAsync(this TagHelper tagHelper, TagHelperAttributeList attributeList, TagHelperContext context, HtmlEncoder htmlEncoder, string tagName = "div", TagMode tagMode = TagMode.SelfClosing) + { + var innerOutput = await tagHelper.ProcessAndGetOutputAsync(attributeList, context, tagName, tagMode); - return innerOutput.Render(htmlEncoder); - } + return innerOutput.Render(htmlEncoder); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperOutputExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperOutputExtensions.cs index 0cc9bae6e2..40ca23a8f1 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperOutputExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Extensions/TagHelperOutputExtensions.cs @@ -2,17 +2,16 @@ using System.IO; using System.Text.Encodings.Web; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; + +public static class TagHelperOutputExtensions { - public static class TagHelperOutputExtensions + public static string Render(this TagHelperOutput output, HtmlEncoder htmlEncoder) { - public static string Render(this TagHelperOutput output, HtmlEncoder htmlEncoder) + using (var writer = new StringWriter()) { - using (var writer = new StringWriter()) - { - output.WriteTo(writer, htmlEncoder); - return writer.ToString(); - } + output.WriteTo(writer, htmlEncoder); + return writer.ToString(); } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureCaptionTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureCaptionTagHelper.cs index 9bac7ca93a..ea35a52fa4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureCaptionTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureCaptionTagHelper.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Figure +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Figure; + +[HtmlTargetElement("abp-figcaption")] +public class AbpFigureCaptionTagHelper : AbpTagHelper { - [HtmlTargetElement("abp-figcaption")] - public class AbpFigureCaptionTagHelper : AbpTagHelper + public AbpFigureCaptionTagHelper(AbpFigureCaptionTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpFigureCaptionTagHelper(AbpFigureCaptionTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureCaptionTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureCaptionTagHelperService.cs index f14a4a18fd..e2df91691b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureCaptionTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureCaptionTagHelperService.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Figure +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Figure; + +public class AbpFigureCaptionTagHelperService : AbpTagHelperService { - public class AbpFigureCaptionTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "figcaption"; - output.Attributes.AddClass("figure-caption"); - } + output.TagName = "figcaption"; + output.Attributes.AddClass("figure-caption"); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureImageTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureImageTagHelper.cs index 4b395508ad..7229a40656 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureImageTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureImageTagHelper.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Figure +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Figure; + +[HtmlTargetElement("abp-image", ParentTag = "abp-figure")] +public class AbpFigureImageTagHelper : AbpTagHelper { - [HtmlTargetElement("abp-image", ParentTag = "abp-figure")] - public class AbpFigureImageTagHelper : AbpTagHelper + public AbpFigureImageTagHelper(AbpFigureImageTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpFigureImageTagHelper(AbpFigureImageTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureImageTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureImageTagHelperService.cs index 51237fe297..f79eb9b9e1 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureImageTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureImageTagHelperService.cs @@ -1,13 +1,12 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Figure +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Figure; + +public class AbpFigureImageTagHelperService : AbpTagHelperService { - public class AbpFigureImageTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.Attributes.AddClass("figure-img"); - } + output.Attributes.AddClass("figure-img"); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureTagHelper.cs index 88b99b6138..1b9b8116e7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureTagHelper.cs @@ -1,11 +1,10 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Figure +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Figure; + +public class AbpFigureTagHelper : AbpTagHelper { - public class AbpFigureTagHelper : AbpTagHelper + public AbpFigureTagHelper(AbpFigureTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpFigureTagHelper(AbpFigureTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureTagHelperService.cs index 7fe094f94e..6c75c299b5 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Figure/AbpFigureTagHelperService.cs @@ -1,14 +1,13 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Figure +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Figure; + +public class AbpFigureTagHelperService : AbpTagHelperService { - public class AbpFigureTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = "figure"; - output.Attributes.AddClass("figure"); - } + output.TagName = "figure"; + output.Attributes.AddClass("figure"); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/FontIconType.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/FontIconType.cs index 81debc06b0..ebc23d68ff 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/FontIconType.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/FontIconType.cs @@ -1,8 +1,7 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers; + +public enum FontIconType { - public enum FontIconType - { - FontAwesome, - Other - } -} \ No newline at end of file + FontAwesome, + Other +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelper.cs index d710793151..da4a567b5d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelper.cs @@ -4,63 +4,62 @@ using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; + +[HtmlTargetElement("abp-dynamic-form", TagStructure = TagStructure.NormalOrSelfClosing)] +public class AbpDynamicFormTagHelper : AbpTagHelper { - [HtmlTargetElement("abp-dynamic-form", TagStructure = TagStructure.NormalOrSelfClosing)] - public class AbpDynamicFormTagHelper : AbpTagHelper - { - [HtmlAttributeName("abp-model")] - public ModelExpression Model { get; set; } + [HtmlAttributeName("abp-model")] + public ModelExpression Model { get; set; } - public bool? SubmitButton { get; set; } + public bool? SubmitButton { get; set; } - public bool? RequiredSymbols { get; set; } = true; + public bool? RequiredSymbols { get; set; } = true; -#region MvcFormTagHelperAttiributes + #region MvcFormTagHelperAttiributes - private const string ActionAttributeName = "asp-action"; - private const string AreaAttributeName = "asp-area"; - private const string PageAttributeName = "asp-page"; - private const string PageHandlerAttributeName = "asp-page-handler"; - private const string FragmentAttributeName = "asp-fragment"; - private const string ControllerAttributeName = "asp-controller"; - private const string RouteAttributeName = "asp-route"; - private const string RouteValuesDictionaryName = "asp-all-route-data"; - private const string RouteValuesPrefix = "asp-route-"; + private const string ActionAttributeName = "asp-action"; + private const string AreaAttributeName = "asp-area"; + private const string PageAttributeName = "asp-page"; + private const string PageHandlerAttributeName = "asp-page-handler"; + private const string FragmentAttributeName = "asp-fragment"; + private const string ControllerAttributeName = "asp-controller"; + private const string RouteAttributeName = "asp-route"; + private const string RouteValuesDictionaryName = "asp-all-route-data"; + private const string RouteValuesPrefix = "asp-route-"; - [HtmlAttributeName(ActionAttributeName)] - public string Action { get; set; } + [HtmlAttributeName(ActionAttributeName)] + public string Action { get; set; } - [HtmlAttributeName(ControllerAttributeName)] - public string Controller { get; set; } + [HtmlAttributeName(ControllerAttributeName)] + public string Controller { get; set; } - [HtmlAttributeName(AreaAttributeName)] - public string Area { get; set; } + [HtmlAttributeName(AreaAttributeName)] + public string Area { get; set; } - [HtmlAttributeName(PageAttributeName)] - public string Page { get; set; } + [HtmlAttributeName(PageAttributeName)] + public string Page { get; set; } - [HtmlAttributeName(PageHandlerAttributeName)] - public string PageHandler { get; set; } + [HtmlAttributeName(PageHandlerAttributeName)] + public string PageHandler { get; set; } - [HtmlAttributeName(FragmentAttributeName)] - public string Fragment { get; set; } + [HtmlAttributeName(FragmentAttributeName)] + public string Fragment { get; set; } - [HtmlAttributeName(RouteAttributeName)] - public string Route { get; set; } + [HtmlAttributeName(RouteAttributeName)] + public string Route { get; set; } - [EditorBrowsable(EditorBrowsableState.Never)] - public string Method { get; set; } + [EditorBrowsable(EditorBrowsableState.Never)] + public string Method { get; set; } - [HtmlAttributeName(RouteValuesDictionaryName, DictionaryAttributePrefix = RouteValuesPrefix)] - public IDictionary RouteValues { get; set; } + [HtmlAttributeName(RouteValuesDictionaryName, DictionaryAttributePrefix = RouteValuesPrefix)] + public IDictionary RouteValues { get; set; } -#endregion + #endregion - public AbpDynamicFormTagHelper(AbpDynamicFormTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpDynamicFormTagHelper(AbpDynamicFormTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs index 410a3d1454..38f55ca04e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs @@ -15,298 +15,297 @@ using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; + +public class AbpDynamicFormTagHelperService : AbpTagHelperService { - public class AbpDynamicFormTagHelperService : AbpTagHelperService + private readonly HtmlEncoder _htmlEncoder; + private readonly IHtmlGenerator _htmlGenerator; + private readonly IServiceProvider _serviceProvider; + private readonly IStringLocalizer _localizer; + + public AbpDynamicFormTagHelperService( + HtmlEncoder htmlEncoder, + IHtmlGenerator htmlGenerator, + IServiceProvider serviceProvider, + IStringLocalizer localizer) { - private readonly HtmlEncoder _htmlEncoder; - private readonly IHtmlGenerator _htmlGenerator; - private readonly IServiceProvider _serviceProvider; - private readonly IStringLocalizer _localizer; - - public AbpDynamicFormTagHelperService( - HtmlEncoder htmlEncoder, - IHtmlGenerator htmlGenerator, - IServiceProvider serviceProvider, - IStringLocalizer localizer) - { - _htmlEncoder = htmlEncoder; - _htmlGenerator = htmlGenerator; - _serviceProvider = serviceProvider; - _localizer = localizer; - } + _htmlEncoder = htmlEncoder; + _htmlGenerator = htmlGenerator; + _serviceProvider = serviceProvider; + _localizer = localizer; + } - public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) - { - var list = InitilizeFormGroupContentsContext(context, output); + public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) + { + var list = InitilizeFormGroupContentsContext(context, output); - NormalizeTagMode(context, output); + NormalizeTagMode(context, output); - var childContent = await output.GetChildContentAsync(); + var childContent = await output.GetChildContentAsync(); - await ConvertToMvcForm(context, output); + await ConvertToMvcForm(context, output); - await ProcessFieldsAsync(context, output); + await ProcessFieldsAsync(context, output); - RemoveFormGroupItemsNotInModel(context, output, list); + RemoveFormGroupItemsNotInModel(context, output, list); - SetContent(context, output, list, childContent); + SetContent(context, output, list, childContent); - SetFormAttributes(context, output); + SetFormAttributes(context, output); - await SetSubmitButton(context, output); - } + await SetSubmitButton(context, output); + } - protected virtual async Task ConvertToMvcForm(TagHelperContext context, TagHelperOutput output) + protected virtual async Task ConvertToMvcForm(TagHelperContext context, TagHelperOutput output) + { + var formTagHelper = new FormTagHelper(_htmlGenerator) { - var formTagHelper = new FormTagHelper(_htmlGenerator) - { - Action = TagHelper.Action, - Controller = TagHelper.Controller, - Area = TagHelper.Area, - Page = TagHelper.Page, - PageHandler = TagHelper.PageHandler, - Antiforgery = true, - Fragment = TagHelper.Fragment, - Route = TagHelper.Route, - Method = TagHelper.Method, - RouteValues = TagHelper.RouteValues, - ViewContext = TagHelper.ViewContext - }; - - var formTagOutput = await formTagHelper.ProcessAndGetOutputAsync(output.Attributes, context, "form", TagMode.StartTagAndEndTag); - - await formTagOutput.GetChildContentAsync(); - - output.PostContent.AppendHtml(formTagOutput.PostContent); - output.PreContent.AppendHtml(formTagOutput.PreContent); - } + Action = TagHelper.Action, + Controller = TagHelper.Controller, + Area = TagHelper.Area, + Page = TagHelper.Page, + PageHandler = TagHelper.PageHandler, + Antiforgery = true, + Fragment = TagHelper.Fragment, + Route = TagHelper.Route, + Method = TagHelper.Method, + RouteValues = TagHelper.RouteValues, + ViewContext = TagHelper.ViewContext + }; + + var formTagOutput = await formTagHelper.ProcessAndGetOutputAsync(output.Attributes, context, "form", TagMode.StartTagAndEndTag); + + await formTagOutput.GetChildContentAsync(); + + output.PostContent.AppendHtml(formTagOutput.PostContent); + output.PreContent.AppendHtml(formTagOutput.PreContent); + } + + protected virtual void NormalizeTagMode(TagHelperContext context, TagHelperOutput output) + { + output.TagMode = TagMode.StartTagAndEndTag; + output.TagName = "form"; + } + + protected virtual void SetFormAttributes(TagHelperContext context, TagHelperOutput output) + { + output.Attributes.AddIfNotContains("method", "post"); + } + + protected virtual void SetContent(TagHelperContext context, TagHelperOutput output, List items, TagHelperContent childContent) + { + var contentBuilder = new StringBuilder(""); - protected virtual void NormalizeTagMode(TagHelperContext context, TagHelperOutput output) + foreach (var item in items.OrderBy(o => o.Order)) { - output.TagMode = TagMode.StartTagAndEndTag; - output.TagName = "form"; + contentBuilder.AppendLine(item.HtmlContent); } - protected virtual void SetFormAttributes(TagHelperContext context, TagHelperOutput output) + var content = childContent.GetContent(); + if (content.Contains(AbpFormContentPlaceHolder)) { - output.Attributes.AddIfNotContains("method", "post"); + content = content.Replace(AbpFormContentPlaceHolder, contentBuilder.ToString()); } - - protected virtual void SetContent(TagHelperContext context, TagHelperOutput output, List items, TagHelperContent childContent) + else { - var contentBuilder = new StringBuilder(""); - - foreach (var item in items.OrderBy(o => o.Order)) - { - contentBuilder.AppendLine(item.HtmlContent); - } + content = contentBuilder + content; + } - var content = childContent.GetContent(); - if (content.Contains(AbpFormContentPlaceHolder)) - { - content = content.Replace(AbpFormContentPlaceHolder, contentBuilder.ToString()); - } - else - { - content = contentBuilder + content; - } + output.Content.SetHtmlContent(content); + } - output.Content.SetHtmlContent(content); + protected virtual async Task SetSubmitButton(TagHelperContext context, TagHelperOutput output) + { + if (!TagHelper.SubmitButton ?? true) + { + return; } - protected virtual async Task SetSubmitButton(TagHelperContext context, TagHelperOutput output) - { - if (!TagHelper.SubmitButton ?? true) - { - return; - } + var buttonHtml = await ProcessSubmitButtonAndGetContentAsync(context, output); - var buttonHtml = await ProcessSubmitButtonAndGetContentAsync(context, output); + output.PostContent.AppendHtml(buttonHtml); + } - output.PostContent.AppendHtml(buttonHtml); - } + protected virtual List InitilizeFormGroupContentsContext(TagHelperContext context, TagHelperOutput output) + { + var items = new List(); + context.Items[FormGroupContents] = items; + return items; + } - protected virtual List InitilizeFormGroupContentsContext(TagHelperContext context, TagHelperOutput output) - { - var items = new List(); - context.Items[FormGroupContents] = items; - return items; - } + protected virtual async Task ProcessFieldsAsync(TagHelperContext context, TagHelperOutput output) + { + var models = GetModels(context, output); - protected virtual async Task ProcessFieldsAsync(TagHelperContext context, TagHelperOutput output) + foreach (var model in models) { - var models = GetModels(context, output); - - foreach (var model in models) + if (IsSelectGroup(context, model)) { - if (IsSelectGroup(context, model)) - { - await ProcessSelectGroupAsync(context, output, model); - } - else - { - await ProcessInputGroupAsync(context, output, model); - } + await ProcessSelectGroupAsync(context, output, model); + } + else + { + await ProcessInputGroupAsync(context, output, model); } } + } - protected virtual void RemoveFormGroupItemsNotInModel(TagHelperContext context, TagHelperOutput output, List items) - { - var models = GetModels(context, output); + protected virtual void RemoveFormGroupItemsNotInModel(TagHelperContext context, TagHelperOutput output, List items) + { + var models = GetModels(context, output); - items.RemoveAll(x => models.All(m => !m.Name.Equals(x.PropertyName, StringComparison.InvariantCultureIgnoreCase))); - } + items.RemoveAll(x => models.All(m => !m.Name.Equals(x.PropertyName, StringComparison.InvariantCultureIgnoreCase))); + } - protected virtual async Task ProcessSelectGroupAsync(TagHelperContext context, TagHelperOutput output, ModelExpression model) - { - var abpSelectTagHelper = GetSelectGroupTagHelper(context, output, model); + protected virtual async Task ProcessSelectGroupAsync(TagHelperContext context, TagHelperOutput output, ModelExpression model) + { + var abpSelectTagHelper = GetSelectGroupTagHelper(context, output, model); - await abpSelectTagHelper.RenderAsync(new TagHelperAttributeList(), context, _htmlEncoder, "div", TagMode.StartTagAndEndTag); - } + await abpSelectTagHelper.RenderAsync(new TagHelperAttributeList(), context, _htmlEncoder, "div", TagMode.StartTagAndEndTag); + } - protected virtual AbpTagHelper GetSelectGroupTagHelper(TagHelperContext context, TagHelperOutput output, ModelExpression model) - { - return IsRadioGroup(model.ModelExplorer) ? - GetAbpRadioInputTagHelper(model) : - GetSelectTagHelper(model); - } + protected virtual AbpTagHelper GetSelectGroupTagHelper(TagHelperContext context, TagHelperOutput output, ModelExpression model) + { + return IsRadioGroup(model.ModelExplorer) ? + GetAbpRadioInputTagHelper(model) : + GetSelectTagHelper(model); + } - protected virtual AbpTagHelper GetSelectTagHelper(ModelExpression model) - { - var abpSelectTagHelper = _serviceProvider.GetRequiredService(); - abpSelectTagHelper.AspFor = model; - abpSelectTagHelper.AspItems = null; - abpSelectTagHelper.ViewContext = TagHelper.ViewContext; - return abpSelectTagHelper; - } + protected virtual AbpTagHelper GetSelectTagHelper(ModelExpression model) + { + var abpSelectTagHelper = _serviceProvider.GetRequiredService(); + abpSelectTagHelper.AspFor = model; + abpSelectTagHelper.AspItems = null; + abpSelectTagHelper.ViewContext = TagHelper.ViewContext; + return abpSelectTagHelper; + } - protected virtual AbpTagHelper GetAbpRadioInputTagHelper(ModelExpression model) - { - var radioButtonAttribute = model.ModelExplorer.GetAttribute(); - var abpRadioInputTagHelper = _serviceProvider.GetRequiredService(); - abpRadioInputTagHelper.AspFor = model; - abpRadioInputTagHelper.AspItems = null; - abpRadioInputTagHelper.Inline = radioButtonAttribute.Inline; - abpRadioInputTagHelper.Disabled = radioButtonAttribute.Disabled; - abpRadioInputTagHelper.ViewContext = TagHelper.ViewContext; - return abpRadioInputTagHelper; - } + protected virtual AbpTagHelper GetAbpRadioInputTagHelper(ModelExpression model) + { + var radioButtonAttribute = model.ModelExplorer.GetAttribute(); + var abpRadioInputTagHelper = _serviceProvider.GetRequiredService(); + abpRadioInputTagHelper.AspFor = model; + abpRadioInputTagHelper.AspItems = null; + abpRadioInputTagHelper.Inline = radioButtonAttribute.Inline; + abpRadioInputTagHelper.Disabled = radioButtonAttribute.Disabled; + abpRadioInputTagHelper.ViewContext = TagHelper.ViewContext; + return abpRadioInputTagHelper; + } - protected virtual async Task ProcessSubmitButtonAndGetContentAsync(TagHelperContext context, TagHelperOutput output) - { - var abpButtonTagHelper = _serviceProvider.GetRequiredService(); - var attributes = new TagHelperAttributeList { new TagHelperAttribute("type", "submit") }; - abpButtonTagHelper.Text = _localizer["Submit"]; - abpButtonTagHelper.ButtonType = AbpButtonType.Primary; + protected virtual async Task ProcessSubmitButtonAndGetContentAsync(TagHelperContext context, TagHelperOutput output) + { + var abpButtonTagHelper = _serviceProvider.GetRequiredService(); + var attributes = new TagHelperAttributeList { new TagHelperAttribute("type", "submit") }; + abpButtonTagHelper.Text = _localizer["Submit"]; + abpButtonTagHelper.ButtonType = AbpButtonType.Primary; - return await abpButtonTagHelper.RenderAsync(attributes, context, _htmlEncoder, "button", TagMode.StartTagAndEndTag); - } + return await abpButtonTagHelper.RenderAsync(attributes, context, _htmlEncoder, "button", TagMode.StartTagAndEndTag); + } - protected virtual async Task ProcessInputGroupAsync(TagHelperContext context, TagHelperOutput output, ModelExpression model) - { - var abpInputTagHelper = _serviceProvider.GetRequiredService(); - abpInputTagHelper.AspFor = model; - abpInputTagHelper.ViewContext = TagHelper.ViewContext; - abpInputTagHelper.DisplayRequiredSymbol = TagHelper.RequiredSymbols ?? true; + protected virtual async Task ProcessInputGroupAsync(TagHelperContext context, TagHelperOutput output, ModelExpression model) + { + var abpInputTagHelper = _serviceProvider.GetRequiredService(); + abpInputTagHelper.AspFor = model; + abpInputTagHelper.ViewContext = TagHelper.ViewContext; + abpInputTagHelper.DisplayRequiredSymbol = TagHelper.RequiredSymbols ?? true; - await abpInputTagHelper.RenderAsync(new TagHelperAttributeList(), context, _htmlEncoder, "div", TagMode.StartTagAndEndTag); - } + await abpInputTagHelper.RenderAsync(new TagHelperAttributeList(), context, _htmlEncoder, "div", TagMode.StartTagAndEndTag); + } - protected virtual List GetModels(TagHelperContext context, TagHelperOutput output) + protected virtual List GetModels(TagHelperContext context, TagHelperOutput output) + { + return TagHelper.Model.ModelExplorer.Properties.Aggregate(new List(), ExploreModelsRecursively); + } + + protected virtual List ExploreModelsRecursively(List list, ModelExplorer model) + { + if (model.GetAttribute() != null) { - return TagHelper.Model.ModelExplorer.Properties.Aggregate(new List(), ExploreModelsRecursively); + return list; } - protected virtual List ExploreModelsRecursively(List list, ModelExplorer model) + if (IsCsharpClassOrPrimitive(model.ModelType) || IsListOfCsharpClassOrPrimitive(model.ModelType)) { - if (model.GetAttribute() != null) - { - return list; - } - - if (IsCsharpClassOrPrimitive(model.ModelType) || IsListOfCsharpClassOrPrimitive(model.ModelType)) - { - list.Add(ModelExplorerToModelExpressionConverter(model)); - - return list; - } - - if (IsListOfSelectItem(model.ModelType)) - { - return list; - } + list.Add(ModelExplorerToModelExpressionConverter(model)); - return model.Properties.Aggregate(list, ExploreModelsRecursively); + return list; } - protected virtual ModelExpression ModelExplorerToModelExpressionConverter(ModelExplorer explorer) + if (IsListOfSelectItem(model.ModelType)) { - var temp = explorer; - var propertyName = explorer.Metadata.PropertyName; - - while (temp?.Container?.Metadata?.PropertyName != null) - { - temp = temp.Container; - propertyName = temp.Metadata.PropertyName + "." + propertyName; - } - - return new ModelExpression(propertyName, explorer); + return list; } - protected virtual bool IsListOfCsharpClassOrPrimitive(Type type) - { - var genericType = type.GenericTypeArguments.FirstOrDefault(); + return model.Properties.Aggregate(list, ExploreModelsRecursively); + } - if (genericType == null || !IsCsharpClassOrPrimitive(genericType)) - { - return false; - } + protected virtual ModelExpression ModelExplorerToModelExpressionConverter(ModelExplorer explorer) + { + var temp = explorer; + var propertyName = explorer.Metadata.PropertyName; - return type.ToString().StartsWith("System.Collections.Generic.IEnumerable`") || type.ToString().StartsWith("System.Collections.Generic.List`"); + while (temp?.Container?.Metadata?.PropertyName != null) + { + temp = temp.Container; + propertyName = temp.Metadata.PropertyName + "." + propertyName; } - protected virtual bool IsCsharpClassOrPrimitive(Type type) - { - if (type == null) - { - return false; - } + return new ModelExpression(propertyName, explorer); + } - return type.IsPrimitive || - type.IsValueType || - type == typeof(string) || - type == typeof(Guid) || - type == typeof(DateTime) || - type == typeof(ValueType) || - type == typeof(TimeSpan) || - type == typeof(DateTimeOffset) || - type.IsEnum; - } + protected virtual bool IsListOfCsharpClassOrPrimitive(Type type) + { + var genericType = type.GenericTypeArguments.FirstOrDefault(); - protected virtual bool IsListOfSelectItem(Type type) + if (genericType == null || !IsCsharpClassOrPrimitive(genericType)) { - return type == typeof(List) || type == typeof(IEnumerable); + return false; } - protected virtual bool IsSelectGroup(TagHelperContext context, ModelExpression model) - { - return IsEnum(model.ModelExplorer) || AreSelectItemsProvided(model.ModelExplorer); - } + return type.ToString().StartsWith("System.Collections.Generic.IEnumerable`") || type.ToString().StartsWith("System.Collections.Generic.List`"); + } - protected virtual bool IsEnum(ModelExplorer explorer) + protected virtual bool IsCsharpClassOrPrimitive(Type type) + { + if (type == null) { - return explorer.Metadata.IsEnum; + return false; } - protected virtual bool AreSelectItemsProvided(ModelExplorer explorer) - { - return explorer.GetAttribute() != null; - } + return type.IsPrimitive || + type.IsValueType || + type == typeof(string) || + type == typeof(Guid) || + type == typeof(DateTime) || + type == typeof(ValueType) || + type == typeof(TimeSpan) || + type == typeof(DateTimeOffset) || + type.IsEnum; + } - protected virtual bool IsRadioGroup(ModelExplorer explorer) - { - return explorer.GetAttribute() != null; - } + protected virtual bool IsListOfSelectItem(Type type) + { + return type == typeof(List) || type == typeof(IEnumerable); + } + + protected virtual bool IsSelectGroup(TagHelperContext context, ModelExpression model) + { + return IsEnum(model.ModelExplorer) || AreSelectItemsProvided(model.ModelExplorer); + } + + protected virtual bool IsEnum(ModelExplorer explorer) + { + return explorer.Metadata.IsEnum; + } + + protected virtual bool AreSelectItemsProvided(ModelExplorer explorer) + { + return explorer.GetAttribute() != null; + } + + protected virtual bool IsRadioGroup(ModelExplorer explorer) + { + return explorer.GetAttribute() != null; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormContentTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormContentTagHelper.cs index 9606cc1b77..af0ff4e2d3 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormContentTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormContentTagHelper.cs @@ -1,15 +1,14 @@ using Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; + +[HtmlTargetElement("abp-form-content", TagStructure = TagStructure.WithoutEndTag)] +public class AbpFormContentTagHelper : AbpTagHelper, ITransientDependency { - [HtmlTargetElement("abp-form-content", TagStructure = TagStructure.WithoutEndTag)] - public class AbpFormContentTagHelper : AbpTagHelper, ITransientDependency + public AbpFormContentTagHelper(AbpFormContentTagHelperService tagHelperService) + : base(tagHelperService) { - public AbpFormContentTagHelper(AbpFormContentTagHelperService tagHelperService) - : base(tagHelperService) - { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormContentTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormContentTagHelperService.cs index 9cb06d5364..d973c31fb2 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormContentTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormContentTagHelperService.cs @@ -1,15 +1,14 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; + +public class AbpFormContentTagHelperService : AbpTagHelperService { - public class AbpFormContentTagHelperService : AbpTagHelperService + public override void Process(TagHelperContext context, TagHelperOutput output) { - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.Attributes.Clear(); - output.TagName = "div"; - output.TagMode = TagMode.StartTagAndEndTag; - output.Content.SetContent(AbpFormContentPlaceHolder); - } + output.Attributes.Clear(); + output.TagName = "div"; + output.TagMode = TagMode.StartTagAndEndTag; + output.Content.SetContent(AbpFormContentPlaceHolder); } -} \ No newline at end of file +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormControlSize.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormControlSize.cs index 79070b559e..94acbca97e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormControlSize.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpFormControlSize.cs @@ -1,10 +1,9 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; + +public enum AbpFormControlSize { - public enum AbpFormControlSize - { - Default, - Small, - Medium, - Large - } + Default, + Small, + Medium, + Large } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpIdNameTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpIdNameTagHelper.cs index 7bc1c674a7..d24e247abe 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpIdNameTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpIdNameTagHelper.cs @@ -7,43 +7,42 @@ using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.Extensions.Options; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; + +[HtmlTargetElement(Attributes = "abp-id-name")] +public class AbpIdNameTagHelper : AbpTagHelper { - [HtmlTargetElement(Attributes = "abp-id-name")] - public class AbpIdNameTagHelper : AbpTagHelper - { - /// - /// Make sure this TagHelper is executed first. - /// - public override int Order => -1000 - 1; + /// + /// Make sure this TagHelper is executed first. + /// + public override int Order => -1000 - 1; - [HtmlAttributeName("abp-id-name")] - public ModelExpression IdNameFor { get; set; } + [HtmlAttributeName("abp-id-name")] + public ModelExpression IdNameFor { get; set; } - private readonly MvcViewOptions _mvcViewOptions; + private readonly MvcViewOptions _mvcViewOptions; - public AbpIdNameTagHelper(IOptions mvcViewOptions) - { - _mvcViewOptions = mvcViewOptions.Value; - } + public AbpIdNameTagHelper(IOptions mvcViewOptions) + { + _mvcViewOptions = mvcViewOptions.Value; + } - public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) + public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) + { + if (IdNameFor != null) { - if (IdNameFor != null) + if (!context.AllAttributes.Any(x => x.Name.Equals("id", StringComparison.OrdinalIgnoreCase))) { - if (!context.AllAttributes.Any(x => x.Name.Equals("id", StringComparison.OrdinalIgnoreCase))) - { - var id = TagBuilder.CreateSanitizedId(IdNameFor.Name, _mvcViewOptions.HtmlHelperOptions.IdAttributeDotReplacement); - output.Attributes.Add("id", id); - } - - if (!context.AllAttributes.Any(x => x.Name.Equals("name", StringComparison.OrdinalIgnoreCase))) - { - output.Attributes.Add("name", IdNameFor.Name); - } + var id = TagBuilder.CreateSanitizedId(IdNameFor.Name, _mvcViewOptions.HtmlHelperOptions.IdAttributeDotReplacement); + output.Attributes.Add("id", id); } - return Task.CompletedTask; + if (!context.AllAttributes.Any(x => x.Name.Equals("name", StringComparison.OrdinalIgnoreCase))) + { + output.Attributes.Add("name", IdNameFor.Name); + } } + + return Task.CompletedTask; } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs index fdab58203a..5778e47692 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs @@ -2,48 +2,47 @@ using Microsoft.AspNetCore.Mvc.ViewFeatures; using Microsoft.AspNetCore.Razor.TagHelpers; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; + +public class AbpInputTagHelper : AbpTagHelper { - public class AbpInputTagHelper : AbpTagHelper - { - public ModelExpression AspFor { get; set; } + public ModelExpression AspFor { get; set; } - public string Label { get; set; } + public string Label { get; set; } - [HtmlAttributeName("info")] - public string InfoText { get; set; } + [HtmlAttributeName("info")] + public string InfoText { get; set; } - [HtmlAttributeName("disabled")] - public bool IsDisabled { get; set; } = false; + [HtmlAttributeName("disabled")] + public bool IsDisabled { get; set; } = false; - [HtmlAttributeName("readonly")] - public bool? IsReadonly { get; set; } = false; + [HtmlAttributeName("readonly")] + public bool? IsReadonly { get; set; } = false; - public bool AutoFocus { get; set; } + public bool AutoFocus { get; set; } - [HtmlAttributeName("type")] - public string InputTypeName { get; set; } + [HtmlAttributeName("type")] + public string InputTypeName { get; set; } - public AbpFormControlSize Size { get; set; } = AbpFormControlSize.Default; + public AbpFormControlSize Size { get; set; } = AbpFormControlSize.Default; - [HtmlAttributeName("required-symbol")] - public bool DisplayRequiredSymbol { get; set; } = true; + [HtmlAttributeName("required-symbol")] + public bool DisplayRequiredSymbol { get; set; } = true; - [HtmlAttributeName("asp-format")] - public string Format { get; set; } + [HtmlAttributeName("asp-format")] + public string Format { get; set; } - public string Name { get; set; } + public string Name { get; set; } - public string Value { get; set; } + public string Value { get; set; } - public bool SuppressLabel { get; set; } + public bool SuppressLabel { get; set; } - public CheckBoxHiddenInputRenderMode? CheckBoxHiddenInputRenderMode { get; set; } + public CheckBoxHiddenInputRenderMode? CheckBoxHiddenInputRenderMode { get; set; } - public AbpInputTagHelper(AbpInputTagHelperService tagHelperService) - : base(tagHelperService) - { + public AbpInputTagHelper(AbpInputTagHelperService tagHelperService) + : base(tagHelperService) + { - } } } diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs index 6dc050b118..4d7a912426 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs @@ -11,462 +11,461 @@ using System.Threading.Tasks; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Microsoft.AspNetCore.Razor.TagHelpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Extensions; -namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; + +public class AbpInputTagHelperService : AbpTagHelperService { - public class AbpInputTagHelperService : AbpTagHelperService + private readonly IHtmlGenerator _generator; + private readonly HtmlEncoder _encoder; + private readonly IAbpTagHelperLocalizer _tagHelperLocalizer; + + public AbpInputTagHelperService(IHtmlGenerator generator, HtmlEncoder encoder, IAbpTagHelperLocalizer tagHelperLocalizer) { - private readonly IHtmlGenerator _generator; - private readonly HtmlEncoder _encoder; - private readonly IAbpTagHelperLocalizer _tagHelperLocalizer; + _generator = generator; + _encoder = encoder; + _tagHelperLocalizer = tagHelperLocalizer; + } - public AbpInputTagHelperService(IHtmlGenerator generator, HtmlEncoder encoder, IAbpTagHelperLocalizer tagHelperLocalizer) - { - _generator = generator; - _encoder = encoder; - _tagHelperLocalizer = tagHelperLocalizer; - } + public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) + { + var (innerHtml, isCheckBox) = await GetFormInputGroupAsHtmlAsync(context, output); - public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) + if (isCheckBox && TagHelper.CheckBoxHiddenInputRenderMode.HasValue) { - var (innerHtml, isCheckBox) = await GetFormInputGroupAsHtmlAsync(context, output); - - if (isCheckBox && TagHelper.CheckBoxHiddenInputRenderMode.HasValue) - { - TagHelper.ViewContext.CheckBoxHiddenInputRenderMode = TagHelper.CheckBoxHiddenInputRenderMode.Value; - } + TagHelper.ViewContext.CheckBoxHiddenInputRenderMode = TagHelper.CheckBoxHiddenInputRenderMode.Value; + } - var order = TagHelper.AspFor.ModelExplorer.GetDisplayOrder(); + var order = TagHelper.AspFor.ModelExplorer.GetDisplayOrder(); - AddGroupToFormGroupContents( - context, - TagHelper.AspFor.Name, - SurroundInnerHtmlAndGet(context, output, innerHtml, isCheckBox), - order, - out var suppress - ); + AddGroupToFormGroupContents( + context, + TagHelper.AspFor.Name, + SurroundInnerHtmlAndGet(context, output, innerHtml, isCheckBox), + order, + out var suppress + ); - if (suppress) - { - output.SuppressOutput(); - } - else + if (suppress) + { + output.SuppressOutput(); + } + else + { + output.TagMode = TagMode.StartTagAndEndTag; + output.TagName = "div"; + LeaveOnlyGroupAttributes(context, output); + output.Attributes.AddClass("mb-3"); + if (isCheckBox) { - output.TagMode = TagMode.StartTagAndEndTag; - output.TagName = "div"; - LeaveOnlyGroupAttributes(context, output); - output.Attributes.AddClass("mb-3"); - if (isCheckBox) - { - output.Attributes.AddClass("form-check"); - } - output.Content.AppendHtml(innerHtml); + output.Attributes.AddClass("form-check"); } + output.Content.AppendHtml(innerHtml); } + } - protected virtual async Task<(string, bool)> GetFormInputGroupAsHtmlAsync(TagHelperContext context, TagHelperOutput output) - { - var (inputTag, isCheckBox) = await GetInputTagHelperOutputAsync(context, output); + protected virtual async Task<(string, bool)> GetFormInputGroupAsHtmlAsync(TagHelperContext context, TagHelperOutput output) + { + var (inputTag, isCheckBox) = await GetInputTagHelperOutputAsync(context, output); - var inputHtml = inputTag.Render(_encoder); - var label = await GetLabelAsHtmlAsync(context, output, inputTag, isCheckBox); - var info = GetInfoAsHtml(context, output, inputTag, isCheckBox); - var validation = isCheckBox ? "" : await GetValidationAsHtmlAsync(context, output, inputTag); + var inputHtml = inputTag.Render(_encoder); + var label = await GetLabelAsHtmlAsync(context, output, inputTag, isCheckBox); + var info = GetInfoAsHtml(context, output, inputTag, isCheckBox); + var validation = isCheckBox ? "" : await GetValidationAsHtmlAsync(context, output, inputTag); - return (GetContent(context, output, label, inputHtml, validation, info, isCheckBox), isCheckBox); - } + return (GetContent(context, output, label, inputHtml, validation, info, isCheckBox), isCheckBox); + } - protected virtual async Task GetValidationAsHtmlAsync(TagHelperContext context, TagHelperOutput output, TagHelperOutput inputTag) + protected virtual async Task GetValidationAsHtmlAsync(TagHelperContext context, TagHelperOutput output, TagHelperOutput inputTag) + { + if (IsOutputHidden(inputTag)) { - if (IsOutputHidden(inputTag)) - { - return ""; - } + return ""; + } - var validationMessageTagHelper = new ValidationMessageTagHelper(_generator) - { - For = TagHelper.AspFor, - ViewContext = TagHelper.ViewContext - }; + var validationMessageTagHelper = new ValidationMessageTagHelper(_generator) + { + For = TagHelper.AspFor, + ViewContext = TagHelper.ViewContext + }; - var attributeList = new TagHelperAttributeList { { "class", "text-danger" } }; + var attributeList = new TagHelperAttributeList { { "class", "text-danger" } }; - return await validationMessageTagHelper.RenderAsync(attributeList, context, _encoder, "span", TagMode.StartTagAndEndTag); - } + return await validationMessageTagHelper.RenderAsync(attributeList, context, _encoder, "span", TagMode.StartTagAndEndTag); + } - protected virtual string GetContent(TagHelperContext context, TagHelperOutput output, string label, string inputHtml, string validation, string infoHtml, bool isCheckbox) - { - var innerContent = isCheckbox ? - inputHtml + label : - label + inputHtml; + protected virtual string GetContent(TagHelperContext context, TagHelperOutput output, string label, string inputHtml, string validation, string infoHtml, bool isCheckbox) + { + var innerContent = isCheckbox ? + inputHtml + label : + label + inputHtml; - return innerContent + infoHtml + validation; - } + return innerContent + infoHtml + validation; + } - protected virtual string SurroundInnerHtmlAndGet(TagHelperContext context, TagHelperOutput output, string innerHtml, bool isCheckbox) - { - return "
" + - Environment.NewLine + innerHtml + Environment.NewLine + - "
"; - } + protected virtual string SurroundInnerHtmlAndGet(TagHelperContext context, TagHelperOutput output, string innerHtml, bool isCheckbox) + { + return "
" + + Environment.NewLine + innerHtml + Environment.NewLine + + "
"; + } - protected virtual TagHelper GetInputTagHelper(TagHelperContext context, TagHelperOutput output) + protected virtual TagHelper GetInputTagHelper(TagHelperContext context, TagHelperOutput output) + { + if (TagHelper.AspFor.ModelExplorer.GetAttribute