From 272d1a4b6963b435d5e42d134a6b8fc0ec38c22e Mon Sep 17 00:00:00 2001 From: sumeyye Date: Tue, 2 Dec 2025 16:28:32 +0300 Subject: [PATCH] fix: problems in comments feature --- .../admin/config/src/enums/policy-names.ts | 1 + .../src/models/cms-kit-admin-settings.ts | 3 + .../cms-kit/admin/config/src/models/index.ts | 1 + .../cms-kit-admin-config.provider.ts | 6 +- .../admin/config/src/providers/index.ts | 1 + .../config/src/providers/route.provider.ts | 70 +++++----- .../src/providers/setting-tab.provider.ts | 27 ++++ .../cms-kit/admin/config/src/public-api.ts | 1 + .../cms-settings/cms-settings.component.html | 42 ++++++ .../cms-settings/cms-settings.component.ts | 59 +++++++++ .../src/components/cms-settings/index.ts | 1 + .../comment-approve.component.html | 72 ----------- .../comment-approve.component.ts | 122 ------------------ .../comment-details.component.html | 8 +- .../comment-details.component.ts | 74 ++++------- .../comment-list/comment-list.component.html | 7 +- .../comment-list/comment-list.component.ts | 67 +++------- .../admin/src/components/comments/index.ts | 1 - 18 files changed, 228 insertions(+), 335 deletions(-) create mode 100644 npm/ng-packs/packages/cms-kit/admin/config/src/models/cms-kit-admin-settings.ts create mode 100644 npm/ng-packs/packages/cms-kit/admin/config/src/models/index.ts create mode 100644 npm/ng-packs/packages/cms-kit/admin/config/src/providers/setting-tab.provider.ts create mode 100644 npm/ng-packs/packages/cms-kit/admin/src/components/cms-settings/cms-settings.component.html create mode 100644 npm/ng-packs/packages/cms-kit/admin/src/components/cms-settings/cms-settings.component.ts create mode 100644 npm/ng-packs/packages/cms-kit/admin/src/components/cms-settings/index.ts delete mode 100644 npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-approve/comment-approve.component.html delete mode 100644 npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-approve/comment-approve.component.ts diff --git a/npm/ng-packs/packages/cms-kit/admin/config/src/enums/policy-names.ts b/npm/ng-packs/packages/cms-kit/admin/config/src/enums/policy-names.ts index 020d19804b..7493070ddb 100644 --- a/npm/ng-packs/packages/cms-kit/admin/config/src/enums/policy-names.ts +++ b/npm/ng-packs/packages/cms-kit/admin/config/src/enums/policy-names.ts @@ -1,4 +1,5 @@ export enum eCmsKitAdminPolicyNames { + Cms = 'CmsKit.Comments || CmsKit.Tags || CmsKit.Pages || CmsKit.Blogs || CmsKit.BlogPosts || CmsKit.Menus || CmsKit.GlobalResources', Comments = 'CmsKit.Comments', Tags = 'CmsKit.Tags', Pages = 'CmsKit.Pages', diff --git a/npm/ng-packs/packages/cms-kit/admin/config/src/models/cms-kit-admin-settings.ts b/npm/ng-packs/packages/cms-kit/admin/config/src/models/cms-kit-admin-settings.ts new file mode 100644 index 0000000000..5ff7df02cf --- /dev/null +++ b/npm/ng-packs/packages/cms-kit/admin/config/src/models/cms-kit-admin-settings.ts @@ -0,0 +1,3 @@ +export interface Settings { + commentRequireApprovement: boolean; +} diff --git a/npm/ng-packs/packages/cms-kit/admin/config/src/models/index.ts b/npm/ng-packs/packages/cms-kit/admin/config/src/models/index.ts new file mode 100644 index 0000000000..e1c3be2829 --- /dev/null +++ b/npm/ng-packs/packages/cms-kit/admin/config/src/models/index.ts @@ -0,0 +1 @@ +export * from './cms-kit-admin-settings'; diff --git a/npm/ng-packs/packages/cms-kit/admin/config/src/providers/cms-kit-admin-config.provider.ts b/npm/ng-packs/packages/cms-kit/admin/config/src/providers/cms-kit-admin-config.provider.ts index 119cca5a9a..755577d5ff 100644 --- a/npm/ng-packs/packages/cms-kit/admin/config/src/providers/cms-kit-admin-config.provider.ts +++ b/npm/ng-packs/packages/cms-kit/admin/config/src/providers/cms-kit-admin-config.provider.ts @@ -1,6 +1,10 @@ import { makeEnvironmentProviders } from '@angular/core'; import { CMS_KIT_ADMIN_ROUTE_PROVIDERS } from './route.provider'; +import { CMS_KIT_ADMIN_SETTING_TAB_PROVIDERS } from './setting-tab.provider'; export function provideCmsKitAdminConfig() { - return makeEnvironmentProviders([CMS_KIT_ADMIN_ROUTE_PROVIDERS]); + return makeEnvironmentProviders([ + CMS_KIT_ADMIN_ROUTE_PROVIDERS, + CMS_KIT_ADMIN_SETTING_TAB_PROVIDERS, + ]); } diff --git a/npm/ng-packs/packages/cms-kit/admin/config/src/providers/index.ts b/npm/ng-packs/packages/cms-kit/admin/config/src/providers/index.ts index 60d286b5f4..1abcce3a32 100644 --- a/npm/ng-packs/packages/cms-kit/admin/config/src/providers/index.ts +++ b/npm/ng-packs/packages/cms-kit/admin/config/src/providers/index.ts @@ -1,2 +1,3 @@ export * from './cms-kit-admin-config.provider'; export * from './route.provider'; +export * from './setting-tab.provider'; diff --git a/npm/ng-packs/packages/cms-kit/admin/config/src/providers/route.provider.ts b/npm/ng-packs/packages/cms-kit/admin/config/src/providers/route.provider.ts index 0f67f2963b..ead5fcbc36 100644 --- a/npm/ng-packs/packages/cms-kit/admin/config/src/providers/route.provider.ts +++ b/npm/ng-packs/packages/cms-kit/admin/config/src/providers/route.provider.ts @@ -13,67 +13,67 @@ export function configureRoutes() { const routesService = inject(RoutesService); routesService.add([ { - path: '/cms/comments', - name: eCmsKitAdminRouteNames.Comments, - parentName: eCmsKitAdminRouteNames.Cms, - order: 100, - layout: eLayoutType.application, - iconClass: 'fa fa-comments', - requiredPolicy: eCmsKitAdminPolicyNames.Comments, - }, - { - path: '/cms/tags', - name: eCmsKitAdminRouteNames.Tags, - parentName: eCmsKitAdminRouteNames.Cms, - order: 101, - layout: eLayoutType.application, - iconClass: 'fa fa-tags', - requiredPolicy: eCmsKitAdminPolicyNames.Tags, - }, - { - path: '/cms/pages', - name: eCmsKitAdminRouteNames.Pages, + path: '/cms/blog-posts', + name: eCmsKitAdminRouteNames.BlogPosts, parentName: eCmsKitAdminRouteNames.Cms, - order: 102, + order: 1, layout: eLayoutType.application, - iconClass: 'fa fa-file', - requiredPolicy: eCmsKitAdminPolicyNames.Pages, + iconClass: 'fa fa-file-alt', + requiredPolicy: eCmsKitAdminPolicyNames.BlogPosts, }, { path: '/cms/blogs', name: eCmsKitAdminRouteNames.Blogs, parentName: eCmsKitAdminRouteNames.Cms, - order: 103, + order: 2, layout: eLayoutType.application, iconClass: 'fa fa-blog', requiredPolicy: eCmsKitAdminPolicyNames.Blogs, }, { - path: '/cms/blog-posts', - name: eCmsKitAdminRouteNames.BlogPosts, + path: '/cms/comments', + name: eCmsKitAdminRouteNames.Comments, parentName: eCmsKitAdminRouteNames.Cms, - order: 104, + order: 3, layout: eLayoutType.application, - iconClass: 'fa fa-file-alt', - requiredPolicy: eCmsKitAdminPolicyNames.BlogPosts, + iconClass: 'fa fa-comments', + requiredPolicy: eCmsKitAdminPolicyNames.Comments, + }, + { + path: '/cms/global-resources', + name: eCmsKitAdminRouteNames.GlobalResources, + parentName: eCmsKitAdminRouteNames.Cms, + order: 5, + layout: eLayoutType.application, + iconClass: 'fa fa-globe', + requiredPolicy: eCmsKitAdminPolicyNames.GlobalResources, }, { path: '/cms/menus', name: eCmsKitAdminRouteNames.Menus, parentName: eCmsKitAdminRouteNames.Cms, - order: 105, + order: 6, layout: eLayoutType.application, iconClass: 'fa fa-bars', requiredPolicy: eCmsKitAdminPolicyNames.Menus, }, { - path: '/cms/global-resources', - name: eCmsKitAdminRouteNames.GlobalResources, + path: '/cms/pages', + name: eCmsKitAdminRouteNames.Pages, parentName: eCmsKitAdminRouteNames.Cms, - order: 106, + order: 9, layout: eLayoutType.application, - iconClass: 'fa fa-globe', - requiredPolicy: eCmsKitAdminPolicyNames.GlobalResources, + iconClass: 'fa fa-file', + requiredPolicy: eCmsKitAdminPolicyNames.Pages, + }, + { + path: '/cms/tags', + name: eCmsKitAdminRouteNames.Tags, + parentName: eCmsKitAdminRouteNames.Cms, + order: 11, + layout: eLayoutType.application, + iconClass: 'fa fa-tags', + requiredPolicy: eCmsKitAdminPolicyNames.Tags, }, ]); } diff --git a/npm/ng-packs/packages/cms-kit/admin/config/src/providers/setting-tab.provider.ts b/npm/ng-packs/packages/cms-kit/admin/config/src/providers/setting-tab.provider.ts new file mode 100644 index 0000000000..432fe2971d --- /dev/null +++ b/npm/ng-packs/packages/cms-kit/admin/config/src/providers/setting-tab.provider.ts @@ -0,0 +1,27 @@ +import { ABP, ConfigStateService } from '@abp/ng.core'; +import { SettingTabsService } from '@abp/ng.setting-management/config'; +import { inject, provideAppInitializer } from '@angular/core'; +import { eCmsKitAdminPolicyNames, eCmsKitAdminRouteNames } from '../enums'; +import { CmsSettingsComponent } from '@abp/ng.cms-kit/admin'; + +export const CMS_KIT_ADMIN_SETTING_TAB_PROVIDERS = [ + provideAppInitializer(() => { + configureSettingTabs(); + }), +]; + +export async function configureSettingTabs() { + const settingTabs = inject(SettingTabsService); + const configState = inject(ConfigStateService); + const tabsArray: ABP.Tab[] = [ + { + name: eCmsKitAdminRouteNames.Cms, + order: 100, + requiredPolicy: eCmsKitAdminPolicyNames.Cms, + invisible: configState.getFeature('CmsKit.CommentEnable')?.toLowerCase() === 'true', + component: CmsSettingsComponent, + }, + ]; + + settingTabs.add(tabsArray); +} diff --git a/npm/ng-packs/packages/cms-kit/admin/config/src/public-api.ts b/npm/ng-packs/packages/cms-kit/admin/config/src/public-api.ts index 0003cebbef..b76fc0b2a7 100644 --- a/npm/ng-packs/packages/cms-kit/admin/config/src/public-api.ts +++ b/npm/ng-packs/packages/cms-kit/admin/config/src/public-api.ts @@ -1,2 +1,3 @@ export * from './enums'; export * from './providers'; +export * from './models'; diff --git a/npm/ng-packs/packages/cms-kit/admin/src/components/cms-settings/cms-settings.component.html b/npm/ng-packs/packages/cms-kit/admin/src/components/cms-settings/cms-settings.component.html new file mode 100644 index 0000000000..c1de5d5eca --- /dev/null +++ b/npm/ng-packs/packages/cms-kit/admin/src/components/cms-settings/cms-settings.component.html @@ -0,0 +1,42 @@ +
+
+ +
+
+
diff --git a/npm/ng-packs/packages/cms-kit/admin/src/components/cms-settings/cms-settings.component.ts b/npm/ng-packs/packages/cms-kit/admin/src/components/cms-settings/cms-settings.component.ts new file mode 100644 index 0000000000..34bf59385e --- /dev/null +++ b/npm/ng-packs/packages/cms-kit/admin/src/components/cms-settings/cms-settings.component.ts @@ -0,0 +1,59 @@ +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; +import { FormControl, ReactiveFormsModule } from '@angular/forms'; +import { + NgbNav, + NgbNavItem, + NgbNavItemRole, + NgbNavLink, + NgbNavLinkBase, + NgbNavContent, + NgbNavOutlet, +} from '@ng-bootstrap/ng-bootstrap'; +import { finalize } from 'rxjs/operators'; +import { ConfigStateService, LocalizationPipe } from '@abp/ng.core'; +import { ButtonComponent, ToasterService } from '@abp/ng.theme.shared'; +import { CommentAdminService } from '@abp/ng.cms-kit/proxy'; + +import { CMS_KIT_COMMENTS_REQUIRE_APPROVEMENT } from '../comments'; + +@Component({ + selector: 'abp-cms-settings', + templateUrl: './cms-settings.component.html', + changeDetection: ChangeDetectionStrategy.OnPush, + imports: [ + NgbNav, + NgbNavItem, + NgbNavItemRole, + NgbNavLink, + NgbNavLinkBase, + NgbNavContent, + NgbNavOutlet, + LocalizationPipe, + ButtonComponent, + ReactiveFormsModule, + ], +}) +export class CmsSettingsComponent { + readonly commentAdminService = inject(CommentAdminService); + readonly configState = inject(ConfigStateService); + readonly toaster = inject(ToasterService); + + commentApprovalControl = new FormControl(false); + + ngOnInit() { + const isCommentApprovalEnabled = + this.configState.getSetting(CMS_KIT_COMMENTS_REQUIRE_APPROVEMENT).toLowerCase() === 'true'; + this.commentApprovalControl.setValue(isCommentApprovalEnabled); + } + + submit() { + this.commentAdminService + .updateSettings({ commentRequireApprovement: this.commentApprovalControl.value }) + .pipe( + finalize(() => { + this.configState.refreshAppState().subscribe(); + }), + ) + .subscribe(() => this.toaster.success('AbpUi::SavedSuccessfully', null)); + } +} diff --git a/npm/ng-packs/packages/cms-kit/admin/src/components/cms-settings/index.ts b/npm/ng-packs/packages/cms-kit/admin/src/components/cms-settings/index.ts new file mode 100644 index 0000000000..5153a82b86 --- /dev/null +++ b/npm/ng-packs/packages/cms-kit/admin/src/components/cms-settings/index.ts @@ -0,0 +1 @@ +export * from './cms-settings.component'; diff --git a/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-approve/comment-approve.component.html b/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-approve/comment-approve.component.html deleted file mode 100644 index 26f182e763..0000000000 --- a/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-approve/comment-approve.component.html +++ /dev/null @@ -1,72 +0,0 @@ - -
-
-
-
-
-
-
-
- - -
-
-
-
- - -
-
-
-
- -
- -
- -
- -
- -
- - - -
-
-
-
-
- -
- -
-
diff --git a/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-approve/comment-approve.component.ts b/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-approve/comment-approve.component.ts deleted file mode 100644 index 645cc4db15..0000000000 --- a/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-approve/comment-approve.component.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { Component, OnInit, inject, LOCALE_ID } from '@angular/core'; -import { CommonModule, formatDate } from '@angular/common'; -import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms'; -import { NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap'; -import { ListService, LocalizationPipe, PagedResultDto } from '@abp/ng.core'; -import { ExtensibleTableComponent, EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible'; -import { PageComponent } from '@abp/ng.components/page'; -import { ButtonComponent, FormInputComponent } from '@abp/ng.theme.shared'; -import { - CommentAdminService, - CommentGetListInput, - CommentWithAuthorDto, - CommentApproveState, -} from '@abp/ng.cms-kit/proxy'; -import { eCmsKitAdminComponents } from '../../../enums'; - -@Component({ - selector: 'abp-comment-approve', - templateUrl: './comment-approve.component.html', - providers: [ - ListService, - { - provide: EXTENSIONS_IDENTIFIER, - useValue: eCmsKitAdminComponents.CommentApprove, - }, - ], - imports: [ - ReactiveFormsModule, - NgbDatepickerModule, - CommonModule, - PageComponent, - ButtonComponent, - FormInputComponent, - LocalizationPipe, - ExtensibleTableComponent, - ], -}) -export class CommentApproveComponent implements OnInit { - data: PagedResultDto = { items: [], totalCount: 0 }; - - public readonly list = inject(ListService); - private commentService = inject(CommentAdminService); - private fb = inject(FormBuilder); - private locale = inject(LOCALE_ID); - - filterForm!: FormGroup; - - ngOnInit() { - this.createFilterForm(); - this.hookToQuery(); - } - - private createFilterForm() { - this.filterForm = this.fb.group({ - creationStartDate: [null], - creationEndDate: [null], - author: [''], - entityType: [''], - }); - } - - onFilter() { - const formValue = this.filterForm.value; - const filters: Partial = { - author: formValue.author || undefined, - entityType: formValue.entityType || undefined, - commentApproveState: CommentApproveState.Waiting, - }; - - if (formValue.creationStartDate) { - filters.creationStartDate = this.formatDateForApi(formValue.creationStartDate); - } - - if (formValue.creationEndDate) { - filters.creationEndDate = this.formatDateForApi(formValue.creationEndDate); - } - - this.list.filter = JSON.stringify(filters); - this.list.get(); - } - - private formatDateForApi(date: any): string { - if (!date) { - return ''; - } - - if (typeof date === 'string') { - return date; - } - - if (date.year && date.month && date.day) { - const jsDate = new Date(date.year, date.month - 1, date.day); - return formatDate(jsDate, 'yyyy-MM-dd', this.locale); - } - - return ''; - } - - private hookToQuery() { - this.list - .hookToQuery(query => { - let filters: Partial = { - commentApproveState: CommentApproveState.Waiting, - }; - if (this.list.filter) { - try { - filters = { ...filters, ...JSON.parse(this.list.filter) }; - } catch { - // Ignore parse errors, use default filters - } - } - const input: CommentGetListInput = { - ...query, - ...filters, - }; - return this.commentService.getList(input); - }) - .subscribe(res => { - this.data = res; - }); - } -} diff --git a/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-details/comment-details.component.html b/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-details/comment-details.component.html index aec95e36b8..7b4c18c4a3 100644 --- a/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-details/comment-details.component.html +++ b/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-details/comment-details.component.html @@ -71,11 +71,12 @@ @@ -105,7 +106,6 @@ type="text" /> - @if (requireApprovement) {
diff --git a/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-details/comment-details.component.ts b/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-details/comment-details.component.ts index cf51d252fd..ffebe3ca2c 100644 --- a/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-details/comment-details.component.ts +++ b/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-details/comment-details.component.ts @@ -1,12 +1,12 @@ -import { Component, OnInit, inject, LOCALE_ID } from '@angular/core'; -import { CommonModule, DatePipe, formatDate } from '@angular/common'; +import { Component, OnInit, inject } from '@angular/core'; +import { CommonModule, DatePipe } from '@angular/common'; import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; -import { NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap'; -import { ListService, LocalizationPipe, PagedResultDto, ConfigStateService } from '@abp/ng.core'; +import { NgbDateAdapter, NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap'; +import { ListService, LocalizationPipe, PagedResultDto } from '@abp/ng.core'; import { PageComponent } from '@abp/ng.components/page'; import { ExtensibleTableComponent, EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible'; -import { ButtonComponent, FormInputComponent } from '@abp/ng.theme.shared'; +import { ButtonComponent, DateTimeAdapter, FormInputComponent } from '@abp/ng.theme.shared'; import { CommentAdminService, CommentGetListInput, @@ -15,7 +15,7 @@ import { commentApproveStateOptions, } from '@abp/ng.cms-kit/proxy'; import { eCmsKitAdminComponents } from '../../../enums'; -import { CMS_KIT_COMMENTS_REQUIRE_APPROVEMENT } from '../constants'; +import { CommentEntityService } from '../../../services'; @Component({ selector: 'abp-comment-details', @@ -27,6 +27,12 @@ import { CMS_KIT_COMMENTS_REQUIRE_APPROVEMENT } from '../constants'; useValue: eCmsKitAdminComponents.CommentDetails, }, ], + viewProviders: [ + { + provide: NgbDateAdapter, + useClass: DateTimeAdapter, + }, + ], imports: [ ExtensibleTableComponent, PageComponent, @@ -43,22 +49,20 @@ export class CommentDetailsComponent implements OnInit { comment: CommentWithAuthorDto | null = null; data: PagedResultDto = { items: [], totalCount: 0 }; - public readonly list = inject(ListService); + readonly list = inject(ListService); + readonly commentEntityService = inject(CommentEntityService); + private commentService = inject(CommentAdminService); private route = inject(ActivatedRoute); private router = inject(Router); private fb = inject(FormBuilder); - private configState = inject(ConfigStateService); - private locale = inject(LOCALE_ID); filterForm!: FormGroup; commentApproveStateOptions = commentApproveStateOptions; - requireApprovement = false; commentId!: string; + requireApprovement: boolean; ngOnInit() { - this.requireApprovement = - this.configState.getSetting(CMS_KIT_COMMENTS_REQUIRE_APPROVEMENT) === 'true'; this.route.params.subscribe(params => { const id = params['id']; if (id) { @@ -68,6 +72,7 @@ export class CommentDetailsComponent implements OnInit { this.hookToQuery(); } }); + this.requireApprovement = this.commentEntityService.requireApprovement; } private createFilterForm() { @@ -91,59 +96,26 @@ export class CommentDetailsComponent implements OnInit { author: formValue.author || undefined, commentApproveState: formValue.commentApproveState, repliedCommentId: this.commentId, + creationStartDate: formValue.creationStartDate || undefined, + creationEndDate: formValue.creationEndDate || undefined, }; - if (formValue.creationStartDate) { - filters.creationStartDate = this.formatDateForApi(formValue.creationStartDate); - } - - if (formValue.creationEndDate) { - filters.creationEndDate = this.formatDateForApi(formValue.creationEndDate); - } - - this.list.filter = JSON.stringify(filters); + this.list.filter = filters as any; this.list.get(); } - private formatDateForApi(date: any): string { - if (!date) { - return ''; - } - - if (typeof date === 'string') { - return date; - } - - if (date.year && date.month && date.day) { - const jsDate = new Date(date.year, date.month - 1, date.day); - return formatDate(jsDate, 'yyyy-MM-dd', this.locale); - } - - return ''; - } - private hookToQuery() { this.list .hookToQuery(query => { - let filters: Partial = { - repliedCommentId: this.commentId, - }; - if (this.list.filter) { - try { - filters = { ...filters, ...JSON.parse(this.list.filter) }; - } catch { - // Ignore parse errors, use default filters - } - } + const filters = (this.list.filter as Partial) || {}; const input: CommentGetListInput = { + repliedCommentId: this.commentId, ...query, ...filters, }; return this.commentService.getList(input); }) - .subscribe(res => { - this.data = res; - }); + .subscribe(res => (this.data = res)); } navigateToReply(id: string) { diff --git a/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-list/comment-list.component.html b/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-list/comment-list.component.html index 2cba7cb433..5137014959 100644 --- a/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-list/comment-list.component.html +++ b/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-list/comment-list.component.html @@ -13,11 +13,12 @@
diff --git a/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-list/comment-list.component.ts b/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-list/comment-list.component.ts index caceba65ee..dc7da58d78 100644 --- a/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-list/comment-list.component.ts +++ b/npm/ng-packs/packages/cms-kit/admin/src/components/comments/comment-list/comment-list.component.ts @@ -1,11 +1,11 @@ -import { Component, OnInit, inject, LOCALE_ID } from '@angular/core'; -import { CommonModule, formatDate } from '@angular/common'; +import { Component, OnInit, inject } from '@angular/core'; +import { CommonModule } from '@angular/common'; import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms'; -import { NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap'; -import { ListService, PagedResultDto, ConfigStateService, LocalizationPipe } from '@abp/ng.core'; +import { NgbDateAdapter, NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap'; +import { ListService, PagedResultDto, LocalizationPipe } from '@abp/ng.core'; import { ExtensibleModule, EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible'; import { PageModule } from '@abp/ng.components/page'; -import { ButtonComponent, FormInputComponent } from '@abp/ng.theme.shared'; +import { ButtonComponent, DateTimeAdapter, FormInputComponent } from '@abp/ng.theme.shared'; import { CommentAdminService, CommentGetListInput, @@ -14,7 +14,7 @@ import { commentApproveStateOptions, } from '@abp/ng.cms-kit/proxy'; import { eCmsKitAdminComponents } from '../../../enums'; -import { CMS_KIT_COMMENTS_REQUIRE_APPROVEMENT } from '../constants'; +import { CommentEntityService } from '../../../services'; @Component({ selector: 'abp-comment-list', @@ -26,6 +26,12 @@ import { CMS_KIT_COMMENTS_REQUIRE_APPROVEMENT } from '../constants'; useValue: eCmsKitAdminComponents.CommentList, }, ], + viewProviders: [ + { + provide: NgbDateAdapter, + useClass: DateTimeAdapter, + }, + ], imports: [ ExtensibleModule, PageModule, @@ -40,21 +46,20 @@ import { CMS_KIT_COMMENTS_REQUIRE_APPROVEMENT } from '../constants'; export class CommentListComponent implements OnInit { data: PagedResultDto = { items: [], totalCount: 0 }; - public readonly list = inject(ListService); + readonly list = inject(ListService); + readonly commentEntityService = inject(CommentEntityService); + private commentService = inject(CommentAdminService); private fb = inject(FormBuilder); - private configState = inject(ConfigStateService); - private locale = inject(LOCALE_ID); filterForm!: FormGroup; commentApproveStateOptions = commentApproveStateOptions; - requireApprovement = false; + requireApprovement: boolean; ngOnInit() { - this.requireApprovement = - this.configState.getSetting(CMS_KIT_COMMENTS_REQUIRE_APPROVEMENT) === 'true'; this.createFilterForm(); this.hookToQuery(); + this.requireApprovement = this.commentEntityService.requireApprovement; } private createFilterForm() { @@ -73,48 +78,18 @@ export class CommentListComponent implements OnInit { author: formValue.author || undefined, entityType: formValue.entityType || undefined, commentApproveState: formValue.commentApproveState, + creationStartDate: formValue.creationStartDate || undefined, + creationEndDate: formValue.creationEndDate || undefined, }; - if (formValue.creationStartDate) { - filters.creationStartDate = this.formatDateForApi(formValue.creationStartDate); - } - - if (formValue.creationEndDate) { - filters.creationEndDate = this.formatDateForApi(formValue.creationEndDate); - } - - this.list.filter = JSON.stringify(filters); + this.list.filter = filters as any; this.list.get(); } - private formatDateForApi(date: any): string { - if (!date) { - return ''; - } - - if (typeof date === 'string') { - return date; - } - - if (date.year && date.month && date.day) { - const jsDate = new Date(date.year, date.month - 1, date.day); - return formatDate(jsDate, 'yyyy-MM-dd', this.locale); - } - - return ''; - } - private hookToQuery() { this.list .hookToQuery(query => { - let filters: Partial = {}; - if (this.list.filter) { - try { - filters = JSON.parse(this.list.filter); - } catch { - // Ignore parse errors, use empty filters - } - } + const filters = (this.list.filter as Partial) || {}; const input: CommentGetListInput = { ...query, ...filters, diff --git a/npm/ng-packs/packages/cms-kit/admin/src/components/comments/index.ts b/npm/ng-packs/packages/cms-kit/admin/src/components/comments/index.ts index 72c1f4b2c8..757b9958a5 100644 --- a/npm/ng-packs/packages/cms-kit/admin/src/components/comments/index.ts +++ b/npm/ng-packs/packages/cms-kit/admin/src/components/comments/index.ts @@ -1,4 +1,3 @@ export * from './comment-list/comment-list.component'; -export * from './comment-approve/comment-approve.component'; export * from './comment-details/comment-details.component'; export * from './constants';