From e3082f6ab535e02ebb6501c3d717713fff5fc115 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Fri, 25 Dec 2020 17:00:31 +0800 Subject: [PATCH 01/11] Enabled swagger login for HostWithIds project --- .../Templates/App/AppTemplateBase.cs | 4 ++++ ...emplateChangeDbMigratorPortSettingsStep.cs | 24 +++++++++++++++++++ .../appsettings.json | 2 +- .../MyProjectNameHttpApiHostModule.cs | 15 +++++++++--- .../appsettings.json | 4 +++- 5 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateChangeDbMigratorPortSettingsStep.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index a351589881..b5976b403f 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -103,6 +103,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App if (context.BuildArgs.ExtraProperties.ContainsKey("separate-identity-server")) { steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds")); + steps.Add(new AppTemplateChangeDbMigratorPortSettingsStep("44300")); } else { @@ -123,6 +124,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App { steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds")); steps.Add(new BlazorAppsettingsFilePortChangeForSeparatedIdentityServersStep()); + steps.Add(new AppTemplateChangeDbMigratorPortSettingsStep("44300")); } else { @@ -140,6 +142,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests")); steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Host", "MyCompanyName.MyProjectName.Web")); + steps.Add(new AppTemplateChangeDbMigratorPortSettingsStep("44300")); } else { @@ -162,6 +165,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.App { steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds")); steps.Add(new AngularEnvironmentFilePortChangeForSeparatedIdentityServersStep()); + steps.Add(new AppTemplateChangeDbMigratorPortSettingsStep("44300")); if (context.BuildArgs.MobileApp == MobileApp.ReactNative) { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateChangeDbMigratorPortSettingsStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateChangeDbMigratorPortSettingsStep.cs new file mode 100644 index 0000000000..2d192f1478 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateChangeDbMigratorPortSettingsStep.cs @@ -0,0 +1,24 @@ +using Volo.Abp.Cli.ProjectBuilding.Building; +using Volo.Abp.Cli.ProjectBuilding.Files; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App +{ + public class AppTemplateChangeDbMigratorPortSettingsStep : ProjectBuildPipelineStep + { + public string IdentityServerPort { get; } + + /// + public AppTemplateChangeDbMigratorPortSettingsStep( + string identityServerPort) + { + IdentityServerPort = identityServerPort; + } + + public override void Execute(ProjectBuildContext context) + { + context + .GetFile("/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json") + .ReplaceText("44305", IdentityServerPort); + } + } +} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json index 2e4a69bd49..1d9beacd54 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json @@ -21,7 +21,7 @@ "MyProjectName_Swagger": { "ClientId": "MyProjectName_Swagger", "ClientSecret": "1q2w3e*", - "RootUrl": "https://localhost:44300" + "RootUrl": "https://localhost:44305" } } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs index 39cedbb06a..ac55c87569 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs @@ -58,7 +58,7 @@ namespace MyCompanyName.MyProjectName ConfigureLocalization(); ConfigureVirtualFileSystem(context); ConfigureCors(context, configuration); - ConfigureSwaggerServices(context); + ConfigureSwaggerServices(context, configuration); } private void ConfigureBundles() @@ -129,9 +129,14 @@ namespace MyCompanyName.MyProjectName }); } - private static void ConfigureSwaggerServices(ServiceConfigurationContext context) + private static void ConfigureSwaggerServices(ServiceConfigurationContext context, IConfiguration configuration) { - context.Services.AddSwaggerGen( + context.Services.AddAbpSwaggerGenWithOAuth( + configuration["AuthServer:Authority"], + new Dictionary + { + {"MyProjectName", "MyProjectName API"} + }, options => { options.SwaggerDoc("v1", new OpenApiInfo {Title = "MyProjectName API", Version = "v1"}); @@ -216,6 +221,10 @@ namespace MyCompanyName.MyProjectName app.UseAbpSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyProjectName API"); + + var configuration = context.ServiceProvider.GetRequiredService(); + c.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); + c.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]); }); app.UseAuditing(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.json index 795753ec9d..1051a8576c 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.json @@ -9,7 +9,9 @@ }, "AuthServer": { "Authority": "https://localhost:44305", - "RequireHttpsMetadata": "false" + "RequireHttpsMetadata": "false", + "SwaggerClientId": "MyProjectName_Swagger", + "SwaggerClientSecret": "1q2w3e*" }, "StringEncryption": { "DefaultPassPhrase": "gsKnGZ041HLL4IM8" From 134468e2cd967533f8fde5f3a2ece62136746140 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 25 Dec 2020 18:20:22 +0300 Subject: [PATCH 02/11] move localization to BaseCoreModule --- npm/ng-packs/packages/core/src/lib/core.module.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/core.module.ts b/npm/ng-packs/packages/core/src/lib/core.module.ts index a661012ac7..f25f8f07ac 100644 --- a/npm/ng-packs/packages/core/src/lib/core.module.ts +++ b/npm/ng-packs/packages/core/src/lib/core.module.ts @@ -52,6 +52,7 @@ export function storageFactory(): OAuthStorage { FormsModule, ReactiveFormsModule, RouterModule, + LocalizationModule, AbstractNgModelComponent, AutofocusDirective, @@ -76,6 +77,7 @@ export function storageFactory(): OAuthStorage { FormsModule, ReactiveFormsModule, RouterModule, + LocalizationModule, ], declarations: [ AbstractNgModelComponent, @@ -94,6 +96,7 @@ export function storageFactory(): OAuthStorage { StopPropagationDirective, VisibilityDirective, ], + providers: [LocalizationPipe], entryComponents: [ RouterOutletComponent, DynamicLayoutComponent, @@ -125,9 +128,8 @@ export class RootCoreModule {} * CoreModule is the module that is publicly available */ @NgModule({ - exports: [BaseCoreModule, LocalizationModule], - imports: [BaseCoreModule, LocalizationModule], - providers: [LocalizationPipe], + exports: [BaseCoreModule], + imports: [BaseCoreModule], }) export class CoreModule { static forRoot(options = {} as ABP.Root): ModuleWithProviders { From 91b5b74b95bcb2807a15a5365e92c07eed9b34ae Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 25 Dec 2020 18:22:40 +0300 Subject: [PATCH 03/11] remove MockLocalizationPipe from core testing package --- .../core/testing/src/lib/core-testing.module.ts | 17 ++--------------- .../core/testing/src/lib/pipes/index.ts | 1 - .../src/lib/pipes/mock-localization.pipe.ts | 12 ------------ .../packages/core/testing/src/public-api.ts | 1 - 4 files changed, 2 insertions(+), 29 deletions(-) delete mode 100644 npm/ng-packs/packages/core/testing/src/lib/pipes/index.ts delete mode 100644 npm/ng-packs/packages/core/testing/src/lib/pipes/mock-localization.pipe.ts diff --git a/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts b/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts index 9a7fc3eec0..214a49ebc9 100644 --- a/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts +++ b/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts @@ -1,16 +1,8 @@ -import { - ABP, - BaseCoreModule, - coreOptionsFactory, - CORE_OPTIONS, - LocalizationPipe, - RestService, -} from '@abp/ng.core'; +import { ABP, BaseCoreModule, coreOptionsFactory, CORE_OPTIONS, RestService } from '@abp/ng.core'; import { APP_BASE_HREF } from '@angular/common'; import { ModuleWithProviders, NgModule } from '@angular/core'; import { provideRoutes } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; -import { MockLocalizationPipe } from './pipes/mock-localization.pipe'; import { MockRestService } from './services/mock-rest.service'; /** @@ -18,9 +10,8 @@ import { MockRestService } from './services/mock-rest.service'; * and it provides mock alternatives */ @NgModule({ - exports: [RouterTestingModule, BaseCoreModule, MockLocalizationPipe], + exports: [RouterTestingModule, BaseCoreModule], imports: [RouterTestingModule, BaseCoreModule], - declarations: [MockLocalizationPipe], }) export class CoreTestingModule { static withConfig( @@ -39,10 +30,6 @@ export class CoreTestingModule { useFactory: coreOptionsFactory, deps: ['CORE_OPTIONS'], }, - { - provide: LocalizationPipe, - useClass: MockLocalizationPipe, - }, { provide: RestService, useClass: MockRestService, diff --git a/npm/ng-packs/packages/core/testing/src/lib/pipes/index.ts b/npm/ng-packs/packages/core/testing/src/lib/pipes/index.ts deleted file mode 100644 index 60bb9b7dce..0000000000 --- a/npm/ng-packs/packages/core/testing/src/lib/pipes/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './mock-localization.pipe'; diff --git a/npm/ng-packs/packages/core/testing/src/lib/pipes/mock-localization.pipe.ts b/npm/ng-packs/packages/core/testing/src/lib/pipes/mock-localization.pipe.ts deleted file mode 100644 index 302173cb0f..0000000000 --- a/npm/ng-packs/packages/core/testing/src/lib/pipes/mock-localization.pipe.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Config } from '@abp/ng.core'; -import { Injectable, Pipe, PipeTransform } from '@angular/core'; - -@Injectable() -@Pipe({ - name: 'abpLocalization', -}) -export class MockLocalizationPipe implements PipeTransform { - transform(value: string | Config.LocalizationWithDefault = '', ..._: string[]) { - return typeof value === 'string' ? value : value.defaultValue; - } -} diff --git a/npm/ng-packs/packages/core/testing/src/public-api.ts b/npm/ng-packs/packages/core/testing/src/public-api.ts index 8028a99aac..3b48853680 100644 --- a/npm/ng-packs/packages/core/testing/src/public-api.ts +++ b/npm/ng-packs/packages/core/testing/src/public-api.ts @@ -1,2 +1 @@ export * from './lib/core-testing.module'; -export * from './lib/pipes'; From 3c904373631508024d8943bc7cc956cd043056a7 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 25 Dec 2020 18:22:58 +0300 Subject: [PATCH 04/11] add listQueryDebounceTime to ABP.Test interface --- npm/ng-packs/packages/core/src/lib/models/common.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/npm/ng-packs/packages/core/src/lib/models/common.ts b/npm/ng-packs/packages/core/src/lib/models/common.ts index 7e828c9d2a..d4d44faae0 100644 --- a/npm/ng-packs/packages/core/src/lib/models/common.ts +++ b/npm/ng-packs/packages/core/src/lib/models/common.ts @@ -14,6 +14,7 @@ export namespace ABP { export interface Test extends Partial { baseHref?: string; + listQueryDebounceTime?: number; routes?: Routes; } From 186081fcdd536cd5b9ce1c9352c920a6acadddf7 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 25 Dec 2020 18:27:19 +0300 Subject: [PATCH 05/11] avoid debounce when LIST_QUERY_DEBOUNCE_TIME is 0 --- .../core/src/lib/services/list.service.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/services/list.service.ts b/npm/ng-packs/packages/core/src/lib/services/list.service.ts index 135b13a912..0bd3e927ae 100644 --- a/npm/ng-packs/packages/core/src/lib/services/list.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/list.service.ts @@ -1,5 +1,12 @@ -import { Inject, Injectable, OnDestroy, Optional } from '@angular/core'; -import { BehaviorSubject, Observable, of, ReplaySubject, Subject } from 'rxjs'; +import { Injectable, Injector, OnDestroy } from '@angular/core'; +import { + BehaviorSubject, + MonoTypeOperatorFunction, + Observable, + of, + ReplaySubject, + Subject, +} from 'rxjs'; import { catchError, debounceTime, @@ -68,7 +75,7 @@ export class ListService implements OnDes get query$(): Observable { return this._query$ .asObservable() - .pipe(debounceTime(this.delay || 300), shareReplay({ bufferSize: 1, refCount: true })); + .pipe(this.delay, shareReplay({ bufferSize: 1, refCount: true })); } private _isLoading$ = new BehaviorSubject(false); @@ -89,7 +96,11 @@ export class ListService implements OnDes } as any) as QueryParamsType); }; - constructor(@Optional() @Inject(LIST_QUERY_DEBOUNCE_TIME) private delay: number) { + private delay: MonoTypeOperatorFunction; + + constructor(injector: Injector) { + const delay = injector.get(LIST_QUERY_DEBOUNCE_TIME, 300); + this.delay = delay ? debounceTime(delay) : tap(); this.get(); } From b47cb9364db546dce4d0b786971669029dc287a4 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 25 Dec 2020 18:28:56 +0300 Subject: [PATCH 06/11] use listQueryDebounceTime passed to CoreTestingModule --- .../core/testing/src/lib/core-testing.module.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts b/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts index 214a49ebc9..d598021577 100644 --- a/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts +++ b/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts @@ -1,4 +1,11 @@ -import { ABP, BaseCoreModule, coreOptionsFactory, CORE_OPTIONS, RestService } from '@abp/ng.core'; +import { + ABP, + BaseCoreModule, + coreOptionsFactory, + CORE_OPTIONS, + LIST_QUERY_DEBOUNCE_TIME, + RestService, +} from '@abp/ng.core'; import { APP_BASE_HREF } from '@angular/common'; import { ModuleWithProviders, NgModule } from '@angular/core'; import { provideRoutes } from '@angular/router'; @@ -15,7 +22,7 @@ import { MockRestService } from './services/mock-rest.service'; }) export class CoreTestingModule { static withConfig( - { baseHref = '/', routes = [], ...options } = {} as ABP.Test, + { baseHref = '/', listQueryDebounceTime = 0, routes = [], ...options } = {} as ABP.Test, ): ModuleWithProviders { return { ngModule: CoreTestingModule, @@ -30,6 +37,10 @@ export class CoreTestingModule { useFactory: coreOptionsFactory, deps: ['CORE_OPTIONS'], }, + { + provide: LIST_QUERY_DEBOUNCE_TIME, + useValue: listQueryDebounceTime, + }, { provide: RestService, useClass: MockRestService, From f012479bf8c9d808fa6bb718327504424276f871 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 25 Dec 2020 18:29:15 +0300 Subject: [PATCH 07/11] add NoopAnimationsModule toCoreTestingModule imports --- .../packages/core/testing/src/lib/core-testing.module.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts b/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts index d598021577..7fa32a1b89 100644 --- a/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts +++ b/npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts @@ -8,6 +8,7 @@ import { } from '@abp/ng.core'; import { APP_BASE_HREF } from '@angular/common'; import { ModuleWithProviders, NgModule } from '@angular/core'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { provideRoutes } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { MockRestService } from './services/mock-rest.service'; @@ -18,7 +19,7 @@ import { MockRestService } from './services/mock-rest.service'; */ @NgModule({ exports: [RouterTestingModule, BaseCoreModule], - imports: [RouterTestingModule, BaseCoreModule], + imports: [NoopAnimationsModule, RouterTestingModule, BaseCoreModule], }) export class CoreTestingModule { static withConfig( From a0125c5860ad8b25af085d6b6f1050b696be97a9 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 25 Dec 2020 18:33:36 +0300 Subject: [PATCH 08/11] add a BaseUiExtensionsModule --- .../theme-shared/extensions/src/lib/ui-extensions.module.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/ui-extensions.module.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/ui-extensions.module.ts index 11f9ff9e4d..28456e0324 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/ui-extensions.module.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/ui-extensions.module.ts @@ -47,4 +47,10 @@ import { PropDataDirective } from './directives/prop-data.directive'; NgbTypeaheadModule, ], }) +export class BaseUiExtensionsModule {} + +@NgModule({ + exports: [BaseUiExtensionsModule], + imports: [BaseUiExtensionsModule], +}) export class UiExtensionsModule {} From d250b869446b7d1bd8062033660b8a37a26886b7 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 25 Dec 2020 18:34:10 +0300 Subject: [PATCH 09/11] add a secondary entry point for ui extensions testing --- .../theme-shared/extensions/testing/ng-package.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 npm/ng-packs/packages/theme-shared/extensions/testing/ng-package.json diff --git a/npm/ng-packs/packages/theme-shared/extensions/testing/ng-package.json b/npm/ng-packs/packages/theme-shared/extensions/testing/ng-package.json new file mode 100644 index 0000000000..10757e7f04 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/extensions/testing/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/theme-shared/extensions/testing", + "lib": { + "entryFile": "src/public-api.ts" + } +} From c95f537c2e1eaab4043bba4894c1385ad4fa90a0 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 25 Dec 2020 18:34:31 +0300 Subject: [PATCH 10/11] add end export UiExtensionsTestingModule --- .../testing/src/lib/ui-extensions-testing.module.ts | 8 ++++++++ .../theme-shared/extensions/testing/src/public-api.ts | 1 + 2 files changed, 9 insertions(+) create mode 100644 npm/ng-packs/packages/theme-shared/extensions/testing/src/lib/ui-extensions-testing.module.ts create mode 100644 npm/ng-packs/packages/theme-shared/extensions/testing/src/public-api.ts diff --git a/npm/ng-packs/packages/theme-shared/extensions/testing/src/lib/ui-extensions-testing.module.ts b/npm/ng-packs/packages/theme-shared/extensions/testing/src/lib/ui-extensions-testing.module.ts new file mode 100644 index 0000000000..593cce3733 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/extensions/testing/src/lib/ui-extensions-testing.module.ts @@ -0,0 +1,8 @@ +import { BaseUiExtensionsModule } from '@abp/ng.theme.shared/extensions'; +import { NgModule } from '@angular/core'; + +@NgModule({ + exports: [BaseUiExtensionsModule], + imports: [BaseUiExtensionsModule], +}) +export class UiExtensionsTestingModule {} diff --git a/npm/ng-packs/packages/theme-shared/extensions/testing/src/public-api.ts b/npm/ng-packs/packages/theme-shared/extensions/testing/src/public-api.ts new file mode 100644 index 0000000000..d524c9cd0c --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/extensions/testing/src/public-api.ts @@ -0,0 +1 @@ +export * from './lib/ui-extensions-testing.module'; From 83bd2e2b43191883591297aefca761ae49ae338e Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 28 Dec 2020 15:54:46 +0800 Subject: [PATCH 11/11] Support ManifestDirectoryInfo and ManifestFileInfo --- .../AbpVirtualFileExplorerWebModule.cs | 1 + .../Pages/VirtualFileExplorer/Index.cshtml.cs | 18 +++++++++++++----- .../VirtualFileExplorerConsts.cs | 2 +- .../Volo.Abp.VirtualFileExplorer.Web.csproj | 7 +++++-- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/AbpVirtualFileExplorerWebModule.cs b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/AbpVirtualFileExplorerWebModule.cs index f49628aa45..41c007e06d 100644 --- a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/AbpVirtualFileExplorerWebModule.cs +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/AbpVirtualFileExplorerWebModule.cs @@ -1,4 +1,5 @@ using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.FileProviders.Physical; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; using Volo.Abp.AspNetCore.Mvc.UI.Bundling; using Volo.Abp.AspNetCore.Mvc.UI.Packages.Prismjs; diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Pages/VirtualFileExplorer/Index.cshtml.cs b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Pages/VirtualFileExplorer/Index.cshtml.cs index b450531cc8..14f9fc581f 100644 --- a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Pages/VirtualFileExplorer/Index.cshtml.cs +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Pages/VirtualFileExplorer/Index.cshtml.cs @@ -1,10 +1,9 @@ +using System; using System.Collections.Generic; using System.Linq; using System.Text; -using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.FileProviders; -using NUglify.Helpers; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Pagination; using Volo.Abp.VirtualFileExplorer.Web.Models; using Volo.Abp.VirtualFileSystem; @@ -31,7 +30,6 @@ namespace Volo.Abp.VirtualFileExplorer.Web.Pages.VirtualFileExplorer protected IVirtualFileProvider VirtualFileProvider { get; } - public IndexModel(IVirtualFileProvider virtualFileProvider) { VirtualFileProvider = virtualFileProvider; @@ -67,16 +65,26 @@ namespace Volo.Abp.VirtualFileExplorer.Web.Pages.VirtualFileExplorer LastUpdateTime = fileInfo.LastModified.LocalDateTime }; + var filePath = fileInfo.PhysicalPath ?? $"{Path.EnsureEndsWith('/')}{fileInfo.Name}";; + if (fileInfo.IsDirectory) { fileInfoViewModel.Icon = "fas fa-folder"; fileInfoViewModel.FileType = "folder"; fileInfoViewModel.Length = "/"; - fileInfoViewModel.FileName =$"{fileInfo.Name}"; + fileInfoViewModel.FileName =$"{fileInfo.Name}"; } else { - fileInfoViewModel.FilePath = ((EmbeddedResourceFileInfo) fileInfo).VirtualPath; + if (fileInfo is EmbeddedResourceFileInfo embeddedResourceFileInfo) + { + fileInfoViewModel.FilePath = embeddedResourceFileInfo.VirtualPath; + } + else + { + fileInfoViewModel.FilePath = filePath; + } + } FileInfoList.Add(fileInfoViewModel); diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/VirtualFileExplorerConsts.cs b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/VirtualFileExplorerConsts.cs index a05020b764..08a5916a0a 100644 --- a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/VirtualFileExplorerConsts.cs +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/VirtualFileExplorerConsts.cs @@ -2,6 +2,6 @@ { public static class VirtualFileExplorerConsts { - public static string[] AllowFileInfoTypes = new[] {"VirtualDirectoryFileInfo", "EmbeddedResourceFileInfo"}; + public static readonly string[] AllowFileInfoTypes = {"VirtualDirectoryFileInfo", "EmbeddedResourceFileInfo", "ManifestDirectoryInfo" , "ManifestFileInfo"}; } } diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.csproj b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.csproj index d41cec81c1..cfe69554ac 100644 --- a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.csproj +++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.csproj @@ -9,6 +9,7 @@ false false false + true true Library @@ -18,14 +19,12 @@ - - @@ -34,4 +33,8 @@ + + + +