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