From f348e9e251f5176c36e706728491009cff6fc6ab Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 26 Feb 2021 14:40:08 +0300 Subject: [PATCH] create email-setting-group setting tab --- .../email-setting-group.component.html | 68 +++++++++++++++++++ .../email-setting-group.component.ts | 60 ++++++++++++++++ .../config/src/enums/index.ts | 1 + .../config/src/enums/setting-tab-names.ts | 3 + .../config/src/providers/index.ts | 1 + .../src/providers/setting-tab.provider.ts | 26 +++++++ .../config/src/public-api.ts | 2 + .../src/setting-management-config.module.ts | 12 +++- 8 files changed, 171 insertions(+), 2 deletions(-) create mode 100644 npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.html create mode 100644 npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.ts create mode 100644 npm/ng-packs/packages/setting-management/config/src/enums/setting-tab-names.ts create mode 100644 npm/ng-packs/packages/setting-management/config/src/providers/setting-tab.provider.ts diff --git a/npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.html b/npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.html new file mode 100644 index 0000000000..981de3496b --- /dev/null +++ b/npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.html @@ -0,0 +1,68 @@ +

{{ 'AbpSettingManagement::Menu:Emailing' | abpLocalization }}

+ +
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+
+ + +
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+ + +
diff --git a/npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.ts b/npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.ts new file mode 100644 index 0000000000..d756a93a53 --- /dev/null +++ b/npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.ts @@ -0,0 +1,60 @@ +import { collapse, ToasterService } from '@abp/ng.theme.shared'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { finalize } from 'rxjs/operators'; +import { EmailSettingsService } from '../../proxy/email-settings.service'; +import { EmailSettingsDto } from '../../proxy/models'; + +@Component({ + selector: 'abp-email-setting-group', + templateUrl: 'email-setting-group.component.html', + animations: [collapse], +}) +export class EmailSettingGroupComponent implements OnInit { + form: FormGroup; + + saving = false; + + constructor( + private emailSettingsService: EmailSettingsService, + private fb: FormBuilder, + private toasterService: ToasterService, + ) {} + + ngOnInit() { + this.getData(); + } + + private getData() { + this.emailSettingsService.get().subscribe(res => { + this.buildForm(res); + }); + } + + private buildForm(emailSettings: EmailSettingsDto) { + this.form = this.fb.group({ + defaultFromDisplayName: [emailSettings.defaultFromDisplayName, [Validators.required]], + defaultFromAddress: [emailSettings.defaultFromAddress, [Validators.required]], + smtpHost: [emailSettings.smtpHost], + smtpPort: [emailSettings.smtpPort, [Validators.required]], + smtpEnableSsl: [emailSettings.smtpEnableSsl], + smtpUseDefaultCredentials: [emailSettings.smtpUseDefaultCredentials], + smtpDomain: [emailSettings.smtpDomain], + smtpUserName: [emailSettings.smtpUserName], + smtpPassword: [emailSettings.smtpPassword], + }); + } + + submit() { + if (this.saving || this.form.invalid) return; + + this.saving = true; + this.emailSettingsService + .update(this.form.value) + .pipe(finalize(() => (this.saving = false))) + .subscribe(() => { + this.toasterService.success('AbpSettingManagement::SuccessfullySaved'); + this.getData(); + }); + } +} diff --git a/npm/ng-packs/packages/setting-management/config/src/enums/index.ts b/npm/ng-packs/packages/setting-management/config/src/enums/index.ts index 3bda94b078..34fd5f8eb8 100644 --- a/npm/ng-packs/packages/setting-management/config/src/enums/index.ts +++ b/npm/ng-packs/packages/setting-management/config/src/enums/index.ts @@ -1 +1,2 @@ export * from './route-names'; +export * from './setting-tab-names'; diff --git a/npm/ng-packs/packages/setting-management/config/src/enums/setting-tab-names.ts b/npm/ng-packs/packages/setting-management/config/src/enums/setting-tab-names.ts new file mode 100644 index 0000000000..15eff851ac --- /dev/null +++ b/npm/ng-packs/packages/setting-management/config/src/enums/setting-tab-names.ts @@ -0,0 +1,3 @@ +export const enum eSettingManamagementSettingTabNames { + EmailSettingGroup = 'AbpSettingManagement::Menu:Emailing', +} diff --git a/npm/ng-packs/packages/setting-management/config/src/providers/index.ts b/npm/ng-packs/packages/setting-management/config/src/providers/index.ts index fe08efba8c..a1e873bacc 100644 --- a/npm/ng-packs/packages/setting-management/config/src/providers/index.ts +++ b/npm/ng-packs/packages/setting-management/config/src/providers/index.ts @@ -1 +1,2 @@ export * from './route.provider'; +export * from './setting-tab.provider'; diff --git a/npm/ng-packs/packages/setting-management/config/src/providers/setting-tab.provider.ts b/npm/ng-packs/packages/setting-management/config/src/providers/setting-tab.provider.ts new file mode 100644 index 0000000000..b4d15cf94c --- /dev/null +++ b/npm/ng-packs/packages/setting-management/config/src/providers/setting-tab.provider.ts @@ -0,0 +1,26 @@ +import { SettingTabsService } from '@abp/ng.core'; +import { APP_INITIALIZER } from '@angular/core'; +import { EmailSettingGroupComponent } from '../components/email-setting-group/email-setting-group.component'; +import { eSettingManamagementSettingTabNames } from '../enums/setting-tab-names'; + +export const SETTING_MANAGEMENT_SETTING_TAB_PROVIDERS = [ + { + provide: APP_INITIALIZER, + useFactory: configureSettingTabs, + deps: [SettingTabsService], + multi: true, + }, +]; + +export function configureSettingTabs(settingtabs: SettingTabsService) { + return () => { + settingtabs.add([ + { + name: eSettingManamagementSettingTabNames.EmailSettingGroup, + order: 1, + requiredPolicy: 'SettingManagement.Emailing', + component: EmailSettingGroupComponent, + }, + ]); + }; +} diff --git a/npm/ng-packs/packages/setting-management/config/src/public-api.ts b/npm/ng-packs/packages/setting-management/config/src/public-api.ts index dae3d291c2..c33f10d4d2 100644 --- a/npm/ng-packs/packages/setting-management/config/src/public-api.ts +++ b/npm/ng-packs/packages/setting-management/config/src/public-api.ts @@ -1,3 +1,5 @@ export * from './enums'; export * from './providers'; export * from './setting-management-config.module'; +export * from './proxy'; +export * from './components/email-setting-group/email-setting-group.component'; diff --git a/npm/ng-packs/packages/setting-management/config/src/setting-management-config.module.ts b/npm/ng-packs/packages/setting-management/config/src/setting-management-config.module.ts index 139166d487..38c04c68a0 100644 --- a/npm/ng-packs/packages/setting-management/config/src/setting-management-config.module.ts +++ b/npm/ng-packs/packages/setting-management/config/src/setting-management-config.module.ts @@ -1,12 +1,20 @@ import { ModuleWithProviders, NgModule } from '@angular/core'; +import { CoreModule } from '@abp/ng.core'; +import { EmailSettingGroupComponent } from './components/email-setting-group/email-setting-group.component'; import { SETTING_MANAGEMENT_ROUTE_PROVIDERS } from './providers/route.provider'; +import { SETTING_MANAGEMENT_SETTING_TAB_PROVIDERS } from './providers/setting-tab.provider'; +import { NgxValidateCoreModule } from '@ngx-validate/core'; -@NgModule() +@NgModule({ + imports: [CoreModule, NgxValidateCoreModule], + declarations: [EmailSettingGroupComponent], + exports: [EmailSettingGroupComponent], +}) export class SettingManagementConfigModule { static forRoot(): ModuleWithProviders { return { ngModule: SettingManagementConfigModule, - providers: [SETTING_MANAGEMENT_ROUTE_PROVIDERS], + providers: [SETTING_MANAGEMENT_ROUTE_PROVIDERS, SETTING_MANAGEMENT_SETTING_TAB_PROVIDERS], }; } }