Browse Source

Merge pull request #13823 from abpframework/auto-merge/rel-6-0/1308

Merge branch dev with rel-6.0
pull/13840/head
Enis Necipoglu 4 years ago
committed by GitHub
parent
commit
2f53796228
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      docs/en/Startup-Templates/Application.md
  2. BIN
      docs/en/images/bookstore-rider-solution-tiered.png
  3. BIN
      docs/en/images/solution-structure-solution-explorer-rider.png
  4. BIN
      docs/en/images/tiered-solution-applications-authserver.png
  5. 47
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml
  6. 5
      npm/ng-packs/packages/core/src/lib/directives/form-submit.directive.ts
  7. 12
      nupkg/common.ps1

8
docs/en/Startup-Templates/Application.md

@ -78,7 +78,7 @@ Based on the options you've specified, you will get a slightly different solutio
If you don't specify any additional options, you will have a solution as shown below: If you don't specify any additional options, you will have a solution as shown below:
![bookstore-visual-studio-solution-v3](../images/bookstore-visual-studio-solution-v3.png) ![bookstore-rider-solution-v6](../images/solution-structure-solution-explorer-rider.png)
Projects are organized in `src` and `test` folders. `src` folder contains the actual application which is layered based on [DDD](../Domain-Driven-Design.md) principles as mentioned before. Projects are organized in `src` and `test` folders. `src` folder contains the actual application which is layered based on [DDD](../Domain-Driven-Design.md) principles as mentioned before.
@ -225,7 +225,7 @@ So, the resulting solution allows a 4-tiered deployment, by comparing to 3-tiere
The solution structure is shown below: The solution structure is shown below:
![bookstore-visual-studio-solution-v3](../images/bookstore-visual-studio-solution-tiered.png) ![bookstore-rider-solution-v6](../images/bookstore-rider-solution-tiered.png)
As different from the default structure, two new projects come into play: `.AuthServer` & `.HttpApi.Host`. As different from the default structure, two new projects come into play: `.AuthServer` & `.HttpApi.Host`.
@ -233,9 +233,9 @@ As different from the default structure, two new projects come into play: `.Auth
This project is used as an authentication server for other projects. `.Web` project uses OpenId Connect Authentication to get identity and access tokens for the current user from the AuthServer. Then uses the access token to call the HTTP API server. HTTP API server uses bearer token authentication to obtain claims from the access token to authorize the current user. This project is used as an authentication server for other projects. `.Web` project uses OpenId Connect Authentication to get identity and access tokens for the current user from the AuthServer. Then uses the access token to call the HTTP API server. HTTP API server uses bearer token authentication to obtain claims from the access token to authorize the current user.
![tiered-solution-applications](../images/tiered-solution-applications.png) ![tiered-solution-applications](../images/tiered-solution-applications-authserver.png)
ABP uses the open source [OpenIddcit](https://github.com/openiddict/openiddict-core) framework for the authentication between applications. See [OpenIddcit documentation](https://documentation.openiddict.com/) for details about the OpenIddict and OpenID Connect protocol. ABP uses the [OpenIddict Module](../Modules/OpenIddict.md) that uses the open-source [OpenIddict-core](https://github.com/openiddict/openiddict-core) library for the authentication between applications. See [OpenIddict documentation](https://documentation.openiddict.com/) for details about the OpenIddict and OpenID Connect protocol.
It has its own `appsettings.json` that contains database connection and other configurations. It has its own `appsettings.json` that contains database connection and other configurations.

BIN
docs/en/images/bookstore-rider-solution-tiered.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

BIN
docs/en/images/solution-structure-solution-explorer-rider.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
docs/en/images/tiered-solution-applications-authserver.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

47
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml

@ -14,34 +14,39 @@
@section scripts { @section scripts {
<abp-script src="/Pages/CmsKit/Contents/addWidgetModal.js" /> <abp-script src="/Pages/CmsKit/Contents/addWidgetModal.js" />
} }
@{
bool isDefinedWidget = Model.Widgets.Count() > 1;
}
<abp-modal size="Large" id="addWidgetModal">
<abp-modal-header title="@L["AddWidget"].Value"></abp-modal-header>
<abp-modal-body>
<div class="container">
@if (isDefinedWidget)
{
<abp-select asp-for="ViewModel.Widget" />
<abp-modal size="Large" id="addWidgetModal"> foreach (var item in Model.ViewModel.Details)
<abp-modal-header title="@L["AddWidget"].Value"></abp-modal-header>
<abp-modal-body>
<div class="container">
@if (Model.Widgets.Count() > 1)
{ {
<abp-select asp-for="ViewModel.Widget" /> if (item.EditorComponentName is not null)
foreach (var item in Model.ViewModel.Details)
{ {
if (item.EditorComponentName is not null) <div hidden id="editor-@item.Name">
{ <form data-check-form-on-close="false">
<div hidden id="editor-@item.Name"> @await Component.InvokeAsync(@item.EditorComponentName)
<form data-check-form-on-close="false"> </form>
@await Component.InvokeAsync(@item.EditorComponentName) </div>
</form>
</div>
}
} }
} }
else }
{ else
<p>@L["PleaseConfigureWidgets"].Value</p> {
} <p>@L["PleaseConfigureWidgets"].Value</p>
}
</div> </div>
</abp-modal-body> </abp-modal-body>
<abp-modal-footer> <abp-modal-footer>
<button class="btn btn-primary float-end save-changes" type="submit">@L["Add"]</button> @if (isDefinedWidget)
{
<button class="btn btn-primary float-end save-changes" type="submit">@L["Add"]</button>
}
</abp-modal-footer> </abp-modal-footer>
</abp-modal> </abp-modal>

5
npm/ng-packs/packages/core/src/lib/directives/form-submit.directive.ts

@ -14,7 +14,9 @@ import { debounceTime, filter } from 'rxjs/operators';
import { SubscriptionService } from '../services/subscription.service'; import { SubscriptionService } from '../services/subscription.service';
type Controls = { [key: string]: FormControl } | FormGroup[]; type Controls = { [key: string]: FormControl } | FormGroup[];
/**
* @deprecated FormSubmitDirective will be removed in V7.0.0. Use `ngSubmit` instead.
*/
@Directive({ @Directive({
// eslint-disable-next-line @angular-eslint/directive-selector // eslint-disable-next-line @angular-eslint/directive-selector
selector: 'form[ngSubmit][formGroup]', selector: 'form[ngSubmit][formGroup]',
@ -43,6 +45,7 @@ export class FormSubmitDirective implements OnInit {
ngOnInit() { ngOnInit() {
this.subscription.addOne(this.formGroupDirective.ngSubmit, () => { this.subscription.addOne(this.formGroupDirective.ngSubmit, () => {
if (this.markAsDirtyWhenSubmit) { if (this.markAsDirtyWhenSubmit) {
this.markAsDirty(); this.markAsDirty();
} }

12
nupkg/common.ps1

@ -86,8 +86,7 @@ $solutions = (
"modules/users", "modules/users",
"modules/virtual-file-explorer", "modules/virtual-file-explorer",
"modules/blob-storing-database", "modules/blob-storing-database",
"modules/cms-kit", "modules/cms-kit"
"studio"
) )
# List of projects # List of projects
@ -454,12 +453,5 @@ $projects = (
"modules/cms-kit/src/Volo.CmsKit.Public.Web", "modules/cms-kit/src/Volo.CmsKit.Public.Web",
"modules/cms-kit/src/Volo.CmsKit.Web", "modules/cms-kit/src/Volo.CmsKit.Web",
"modules/cms-kit/src/Volo.CmsKit.Installer", "modules/cms-kit/src/Volo.CmsKit.Installer",
"studio/source-codes/Volo.CmsKit.SourceCode", "studio/source-codes/Volo.CmsKit.SourceCode"
# abp/studio
"studio/src/Volo.Abp.Studio.Analyzing.Abstractions",
"studio/src/Volo.Abp.Studio.Domain.CommonServices",
"studio/src/Volo.Abp.Studio.Domain.Shared",
"studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions",
"studio/src/Volo.Abp.Studio.ModuleInstaller"
) )

Loading…
Cancel
Save