Browse Source

Merge branch 'dev' of https://github.com/volosoft/abp into dev

pull/1606/head
Yunus Emre Kalkan 7 years ago
parent
commit
6d2a58c019
  1. 2
      build-all.ps1
  2. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs
  3. 16
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs
  4. 115
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs
  5. 124
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs
  6. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateRandomSslPortStep.cs
  7. 2
      npm/ng-packs/packages/core/src/lib/states/config.state.ts
  8. 10
      npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.html
  9. 12
      npm/ng-packs/packages/identity/src/lib/components/users/users.component.html
  10. 2
      npm/ng-packs/packages/identity/src/lib/services/identity.service.ts
  11. 10
      npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html
  12. 21
      npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html
  13. 7
      npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts
  14. 6
      npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts
  15. 10
      npm/ng-packs/packages/theme-basic/src/lib/components/change-password/change-password.component.html
  16. 12
      npm/ng-packs/packages/theme-basic/src/lib/components/profile/profile.component.html
  17. 28
      samples/BookStore-Angular-MongoDb/angular/package.json
  18. 21
      samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts
  19. 4
      samples/BookStore-Angular-MongoDb/angular/src/app/app.component.ts
  20. 2
      samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts
  21. 13
      samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts
  22. 32
      samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.html
  23. 26
      samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts
  24. 9
      samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts
  25. 0
      samples/BookStore-Angular-MongoDb/angular/src/app/books/services/books.service.spec.ts
  26. 20
      samples/BookStore-Angular-MongoDb/angular/src/app/books/services/books.service.ts
  27. 5
      samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.html
  28. 15
      samples/BookStore-Angular-MongoDb/angular/src/app/shared/services/books.service.ts
  29. 10
      samples/BookStore-Angular-MongoDb/angular/src/app/shared/shared.module.ts
  30. 1
      samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts
  31. 30
      samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts
  32. 28
      samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts
  33. 2
      samples/BookStore-Angular-MongoDb/angular/src/environments/environment.hmr.ts
  34. 2
      samples/BookStore-Angular-MongoDb/angular/src/environments/environment.prod.ts
  35. 2
      samples/BookStore-Angular-MongoDb/angular/src/environments/environment.ts
  36. 4
      templates/app/angular/package.json
  37. 1
      templates/app/angular/src/app/app-routing.module.ts
  38. 2
      templates/app/angular/src/app/home/home.component.html
  39. 10
      templates/app/angular/src/app/shared/shared.module.ts
  40. 26
      templates/app/aspnet-core/MyCompanyName.MyProjectName.sln.DotSettings
  41. 26
      templates/module/aspnet-core/MyCompanyName.MyProjectName.sln.DotSettings

2
build-all.ps1

