Browse Source

Merge branch 'dev' into cms-kit/content-management

pull/6858/head
Ahmet 6 years ago
parent
commit
729033082b
  1. 4
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs
  2. 24
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateChangeDbMigratorPortSettingsStep.cs
  3. 1
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/AbpVirtualFileExplorerWebModule.cs
  4. 18
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Pages/VirtualFileExplorer/Index.cshtml.cs
  5. 2
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/VirtualFileExplorerConsts.cs
  6. 7
      modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.csproj
  7. 8
      npm/ng-packs/packages/core/src/lib/core.module.ts
  8. 1
      npm/ng-packs/packages/core/src/lib/models/common.ts
  9. 19
      npm/ng-packs/packages/core/src/lib/services/list.service.ts
  10. 15
      npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts
  11. 1
      npm/ng-packs/packages/core/testing/src/lib/pipes/index.ts
  12. 12
      npm/ng-packs/packages/core/testing/src/lib/pipes/mock-localization.pipe.ts
  13. 1
      npm/ng-packs/packages/core/testing/src/public-api.ts
  14. 6
      npm/ng-packs/packages/theme-shared/extensions/src/lib/ui-extensions.module.ts
  15. 7
      npm/ng-packs/packages/theme-shared/extensions/testing/ng-package.json
  16. 8
      npm/ng-packs/packages/theme-shared/extensions/testing/src/lib/ui-extensions-testing.module.ts
  17. 1
      npm/ng-packs/packages/theme-shared/extensions/testing/src/public-api.ts
  18. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/appsettings.json
  19. 15
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs
  20. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/appsettings.json

4
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)
{

24
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; }
/// <param name="identityServerPort"></param>
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);
}
}
}

1
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;

18
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 =$"<a href='{Url.Content("~/")}VirtualFileExplorer?path={fileInfo.PhysicalPath}'>{fileInfo.Name}</a>";
fileInfoViewModel.FileName =$"<a href='{Url.Content("~/")}VirtualFileExplorer?path={filePath}'>{fileInfo.Name}</a>";
}
else
{
fileInfoViewModel.FilePath = ((EmbeddedResourceFileInfo) fileInfo).VirtualPath;
if (fileInfo is EmbeddedResourceFileInfo embeddedResourceFileInfo)
{
fileInfoViewModel.FilePath = embeddedResourceFileInfo.VirtualPath;
}
else
{
fileInfoViewModel.FilePath = filePath;
}
}
FileInfoList.Add(fileInfoViewModel);

2
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"};
}
}

7
modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.csproj

@ -9,6 +9,7 @@
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
<IsPackable>true</IsPackable>
<OutputType>Library</OutputType>
</PropertyGroup>
@ -18,14 +19,12 @@
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Pages\**\*.cshtml" />
<EmbeddedResource Include="Pages\**\*.css" />
<EmbeddedResource Include="Pages\**\*.js" />
<EmbeddedResource Include="Components\**\*.js" />
<EmbeddedResource Include="Components\**\*.css" />
<EmbeddedResource Include="wwwroot\**\*.*" />
<EmbeddedResource Include="Localization\**\*.json" />
<Content Remove="Pages\**\*.cshtml" />
<Content Remove="Pages\**\*.css" />
<Content Remove="Pages\**\*.js" />
<Content Remove="wwwroot\**\*.*" />
@ -34,4 +33,8 @@
<Content Remove="Localization\**\*.json" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="$(MicrosoftPackageVersion)" />
</ItemGroup>
</Project>

8
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<RootCoreModule> {

1
npm/ng-packs/packages/core/src/lib/models/common.ts

@ -14,6 +14,7 @@ export namespace ABP {
export interface Test extends Partial<Root> {
baseHref?: string;
listQueryDebounceTime?: number;
routes?: Routes;
}

19
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<QueryParamsType = ABP.PageQueryParams> implements OnDes
get query$(): Observable<QueryParamsType> {
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<QueryParamsType = ABP.PageQueryParams> implements OnDes
} as any) as QueryParamsType);
};
constructor(@Optional() @Inject(LIST_QUERY_DEBOUNCE_TIME) private delay: number) {
private delay: MonoTypeOperatorFunction<QueryParamsType>;
constructor(injector: Injector) {
const delay = injector.get(LIST_QUERY_DEBOUNCE_TIME, 300);
this.delay = delay ? debounceTime(delay) : tap();
this.get();
}

15
npm/ng-packs/packages/core/testing/src/lib/core-testing.module.ts

@ -3,14 +3,14 @@ import {
BaseCoreModule,
coreOptionsFactory,
CORE_OPTIONS,
LocalizationPipe,
LIST_QUERY_DEBOUNCE_TIME,
RestService,
} 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 { MockLocalizationPipe } from './pipes/mock-localization.pipe';
import { MockRestService } from './services/mock-rest.service';
/**
@ -18,13 +18,12 @@ import { MockRestService } from './services/mock-rest.service';
* and it provides mock alternatives
*/
@NgModule({
exports: [RouterTestingModule, BaseCoreModule, MockLocalizationPipe],
imports: [RouterTestingModule, BaseCoreModule],
declarations: [MockLocalizationPipe],
exports: [RouterTestingModule, BaseCoreModule],
imports: [NoopAnimationsModule, RouterTestingModule, BaseCoreModule],
})
export class CoreTestingModule {
static withConfig(
{ baseHref = '/', routes = [], ...options } = {} as ABP.Test,
{ baseHref = '/', listQueryDebounceTime = 0, routes = [], ...options } = {} as ABP.Test,
): ModuleWithProviders<CoreTestingModule> {
return {
ngModule: CoreTestingModule,
@ -40,8 +39,8 @@ export class CoreTestingModule {
deps: ['CORE_OPTIONS'],
},
{
provide: LocalizationPipe,
useClass: MockLocalizationPipe,
provide: LIST_QUERY_DEBOUNCE_TIME,
useValue: listQueryDebounceTime,
},
{
provide: RestService,

1
npm/ng-packs/packages/core/testing/src/lib/pipes/index.ts

@ -1 +0,0 @@
export * from './mock-localization.pipe';

12
npm/ng-packs/packages/core/testing/src/lib/pipes/mock-localization.pipe.ts

@ -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;
}
}

1
npm/ng-packs/packages/core/testing/src/public-api.ts

@ -1,2 +1 @@
export * from './lib/core-testing.module';
export * from './lib/pipes';

6
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 {}

7
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"
}
}

8
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 {}

1
npm/ng-packs/packages/theme-shared/extensions/testing/src/public-api.ts

@ -0,0 +1 @@
export * from './lib/ui-extensions-testing.module';

2
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"
}
}
}

15
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<string, string>
{
{"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<IConfiguration>();
c.OAuthClientId(configuration["AuthServer:SwaggerClientId"]);
c.OAuthClientSecret(configuration["AuthServer:SwaggerClientSecret"]);
});
app.UseAuditing();

4
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"

Loading…
Cancel
Save