@ -19,7 +19,7 @@ $solutionPaths = (
"modules/audit-logging",
"modules/background-jobs",
"modules/client-simulation",
"templates/mvc-module",
"templates/module/aspnet-core",
"templates/app/aspnet-core",
"samples/MicroserviceDemo",
"abp_io/AbpIoLocalization"

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs

@ -19,6 +19,8 @@ namespace Volo.Abp.Cli.ProjectBuilding
{
case AppTemplate.TemplateName:
return new AppTemplate();
case AppProTemplate.TemplateName:
return new AppProTemplate();
case ModuleTemplate.TemplateName:
return new ModuleTemplate();
default:

16
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs

@ -0,0 +1,16 @@
namespace Volo.Abp.Cli.ProjectBuilding.Templates.App
{
public class AppProTemplate : AppTemplateBase
{
/// <summary>
/// "app-pro".
/// </summary>
public const string TemplateName = "app-pro";
public AppProTemplate()
: base(TemplateName)
{
}
}
}

115
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs

@ -1,123 +1,16 @@
using System.Collections.Generic;
using Volo.Abp.Cli.ProjectBuilding.Building;
using Volo.Abp.Cli.ProjectBuilding.Building.Steps;
namespace Volo.Abp.Cli.ProjectBuilding.Templates.App
namespace Volo.Abp.Cli.ProjectBuilding.Templates.App
{
public class AppTemplate : TemplateInfo
public class AppTemplate : AppTemplateBase
{
/// <summary>
/// "app".
/// </summary>
public const string TemplateName = "app";
public AppTemplate()
: base(TemplateName, DatabaseProvider.EntityFrameworkCore, UiFramework.Mvc)
{
DocumentUrl = "https://docs.abp.io/en/abp/latest/Startup-Templates/Application";
}
public override IEnumerable<ProjectBuildPipelineStep> GetCustomSteps(ProjectBuildContext context)
{
var steps = new List<ProjectBuildPipelineStep>();
SwitchDatabaseProvider(context, steps);
DeleteUnrelatedProjects(context, steps);
RandomizeSslPorts(context, steps);
CleanupFolderHierarchy(context, steps);
return steps;
}
private static void SwitchDatabaseProvider(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
public AppTemplate()
: base(TemplateName)
{
if (context.BuildArgs.DatabaseProvider == DatabaseProvider.MongoDb)
{
steps.Add(new AppTemplateSwitchEntityFrameworkCoreToMongoDbStep());
}
if (context.BuildArgs.DatabaseProvider != DatabaseProvider.EntityFrameworkCore)
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests"));
}
if (context.BuildArgs.DatabaseProvider != DatabaseProvider.MongoDb)
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests"));
}
}
private void DeleteUnrelatedProjects(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{
if (context.BuildArgs.UiFramework == UiFramework.Mvc)
{
if (context.BuildArgs.ExtraProperties.ContainsKey("tiered"))
{
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"));
}
else
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer"));
steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44303"));
}
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds"));
}
if (context.BuildArgs.UiFramework != UiFramework.Mvc)
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests"));
if (context.BuildArgs.ExtraProperties.ContainsKey("separate-identity-server"))
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds"));
steps.Add(new AngularEnvironmentFilePortChangeForSeparatedIdentityServersStep());
}
else
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer"));
steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds", "MyCompanyName.MyProjectName.HttpApi.Host"));
steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44305"));
}
}
if (context.BuildArgs.UiFramework != UiFramework.Angular)
{
steps.Add(new RemoveFolderStep("/angular"));
}
}
private static void RandomizeSslPorts(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{
steps.Add(new TemplateRandomSslPortStep(
new List<string>
{
"https://localhost:44300",
"https://localhost:44301",
"https://localhost:44302",
"https://localhost:44303",
"https://localhost:44305"
}
)
);
}
private void CleanupFolderHierarchy(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{
if (context.BuildArgs.UiFramework == UiFramework.Mvc)
{
steps.Add(new MoveFolderStep("/aspnet-core/", "/"));
}
}
}
}

124
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs

@ -0,0 +1,124 @@
using System.Collections.Generic;
using Volo.Abp.Cli.ProjectBuilding.Building;
using Volo.Abp.Cli.ProjectBuilding.Building.Steps;
namespace Volo.Abp.Cli.ProjectBuilding.Templates.App
{
public abstract class AppTemplateBase : TemplateInfo
{
protected AppTemplateBase(string templateName)
: base(templateName, DatabaseProvider.EntityFrameworkCore, UiFramework.Mvc)
{
DocumentUrl = "https://docs.abp.io/en/abp/latest/Startup-Templates/Application";
}
public static bool IsAppTemplate(string templateName)
{
return templateName == AppTemplate.TemplateName ||
templateName == AppProTemplate.TemplateName;
}
public override IEnumerable<ProjectBuildPipelineStep> GetCustomSteps(ProjectBuildContext context)
{
var steps = new List<ProjectBuildPipelineStep>();
SwitchDatabaseProvider(context, steps);
DeleteUnrelatedProjects(context, steps);
RandomizeSslPorts(context, steps);
CleanupFolderHierarchy(context, steps);
return steps;
}
private static void SwitchDatabaseProvider(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{
if (context.BuildArgs.DatabaseProvider == DatabaseProvider.MongoDb)
{
steps.Add(new AppTemplateSwitchEntityFrameworkCoreToMongoDbStep());
}
if (context.BuildArgs.DatabaseProvider != DatabaseProvider.EntityFrameworkCore)
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.EntityFrameworkCore.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.EntityFrameworkCore.Tests"));
}
if (context.BuildArgs.DatabaseProvider != DatabaseProvider.MongoDb)
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.MongoDB.Tests"));
}
}
private void DeleteUnrelatedProjects(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{
if (context.BuildArgs.UiFramework == UiFramework.Mvc)
{
if (context.BuildArgs.ExtraProperties.ContainsKey("tiered"))
{
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"));
}
else
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer"));
steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44303"));
}
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds"));
}
if (context.BuildArgs.UiFramework != UiFramework.Mvc)
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Host"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests"));
if (context.BuildArgs.ExtraProperties.ContainsKey("separate-identity-server"))
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds"));
steps.Add(new AngularEnvironmentFilePortChangeForSeparatedIdentityServersStep());
}
else
{
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.HttpApi.Host"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.IdentityServer"));
steps.Add(new AppTemplateProjectRenameStep("MyCompanyName.MyProjectName.HttpApi.HostWithIds", "MyCompanyName.MyProjectName.HttpApi.Host"));
steps.Add(new AppTemplateChangeConsoleTestClientPortSettingsStep("44305"));
}
}
if (context.BuildArgs.UiFramework != UiFramework.Angular)
{
steps.Add(new RemoveFolderStep("/angular"));
}
}
private static void RandomizeSslPorts(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{
steps.Add(new TemplateRandomSslPortStep(
new List<string>
{
"https://localhost:44300",
"https://localhost:44301",
"https://localhost:44302",
"https://localhost:44303",
"https://localhost:44305"
}
)
);
}
private void CleanupFolderHierarchy(ProjectBuildContext context, List<ProjectBuildPipelineStep> steps)
{
if (context.BuildArgs.UiFramework == UiFramework.Mvc)
{
steps.Add(new MoveFolderStep("/aspnet-core/", "/"));
}
}
}
}

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/TemplateRandomSslPortStep.cs

@ -44,7 +44,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates
)
.ToList();
if (context.Template.Name == AppTemplate.TemplateName)
if (AppTemplateBase.IsAppTemplate(context.Template.Name))
{
// no tiered
if (launchSettings.Count == 1 &&

2
npm/ng-packs/packages/core/src/lib/states/config.state.ts

@ -113,6 +113,8 @@ export class ConfigState {
const selector = createSelector(
[ConfigState],
function(state: Config.State) {
if (!state.localization) return key;
const { defaultResourceName } = state.environment.localization;
if (keys[0] === '') {
if (!defaultResourceName) {

10
npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.html

@ -100,9 +100,13 @@
<button type="button" class="btn btn-secondary" #abpClose>
{{ 'AbpIdentity::Cancel' | abpLocalization }}
</button>
<button type="button" class="btn btn-primary" (click)="save()">
<i class="fa fa-check mr-1"></i> <span>{{ 'AbpIdentity::Save' | abpLocalization }}</span>
</button>
<abp-button
[requestType]="['POST', 'PUT']"
requestURLContainSearchValue="roles"
iconClass="fa fa-check"
(click)="save()"
>{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button
>
</ng-template>
</abp-modal>

12
npm/ng-packs/packages/identity/src/lib/components/users/users.component.html

@ -84,7 +84,7 @@
<ng-template #abpBody>
<perfect-scrollbar class="ps-show-always" style="max-height: 70vh;">
<form [formGroup]="form">
<form [formGroup]="form" validateOnSubmit>
<ngb-tabset>
<ngb-tab [title]="'AbpIdentity::UserInformations' | abpLocalization">
<ng-template ngbTabContent>
@ -183,9 +183,13 @@
<button type="button" class="btn btn-secondary" #abpClose>
{{ 'AbpIdentity::Cancel' | abpLocalization }}
</button>
<button type="button" class="btn btn-primary" (click)="save()">
<i class="fa fa-check mr-1"></i> <span>{{ 'AbpIdentity::Save' | abpLocalization }}</span>
</button>
<abp-button
[requestType]="['POST', 'PUT']"
requestURLContainSearchValue="users"
iconClass="fa fa-check"
(click)="save()"
>{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button
>
</ng-template>
</abp-modal>

2
npm/ng-packs/packages/identity/src/lib/services/identity.service.ts

@ -108,7 +108,7 @@ export class IdentityService {
}
updateUser(body: Identity.UserItem): Observable<Identity.UserItem> {
const url = `/identity/users/${body.id}`;
const url = `/api/identity/users/${body.id}`;
delete body.id;
const request: Rest.Request<Identity.UserItem> = {

10
npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.html

@ -82,9 +82,13 @@
<button type="button" class="btn btn-secondary" #abpClose>
{{ 'AbpIdentity::Cancel' | abpLocalization }}
</button>
<button type="submit" class="btn btn-primary" (click)="onSubmit()">
<i class="fa fa-check mr-1"></i> <span>{{ 'AbpIdentity::Save' | abpLocalization }}</span>
</button>
<abp-button
[requestType]="['PUT']"
requestURLContainSearchValue="permissions"
iconClass="fa fa-check"
(click)="onSubmit()"
>{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button
>
</ng-template>
</ng-container>
</abp-modal>

21
npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html

@ -73,13 +73,6 @@
>
{{ 'AbpTenantManagement::ConnectionStrings' | abpLocalization }}
</button>
<button
[abpPermission]="'AbpTenantManagement.Tenants.ManageFeatures'"
ngbDropdownItem
(click)="onManageFeatures(data.id)"
>
{{ 'AbpTenantManagement::Features' | abpLocalization }}
</button>
<button
[abpPermission]="'AbpTenantManagement.Tenants.Delete'"
ngbDropdownItem
@ -110,9 +103,13 @@
<button #abpClose type="button" class="btn btn-secondary">
{{ 'AbpTenantManagement::Cancel' | abpLocalization }}
</button>
<button class="btn btn-primary" type="button" (click)="save()">
{{ 'AbpTenantManagement::Save' | abpLocalization }}
</button>
<abp-button
[requestType]="['POST', 'PUT', 'DELETE']"
requestURLContainSearchValue="change-password"
iconClass="fa fa-check"
(click)="save()"
>{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button
>
</ng-template>
</abp-modal>
@ -158,7 +155,3 @@
</div>
</form>
</ng-template>
<ng-template #featuresModalTemplate>
Manage Features
</ng-template>

7
npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts

@ -68,9 +68,6 @@ export class TenantsComponent implements OnInit {
@ViewChild('connectionStringModalTemplate', { static: false })
connectionStringModalTemplate: TemplateRef<any>;
@ViewChild('featuresModalTemplate', { static: false })
featuresModalTemplate: TemplateRef<any>;
constructor(
private confirmationService: ConfirmationService,
private tenantService: TenantManagementService,
@ -126,10 +123,6 @@ export class TenantsComponent implements OnInit {
});
}
onManageFeatures(id: string) {
this.openModal('AbpTenantManagement::Features', this.featuresModalTemplate, 'saveFeatures');
}
onAddTenant() {
this.selected = {} as ABP.BasicItem;
this.createTenantForm();

6
npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts

@ -61,7 +61,7 @@ export class TenantManagementService {
}
getDefaultConnectionString(id: string): Observable<string> {
const url = `/api/multi-tenancy/tenants/${id}/defaultConnectionString`;
const url = `/api/multi-tenancy/tenants/${id}/default-connection-string`;
const request: Rest.Request<TenantManagement.DefaultConnectionStringRequest> = {
method: 'GET',
@ -72,7 +72,7 @@ export class TenantManagementService {
}
updateDefaultConnectionString(payload: TenantManagement.DefaultConnectionStringRequest): Observable<any> {
const url = `/api/multi-tenancy/tenants/${payload.id}/defaultConnectionString`;
const url = `/api/multi-tenancy/tenants/${payload.id}/default-connection-string`;
const request: Rest.Request<TenantManagement.DefaultConnectionStringRequest> = {
method: 'PUT',
@ -83,7 +83,7 @@ export class TenantManagementService {
}
deleteDefaultConnectionString(id: string): Observable<string> {
const url = `/api/multi-tenancy/tenant/${id}/defaultConnectionString`;
const url = `/api/multi-tenancy/tenant/${id}/default-connection-string`;
const request: Rest.Request<TenantManagement.DefaultConnectionStringRequest> = {
method: 'DELETE',

10
npm/ng-packs/packages/theme-basic/src/lib/components/change-password/change-password.component.html

@ -27,8 +27,12 @@
<button type="button" class="btn btn-secondary" #abpClose>
{{ 'AbpIdentity::Cancel' | abpLocalization }}
</button>
<button type="button" class="btn btn-primary" (click)="onSubmit()">
<i class="fa fa-check mr-1"></i> <span>{{ 'AbpIdentity::Save' | abpLocalization }}</span>
</button>
<abp-button
[requestType]="['POST']"
requestURLContainSearchValue="change-password"
iconClass="fa fa-check"
(click)="onSubmit()"
>{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button
>
</ng-template>
</abp-modal>

12
npm/ng-packs/packages/theme-basic/src/lib/components/profile/profile.component.html

@ -6,7 +6,7 @@
<form *ngIf="form" [formGroup]="form" novalidate>
<div class="form-group">
<label for="username">{{ 'AbpIdentity::DisplayName:UserName' | abpLocalization }}</label
><span> * </span><input type="text" id="username" class="form-control" formControlName="userName" autofocus/>
><span> * </span><input type="text" id="username" class="form-control" formControlName="userName" autofocus />
</div>
<div class="row">
<div class="col col-md-6">
@ -36,8 +36,12 @@
<button #abpClose type="button" class="btn btn-secondary">
{{ 'AbpIdentity::Cancel' | abpLocalization }}
</button>
<button type="button" class="btn btn-primary" (click)="onSubmit()">
<i class="fa fa-check mr-1"></i> <span>{{ 'AbpIdentity::Save' | abpLocalization }}</span>
</button>
<abp-button
[requestType]="['PUT']"
requestURLContainSearchValue="my-profile"
iconClass="fa fa-check"
(click)="onSubmit()"
>{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button
>
</ng-template>
</abp-modal>

28
samples/BookStore-Angular-MongoDb/angular/package.json

@ -1,5 +1,5 @@
{
"name": "my-project-name",
"name": "BookStore",
"version": "0.0.0",
"scripts": {
"ng": "ng",
@ -17,14 +17,14 @@
"@abp/ng.identity": "^0.8.0",
"@abp/ng.tenant-management": "^0.8.0",
"@abp/ng.theme.basic": "^0.8.0",
"@angular/animations": "~8.1.2",
"@angular/common": "~8.1.2",
"@angular/compiler": "~8.1.2",
"@angular/core": "~8.1.2",
"@angular/forms": "~8.1.2",
"@angular/platform-browser": "~8.1.2",
"@angular/platform-browser-dynamic": "~8.1.2",
"@angular/router": "~8.1.2",
"@angular/animations": "~8.2.0",
"@angular/common": "~8.2.0",
"@angular/compiler": "~8.2.0",
"@angular/core": "~8.2.0",
"@angular/forms": "~8.2.0",
"@angular/platform-browser": "~8.2.0",
"@angular/platform-browser-dynamic": "~8.2.0",
"@angular/router": "~8.2.0",
"@angularclass/hmr": "^2.1.3",
"@ngxs/devtools-plugin": "^3.5.0",
"@ngxs/hmr-plugin": "^3.5.0",
@ -33,10 +33,10 @@
"zone.js": "~0.9.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.801.2",
"@angular/cli": "~8.1.2",
"@angular/compiler-cli": "~8.1.2",
"@angular/language-service": "~8.1.2",
"@angular-devkit/build-angular": "~0.802.0",
"@angular/cli": "~8.2.0",
"@angular/compiler-cli": "~8.2.0",
"@angular/language-service": "~8.2.0",
"@types/jasmine": "~3.3.8",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
@ -48,7 +48,7 @@
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.0",
"ngxs-schematic": "^1.1.5",
"ngxs-schematic": "^1.1.6",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.15.0",

21
samples/BookStore-Angular-MongoDb/angular/src/app/app-routing.module.ts

@ -6,21 +6,15 @@ import { ABP } from '@abp/ng.core';
import { TENANT_MANAGEMENT_ROUTES } from '@abp/ng.tenant-management';
const routes: Routes = [
{ path: '', redirectTo: '/home', pathMatch: 'full' },
{
path: 'home',
path: '',
loadChildren: () => import('./home/home.module').then(m => m.HomeModule),
data: {
routes: {
name: 'Home',
name: '::Menu:Home',
} as ABP.Route,
},
},
{ path: 'books', loadChildren: () => import('./books/books.module').then(m => m.BooksModule), data: {
routes: {
name: 'Books',
} as ABP.Route,
}, },
{
path: 'account',
loadChildren: () => import('./lazy-libs/account-wrapper.module').then(m => m.AccountWrapperModule),
@ -37,8 +31,15 @@ const routes: Routes = [
import('./lazy-libs/tenant-management-wrapper.module').then(m => m.TenantManagementWrapperModule),
data: { routes: TENANT_MANAGEMENT_ROUTES },
},
{ path: '**', redirectTo: '/' },
{
path: 'books',
loadChildren: () => import('./books/books.module').then(m => m.BooksModule),
data: {
routes: {
name: 'Books',
} as ABP.Route,
},
},
];
@NgModule({

4
samples/BookStore-Angular-MongoDb/angular/src/app/app.component.ts

@ -7,6 +7,4 @@ import { Component } from '@angular/core';
<router-outlet></router-outlet>
`,
})
export class AppComponent {
title = 'myProjectName';
}
export class AppComponent {}

2
samples/BookStore-Angular-MongoDb/angular/src/app/app.module.ts

@ -12,14 +12,12 @@ import { AppComponent } from './app.component';
import { SharedModule } from './shared/shared.module';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { BooksState } from './store/states/books.state';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
BrowserAnimationsModule,
HttpClientModule,
AppRoutingModule,
SharedModule,
ThemeSharedModule.forRoot(),

13
samples/BookStore-Angular-MongoDb/angular/src/app/books/books-routing.module.ts

@ -1,19 +1,14 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { BooksComponent } from './books.component';
import { LayoutApplicationComponent } from '@abp/ng.theme.basic';
import { BooksComponent } from './books.component';
const routes: Routes = [
{
path: '',
component: LayoutApplicationComponent,
children: [{ path: '', component: BooksComponent }],
},
{ path: '', component: LayoutApplicationComponent, children: [{ path: '', component: BooksComponent }] },
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
exports: [RouterModule],
})
export class BooksRoutingModule { }
export class BooksRoutingModule {}

32
samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.html

@ -1 +1,31 @@
<p>books works!</p>
<div id="wrapper" class="card">
<div class="card-header">
<div class="row">
<div class="col col-md-6">
<h5 class="card-title">
Books
</h5>
</div>
</div>
</div>
<div class="card-body">
<p-table [value]="books$ | async" [loading]="loading" [paginator]="true" [rows]="10">
<ng-template pTemplate="header">
<tr>
<th>Book name</th>
<th>Book type</th>
<th>Publish date</th>
<th>Price</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-data>
<tr>
<td>{{ data.name }}</td>
<td>{{ bookType[data.type] }}</td>
<td>{{ data.publishDate | date }}</td>
<td>{{ data.price }}</td>
</tr>
</ng-template>
</p-table>
</div>
</div>

26
samples/BookStore-Angular-MongoDb/angular/src/app/books/books.component.ts

@ -1,13 +1,27 @@
import { Component, OnInit } from "@angular/core";
import { Store } from "@ngxs/store";
import { Component, OnInit } from '@angular/core';
import { Store, Select } from '@ngxs/store';
import { BooksState } from '../store/states';
import { Observable } from 'rxjs';
import { Books } from '../store/models';
import { BooksGet } from '../store/actions';
@Component({
selector: "app-books",
templateUrl: "./books.component.html",
styleUrls: ["./books.component.scss"]
selector: 'app-books',
templateUrl: './books.component.html',
styleUrls: ['./books.component.scss'],
})
export class BooksComponent implements OnInit {
@Select(BooksState.getBooks)
books$: Observable<Books.Item[]>;
bookType = Books.Type;
loading = false;
constructor(private store: Store) {}
ngOnInit() {}
ngOnInit() {
this.loading = true;
this.store.dispatch(new BooksGet()).subscribe(() => (this.loading = false));
}
}

9
samples/BookStore-Angular-MongoDb/angular/src/app/books/books.module.ts

@ -5,13 +5,8 @@ import { BooksRoutingModule } from './books-routing.module';
import { BooksComponent } from './books.component';
import { SharedModule } from '../shared/shared.module';
@NgModule({
declarations: [BooksComponent],
imports: [
CommonModule,
BooksRoutingModule,
SharedModule
]
imports: [CommonModule, BooksRoutingModule, SharedModule],
})
export class BooksModule { }
export class BooksModule {}

0
samples/BookStore-Angular-MongoDb/angular/src/app/shared/services/books.service.spec.ts → samples/BookStore-Angular-MongoDb/angular/src/app/books/services/books.service.spec.ts

20
samples/BookStore-Angular-MongoDb/angular/src/app/books/services/books.service.ts

@ -0,0 +1,20 @@
import { Injectable } from '@angular/core';
import { RestService, Rest } from '@abp/ng.core';
import { Books } from '../../store/models';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root',
})
export class BooksService {
constructor(private rest: RestService) {}
get(): Observable<Books.Response> {
const request: Rest.Request<null> = {
method: 'GET',
url: '/api/app/book',
};
return this.rest.request<null, Books.Response>(request);
}
}

5
samples/BookStore-Angular-MongoDb/angular/src/app/home/home.component.html

@ -1,9 +1,8 @@
<div class="card">
<div class="card-header">Welcome</div>
<div class="card-header">{{ '::Welcome' | abpLocalization }}</div>
<div class="card-body">
<p>
Welcome to the application. This is a startup project based on the ABP framework. For more information, visit
abp.io.
{{ '::LongWelcomeMessage' | abpLocalization }}
</p>
<p *ngIf="!hasLoggedIn">
<a routerLink="/account/login" [state]="{ redirectUrl: '/home' }" class="btn btn-primary" role="button"

15
samples/BookStore-Angular-MongoDb/angular/src/app/shared/services/books.service.ts

@ -1,15 +0,0 @@
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { environment } from 'src/environments/environment';
@Injectable({
providedIn: 'root'
})
export class BooksService {
constructor(private http: HttpClient) { }
get() {
return this.http.get(`${environment.apis.default.url}/app/book`)
}
}

10
samples/BookStore-Angular-MongoDb/angular/src/app/shared/shared.module.ts

@ -1,12 +1,14 @@
import { NgModule } from '@angular/core';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { CoreModule } from '@abp/ng.core';
import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
import { NgModule } from '@angular/core';
import { ThemeBasicModule } from '@abp/ng.theme.basic';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { TableModule } from 'primeng/table';
@NgModule({
declarations: [],
imports: [CoreModule, ThemeSharedModule, ThemeBasicModule],
exports: [CoreModule, ThemeSharedModule, ThemeBasicModule],
imports: [CoreModule, ThemeSharedModule, ThemeBasicModule, TableModule, NgbDropdownModule],
exports: [CoreModule, ThemeSharedModule, ThemeBasicModule, TableModule, NgbDropdownModule],
providers: [],
})
export class SharedModule {}

1
samples/BookStore-Angular-MongoDb/angular/src/app/store/actions/books.actions.ts

@ -1,4 +1,3 @@
export class BooksGet {
static readonly type = '[Books] Get';
constructor(public readonly payload?: any) { }
}

30
samples/BookStore-Angular-MongoDb/angular/src/app/store/models/books.ts

@ -1,5 +1,33 @@
import { ABP } from '@abp/ng.core';
export namespace Books {
export interface State {
data: any;
data: Response;
}
export type Response = ABP.PagedResponse<Item>;
export interface Item {
name: string;
type: Type;
publishDate: string;
price: number;
lastModificationTime: string;
lastModifierId: string;
creationTime: string;
creatorId: string;
id: string;
}
export enum Type {
Undefined,
Adventure,
Biography,
Dystopia,
Fantastic,
Horror,
Science,
ScienceFiction,
Poetry,
}
}

28
samples/BookStore-Angular-MongoDb/angular/src/app/store/states/books.state.ts

@ -1,27 +1,29 @@
import { State, Action, StateContext } from "@ngxs/store";
import { BooksGet } from "../actions/books.actions";
import { Books } from "../models/books";
import { BooksService } from "src/app/shared/services/books.service";
import { tap } from "rxjs/operators";
import { State, Action, StateContext, Selector } from '@ngxs/store';
import { BooksGet } from '../actions/books.actions';
import { Books } from '../models/books';
import { BooksService } from '../../books/services/books.service';
import { tap } from 'rxjs/operators';
@State<Books.State>({
name: "BooksState",
defaults: {} as Books.State
name: 'BooksState',
defaults: { data: {} } as Books.State,
})
export class BooksState {
@Selector()
static getBooks({ data }: Books.State) {
return data.items || [];
}
constructor(private booksService: BooksService) {}
@Action(BooksGet)
booksAction(
{ getState, patchState }: StateContext<Books.State>,
{ payload }: BooksGet
) {
getBooks({ patchState }: StateContext<Books.State>) {
return this.booksService.get().pipe(
tap(data => {
patchState({
data
data,
});
})
}),
);
}
}

2
samples/BookStore-Angular-MongoDb/angular/src/environments/environment.hmr.ts

@ -3,7 +3,7 @@ export const environment = {
hmr: true,
oAuthConfig: {
issuer: 'https://localhost:44359',
clientId: 'BookStore_ConsoleTestApp',
clientId: 'BookStore_App',
dummyClientSecret: '1q2w3e*',
scope: 'BookStore',
showDebugInformation: true,

2
samples/BookStore-Angular-MongoDb/angular/src/environments/environment.prod.ts

@ -3,7 +3,7 @@ export const environment = {
hmr: false,
oAuthConfig: {
issuer: 'https://localhost:44359',
clientId: 'BookStore_ConsoleTestApp',
clientId: 'BookStore_App',
dummyClientSecret: '1q2w3e*',
scope: 'BookStore',
showDebugInformation: true,

2
samples/BookStore-Angular-MongoDb/angular/src/environments/environment.ts

@ -3,7 +3,7 @@ export const environment = {
hmr: false,
oAuthConfig: {
issuer: 'https://localhost:44359',
clientId: 'BookStore_ConsoleTestApp',
clientId: 'BookStore_App',
dummyClientSecret: '1q2w3e*',
scope: 'BookStore',
showDebugInformation: true,

4
templates/app/angular/package.json

@ -1,5 +1,5 @@
{
"name": "my-project-name",
"name": "MyProjectName",
"version": "0.0.0",
"scripts": {
"ng": "ng",
@ -48,7 +48,7 @@
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.0",
"ngxs-schematic": "^1.1.5",
"ngxs-schematic": "^1.1.6",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.15.0",

1
templates/app/angular/src/app/app-routing.module.ts

@ -31,7 +31,6 @@ const routes: Routes = [
import('./lazy-libs/tenant-management-wrapper.module').then(m => m.TenantManagementWrapperModule),
data: { routes: TENANT_MANAGEMENT_ROUTES },
},
{ path: '**', redirectTo: '/' },
];
@NgModule({

2
templates/app/angular/src/app/home/home.component.html

@ -5,7 +5,7 @@
{{ '::LongWelcomeMessage' | abpLocalization }}
</p>
<p *ngIf="!hasLoggedIn">
<a routerLink="/account/login" [state]="{ redirectUrl: '/home' }" class="btn btn-primary" role="button"
<a routerLink="/account/login" [state]="{ redirectUrl: '/' }" class="btn btn-primary" role="button"
><i class="fa fa-sign-in"></i>{{ 'AbpIdentity::Login' | abpLocalization }}</a
>
</p>

10
templates/app/angular/src/app/shared/shared.module.ts

@ -1,12 +1,14 @@
import { NgModule } from '@angular/core';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { CoreModule } from '@abp/ng.core';
import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
import { NgModule } from '@angular/core';
import { ThemeBasicModule } from '@abp/ng.theme.basic';
import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { TableModule } from 'primeng/table';
@NgModule({
declarations: [],
imports: [CoreModule, ThemeSharedModule, ThemeBasicModule],
exports: [CoreModule, ThemeSharedModule, ThemeBasicModule],
imports: [CoreModule, ThemeSharedModule, ThemeBasicModule, TableModule, NgbDropdownModule],
exports: [CoreModule, ThemeSharedModule, ThemeBasicModule, TableModule, NgbDropdownModule],
providers: [],
})
export class SharedModule {}

26
templates/app/aspnet-core/MyCompanyName.MyProjectName.sln.DotSettings

@ -1,7 +1,23 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=59923913AE66194DB837F628B1FC08BE/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=59923913AE66194DB837F628B1FC08BE/AbsolutePath/@EntryValue">D:\github\abp\common.DotSettings</s:String>
<s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=59923913AE66194DB837F628B1FC08BE/RelativePath/@EntryValue">..\..\..\common.DotSettings</s:String>
<s:Boolean x:Key="/Default/Environment/InjectedLayers/InjectedLayerCustomization/=File59923913AE66194DB837F628B1FC08BE/@KeyIndexDefined">True</s:Boolean>
<s:Double x:Key="/Default/Environment/InjectedLayers/InjectedLayerCustomization/=File59923913AE66194DB837F628B1FC08BE/RelativePriority/@EntryValue">1</s:Double>
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/IntelliSenseCompletingCharacters/CSharpCompletingCharacters/UpgradedFromVSSettings/@EntryValue">True</s:Boolean>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceDoWhileStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceFixedStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceForeachStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceForStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceIfStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceLockStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceUsingStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceWhileStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOR/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOREACH/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_IFELSE/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_WHILE/@EntryValue">Required</s:String>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_REDUNDANT/@EntryValue">False</s:Boolean>
<s:Boolean x:Key="/Default/CodeStyle/Generate/=Implementations/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/CodeStyle/Generate/=Implementations/Options/=Async/@EntryIndexedValue">False</s:String>
<s:String x:Key="/Default/CodeStyle/Generate/=Implementations/Options/=Mutable/@EntryIndexedValue">False</s:String>
<s:Boolean x:Key="/Default/CodeStyle/Generate/=Overrides/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/CodeStyle/Generate/=Overrides/Options/=Async/@EntryIndexedValue">False</s:String>
<s:String x:Key="/Default/CodeStyle/Generate/=Overrides/Options/=Mutable/@EntryIndexedValue">False</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SQL/@EntryIndexedValue">SQL</s:String>
</wpf:ResourceDictionary>

26
templates/module/aspnet-core/MyCompanyName.MyProjectName.sln.DotSettings

@ -1,7 +1,23 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=A9046795AF04F2428C81EEAFEDBD18EE/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=A9046795AF04F2428C81EEAFEDBD18EE/AbsolutePath/@EntryValue">D:\github\abp\common.DotSettings</s:String>
<s:String x:Key="/Default/Environment/InjectedLayers/FileInjectedLayer/=A9046795AF04F2428C81EEAFEDBD18EE/RelativePath/@EntryValue">..\..\..\common.DotSettings</s:String>
<s:Boolean x:Key="/Default/Environment/InjectedLayers/InjectedLayerCustomization/=FileA9046795AF04F2428C81EEAFEDBD18EE/@KeyIndexDefined">True</s:Boolean>
<s:Double x:Key="/Default/Environment/InjectedLayers/InjectedLayerCustomization/=FileA9046795AF04F2428C81EEAFEDBD18EE/RelativePriority/@EntryValue">1</s:Double>
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/IntelliSenseCompletingCharacters/CSharpCompletingCharacters/UpgradedFromVSSettings/@EntryValue">True</s:Boolean>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceDoWhileStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceFixedStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceForeachStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceForStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceIfStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceLockStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceUsingStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceWhileStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOR/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOREACH/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_IFELSE/@EntryValue">Required</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_WHILE/@EntryValue">Required</s:String>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_REDUNDANT/@EntryValue">False</s:Boolean>
<s:Boolean x:Key="/Default/CodeStyle/Generate/=Implementations/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/CodeStyle/Generate/=Implementations/Options/=Async/@EntryIndexedValue">False</s:String>
<s:String x:Key="/Default/CodeStyle/Generate/=Implementations/Options/=Mutable/@EntryIndexedValue">False</s:String>
<s:Boolean x:Key="/Default/CodeStyle/Generate/=Overrides/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/CodeStyle/Generate/=Overrides/Options/=Async/@EntryIndexedValue">False</s:String>
<s:String x:Key="/Default/CodeStyle/Generate/=Overrides/Options/=Mutable/@EntryIndexedValue">False</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SQL/@EntryIndexedValue">SQL</s:String>
</wpf:ResourceDictionary>
Loading…
Cancel
Save