@abp/ng.cms-kit 10.2.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -0
- package/fesm2022/abp-ng.cms-kit-admin-config.mjs +136 -0
- package/fesm2022/abp-ng.cms-kit-admin-config.mjs.map +1 -0
- package/fesm2022/abp-ng.cms-kit-admin.mjs +2826 -0
- package/fesm2022/abp-ng.cms-kit-admin.mjs.map +1 -0
- package/fesm2022/abp-ng.cms-kit-proxy.mjs +440 -0
- package/fesm2022/abp-ng.cms-kit-proxy.mjs.map +1 -0
- package/fesm2022/abp-ng.cms-kit-public-config.mjs +55 -0
- package/fesm2022/abp-ng.cms-kit-public-config.mjs.map +1 -0
- package/fesm2022/abp-ng.cms-kit-public.mjs +4 -0
- package/fesm2022/abp-ng.cms-kit-public.mjs.map +1 -0
- package/fesm2022/abp-ng.cms-kit.mjs +231 -0
- package/fesm2022/abp-ng.cms-kit.mjs.map +1 -0
- package/package.json +52 -0
- package/types/abp-ng.cms-kit-admin-config.d.ts +38 -0
- package/types/abp-ng.cms-kit-admin.d.ts +610 -0
- package/types/abp-ng.cms-kit-proxy.d.ts +426 -0
- package/types/abp-ng.cms-kit-public-config.d.ts +20 -0
- package/types/abp-ng.cms-kit-public.d.ts +2 -0
- package/types/abp-ng.cms-kit.d.ts +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abp-ng.cms-kit-admin.mjs","sources":["../../../../packages/cms-kit/admin/src/enums/components.ts","../../../../packages/cms-kit/admin/src/services/page-form.service.ts","../../../../packages/cms-kit/admin/src/services/blog-post-form.service.ts","../../../../packages/cms-kit/admin/src/services/comment-entity.service.ts","../../../../packages/cms-kit/admin/src/components/comments/comment-list/comment-list.component.ts","../../../../packages/cms-kit/admin/src/components/comments/comment-list/comment-list.component.html","../../../../packages/cms-kit/admin/src/components/comments/comment-details/comment-details.component.ts","../../../../packages/cms-kit/admin/src/components/comments/comment-details/comment-details.component.html","../../../../packages/cms-kit/admin/src/components/comments/constants.ts","../../../../packages/cms-kit/admin/src/components/tags/tag-modal/tag-modal.component.ts","../../../../packages/cms-kit/admin/src/components/tags/tag-modal/tag-modal.component.html","../../../../packages/cms-kit/admin/src/components/tags/tag-list/tag-list.component.ts","../../../../packages/cms-kit/admin/src/components/tags/tag-list/tag-list.component.html","../../../../packages/cms-kit/admin/src/components/pages/page-list/page-list.component.ts","../../../../packages/cms-kit/admin/src/components/pages/page-list/page-list.component.html","../../../../packages/cms-kit/admin/src/components/pages/page-form/page-form.component.ts","../../../../packages/cms-kit/admin/src/components/pages/page-form/page-form.component.html","../../../../packages/cms-kit/admin/src/components/blogs/blog-modal/blog-modal.component.ts","../../../../packages/cms-kit/admin/src/components/blogs/blog-modal/blog-modal.component.html","../../../../packages/cms-kit/admin/src/components/blogs/blog-features-modal/blog-features-modal.component.ts","../../../../packages/cms-kit/admin/src/components/blogs/blog-features-modal/blog-features-modal.component.html","../../../../packages/cms-kit/admin/src/components/blogs/blog-list/blog-list.component.ts","../../../../packages/cms-kit/admin/src/components/blogs/blog-list/blog-list.component.html","../../../../packages/cms-kit/admin/src/components/blog-posts/blog-post-list/blog-post-list.component.ts","../../../../packages/cms-kit/admin/src/components/blog-posts/blog-post-list/blog-post-list.component.html","../../../../packages/cms-kit/admin/src/components/blog-posts/blog-post-form/blog-post-form.component.ts","../../../../packages/cms-kit/admin/src/components/blog-posts/blog-post-form/blog-post-form.component.html","../../../../packages/cms-kit/admin/src/components/menus/menu-item-modal/menu-item-modal.component.ts","../../../../packages/cms-kit/admin/src/components/menus/menu-item-modal/menu-item-modal.component.html","../../../../packages/cms-kit/admin/src/components/menus/menu-item-list/menu-item-list.component.ts","../../../../packages/cms-kit/admin/src/components/menus/menu-item-list/menu-item-list.component.html","../../../../packages/cms-kit/admin/src/components/cms-settings/cms-settings.component.ts","../../../../packages/cms-kit/admin/src/components/cms-settings/cms-settings.component.html","../../../../packages/cms-kit/admin/src/components/global-resources/global-resources.component.ts","../../../../packages/cms-kit/admin/src/components/global-resources/global-resources.component.html","../../../../packages/cms-kit/admin/src/defaults/comments/default-comment-entity-actions.ts","../../../../packages/cms-kit/admin/src/defaults/comments/default-comment-entity-props.ts","../../../../packages/cms-kit/admin/src/defaults/tags/default-tag-entity-actions.ts","../../../../packages/cms-kit/admin/src/defaults/tags/default-tag-entity-props.ts","../../../../packages/cms-kit/admin/src/defaults/tags/default-tag-toolbar-actions.ts","../../../../packages/cms-kit/admin/src/defaults/tags/default-tag-create-form-props.ts","../../../../packages/cms-kit/admin/src/defaults/pages/default-page-entity-actions.ts","../../../../packages/cms-kit/admin/src/defaults/pages/default-page-entity-props.ts","../../../../packages/cms-kit/admin/src/defaults/pages/default-page-toolbar-actions.ts","../../../../packages/cms-kit/admin/src/defaults/pages/layout-constants.ts","../../../../packages/cms-kit/admin/src/defaults/pages/default-page-create-form-props.ts","../../../../packages/cms-kit/admin/src/defaults/blogs/default-blog-entity-actions.ts","../../../../packages/cms-kit/admin/src/defaults/blogs/default-blog-entity-props.ts","../../../../packages/cms-kit/admin/src/defaults/blogs/default-blog-toolbar-actions.ts","../../../../packages/cms-kit/admin/src/defaults/blogs/default-blog-create-form-props.ts","../../../../packages/cms-kit/admin/src/defaults/blog-posts/default-blog-post-entity-actions.ts","../../../../packages/cms-kit/admin/src/defaults/blog-posts/default-blog-post-entity-props.ts","../../../../packages/cms-kit/admin/src/defaults/blog-posts/default-blog-post-toolbar-actions.ts","../../../../packages/cms-kit/admin/src/defaults/blog-posts/default-blog-post-create-form-props.ts","../../../../packages/cms-kit/admin/src/defaults/menus/default-menu-item-create-form-props.ts","../../../../packages/cms-kit/admin/src/defaults/menus/default-menu-item-toolbar-actions.ts","../../../../packages/cms-kit/admin/src/tokens/extensions.token.ts","../../../../packages/cms-kit/admin/src/resolvers/extensions.resolver.ts","../../../../packages/cms-kit/admin/src/cms-kit-admin.routes.ts","../../../../packages/cms-kit/admin/src/abp-ng.cms-kit-admin.ts"],"sourcesContent":["export enum eCmsKitAdminComponents {\r\n CommentList = 'CmsKit.Admin.CommentList',\r\n CommentDetails = 'CmsKit.Admin.CommentDetails',\r\n\r\n Tags = 'CmsKit.Admin.Tags',\r\n\r\n Pages = 'CmsKit.Admin.Pages',\r\n PageForm = 'CmsKit.Admin.PageForm',\r\n\r\n Blogs = 'CmsKit.Admin.Blogs',\r\n\r\n BlogPosts = 'CmsKit.Admin.BlogPosts',\r\n BlogPostForm = 'CmsKit.Admin.BlogPostForm',\r\n\r\n Menus = 'CmsKit.Admin.Menus',\r\n\r\n GlobalResources = 'CmsKit.Admin.GlobalResources',\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport {\r\n PageAdminService,\r\n CreatePageInputDto,\r\n UpdatePageInputDto,\r\n PageDto,\r\n PageStatus,\r\n} from '@abp/ng.cms-kit/proxy';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PageFormService {\r\n private pageService = inject(PageAdminService);\r\n private toasterService = inject(ToasterService);\r\n private router = inject(Router);\r\n\r\n create(form: FormGroup): Observable<PageDto> {\r\n if (!form.valid) {\r\n throw new Error('Form is invalid');\r\n }\r\n\r\n return this.pageService.create(form.value as CreatePageInputDto).pipe(\r\n tap(() => {\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n this.router.navigate(['/cms/pages']);\r\n }),\r\n );\r\n }\r\n\r\n createAsDraft(form: FormGroup): Observable<PageDto> {\r\n if (!form.valid) {\r\n throw new Error('Form is invalid');\r\n }\r\n\r\n const formValue = { ...form.value, status: PageStatus.Draft } as CreatePageInputDto;\r\n return this.pageService.create(formValue).pipe(\r\n tap(() => {\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n this.router.navigate(['/cms/pages']);\r\n }),\r\n );\r\n }\r\n\r\n publish(form: FormGroup): Observable<PageDto> {\r\n if (!form.valid) {\r\n throw new Error('Form is invalid');\r\n }\r\n\r\n const formValue = { ...form.value, status: PageStatus.Publish } as CreatePageInputDto;\r\n return this.pageService.create(formValue).pipe(\r\n tap(() => {\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n this.router.navigate(['/cms/pages']);\r\n }),\r\n );\r\n }\r\n\r\n update(pageId: string, form: FormGroup, page: PageDto): Observable<PageDto> {\r\n if (!form.valid || !page) {\r\n throw new Error('Form is invalid or page is missing');\r\n }\r\n\r\n const formValue = {\r\n ...page,\r\n ...form.value,\r\n } as UpdatePageInputDto;\r\n\r\n return this.pageService.update(pageId, formValue).pipe(\r\n tap(() => {\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n this.router.navigate(['/cms/pages']);\r\n }),\r\n );\r\n }\r\n\r\n updateAsDraft(pageId: string, form: FormGroup, page: PageDto): Observable<PageDto> {\r\n if (!form.valid || !page) {\r\n throw new Error('Form is invalid or page is missing');\r\n }\r\n\r\n const formValue = {\r\n ...page,\r\n ...form.value,\r\n status: PageStatus.Draft,\r\n } as UpdatePageInputDto;\r\n\r\n return this.pageService.update(pageId, formValue).pipe(\r\n tap(() => {\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n this.router.navigate(['/cms/pages']);\r\n }),\r\n );\r\n }\r\n\r\n updateAndPublish(pageId: string, form: FormGroup, page: PageDto): Observable<PageDto> {\r\n if (!form.valid || !page) {\r\n throw new Error('Form is invalid or page is missing');\r\n }\r\n\r\n const formValue = {\r\n ...page,\r\n ...form.value,\r\n status: PageStatus.Publish,\r\n } as UpdatePageInputDto;\r\n\r\n return this.pageService.update(pageId, formValue).pipe(\r\n tap(() => {\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n this.router.navigate(['/cms/pages']);\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport {\r\n BlogPostAdminService,\r\n CreateBlogPostDto,\r\n UpdateBlogPostDto,\r\n BlogPostDto,\r\n} from '@abp/ng.cms-kit/proxy';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BlogPostFormService {\r\n private blogPostService = inject(BlogPostAdminService);\r\n private toasterService = inject(ToasterService);\r\n private router = inject(Router);\r\n\r\n create(form: FormGroup): Observable<BlogPostDto> {\r\n if (!form.valid) {\r\n throw new Error('Form is invalid');\r\n }\r\n\r\n return this.blogPostService.create(form.value as CreateBlogPostDto).pipe(\r\n tap(() => {\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n this.router.navigate(['/cms/blog-posts']);\r\n }),\r\n );\r\n }\r\n\r\n createAsDraft(form: FormGroup): Observable<BlogPostDto> {\r\n if (!form.valid) {\r\n throw new Error('Form is invalid');\r\n }\r\n\r\n return this.blogPostService.create(form.value as CreateBlogPostDto).pipe(\r\n tap(() => {\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n this.router.navigate(['/cms/blog-posts']);\r\n }),\r\n );\r\n }\r\n\r\n createAndPublish(form: FormGroup): Observable<BlogPostDto> {\r\n if (!form.valid) {\r\n throw new Error('Form is invalid');\r\n }\r\n\r\n return this.blogPostService.createAndPublish(form.value as CreateBlogPostDto).pipe(\r\n tap(() => {\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n this.router.navigate(['/cms/blog-posts']);\r\n }),\r\n );\r\n }\r\n\r\n createAndSendToReview(form: FormGroup): Observable<BlogPostDto> {\r\n if (!form.valid) {\r\n throw new Error('Form is invalid');\r\n }\r\n\r\n return this.blogPostService.createAndSendToReview(form.value as CreateBlogPostDto).pipe(\r\n tap(() => {\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n this.router.navigate(['/cms/blog-posts']);\r\n }),\r\n );\r\n }\r\n\r\n update(blogPostId: string, form: FormGroup, blogPost: BlogPostDto): Observable<BlogPostDto> {\r\n if (!form.valid || !blogPost) {\r\n throw new Error('Form is invalid or blog post is missing');\r\n }\r\n\r\n const formValue = {\r\n ...blogPost,\r\n ...form.value,\r\n } as UpdateBlogPostDto;\r\n\r\n return this.blogPostService.update(blogPostId, formValue).pipe(\r\n tap(() => {\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n this.router.navigate(['/cms/blog-posts']);\r\n }),\r\n );\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { tap } from 'rxjs/operators';\r\nimport { ConfigStateService, ListService } from '@abp/ng.core';\r\nimport { Confirmation, ConfirmationService, ToasterService } from '@abp/ng.theme.shared';\r\nimport { CommentAdminService, CommentGetListInput } from '@abp/ng.cms-kit/proxy';\r\nimport { CMS_KIT_COMMENTS_REQUIRE_APPROVEMENT } from '../components';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CommentEntityService {\r\n private commentService = inject(CommentAdminService);\r\n private toasterService = inject(ToasterService);\r\n private confirmation = inject(ConfirmationService);\r\n private configState = inject(ConfigStateService);\r\n private router = inject(Router);\r\n\r\n get requireApprovement(): boolean {\r\n return (\r\n this.configState.getSetting(CMS_KIT_COMMENTS_REQUIRE_APPROVEMENT).toLowerCase() === 'true'\r\n );\r\n }\r\n\r\n isCommentReply(commentId: string | undefined): boolean {\r\n if (!commentId) {\r\n return false;\r\n }\r\n\r\n const id = this.router.url.split('/').pop();\r\n return id === commentId;\r\n }\r\n\r\n updateApprovalStatus(id: string, isApproved: boolean, list: ListService<CommentGetListInput>) {\r\n this.commentService\r\n .updateApprovalStatus(id, { isApproved: isApproved })\r\n .pipe(tap(() => list.get()))\r\n .subscribe(() =>\r\n isApproved\r\n ? this.toasterService.success('CmsKit::ApprovedSuccessfully')\r\n : this.toasterService.success('CmsKit::ApprovalRevokedSuccessfully'),\r\n );\r\n }\r\n\r\n delete(id: string, list: ListService<CommentGetListInput>) {\r\n this.confirmation\r\n .warn('CmsKit::CommentDeletionConfirmationMessage', 'AbpUi::AreYouSure', {\r\n yesText: 'AbpUi::Yes',\r\n cancelText: 'AbpUi::Cancel',\r\n })\r\n .subscribe(status => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.commentService.delete(id).subscribe(() => {\r\n list.get();\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgbDateAdapter, NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ListService, PagedResultDto, LocalizationPipe } from '@abp/ng.core';\r\nimport { ExtensibleModule, EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { ButtonComponent, DateTimeAdapter, FormInputComponent } from '@abp/ng.theme.shared';\r\nimport {\r\n CommentAdminService,\r\n CommentGetListInput,\r\n CommentWithAuthorDto,\r\n CommentApproveState,\r\n commentApproveStateOptions,\r\n} from '@abp/ng.cms-kit/proxy';\r\nimport { eCmsKitAdminComponents } from '../../../enums';\r\nimport { CommentEntityService } from '../../../services';\r\n\r\n@Component({\r\n selector: 'abp-comment-list',\r\n templateUrl: './comment-list.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eCmsKitAdminComponents.CommentList,\r\n },\r\n ],\r\n viewProviders: [\r\n {\r\n provide: NgbDateAdapter,\r\n useClass: DateTimeAdapter,\r\n },\r\n ],\r\n imports: [\r\n ExtensibleModule,\r\n PageModule,\r\n ReactiveFormsModule,\r\n NgbDatepickerModule,\r\n CommonModule,\r\n LocalizationPipe,\r\n FormInputComponent,\r\n ButtonComponent,\r\n ],\r\n})\r\nexport class CommentListComponent implements OnInit {\r\n data: PagedResultDto<CommentWithAuthorDto> = { items: [], totalCount: 0 };\r\n\r\n readonly list = inject(ListService<CommentGetListInput>);\r\n readonly commentEntityService = inject(CommentEntityService);\r\n\r\n private commentService = inject(CommentAdminService);\r\n private fb = inject(FormBuilder);\r\n\r\n filterForm!: FormGroup;\r\n commentApproveStateOptions = commentApproveStateOptions;\r\n requireApprovement: boolean;\r\n\r\n ngOnInit() {\r\n this.createFilterForm();\r\n this.hookToQuery();\r\n this.requireApprovement = this.commentEntityService.requireApprovement;\r\n }\r\n\r\n private createFilterForm() {\r\n this.filterForm = this.fb.group({\r\n creationStartDate: [null],\r\n creationEndDate: [null],\r\n author: [''],\r\n entityType: [''],\r\n commentApproveState: [CommentApproveState.All],\r\n });\r\n }\r\n\r\n onFilter() {\r\n const formValue = this.filterForm.value;\r\n const filters: Partial<CommentGetListInput> = {\r\n author: formValue.author || undefined,\r\n entityType: formValue.entityType || undefined,\r\n commentApproveState: formValue.commentApproveState,\r\n creationStartDate: formValue.creationStartDate || undefined,\r\n creationEndDate: formValue.creationEndDate || undefined,\r\n };\r\n\r\n this.list.filter = filters as any;\r\n this.list.get();\r\n }\r\n\r\n private hookToQuery() {\r\n this.list\r\n .hookToQuery(query => {\r\n const filters = (this.list.filter as Partial<CommentGetListInput>) || {};\r\n const input: CommentGetListInput = {\r\n ...query,\r\n ...filters,\r\n };\r\n return this.commentService.getList(input);\r\n })\r\n .subscribe(res => (this.data = res));\r\n }\r\n}\r\n","<abp-page [title]=\"'CmsKit::Comments' | abpLocalization\">\r\n <div class=\"card mb-4\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"filterForm\" (ngSubmit)=\"onFilter()\">\r\n <div class=\"row align-items-end\">\r\n <div class=\"col-lg-4 col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-6 col-md-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"creationStartDate\">\r\n {{ 'CmsKit::StartDate' | abpLocalization }}\r\n </label>\r\n <input\r\n id=\"creationStartDate\"\r\n formControlName=\"creationStartDate\"\r\n (click)=\"startDatePicker.open()\"\r\n (keyup.space)=\"startDatePicker.open()\"\r\n ngbDatepicker\r\n #startDatePicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 col-md-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"creationEndDate\">\r\n {{ 'CmsKit::EndDate' | abpLocalization }}\r\n </label>\r\n <input\r\n id=\"creationEndDate\"\r\n formControlName=\"creationEndDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #endDatePicker=\"ngbDatepicker\"\r\n (click)=\"endDatePicker.toggle()\"\r\n readonly\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-2 col-md-6\">\r\n <abp-form-input\r\n formControlName=\"author\"\r\n [label]=\"'CmsKit::Username' | abpLocalization\"\r\n type=\"text\"\r\n />\r\n </div>\r\n\r\n <div class=\"col-lg-2 col-md-6\">\r\n <abp-form-input\r\n formControlName=\"entityType\"\r\n [label]=\"'CmsKit::EntityType' | abpLocalization\"\r\n type=\"text\"\r\n />\r\n </div>\r\n @if (requireApprovement) {\r\n <div class=\"col-lg-2 col-md-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"mb-1 form-label\" for=\"commentApproveState\">\r\n {{ 'CmsKit::CommentFilter:ApproveState' | abpLocalization }}\r\n </label>\r\n <select\r\n id=\"commentApproveState\"\r\n formControlName=\"commentApproveState\"\r\n class=\"form-control\"\r\n >\r\n @for (option of commentApproveStateOptions; track option.value) {\r\n <option [value]=\"option.value\">\r\n {{ 'CmsKit::CommentFilter:' + option.value | abpLocalization }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n </div>\r\n }\r\n <div class=\"col-lg-2 col-md-6\">\r\n <abp-button class=\"w-100 mb-3\" buttonType=\"Primary\" type=\"submit\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i>\r\n </abp-button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card\">\r\n <abp-extensible-table [data]=\"data.items\" [recordsTotal]=\"data.totalCount\" [list]=\"list\" />\r\n </div>\r\n</abp-page>\r\n","import { Component, OnInit, inject } from '@angular/core';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { NgbDateAdapter, NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ListService, LocalizationPipe, PagedResultDto } from '@abp/ng.core';\r\nimport { PageComponent } from '@abp/ng.components/page';\r\nimport { ExtensibleTableComponent, EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\r\nimport { ButtonComponent, DateTimeAdapter, FormInputComponent } from '@abp/ng.theme.shared';\r\nimport {\r\n CommentAdminService,\r\n CommentGetListInput,\r\n CommentWithAuthorDto,\r\n CommentApproveState,\r\n commentApproveStateOptions,\r\n} from '@abp/ng.cms-kit/proxy';\r\nimport { eCmsKitAdminComponents } from '../../../enums';\r\nimport { CommentEntityService } from '../../../services';\r\n\r\n@Component({\r\n selector: 'abp-comment-details',\r\n templateUrl: './comment-details.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eCmsKitAdminComponents.CommentDetails,\r\n },\r\n ],\r\n viewProviders: [\r\n {\r\n provide: NgbDateAdapter,\r\n useClass: DateTimeAdapter,\r\n },\r\n ],\r\n imports: [\r\n ExtensibleTableComponent,\r\n PageComponent,\r\n LocalizationPipe,\r\n ReactiveFormsModule,\r\n NgbDatepickerModule,\r\n CommonModule,\r\n DatePipe,\r\n FormInputComponent,\r\n ButtonComponent,\r\n ],\r\n})\r\nexport class CommentDetailsComponent implements OnInit {\r\n comment: CommentWithAuthorDto | null = null;\r\n data: PagedResultDto<CommentWithAuthorDto> = { items: [], totalCount: 0 };\r\n\r\n readonly list = inject(ListService<CommentGetListInput>);\r\n readonly commentEntityService = inject(CommentEntityService);\r\n\r\n private commentService = inject(CommentAdminService);\r\n private route = inject(ActivatedRoute);\r\n private router = inject(Router);\r\n private fb = inject(FormBuilder);\r\n\r\n filterForm!: FormGroup;\r\n commentApproveStateOptions = commentApproveStateOptions;\r\n commentId!: string;\r\n requireApprovement: boolean;\r\n\r\n ngOnInit() {\r\n this.route.params.subscribe(params => {\r\n const id = params['id'];\r\n if (id) {\r\n this.commentId = id;\r\n this.loadComment(id);\r\n this.createFilterForm();\r\n this.hookToQuery();\r\n }\r\n });\r\n this.requireApprovement = this.commentEntityService.requireApprovement;\r\n }\r\n\r\n private createFilterForm() {\r\n this.filterForm = this.fb.group({\r\n creationStartDate: [null],\r\n creationEndDate: [null],\r\n author: [''],\r\n commentApproveState: [CommentApproveState.All],\r\n });\r\n }\r\n\r\n private loadComment(id: string) {\r\n this.commentService.get(id).subscribe(comment => {\r\n this.comment = comment;\r\n });\r\n }\r\n\r\n onFilter() {\r\n const formValue = this.filterForm.value;\r\n const filters: Partial<CommentGetListInput> = {\r\n author: formValue.author || undefined,\r\n commentApproveState: formValue.commentApproveState,\r\n repliedCommentId: this.commentId,\r\n creationStartDate: formValue.creationStartDate || undefined,\r\n creationEndDate: formValue.creationEndDate || undefined,\r\n };\r\n\r\n this.list.filter = filters as any;\r\n this.list.get();\r\n }\r\n\r\n private hookToQuery() {\r\n this.list\r\n .hookToQuery(query => {\r\n const filters = (this.list.filter as Partial<CommentGetListInput>) || {};\r\n const input: CommentGetListInput = {\r\n repliedCommentId: this.commentId,\r\n ...query,\r\n ...filters,\r\n };\r\n return this.commentService.getList(input);\r\n })\r\n .subscribe(res => (this.data = res));\r\n }\r\n\r\n navigateToReply(id: string) {\r\n this.router.navigate(['/cms/comments', id]);\r\n }\r\n}\r\n","<abp-page [title]=\"'CmsKit::Comments' | abpLocalization\">\r\n @if (comment) {\r\n <div class=\"card mb-4\">\r\n <div class=\"card-body\">\r\n <table class=\"table\">\r\n <tr>\r\n <td width=\"10%\">\r\n <b>{{ 'CmsKit::EntityType' | abpLocalization }}</b\r\n >:\r\n </td>\r\n <td>{{ comment.entityType }}</td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <b>{{ 'CmsKit::EntityId' | abpLocalization }}</b\r\n >:\r\n </td>\r\n <td>{{ comment.entityId }}</td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <b>{{ 'AbpIdentity::CreationTime' | abpLocalization }}</b\r\n >:\r\n </td>\r\n <td>{{ comment.creationTime | date }}</td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <b>{{ 'CmsKit::Username' | abpLocalization }}</b\r\n >:\r\n </td>\r\n <td>{{ comment.author?.name }}</td>\r\n </tr>\r\n @if (comment.repliedCommentId) {\r\n <tr>\r\n <td>\r\n <b>{{ 'CmsKit::ReplyTo' | abpLocalization }}</b\r\n >:\r\n </td>\r\n <td>\r\n <a (click)=\"navigateToReply(comment.repliedCommentId!)\" style=\"cursor: pointer\">\r\n {{ comment.repliedCommentId }}\r\n </a>\r\n </td>\r\n </tr>\r\n }\r\n <tr>\r\n <td class=\"align-text-top\">\r\n <b>{{ 'CmsKit::Text' | abpLocalization }}</b\r\n >:\r\n </td>\r\n <td>{{ comment.text }}</td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"card mb-4\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"filterForm\" (ngSubmit)=\"onFilter()\">\r\n <input type=\"hidden\" [value]=\"commentId\" />\r\n <div class=\"row\">\r\n <div class=\"col-lg-4 col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-6 col-md-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"creationStartDate\">\r\n {{ 'CmsKit::StartDate' | abpLocalization }}\r\n </label>\r\n <input\r\n id=\"creationStartDate\"\r\n formControlName=\"creationStartDate\"\r\n (click)=\"startDatePicker.open()\"\r\n (keyup.space)=\"startDatePicker.open()\"\r\n ngbDatepicker\r\n #startDatePicker=\"ngbDatepicker\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 col-md-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"creationEndDate\">\r\n {{ 'CmsKit::EndDate' | abpLocalization }}\r\n </label>\r\n <input\r\n id=\"creationEndDate\"\r\n formControlName=\"creationEndDate\"\r\n class=\"form-control\"\r\n ngbDatepicker\r\n #endDatePicker=\"ngbDatepicker\"\r\n (click)=\"endDatePicker.toggle()\"\r\n readonly\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-lg-4 col-md-12\">\r\n <abp-form-input\r\n formControlName=\"author\"\r\n [label]=\"'CmsKit::Username' | abpLocalization\"\r\n type=\"text\"\r\n />\r\n </div>\r\n @if (requireApprovement) {\r\n <div class=\"col-lg-2 col-md-12\">\r\n <div class=\"mb-3\">\r\n <label class=\"mb-1 form-label\" for=\"commentApproveState\">\r\n {{ 'CmsKit::CommentFilter:ApproveState' | abpLocalization }}\r\n </label>\r\n <select\r\n id=\"commentApproveState\"\r\n formControlName=\"commentApproveState\"\r\n class=\"form-control\"\r\n >\r\n @for (option of commentApproveStateOptions; track option.value) {\r\n <option [value]=\"option.value\">\r\n {{ 'CmsKit::CommentFilter:' + option.value | abpLocalization }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"col-lg-2 col-md-12\">\r\n <div class=\"d-grid gap-2\">\r\n <abp-button class=\"mt-md-4\" buttonType=\"Primary\" type=\"submit\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i>\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <h3>{{ 'CmsKit::RepliesToThisComment' | abpLocalization }}</h3>\r\n\r\n <div class=\"card\">\r\n <abp-extensible-table [data]=\"data.items\" [recordsTotal]=\"data.totalCount\" [list]=\"list\" />\r\n </div>\r\n</abp-page>\r\n","export const CMS_KIT_COMMENTS_REQUIRE_APPROVEMENT = 'CmsKit.Comments.RequireApprovement';\r\n","import { Component, OnInit, inject, Injector, input, output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormGroup } from '@angular/forms';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport {\r\n ExtensibleFormComponent,\r\n FormPropData,\r\n generateFormFromProps,\r\n} from '@abp/ng.components/extensible';\r\nimport {\r\n ModalComponent,\r\n ModalCloseDirective,\r\n ButtonComponent,\r\n ToasterService,\r\n} from '@abp/ng.theme.shared';\r\nimport { TagAdminService, TagDto, TagCreateDto, TagUpdateDto } from '@abp/ng.cms-kit/proxy';\r\n\r\nexport interface TagModalVisibleChange {\r\n visible: boolean;\r\n refresh: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'abp-tag-modal',\r\n templateUrl: './tag-modal.component.html',\r\n imports: [\r\n ExtensibleFormComponent,\r\n LocalizationPipe,\r\n ReactiveFormsModule,\r\n CommonModule,\r\n NgxValidateCoreModule,\r\n ModalComponent,\r\n ModalCloseDirective,\r\n ButtonComponent,\r\n ],\r\n})\r\nexport class TagModalComponent implements OnInit {\r\n private tagService = inject(TagAdminService);\r\n private injector = inject(Injector);\r\n private toasterService = inject(ToasterService);\r\n\r\n selected = input<TagDto>();\r\n sectionId = input<string>();\r\n visibleChange = output<TagModalVisibleChange>();\r\n\r\n form: FormGroup;\r\n\r\n ngOnInit() {\r\n this.buildForm();\r\n }\r\n\r\n private buildForm() {\r\n const data = new FormPropData(this.injector, this.selected());\r\n this.form = generateFormFromProps(data);\r\n }\r\n\r\n onVisibleChange(visible: boolean, refresh = false) {\r\n this.visibleChange.emit({ visible, refresh });\r\n }\r\n\r\n save() {\r\n if (!this.form.valid) {\r\n return;\r\n }\r\n\r\n let observable$ = this.tagService.create(this.form.value as TagCreateDto);\r\n\r\n const selectedTag = this.selected();\r\n const { id } = selectedTag || {};\r\n\r\n if (id) {\r\n observable$ = this.tagService.update(id, {\r\n ...selectedTag,\r\n ...this.form.value,\r\n } as TagUpdateDto);\r\n }\r\n\r\n observable$.subscribe(() => {\r\n this.onVisibleChange(false, true);\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n });\r\n }\r\n}\r\n","<abp-modal [visible]=\"true\" (visibleChange)=\"onVisibleChange($event)\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected()?.id ? 'AbpUi::Edit' : 'AbpUi::New') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n @if (form) {\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected()\" />\r\n </form>\r\n } @else {\r\n <div class=\"text-center\">\r\n <i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i>\r\n </div>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-outline-primary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n","import { Component, OnInit, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ListService, PagedResultDto, LocalizationPipe } from '@abp/ng.core';\r\nimport { ExtensibleTableComponent, EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\r\nimport { PageComponent } from '@abp/ng.components/page';\r\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\r\nimport { TagAdminService, TagGetListInput, TagDto, TagDefinitionDto } from '@abp/ng.cms-kit/proxy';\r\nimport { eCmsKitAdminComponents } from '../../../enums';\r\nimport { TagModalComponent, TagModalVisibleChange } from '../tag-modal/tag-modal.component';\r\n\r\n@Component({\r\n selector: 'abp-tag-list',\r\n templateUrl: './tag-list.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eCmsKitAdminComponents.Tags,\r\n },\r\n ],\r\n imports: [\r\n ExtensibleTableComponent,\r\n PageComponent,\r\n LocalizationPipe,\r\n FormsModule,\r\n CommonModule,\r\n TagModalComponent,\r\n ],\r\n})\r\nexport class TagListComponent implements OnInit {\r\n data: PagedResultDto<TagDto> = { items: [], totalCount: 0 };\r\n\r\n public readonly list = inject(ListService<TagGetListInput>);\r\n private tagService = inject(TagAdminService);\r\n private confirmationService = inject(ConfirmationService);\r\n\r\n filter = '';\r\n isModalVisible = false;\r\n selected?: TagDto;\r\n tagDefinitions: TagDefinitionDto[] = [];\r\n\r\n ngOnInit() {\r\n this.loadTagDefinitions();\r\n this.hookToQuery();\r\n }\r\n\r\n private loadTagDefinitions() {\r\n this.tagService.getTagDefinitions().subscribe(definitions => {\r\n this.tagDefinitions = definitions;\r\n });\r\n }\r\n\r\n onSearch() {\r\n this.list.filter = this.filter;\r\n this.list.get();\r\n }\r\n\r\n add() {\r\n this.selected = {} as TagDto;\r\n this.isModalVisible = true;\r\n }\r\n\r\n edit(id: string) {\r\n this.tagService.get(id).subscribe(tag => {\r\n this.selected = tag;\r\n this.isModalVisible = true;\r\n });\r\n }\r\n\r\n private hookToQuery() {\r\n this.list\r\n .hookToQuery(query => {\r\n let filters: Partial<TagGetListInput> = {};\r\n if (this.list.filter) {\r\n filters.filter = this.list.filter;\r\n }\r\n const input: TagGetListInput = {\r\n ...query,\r\n ...filters,\r\n };\r\n return this.tagService.getList(input);\r\n })\r\n .subscribe(res => {\r\n this.data = res;\r\n });\r\n }\r\n\r\n onVisibleModalChange(visibilityChange: TagModalVisibleChange) {\r\n if (visibilityChange.visible) {\r\n return;\r\n }\r\n if (visibilityChange.refresh) {\r\n this.list.get();\r\n }\r\n this.selected = null;\r\n this.isModalVisible = false;\r\n }\r\n\r\n delete(id: string, name: string) {\r\n this.confirmationService\r\n .warn('CmsKit::TagDeletionConfirmationMessage', 'AbpUi::AreYouSure', {\r\n messageLocalizationParams: [name],\r\n })\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.tagService.delete(id).subscribe(() => {\r\n this.list.get();\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","<abp-page [title]=\"'CmsKit::Tags' | abpLocalization\" [toolbar]=\"data.items\">\r\n <div class=\"card mb-4\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"filter\"\r\n (keyup.enter)=\"onSearch()\"\r\n />\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"onSearch()\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card\">\r\n <abp-extensible-table [data]=\"data.items\" [recordsTotal]=\"data.totalCount\" [list]=\"list\" />\r\n </div>\r\n\r\n @if (isModalVisible) {\r\n <abp-tag-modal [selected]=\"selected\" (visibleChange)=\"onVisibleModalChange($event)\" />\r\n }\r\n</abp-page>\r\n","import { Component, OnInit, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ListService, PagedResultDto, LocalizationPipe } from '@abp/ng.core';\r\nimport { ExtensibleTableComponent, EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\r\nimport { Confirmation, ConfirmationService, ToasterService } from '@abp/ng.theme.shared';\r\nimport { PageComponent } from '@abp/ng.components/page';\r\nimport { PageAdminService, GetPagesInputDto, PageDto } from '@abp/ng.cms-kit/proxy';\r\nimport { eCmsKitAdminComponents } from '../../../enums';\r\n\r\n@Component({\r\n selector: 'abp-page-list',\r\n templateUrl: './page-list.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eCmsKitAdminComponents.Pages,\r\n },\r\n ],\r\n imports: [ExtensibleTableComponent, PageComponent, LocalizationPipe, FormsModule, CommonModule],\r\n})\r\nexport class PageListComponent implements OnInit {\r\n data: PagedResultDto<PageDto> = { items: [], totalCount: 0 };\r\n\r\n public readonly list = inject(ListService<GetPagesInputDto>);\r\n private pageService = inject(PageAdminService);\r\n private confirmationService = inject(ConfirmationService);\r\n private toasterService = inject(ToasterService);\r\n\r\n filter = '';\r\n\r\n ngOnInit() {\r\n this.hookToQuery();\r\n }\r\n\r\n onSearch() {\r\n this.list.filter = this.filter;\r\n this.list.get();\r\n }\r\n\r\n private hookToQuery() {\r\n this.list\r\n .hookToQuery(query => {\r\n let filters: Partial<GetPagesInputDto> = {};\r\n if (this.list.filter) {\r\n filters.filter = this.list.filter;\r\n }\r\n const input: GetPagesInputDto = {\r\n ...query,\r\n ...filters,\r\n };\r\n return this.pageService.getList(input);\r\n })\r\n .subscribe(res => {\r\n this.data = res;\r\n });\r\n }\r\n\r\n delete(id: string) {\r\n this.confirmationService\r\n .warn('CmsKit::PageDeletionConfirmationMessage', 'AbpUi::AreYouSure', {\r\n yesText: 'AbpUi::Yes',\r\n cancelText: 'AbpUi::Cancel',\r\n })\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.pageService.delete(id).subscribe(() => {\r\n this.list.get();\r\n });\r\n }\r\n });\r\n }\r\n\r\n setAsHomePage(id: string, isHomePage: boolean) {\r\n this.pageService.setAsHomePage(id).subscribe(() => {\r\n this.list.get();\r\n if (isHomePage) {\r\n this.toasterService.warn('CmsKit::RemovedSettingAsHomePage');\r\n } else {\r\n this.toasterService.success('CmsKit::CompletedSettingAsHomePage');\r\n }\r\n });\r\n }\r\n}\r\n","<abp-page [title]=\"'CmsKit::Pages' | abpLocalization\" [toolbar]=\"data.items\">\r\n <div class=\"card mb-4\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"filter\"\r\n (keyup.enter)=\"onSearch()\"\r\n />\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"onSearch()\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card\">\r\n <abp-extensible-table [data]=\"data.items\" [recordsTotal]=\"data.totalCount\" [list]=\"list\" />\r\n </div>\r\n</abp-page>\r\n","import { Component, OnInit, inject, Injector, DestroyRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormGroup, FormControl } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport {\r\n ExtensibleFormComponent,\r\n FormPropData,\r\n generateFormFromProps,\r\n EXTENSIONS_IDENTIFIER,\r\n} from '@abp/ng.components/extensible';\r\nimport { PageComponent } from '@abp/ng.components/page';\r\nimport { ButtonComponent } from '@abp/ng.theme.shared';\r\nimport {\r\n ToastuiEditorComponent,\r\n CodeMirrorEditorComponent,\r\n prepareSlugFromControl,\r\n} from '@abp/ng.cms-kit';\r\nimport { PageAdminService, PageDto } from '@abp/ng.cms-kit/proxy';\r\nimport { eCmsKitAdminComponents } from '../../../enums';\r\nimport { PageFormService } from '../../../services';\r\n\r\n@Component({\r\n selector: 'abp-page-form',\r\n templateUrl: './page-form.component.html',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eCmsKitAdminComponents.PageForm,\r\n },\r\n ],\r\n imports: [\r\n ButtonComponent,\r\n CodeMirrorEditorComponent,\r\n ExtensibleFormComponent,\r\n PageComponent,\r\n ToastuiEditorComponent,\r\n LocalizationPipe,\r\n ReactiveFormsModule,\r\n CommonModule,\r\n NgxValidateCoreModule,\r\n NgbNavModule,\r\n ],\r\n})\r\nexport class PageFormComponent implements OnInit {\r\n private pageService = inject(PageAdminService);\r\n private injector = inject(Injector);\r\n private pageFormService = inject(PageFormService);\r\n private route = inject(ActivatedRoute);\r\n private destroyRef = inject(DestroyRef);\r\n\r\n form: FormGroup;\r\n page: PageDto | null = null;\r\n pageId: string | null = null;\r\n isEditMode = false;\r\n\r\n ngOnInit() {\r\n const id = this.route.snapshot.params['id'];\r\n if (id) {\r\n this.isEditMode = true;\r\n this.pageId = id;\r\n this.loadPage(id);\r\n } else {\r\n this.isEditMode = false;\r\n this.buildForm();\r\n }\r\n }\r\n\r\n private loadPage(id: string) {\r\n this.pageService.get(id).subscribe(page => {\r\n this.page = page;\r\n this.buildForm();\r\n });\r\n }\r\n\r\n private buildForm() {\r\n const data = new FormPropData(this.injector, this.page || {});\r\n const baseForm = generateFormFromProps(data);\r\n this.form = new FormGroup({\r\n ...baseForm.controls,\r\n content: new FormControl(this.page?.content || ''),\r\n script: new FormControl(this.page?.script || ''),\r\n style: new FormControl(this.page?.style || ''),\r\n });\r\n prepareSlugFromControl(this.form, 'title', 'slug', this.destroyRef);\r\n }\r\n\r\n private executeSaveOperation(operation: 'save' | 'draft' | 'publish') {\r\n if (this.isEditMode) {\r\n if (!this.page || !this.pageId) {\r\n return;\r\n }\r\n\r\n switch (operation) {\r\n case 'save':\r\n this.pageFormService.update(this.pageId, this.form, this.page).subscribe();\r\n break;\r\n case 'draft':\r\n this.pageFormService.updateAsDraft(this.pageId, this.form, this.page).subscribe();\r\n break;\r\n case 'publish':\r\n this.pageFormService.updateAndPublish(this.pageId, this.form, this.page).subscribe();\r\n break;\r\n }\r\n return;\r\n }\r\n\r\n switch (operation) {\r\n case 'save':\r\n this.pageFormService.create(this.form).subscribe();\r\n break;\r\n case 'draft':\r\n this.pageFormService.createAsDraft(this.form).subscribe();\r\n break;\r\n case 'publish':\r\n this.pageFormService.publish(this.form).subscribe();\r\n break;\r\n }\r\n }\r\n\r\n save() {\r\n this.executeSaveOperation('save');\r\n }\r\n\r\n saveAsDraft() {\r\n this.executeSaveOperation('draft');\r\n }\r\n\r\n publish() {\r\n this.executeSaveOperation('publish');\r\n }\r\n}\r\n","<abp-page [title]=\"'CmsKit::Pages' | abpLocalization\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n @if (form && (!isEditMode || page)) {\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <!-- Basic fields outside tabs -->\r\n <abp-extensible-form [selectedRecord]=\"page || {}\" />\r\n\r\n <!-- Tabs for Content, Script, and Style -->\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs mt-3\">\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'CmsKit::Content' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"mt-3\">\r\n <abp-toastui-editor formControlName=\"content\" />\r\n </div>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'CmsKit::Script' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"mt-3\">\r\n <abp-codemirror-editor formControlName=\"script\" />\r\n </div>\r\n </ng-template>\r\n </li>\r\n\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'CmsKit::Style' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"mt-3\">\r\n <abp-codemirror-editor formControlName=\"style\" />\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </form>\r\n } @else {\r\n <div class=\"text-center\">\r\n <i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"card-footer\">\r\n <div class=\"d-flex justify-content-start gap-2\">\r\n <button class=\"btn btn-secondary\" (click)=\"saveAsDraft()\" [disabled]=\"form?.invalid\">\r\n {{ 'CmsKit::SaveAsDraft' | abpLocalization }}\r\n </button>\r\n <abp-button (click)=\"publish()\" [disabled]=\"form?.invalid\">\r\n {{ 'CmsKit::Publish' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n","import { Component, OnInit, inject, Injector, input, output, DestroyRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormGroup } from '@angular/forms';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport {\r\n ExtensibleFormComponent,\r\n FormPropData,\r\n generateFormFromProps,\r\n} from '@abp/ng.components/extensible';\r\nimport {\r\n ModalComponent,\r\n ModalCloseDirective,\r\n ButtonComponent,\r\n ToasterService,\r\n} from '@abp/ng.theme.shared';\r\nimport { BlogAdminService, BlogDto, CreateBlogDto, UpdateBlogDto } from '@abp/ng.cms-kit/proxy';\r\nimport { prepareSlugFromControl } from '@abp/ng.cms-kit';\r\n\r\nexport interface BlogModalVisibleChange {\r\n visible: boolean;\r\n refresh: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'abp-blog-modal',\r\n templateUrl: './blog-modal.component.html',\r\n imports: [\r\n ExtensibleFormComponent,\r\n LocalizationPipe,\r\n ReactiveFormsModule,\r\n CommonModule,\r\n NgxValidateCoreModule,\r\n ModalComponent,\r\n ModalCloseDirective,\r\n ButtonComponent,\r\n ],\r\n})\r\nexport class BlogModalComponent implements OnInit {\r\n private blogService = inject(BlogAdminService);\r\n private injector = inject(Injector);\r\n private toasterService = inject(ToasterService);\r\n private destroyRef = inject(DestroyRef);\r\n\r\n selected = input<BlogDto>();\r\n visibleChange = output<BlogModalVisibleChange>();\r\n\r\n form: FormGroup;\r\n\r\n ngOnInit() {\r\n this.buildForm();\r\n }\r\n\r\n private buildForm() {\r\n const data = new FormPropData(this.injector, this.selected());\r\n this.form = generateFormFromProps(data);\r\n prepareSlugFromControl(this.form, 'name', 'slug', this.destroyRef);\r\n }\r\n\r\n onVisibleChange(visible: boolean, refresh = false) {\r\n this.visibleChange.emit({ visible, refresh });\r\n }\r\n\r\n save() {\r\n if (!this.form.valid) {\r\n return;\r\n }\r\n\r\n let observable$ = this.blogService.create(this.form.value as CreateBlogDto);\r\n\r\n const selectedBlog = this.selected();\r\n const { id } = selectedBlog || {};\r\n\r\n if (id) {\r\n observable$ = this.blogService.update(id, {\r\n ...selectedBlog,\r\n ...this.form.value,\r\n } as UpdateBlogDto);\r\n }\r\n\r\n observable$.subscribe(() => {\r\n this.onVisibleChange(false, true);\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n });\r\n }\r\n}\r\n","<abp-modal [visible]=\"true\" (visibleChange)=\"onVisibleChange($event)\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n {{ (selected()?.id ? 'AbpUi::Edit' : 'AbpUi::New') | abpLocalization }}\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n @if (form) {\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected()\" />\r\n </form>\r\n } @else {\r\n <div class=\"text-center\">\r\n <i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i>\r\n </div>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-outline-primary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n","import { Component, OnInit, inject, input, output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormArray, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { forkJoin } from 'rxjs';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport {\r\n ModalComponent,\r\n ModalCloseDirective,\r\n ButtonComponent,\r\n ToasterService,\r\n} from '@abp/ng.theme.shared';\r\nimport {\r\n BlogFeatureAdminService,\r\n BlogFeatureDto,\r\n BlogFeatureInputDto,\r\n} from '@abp/ng.cms-kit/proxy';\r\n\r\nexport interface BlogFeaturesModalVisibleChange {\r\n visible: boolean;\r\n refresh: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'abp-blog-features-modal',\r\n templateUrl: './blog-features-modal.component.html',\r\n imports: [\r\n LocalizationPipe,\r\n ReactiveFormsModule,\r\n CommonModule,\r\n NgxValidateCoreModule,\r\n ModalComponent,\r\n ModalCloseDirective,\r\n ButtonComponent,\r\n ],\r\n})\r\nexport class BlogFeaturesModalComponent implements OnInit {\r\n private blogFeatureService = inject(BlogFeatureAdminService);\r\n private fb = inject(FormBuilder);\r\n private toasterService = inject(ToasterService);\r\n\r\n blogId = input<string>();\r\n visibleChange = output<BlogFeaturesModalVisibleChange>();\r\n\r\n form: FormGroup;\r\n features: BlogFeatureDto[] = [];\r\n private initialFeatureStates: Map<string, boolean> = new Map();\r\n\r\n ngOnInit() {\r\n if (this.blogId()) {\r\n this.loadFeatures();\r\n }\r\n }\r\n\r\n private loadFeatures() {\r\n this.blogFeatureService.getList(this.blogId()!).subscribe(features => {\r\n this.features = features.sort((a, b) =>\r\n (a.featureName || '').localeCompare(b.featureName || ''),\r\n );\r\n // Store initial states\r\n this.initialFeatureStates = new Map(\r\n this.features.map(f => [f.featureName || '', f.isEnabled || false]),\r\n );\r\n this.buildForm();\r\n });\r\n }\r\n\r\n private buildForm() {\r\n const featureControls = this.features.map(feature =>\r\n this.fb.group({\r\n featureName: [feature.featureName],\r\n isEnabled: [feature.isEnabled],\r\n isAvailable: [(feature as any).isAvailable ?? true],\r\n }),\r\n );\r\n\r\n this.form = this.fb.group({\r\n features: this.fb.array(featureControls),\r\n });\r\n }\r\n\r\n get featuresFormArray(): FormArray {\r\n return this.form.get('features') as FormArray;\r\n }\r\n\r\n onVisibleChange(visible: boolean, refresh = false) {\r\n this.visibleChange.emit({ visible, refresh });\r\n }\r\n\r\n save() {\r\n if (!this.form.valid || !this.blogId()) {\r\n return;\r\n }\r\n\r\n const featuresArray = this.form.get('features') as FormArray;\r\n\r\n // Only save features that have changed\r\n const changedFeatures: BlogFeatureInputDto[] = featuresArray.controls\r\n .map(control => {\r\n const featureName = control.get('featureName')?.value;\r\n const isEnabled = control.get('isEnabled')?.value;\r\n const initialIsEnabled = this.initialFeatureStates.get(featureName);\r\n\r\n // Only include if the value has changed\r\n if (featureName && initialIsEnabled !== isEnabled) {\r\n return {\r\n featureName,\r\n isEnabled,\r\n };\r\n }\r\n return null;\r\n })\r\n .filter((input): input is BlogFeatureInputDto => input !== null);\r\n\r\n // If no features changed, just close the modal\r\n if (changedFeatures.length === 0) {\r\n this.onVisibleChange(false, false);\r\n return;\r\n }\r\n\r\n // Save only changed features\r\n const saveObservables = changedFeatures.map(input =>\r\n this.blogFeatureService.set(this.blogId()!, input),\r\n );\r\n\r\n // Use forkJoin to save all changed features at once\r\n forkJoin(saveObservables).subscribe({\r\n next: () => {\r\n this.onVisibleChange(false, true);\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n },\r\n });\r\n }\r\n}\r\n","<abp-modal [visible]=\"true\" (visibleChange)=\"onVisibleChange($event)\">\r\n <ng-template #abpHeader>\r\n <h3>{{ 'CmsKit::Features' | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n @if (form) {\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <div formArrayName=\"features\">\r\n @for (featureControl of featuresFormArray.controls; track $index; let i = $index) {\r\n <div class=\"mb-3\" [formGroupName]=\"i\">\r\n @let isAvailable = featureControl.get('isAvailable')?.value;\r\n @if (isAvailable) {\r\n <div class=\"form-check\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n id=\"feature-{{ i }}\"\r\n formControlName=\"isEnabled\"\r\n />\r\n <label class=\"form-check-label\" for=\"feature-{{ i }}\">\r\n {{ 'CmsKit::' + features[i]?.featureName | abpLocalization }}\r\n </label>\r\n </div>\r\n } @else {\r\n <div\r\n data-toggle=\"tooltip\"\r\n [title]=\"'CmsKit::BlogFeatureNotAvailable' | abpLocalization\"\r\n >\r\n <div class=\"form-check\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input\"\r\n id=\"feature-{{ i }}\"\r\n formControlName=\"isEnabled\"\r\n disabled\r\n />\r\n <label class=\"form-check-label\" for=\"feature-{{ i }}\">\r\n {{ 'CmsKit::' + features[i]?.featureName | abpLocalization }}\r\n </label>\r\n </div>\r\n </div>\r\n }\r\n <input type=\"hidden\" formControlName=\"featureName\" />\r\n <input type=\"hidden\" formControlName=\"isAvailable\" />\r\n </div>\r\n }\r\n </div>\r\n </form>\r\n } @else {\r\n <div class=\"text-center\">\r\n <i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i>\r\n </div>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-outline-primary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n","import { Component, OnInit, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ListService, PagedResultDto, LocalizationPipe } from '@abp/ng.core';\r\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\r\nimport { ExtensibleTableComponent, EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\r\nimport { PageComponent } from '@abp/ng.components/page';\r\nimport { BlogAdminService, BlogGetListInput, BlogDto } from '@abp/ng.cms-kit/proxy';\r\nimport { eCmsKitAdminComponents } from '../../../enums';\r\nimport { BlogModalComponent, BlogModalVisibleChange } from '../blog-modal/blog-modal.component';\r\nimport {\r\n BlogFeaturesModalComponent,\r\n BlogFeaturesModalVisibleChange,\r\n} from '../blog-features-modal/blog-features-modal.component';\r\n\r\n@Component({\r\n selector: 'abp-blog-list',\r\n templateUrl: './blog-list.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eCmsKitAdminComponents.Blogs,\r\n },\r\n ],\r\n imports: [\r\n ExtensibleTableComponent,\r\n PageComponent,\r\n LocalizationPipe,\r\n FormsModule,\r\n CommonModule,\r\n BlogModalComponent,\r\n BlogFeaturesModalComponent,\r\n ],\r\n})\r\nexport class BlogListComponent implements OnInit {\r\n data: PagedResultDto<BlogDto> = { items: [], totalCount: 0 };\r\n\r\n public readonly list = inject(ListService<BlogGetListInput>);\r\n private blogService = inject(BlogAdminService);\r\n private confirmationService = inject(ConfirmationService);\r\n\r\n filter = '';\r\n isModalVisible = false;\r\n selected?: BlogDto;\r\n isFeaturesModalVisible = false;\r\n selectedBlogId?: string;\r\n\r\n ngOnInit() {\r\n this.hookToQuery();\r\n }\r\n\r\n onSearch() {\r\n this.list.filter = this.filter;\r\n this.list.get();\r\n }\r\n\r\n add() {\r\n this.selected = {} as BlogDto;\r\n this.isModalVisible = true;\r\n }\r\n\r\n edit(id: string) {\r\n this.blogService.get(id).subscribe(blog => {\r\n this.selected = blog;\r\n this.isModalVisible = true;\r\n });\r\n }\r\n\r\n delete(id: string, name: string) {\r\n this.confirmationService\r\n .warn('CmsKit::BlogDeletionConfirmationMessage', 'AbpUi::AreYouSure', {\r\n messageLocalizationParams: [name],\r\n })\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.blogService.delete(id).subscribe(() => {\r\n this.list.get();\r\n });\r\n }\r\n });\r\n }\r\n\r\n openFeatures(id: string) {\r\n this.selectedBlogId = id;\r\n this.isFeaturesModalVisible = true;\r\n }\r\n\r\n private hookToQuery() {\r\n this.list\r\n .hookToQuery(query => {\r\n let filters: Partial<BlogGetListInput> = {};\r\n if (this.list.filter) {\r\n filters.filter = this.list.filter;\r\n }\r\n const input: BlogGetListInput = {\r\n ...query,\r\n ...filters,\r\n };\r\n return this.blogService.getList(input);\r\n })\r\n .subscribe(res => {\r\n this.data = res;\r\n });\r\n }\r\n\r\n onVisibleModalChange(visibilityChange: BlogModalVisibleChange) {\r\n if (visibilityChange.visible) {\r\n return;\r\n }\r\n if (visibilityChange.refresh) {\r\n this.list.get();\r\n }\r\n this.selected = null;\r\n this.isModalVisible = false;\r\n }\r\n\r\n onFeaturesModalChange(visibilityChange: BlogFeaturesModalVisibleChange) {\r\n if (visibilityChange.visible) {\r\n return;\r\n }\r\n if (visibilityChange.refresh) {\r\n this.list.get();\r\n }\r\n this.selectedBlogId = null;\r\n this.isFeaturesModalVisible = false;\r\n }\r\n}\r\n","<abp-page [title]=\"'CmsKit::Blogs' | abpLocalization\" [toolbar]=\"data.items\">\r\n <div class=\"card\">\r\n <abp-extensible-table [data]=\"data.items\" [recordsTotal]=\"data.totalCount\" [list]=\"list\" />\r\n </div>\r\n\r\n @if (isModalVisible) {\r\n <abp-blog-modal [selected]=\"selected\" (visibleChange)=\"onVisibleModalChange($event)\" />\r\n }\r\n\r\n @if (isFeaturesModalVisible) {\r\n <abp-blog-features-modal\r\n [blogId]=\"selectedBlogId\"\r\n (visibleChange)=\"onFeaturesModalChange($event)\"\r\n />\r\n }\r\n</abp-page>\r\n","import { Component, OnInit, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ListService, PagedResultDto, LocalizationPipe } from '@abp/ng.core';\r\nimport { ExtensibleTableComponent, EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\r\nimport { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';\r\nimport { PageComponent } from '@abp/ng.components/page';\r\nimport {\r\n BlogPostAdminService,\r\n BlogPostGetListInput,\r\n BlogPostListDto,\r\n BlogPostStatus,\r\n} from '@abp/ng.cms-kit/proxy';\r\nimport { eCmsKitAdminComponents } from '../../../enums';\r\n\r\n@Component({\r\n selector: 'abp-blog-post-list',\r\n templateUrl: './blog-post-list.component.html',\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eCmsKitAdminComponents.BlogPosts,\r\n },\r\n ],\r\n imports: [ExtensibleTableComponent, PageComponent, LocalizationPipe, FormsModule, CommonModule],\r\n})\r\nexport class BlogPostListComponent implements OnInit {\r\n data: PagedResultDto<BlogPostListDto> = { items: [], totalCount: 0 };\r\n\r\n public readonly list = inject(ListService<BlogPostGetListInput>);\r\n private blogPostService = inject(BlogPostAdminService);\r\n private confirmationService = inject(ConfirmationService);\r\n\r\n filter = '';\r\n statusFilter: BlogPostStatus | null = null;\r\n BlogPostStatus = BlogPostStatus;\r\n\r\n ngOnInit() {\r\n this.hookToQuery();\r\n }\r\n\r\n onSearch() {\r\n this.list.filter = this.filter;\r\n this.list.get();\r\n }\r\n\r\n onStatusChange() {\r\n this.list.get();\r\n }\r\n\r\n private hookToQuery() {\r\n this.list\r\n .hookToQuery(query => {\r\n let filters: Partial<BlogPostGetListInput> = {};\r\n if (this.list.filter) {\r\n filters.filter = this.list.filter;\r\n }\r\n if (this.statusFilter !== null) {\r\n filters.status = this.statusFilter;\r\n }\r\n const input: BlogPostGetListInput = {\r\n ...query,\r\n ...filters,\r\n };\r\n return this.blogPostService.getList(input);\r\n })\r\n .subscribe(res => (this.data = res));\r\n }\r\n\r\n delete(id: string, title: string) {\r\n this.confirmationService\r\n .warn('CmsKit::BlogPostDeletionConfirmationMessage', 'AbpUi::AreYouSure', {\r\n yesText: 'AbpUi::Yes',\r\n cancelText: 'AbpUi::Cancel',\r\n messageLocalizationParams: [title],\r\n })\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.blogPostService.delete(id).subscribe(() => {\r\n this.list.get();\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","<abp-page [title]=\"'CmsKit::BlogPosts' | abpLocalization\" [toolbar]=\"data.items\">\r\n <div class=\"card mb-4\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-2\">\r\n <select class=\"form-select\" [(ngModel)]=\"statusFilter\" (change)=\"onStatusChange()\">\r\n <option [ngValue]=\"null\">{{ 'CmsKit::AllPosts' | abpLocalization }}</option>\r\n <option [ngValue]=\"BlogPostStatus.Draft\">\r\n {{ 'CmsKit::' + 'CmsKit.BlogPost.Status.0' | abpLocalization }}\r\n </option>\r\n <option [ngValue]=\"BlogPostStatus.Published\">\r\n {{ 'CmsKit::' + 'CmsKit.BlogPost.Status.1' | abpLocalization }}\r\n </option>\r\n <option [ngValue]=\"BlogPostStatus.WaitingForReview\">\r\n {{ 'CmsKit::' + 'CmsKit.BlogPost.Status.2' | abpLocalization }}\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"col-10\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"search\"\r\n class=\"form-control\"\r\n [placeholder]=\"'AbpUi::PagerSearch' | abpLocalization\"\r\n [(ngModel)]=\"filter\"\r\n (keyup.enter)=\"onSearch()\"\r\n />\r\n <button class=\"btn btn-primary\" type=\"button\" (click)=\"onSearch()\">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card\">\r\n <abp-extensible-table [data]=\"data.items\" [recordsTotal]=\"data.totalCount\" [list]=\"list\" />\r\n </div>\r\n</abp-page>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Component, OnInit, inject, Injector, DestroyRef } from '@angular/core';\r\nimport { ReactiveFormsModule, FormsModule, FormGroup, FormControl } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { forkJoin, of } from 'rxjs';\r\nimport { switchMap, tap } from 'rxjs/operators';\r\nimport { LocalizationPipe, RestService } from '@abp/ng.core';\r\nimport {\r\n ExtensibleFormComponent,\r\n FormPropData,\r\n generateFormFromProps,\r\n EXTENSIONS_IDENTIFIER,\r\n} from '@abp/ng.components/extensible';\r\nimport { PageComponent } from '@abp/ng.components/page';\r\nimport { ButtonComponent } from '@abp/ng.theme.shared';\r\nimport { ToastuiEditorComponent, prepareSlugFromControl } from '@abp/ng.cms-kit';\r\nimport {\r\n BlogPostAdminService,\r\n BlogPostDto,\r\n MediaDescriptorAdminService,\r\n EntityTagAdminService,\r\n CreateMediaInputWithStream,\r\n TagDto,\r\n BlogFeatureDto,\r\n} from '@abp/ng.cms-kit/proxy';\r\nimport { eCmsKitAdminComponents } from '../../../enums';\r\nimport { BlogPostFormService } from '../../../services';\r\n\r\n@Component({\r\n selector: 'abp-blog-post-form',\r\n templateUrl: './blog-post-form.component.html',\r\n providers: [\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eCmsKitAdminComponents.BlogPostForm,\r\n },\r\n ],\r\n imports: [\r\n ButtonComponent,\r\n ExtensibleFormComponent,\r\n PageComponent,\r\n ToastuiEditorComponent,\r\n LocalizationPipe,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n CommonModule,\r\n NgxValidateCoreModule,\r\n ],\r\n})\r\nexport class BlogPostFormComponent implements OnInit {\r\n private blogPostService = inject(BlogPostAdminService);\r\n private mediaService = inject(MediaDescriptorAdminService);\r\n private entityTagService = inject(EntityTagAdminService);\r\n private restService = inject(RestService);\r\n private injector = inject(Injector);\r\n private blogPostFormService = inject(BlogPostFormService);\r\n private route = inject(ActivatedRoute);\r\n private destroyRef = inject(DestroyRef);\r\n\r\n form: FormGroup;\r\n blogPost: BlogPostDto | null = null;\r\n blogPostId: string | null = null;\r\n isEditMode = false;\r\n coverImageFile: File | null = null;\r\n coverImagePreview: string | null = null;\r\n tags: string = '';\r\n isTagsEnabled = true;\r\n\r\n readonly BLOG_POST_ENTITY_TYPE = 'BlogPost';\r\n\r\n ngOnInit() {\r\n const id = this.route.snapshot.params['id'];\r\n if (id) {\r\n this.isEditMode = true;\r\n this.blogPostId = id;\r\n this.loadBlogPost(id);\r\n } else {\r\n this.isEditMode = false;\r\n this.buildForm();\r\n }\r\n }\r\n\r\n private loadBlogPost(id: string) {\r\n this.blogPostService.get(id).subscribe(blogPost => {\r\n this.blogPost = blogPost;\r\n if (blogPost.coverImageMediaId) {\r\n this.coverImagePreview = `/api/cms-kit/media/${blogPost.coverImageMediaId}`;\r\n }\r\n this.buildForm();\r\n this.loadTags(id);\r\n });\r\n }\r\n\r\n private loadTags(blogPostId: string) {\r\n // TODO: use the public service to load the tags\r\n this.restService\r\n .request<void, TagDto[]>({\r\n method: 'GET',\r\n url: `/api/cms-kit-public/tags/${this.BLOG_POST_ENTITY_TYPE}/${blogPostId}`,\r\n })\r\n .subscribe(tags => {\r\n if (tags && tags.length > 0) {\r\n this.tags = tags.map(t => t.name || '').join(', ');\r\n }\r\n });\r\n }\r\n\r\n private buildForm() {\r\n const data = new FormPropData(this.injector, this.blogPost || {});\r\n const baseForm = generateFormFromProps(data);\r\n this.form = new FormGroup({\r\n ...baseForm.controls,\r\n content: new FormControl(this.blogPost?.content || ''),\r\n coverImageMediaId: new FormControl(this.blogPost?.coverImageMediaId || null),\r\n });\r\n prepareSlugFromControl(this.form, 'title', 'slug', this.destroyRef);\r\n\r\n // Check if tags feature is enabled for the blog\r\n const blogId = this.form.get('blogId')?.value || this.blogPost?.blogId;\r\n if (blogId) {\r\n this.checkTagsFeature(blogId);\r\n }\r\n\r\n // Listen for blog selection changes\r\n this.form\r\n .get('blogId')\r\n ?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(blogId => {\r\n if (blogId) {\r\n this.checkTagsFeature(blogId);\r\n }\r\n });\r\n }\r\n\r\n private checkTagsFeature(blogId: string) {\r\n this.restService\r\n .request<void, BlogFeatureDto>({\r\n method: 'GET',\r\n url: `/api/cms-kit/blogs/${blogId}/features/CmsKit.Tags`,\r\n })\r\n .subscribe(feature => {\r\n const { isEnabled } = feature || {};\r\n this.isTagsEnabled = isEnabled;\r\n });\r\n }\r\n\r\n onCoverImageChange(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n if (input.files && input.files[0]) {\r\n this.coverImageFile = input.files[0];\r\n const reader = new FileReader();\r\n reader.onload = (e: any) => {\r\n this.coverImagePreview = e.target.result;\r\n };\r\n reader.readAsDataURL(this.coverImageFile);\r\n }\r\n }\r\n\r\n removeCoverImage() {\r\n this.coverImageFile = null;\r\n this.coverImagePreview = null;\r\n this.form.patchValue({ coverImageMediaId: null });\r\n }\r\n\r\n private uploadCoverImage() {\r\n if (!this.coverImageFile) {\r\n return of(this.form.value.coverImageMediaId || null);\r\n }\r\n\r\n const input: CreateMediaInputWithStream = {\r\n name: this.coverImageFile.name,\r\n file: this.coverImageFile as any,\r\n };\r\n\r\n return this.mediaService.create('blogpost', input).pipe(\r\n tap(result => {\r\n this.form.patchValue({ coverImageMediaId: result.id });\r\n }),\r\n switchMap(result => of(result.id || null)),\r\n );\r\n }\r\n\r\n private setTags(blogPostId: string) {\r\n if (!this.tags || !this.tags.trim()) {\r\n return of(null);\r\n }\r\n\r\n const tagArray = this.tags\r\n .split(',')\r\n .map(t => t.trim())\r\n .filter(t => t.length > 0);\r\n\r\n if (tagArray.length === 0) {\r\n return of(null);\r\n }\r\n\r\n return this.entityTagService.setEntityTags({\r\n entityType: this.BLOG_POST_ENTITY_TYPE,\r\n entityId: blogPostId,\r\n tags: tagArray,\r\n });\r\n }\r\n\r\n private executeSaveOperation(operation: 'save' | 'draft' | 'publish' | 'sendToReview') {\r\n // First upload cover image if selected\r\n this.uploadCoverImage()\r\n .pipe(\r\n tap(coverImageMediaId => {\r\n if (coverImageMediaId) {\r\n this.form.patchValue({ coverImageMediaId });\r\n }\r\n }),\r\n switchMap(() => {\r\n if (this.isEditMode) {\r\n if (!this.blogPost || !this.blogPostId) {\r\n return of(null);\r\n }\r\n return this.blogPostFormService.update(this.blogPostId, this.form, this.blogPost);\r\n }\r\n\r\n switch (operation) {\r\n case 'save':\r\n case 'draft':\r\n return this.blogPostFormService.createAsDraft(this.form);\r\n case 'publish':\r\n return this.blogPostFormService.createAndPublish(this.form);\r\n case 'sendToReview':\r\n return this.blogPostFormService.createAndSendToReview(this.form);\r\n default:\r\n return of(null);\r\n }\r\n }),\r\n switchMap(result => {\r\n if (!result || !result.id) {\r\n return of(null);\r\n }\r\n // Set tags after blog post is created/updated\r\n return forkJoin([of(result), this.setTags(result.id)]);\r\n }),\r\n )\r\n .subscribe();\r\n }\r\n\r\n saveAsDraft() {\r\n this.executeSaveOperation('draft');\r\n }\r\n\r\n publish() {\r\n this.executeSaveOperation('publish');\r\n }\r\n\r\n sendToReview() {\r\n this.executeSaveOperation('sendToReview');\r\n }\r\n}\r\n","<abp-page [title]=\"'CmsKit::BlogPosts' | abpLocalization\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n @if (form && (!isEditMode || blogPost)) {\r\n <form [formGroup]=\"form\" (ngSubmit)=\"saveAsDraft()\" validateOnSubmit>\r\n <!-- Cover Image -->\r\n <div class=\"mb-3\">\r\n @if (coverImagePreview) {\r\n <div class=\"mb-2\">\r\n <img [src]=\"coverImagePreview\" height=\"120\" alt=\"Cover Image\" />\r\n <br />\r\n <button type=\"button\" class=\"btn btn-link p-0\" (click)=\"removeCoverImage()\">\r\n {{ 'CmsKit::RemoveCoverImage' | abpLocalization }}\r\n </button>\r\n <br />\r\n </div>\r\n }\r\n <label class=\"form-label\"\r\n >{{ 'CmsKit::CoverImage' | abpLocalization }}\r\n <span class=\"badge text-bg-light\">16:9</span></label\r\n >\r\n <input\r\n type=\"file\"\r\n class=\"form-control\"\r\n accept=\"image/*\"\r\n (change)=\"onCoverImageChange($event)\"\r\n />\r\n </div>\r\n\r\n <!-- Basic fields -->\r\n <abp-extensible-form [selectedRecord]=\"blogPost || {}\" />\r\n\r\n <!-- Content editor -->\r\n <div class=\"mt-3\">\r\n <label class=\"form-label\">{{ 'CmsKit::Content' | abpLocalization }}</label>\r\n <abp-toastui-editor formControlName=\"content\" />\r\n </div>\r\n </form>\r\n\r\n <!-- Tags Editor -->\r\n @if (isTagsEnabled) {\r\n <hr />\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">{{ 'CmsKit::Tags' | abpLocalization }}</label>\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n [(ngModel)]=\"tags\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n [placeholder]=\"'CmsKit::TagsHelpText' | abpLocalization\"\r\n />\r\n <div class=\"form-text\">{{ 'CmsKit::TagsHelpText' | abpLocalization }}</div>\r\n </div>\r\n }\r\n } @else {\r\n <div class=\"text-center\">\r\n <i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"card-footer\">\r\n <div class=\"d-flex justify-content-start gap-2\">\r\n <button class=\"btn btn-secondary\" (click)=\"saveAsDraft()\" [disabled]=\"form?.invalid\">\r\n {{ 'CmsKit::SaveAsDraft' | abpLocalization }}\r\n </button>\r\n @if (isEditMode) {\r\n <abp-button (click)=\"publish()\" [disabled]=\"form?.invalid\">\r\n {{ 'CmsKit::Publish' | abpLocalization }}\r\n </abp-button>\r\n } @else {\r\n <abp-button (click)=\"publish()\" [disabled]=\"form?.invalid\">\r\n {{ 'CmsKit::Publish' | abpLocalization }}\r\n </abp-button>\r\n <abp-button (click)=\"sendToReview()\" [disabled]=\"form?.invalid\">\r\n {{ 'CmsKit::SendToReviewToPublish' | abpLocalization }}\r\n </abp-button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n","import { Component, OnInit, inject, Injector, input, output, DestroyRef } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormGroup, FormControl, FormsModule } from '@angular/forms';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { NgbNavModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { forkJoin, Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport {\r\n ExtensibleFormComponent,\r\n FormPropData,\r\n generateFormFromProps,\r\n} from '@abp/ng.components/extensible';\r\nimport {\r\n ModalComponent,\r\n ModalCloseDirective,\r\n ButtonComponent,\r\n ToasterService,\r\n} from '@abp/ng.theme.shared';\r\nimport { dasharize } from '@abp/ng.cms-kit';\r\nimport {\r\n MenuItemAdminService,\r\n MenuItemDto,\r\n MenuItemWithDetailsDto,\r\n MenuItemCreateInput,\r\n MenuItemUpdateInput,\r\n PageLookupDto,\r\n} from '@abp/ng.cms-kit/proxy';\r\n\r\nexport interface MenuItemModalVisibleChange {\r\n visible: boolean;\r\n refresh: boolean;\r\n}\r\n\r\n// Constants\r\nconst PAGE_LOOKUP_MAX_RESULT = 1000;\r\nconst PAGE_SEARCH_MAX_RESULT = 100;\r\nconst PAGE_SEARCH_DEBOUNCE_MS = 300;\r\nconst TABS = {\r\n URL: 'url',\r\n PAGE: 'page',\r\n} as const;\r\n\r\n@Component({\r\n selector: 'abp-menu-item-modal',\r\n templateUrl: './menu-item-modal.component.html',\r\n imports: [\r\n ExtensibleFormComponent,\r\n LocalizationPipe,\r\n ReactiveFormsModule,\r\n CommonModule,\r\n NgxValidateCoreModule,\r\n ModalComponent,\r\n ModalCloseDirective,\r\n ButtonComponent,\r\n NgbNavModule,\r\n NgbDropdownModule,\r\n FormsModule,\r\n ],\r\n styles: [\r\n `\r\n .dropdown-toggle::after {\r\n display: none !important;\r\n }\r\n `,\r\n ],\r\n})\r\nexport class MenuItemModalComponent implements OnInit {\r\n // Injected services\r\n private readonly menuItemService = inject(MenuItemAdminService);\r\n private readonly injector = inject(Injector);\r\n private readonly toasterService = inject(ToasterService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n // Inputs/Outputs\r\n readonly selected = input<MenuItemWithDetailsDto | MenuItemDto>();\r\n readonly parentId = input<string | null>();\r\n readonly visible = input<boolean>(true);\r\n readonly visibleChange = output<MenuItemModalVisibleChange>();\r\n\r\n // Form state\r\n form: FormGroup;\r\n activeTab: string = TABS.URL;\r\n\r\n // Page selection state\r\n pages: PageLookupDto[] = [];\r\n selectedPage: PageLookupDto | null = null;\r\n pageSearchText: string = '';\r\n filteredPages: PageLookupDto[] = [];\r\n\r\n // Search subject for debouncing\r\n private readonly pageSearchSubject = new Subject<string>();\r\n\r\n get isPageSelected(): boolean {\r\n return !!this.form?.get('pageId')?.value;\r\n }\r\n\r\n ngOnInit() {\r\n this.setupPageSearch();\r\n this.initializeComponent();\r\n }\r\n\r\n /**\r\n * Sets up debounced page search functionality\r\n */\r\n private setupPageSearch(): void {\r\n this.pageSearchSubject\r\n .pipe(\r\n debounceTime(PAGE_SEARCH_DEBOUNCE_MS),\r\n distinctUntilChanged(),\r\n switchMap(searchText => {\r\n if (!searchText?.trim()) {\r\n // Show all pages when search is cleared\r\n return this.menuItemService.getPageLookup({ maxResultCount: PAGE_LOOKUP_MAX_RESULT });\r\n }\r\n return this.menuItemService.getPageLookup({\r\n filter: searchText.trim(),\r\n maxResultCount: PAGE_SEARCH_MAX_RESULT,\r\n });\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe({\r\n next: result => {\r\n this.filteredPages = result.items || [];\r\n },\r\n error: () => {\r\n this.filteredPages = [];\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Initializes the component based on create or edit mode\r\n */\r\n private initializeComponent(): void {\r\n const selectedItem = this.selected();\r\n\r\n if (selectedItem?.id) {\r\n this.loadMenuItemForEdit(selectedItem.id);\r\n } else {\r\n this.loadPagesForCreate();\r\n this.buildForm();\r\n }\r\n }\r\n\r\n /**\r\n * Loads menu item data and pages for edit mode\r\n */\r\n private loadMenuItemForEdit(menuItemId: string): void {\r\n forkJoin({\r\n menuItem: this.menuItemService.get(menuItemId),\r\n pages: this.menuItemService.getPageLookup({ maxResultCount: PAGE_LOOKUP_MAX_RESULT }),\r\n })\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: ({ menuItem, pages }) => {\r\n this.pages = pages.items || [];\r\n this.filteredPages = this.pages;\r\n this.buildForm(menuItem);\r\n this.initializePageSelection(menuItem);\r\n },\r\n error: () => {\r\n this.toasterService.error('AbpUi::ErrorMessage');\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Loads pages for create mode\r\n */\r\n private loadPagesForCreate(): void {\r\n this.menuItemService\r\n .getPageLookup({ maxResultCount: PAGE_LOOKUP_MAX_RESULT })\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: result => {\r\n this.pages = result.items || [];\r\n this.filteredPages = this.pages;\r\n },\r\n error: () => {\r\n this.toasterService.error('AbpUi::ErrorMessage');\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Initializes page selection when editing a menu item with a page\r\n */\r\n private initializePageSelection(menuItem: MenuItemWithDetailsDto | MenuItemDto): void {\r\n if (menuItem.pageId) {\r\n this.activeTab = TABS.PAGE;\r\n this.selectedPage = this.pages.find(p => p.id === menuItem.pageId) || null;\r\n\r\n const url = this.selectedPage\r\n ? this.generateUrlFromPage(this.selectedPage)\r\n : menuItem.url || '';\r\n this.form.patchValue({ pageId: menuItem.pageId, url }, { emitEvent: false });\r\n this.pageSearchText = this.selectedPage?.title || '';\r\n } else if (menuItem.url) {\r\n this.activeTab = TABS.URL;\r\n this.form.patchValue({ url: menuItem.url, pageId: null }, { emitEvent: false });\r\n }\r\n }\r\n\r\n /**\r\n * Generates a URL from a page's slug or title\r\n */\r\n private generateUrlFromPage(page: PageLookupDto): string {\r\n if (!page) return '';\r\n\r\n const source = page.slug || page.title;\r\n if (!source) return '';\r\n\r\n return '/' + dasharize(source);\r\n }\r\n\r\n /**\r\n * Handles page search input changes\r\n */\r\n onPageSearchChange(searchText: string): void {\r\n this.pageSearchText = searchText;\r\n if (!searchText?.trim()) {\r\n this.filteredPages = this.pages;\r\n return;\r\n }\r\n this.pageSearchSubject.next(searchText);\r\n }\r\n\r\n /**\r\n * Handles dropdown open event\r\n */\r\n onDropdownOpen(): void {\r\n if (!this.pageSearchText?.trim()) {\r\n this.filteredPages = this.pages;\r\n }\r\n }\r\n\r\n /**\r\n * Handles page selection from dropdown\r\n */\r\n selectPage(page: PageLookupDto): void {\r\n if (!page) return;\r\n\r\n this.selectedPage = page;\r\n const url = this.generateUrlFromPage(page);\r\n\r\n this.form.patchValue({ pageId: page.id, url }, { emitEvent: false });\r\n this.pageSearchText = page.title || '';\r\n }\r\n\r\n /**\r\n * Clears the selected page\r\n */\r\n clearPageSelection(): void {\r\n this.form.patchValue({ pageId: null }, { emitEvent: false });\r\n this.selectedPage = null;\r\n this.pageSearchText = '';\r\n this.filteredPages = this.pages;\r\n }\r\n\r\n /**\r\n * Builds the reactive form for menu item creation/editing\r\n */\r\n private buildForm(menuItem?: MenuItemWithDetailsDto | MenuItemDto): void {\r\n const data = new FormPropData(this.injector, menuItem || {});\r\n const baseForm = generateFormFromProps(data);\r\n const parentId = this.parentId() || menuItem?.parentId || null;\r\n\r\n this.form = new FormGroup({\r\n ...baseForm.controls,\r\n url: new FormControl(menuItem?.url || ''),\r\n pageId: new FormControl(menuItem?.pageId || null),\r\n parentId: new FormControl(parentId),\r\n });\r\n\r\n this.loadAvailableOrder(parentId, menuItem?.id);\r\n }\r\n\r\n /**\r\n * Loads the available menu order for new menu items\r\n */\r\n private loadAvailableOrder(parentId: string | null, menuItemId?: string): void {\r\n if (menuItemId) return; // Only needed for new items\r\n\r\n const order$ = parentId\r\n ? this.menuItemService.getAvailableMenuOrder(parentId)\r\n : this.menuItemService.getAvailableMenuOrder();\r\n\r\n order$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\r\n next: order => {\r\n this.form.patchValue({ order });\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Handles modal visibility changes\r\n */\r\n onVisibleChange(visible: boolean, refresh = false): void {\r\n this.visibleChange.emit({ visible, refresh });\r\n }\r\n\r\n /**\r\n * Handles tab changes\r\n */\r\n onTabChange(activeId: string): void {\r\n this.activeTab = activeId;\r\n }\r\n\r\n /**\r\n * Handles URL input changes - clears page selection if URL is manually entered\r\n */\r\n onUrlInput(): void {\r\n const urlValue = this.form.get('url')?.value;\r\n if (urlValue && this.form.get('pageId')?.value) {\r\n this.clearPageSelection();\r\n if (this.activeTab === TABS.PAGE) {\r\n this.activeTab = TABS.URL;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Saves the menu item (create or update)\r\n */\r\n save(): void {\r\n if (!this.form.valid) {\r\n return;\r\n }\r\n\r\n const formValue = this.prepareFormValue();\r\n const selectedItem = this.selected();\r\n const isEditMode = !!selectedItem?.id;\r\n\r\n const observable$ = isEditMode\r\n ? this.updateMenuItem(selectedItem.id, formValue, selectedItem as MenuItemWithDetailsDto)\r\n : this.createMenuItem(formValue);\r\n\r\n observable$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\r\n next: () => {\r\n this.onVisibleChange(false, true);\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n },\r\n error: () => {\r\n this.toasterService.error('AbpUi::ErrorMessage');\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Prepares form value ensuring mutual exclusivity between pageId and url\r\n */\r\n private prepareFormValue(): Partial<MenuItemCreateInput | MenuItemUpdateInput> {\r\n const formValue = { ...this.form.value };\r\n\r\n if (formValue.pageId) {\r\n // If pageId is set, generate URL from the page\r\n const selectedPage = this.pages.find(p => p.id === formValue.pageId);\r\n if (selectedPage) {\r\n formValue.url = this.generateUrlFromPage(selectedPage);\r\n }\r\n } else if (formValue.url) {\r\n // If URL is manually entered, ensure pageId is cleared\r\n formValue.pageId = null;\r\n }\r\n\r\n // Clean up undefined values\r\n return {\r\n ...formValue,\r\n url: formValue.url || undefined,\r\n pageId: formValue.pageId || undefined,\r\n };\r\n }\r\n\r\n /**\r\n * Creates a new menu item\r\n */\r\n private createMenuItem(formValue: Partial<MenuItemCreateInput>) {\r\n const createInput: MenuItemCreateInput = formValue as MenuItemCreateInput;\r\n return this.menuItemService.create(createInput);\r\n }\r\n\r\n /**\r\n * Updates an existing menu item\r\n */\r\n private updateMenuItem(\r\n id: string,\r\n formValue: Partial<MenuItemUpdateInput>,\r\n selectedItem: MenuItemWithDetailsDto,\r\n ) {\r\n const updateInput: MenuItemUpdateInput = {\r\n ...formValue,\r\n concurrencyStamp: selectedItem.concurrencyStamp,\r\n } as MenuItemUpdateInput;\r\n return this.menuItemService.update(id, updateInput);\r\n }\r\n}\r\n","<abp-modal [visible]=\"visible()\" (visibleChange)=\"onVisibleChange($event)\">\r\n <ng-template #abpHeader>\r\n <h3>\r\n @if (selected()?.id) {\r\n {{ 'AbpUi::Edit' | abpLocalization }}\r\n } @else {\r\n {{ 'AbpUi::New' | abpLocalization }}\r\n }\r\n </h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n @if (form) {\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <ul\r\n ngbNav\r\n #nav=\"ngbNav\"\r\n class=\"nav-tabs\"\r\n [(activeId)]=\"activeTab\"\r\n (activeIdChange)=\"onTabChange($event)\"\r\n >\r\n <li ngbNavItem=\"url\">\r\n <a ngbNavLink>{{ 'CmsKit::Url' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"mt-3\">\r\n <label class=\"form-label\">{{ 'CmsKit::Url' | abpLocalization }}</label>\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n formControlName=\"url\"\r\n [disabled]=\"isPageSelected\"\r\n (input)=\"onUrlInput()\"\r\n />\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem=\"page\">\r\n <a ngbNavLink>{{ 'CmsKit::Page' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"mt-3\">\r\n <label class=\"form-label\">{{ 'CmsKit::Page' | abpLocalization }}</label>\r\n <div\r\n class=\"position-relative\"\r\n ngbDropdown\r\n #pageDropdown=\"ngbDropdown\"\r\n display=\"static\"\r\n (openChange)=\"onDropdownOpen()\"\r\n >\r\n <button\r\n class=\"form-select form-control text-start d-flex align-items-center justify-content-between\"\r\n type=\"button\"\r\n id=\"pageSelectDropdown\"\r\n ngbDropdownToggle\r\n [class.text-muted]=\"!selectedPage\"\r\n >\r\n <span>{{ selectedPage?.title || ('CmsKit::Page' | abpLocalization) }}</span>\r\n </button>\r\n <div\r\n class=\"dropdown-menu w-100\"\r\n ngbDropdownMenu\r\n aria-labelledby=\"pageSelectDropdown\"\r\n style=\"max-height: 300px; overflow-y: auto\"\r\n >\r\n <div class=\"p-2 border-bottom\">\r\n <input\r\n type=\"text\"\r\n class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"pageSearchText\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n (input)=\"onPageSearchChange($any($event.target).value)\"\r\n (click)=\"$event.stopPropagation()\"\r\n placeholder=\"{{ 'AbpUi::Search' | abpLocalization }}\"\r\n autocomplete=\"off\"\r\n />\r\n </div>\r\n @if (filteredPages.length > 0) {\r\n @for (page of filteredPages; track page.id) {\r\n <button\r\n type=\"button\"\r\n class=\"dropdown-item\"\r\n (click)=\"selectPage(page); pageDropdown.close()\"\r\n >\r\n {{ page.title }}\r\n </button>\r\n }\r\n } @else if (pageSearchText && pageSearchText.length > 0) {\r\n <div class=\"dropdown-item text-muted\">\r\n {{ 'No results found' }}\r\n </div>\r\n } @else if (pages.length === 0) {\r\n <div class=\"dropdown-item text-muted\">\r\n {{ 'No pages found' }}\r\n </div>\r\n }\r\n @if (selectedPage) {\r\n <div class=\"dropdown-divider\"></div>\r\n <button\r\n type=\"button\"\r\n class=\"dropdown-item text-danger\"\r\n (click)=\"clearPageSelection(); pageDropdown.close()\"\r\n >\r\n {{ 'AbpUi::Clear' | abpLocalization }}\r\n </button>\r\n }\r\n </div>\r\n <input [formControlName]=\"'pageId'\" type=\"hidden\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n <hr />\r\n <abp-extensible-form [selectedRecord]=\"selected() || {}\" />\r\n </form>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-outline-primary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button (click)=\"save()\" [disabled]=\"form?.invalid\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n","import { Component, OnInit, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { of } from 'rxjs';\r\nimport { PageComponent } from '@abp/ng.components/page';\r\nimport { ListService, LocalizationPipe, PermissionDirective } from '@abp/ng.core';\r\nimport { TreeComponent } from '@abp/ng.components/tree';\r\nimport { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';\r\nimport { ConfirmationService, Confirmation } from '@abp/ng.theme.shared';\r\nimport {\r\n MenuItemAdminService,\r\n MenuItemDto,\r\n MenuItemWithDetailsDto,\r\n MenuItemMoveInput,\r\n} from '@abp/ng.cms-kit/proxy';\r\nimport { eCmsKitAdminComponents } from '../../../enums';\r\nimport {\r\n MenuItemModalComponent,\r\n MenuItemModalVisibleChange,\r\n} from '../menu-item-modal/menu-item-modal.component';\r\n\r\n@Component({\r\n selector: 'abp-menu-item-list',\r\n templateUrl: './menu-item-list.component.html',\r\n imports: [\r\n PageComponent,\r\n TreeComponent,\r\n LocalizationPipe,\r\n CommonModule,\r\n MenuItemModalComponent,\r\n PermissionDirective,\r\n ],\r\n providers: [\r\n ListService,\r\n {\r\n provide: EXTENSIONS_IDENTIFIER,\r\n useValue: eCmsKitAdminComponents.Menus,\r\n },\r\n ],\r\n})\r\nexport class MenuItemListComponent implements OnInit {\r\n private menuItemService = inject(MenuItemAdminService);\r\n private confirmationService = inject(ConfirmationService);\r\n\r\n nodes: any[] = [];\r\n selectedNode: MenuItemDto | null = null;\r\n expandedKeys: string[] = [];\r\n draggable = true;\r\n isModalVisible = false;\r\n selectedMenuItem: MenuItemDto | MenuItemWithDetailsDto | null = null;\r\n parentId: string | null = null;\r\n\r\n ngOnInit() {\r\n this.loadMenuItems();\r\n }\r\n\r\n private loadMenuItems() {\r\n this.menuItemService.getList().subscribe(result => {\r\n if (result.items && result.items.length > 0) {\r\n this.nodes = this.buildTreeNodes(result.items);\r\n // Expand all nodes by default\r\n this.expandedKeys = this.nodes.map(n => n.key);\r\n } else {\r\n this.nodes = [];\r\n }\r\n });\r\n }\r\n\r\n private buildTreeNodes(items: MenuItemDto[]): any[] {\r\n const nodeMap = new Map<string, any>();\r\n const rootNodes: any[] = [];\r\n\r\n // First pass: create all nodes\r\n items.forEach(item => {\r\n const node: any = {\r\n key: item.id,\r\n title: item.displayName || '',\r\n entity: item,\r\n children: [],\r\n isLeaf: false,\r\n };\r\n nodeMap.set(item.id!, node);\r\n });\r\n\r\n // Second pass: build tree structure\r\n items.forEach(item => {\r\n const node = nodeMap.get(item.id!);\r\n if (item.parentId) {\r\n const parent = nodeMap.get(item.parentId);\r\n if (parent) {\r\n parent.children.push(node);\r\n parent.isLeaf = false;\r\n } else {\r\n rootNodes.push(node);\r\n }\r\n } else {\r\n rootNodes.push(node);\r\n }\r\n });\r\n\r\n // Sort by order\r\n const sortByOrder = (nodes: any[]) => {\r\n nodes.sort((a, b) => (a.entity.order || 0) - (b.entity.order || 0));\r\n nodes.forEach(node => {\r\n if (node.children && node.children.length > 0) {\r\n sortByOrder(node.children);\r\n }\r\n });\r\n };\r\n\r\n sortByOrder(rootNodes);\r\n return rootNodes;\r\n }\r\n\r\n onSelectedNodeChange(node: any) {\r\n this.selectedNode = node?.entity || null;\r\n }\r\n\r\n onDrop(event: any) {\r\n const node = event.dragNode?.origin?.entity;\r\n if (!node) {\r\n return;\r\n }\r\n\r\n const newParentId = event.dragNode?.parent?.key === '0' ? null : event.dragNode?.parent?.key;\r\n const position = event.dragNode?.pos || 0;\r\n\r\n const parentNodeName =\r\n !newParentId || newParentId === '0'\r\n ? 'Root'\r\n : event.dragNode?.parent?.origin?.entity?.displayName || 'Root';\r\n\r\n this.confirmationService\r\n .warn('CmsKit::MenuItemMoveConfirmMessage', 'AbpUi::AreYouSure', {\r\n messageLocalizationParams: [node.displayName || '', parentNodeName],\r\n yesText: 'AbpUi::Yes',\r\n cancelText: 'AbpUi::Cancel',\r\n })\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n const input: MenuItemMoveInput = {\r\n newParentId: newParentId === '0' ? null : newParentId,\r\n position: position,\r\n };\r\n\r\n this.menuItemService.moveMenuItem(node.id!, input).subscribe({\r\n next: () => {\r\n this.loadMenuItems();\r\n },\r\n error: () => {\r\n // Reload to rollback\r\n this.loadMenuItems();\r\n },\r\n });\r\n } else {\r\n // Reload to rollback\r\n this.loadMenuItems();\r\n }\r\n });\r\n }\r\n\r\n beforeDrop = (event: any) => {\r\n return of(true);\r\n };\r\n\r\n add() {\r\n this.selectedMenuItem = null;\r\n this.parentId = null;\r\n this.isModalVisible = true;\r\n }\r\n\r\n addSubMenuItem(parentId?: string) {\r\n this.selectedMenuItem = null;\r\n this.parentId = parentId || null;\r\n this.isModalVisible = true;\r\n }\r\n\r\n edit(id: string) {\r\n this.menuItemService.get(id).subscribe(menuItem => {\r\n this.selectedMenuItem = menuItem;\r\n this.parentId = null;\r\n this.isModalVisible = true;\r\n });\r\n }\r\n\r\n onVisibleModalChange(visibilityChange: MenuItemModalVisibleChange) {\r\n if (visibilityChange.visible) {\r\n return;\r\n }\r\n if (visibilityChange.refresh) {\r\n this.loadMenuItems();\r\n }\r\n this.selectedMenuItem = null;\r\n this.parentId = null;\r\n this.isModalVisible = false;\r\n }\r\n\r\n delete(id: string, displayName?: string) {\r\n this.confirmationService\r\n .warn('CmsKit::MenuItemDeletionConfirmationMessage', 'AbpUi::AreYouSure', {\r\n messageLocalizationParams: [displayName || ''],\r\n yesText: 'AbpUi::Yes',\r\n cancelText: 'AbpUi::Cancel',\r\n })\r\n .subscribe((status: Confirmation.Status) => {\r\n if (status === Confirmation.Status.confirm) {\r\n this.menuItemService.delete(id).subscribe({\r\n next: () => {\r\n this.loadMenuItems();\r\n },\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","<abp-page [title]=\"'CmsKit::MenuItems' | abpLocalization\" [toolbar]=\"nodes\">\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n @if (nodes.length > 0) {\r\n <abp-tree\r\n [nodes]=\"nodes\"\r\n [draggable]=\"draggable\"\r\n [expandedKeys]=\"expandedKeys\"\r\n [selectedNode]=\"selectedNode\"\r\n (selectedNodeChange)=\"onSelectedNodeChange($event)\"\r\n [beforeDrop]=\"beforeDrop\"\r\n (dropOver)=\"onDrop($event)\"\r\n >\r\n <ng-template #menu let-node>\r\n <button\r\n class=\"dropdown-item\"\r\n (click)=\"edit(node.key)\"\r\n *abpPermission=\"'CmsKit.Menus.Update'\"\r\n >\r\n <i class=\"fa fa-pencil me-2\"></i>\r\n {{ 'AbpUi::Edit' | abpLocalization }}\r\n </button>\r\n <button\r\n class=\"dropdown-item\"\r\n (click)=\"addSubMenuItem(node.key)\"\r\n *abpPermission=\"'CmsKit.Menus.Create'\"\r\n >\r\n <i class=\"fa fa-plus me-2\"></i>\r\n {{ 'CmsKit::AddSubMenuItem' | abpLocalization }}\r\n </button>\r\n <button\r\n class=\"dropdown-item\"\r\n (click)=\"delete(node.key, node.title)\"\r\n *abpPermission=\"'CmsKit.Menus.Delete'\"\r\n >\r\n <i class=\"fa fa-remove me-2\"></i>\r\n {{ 'AbpUi::Delete' | abpLocalization }}\r\n </button>\r\n </ng-template>\r\n </abp-tree>\r\n } @else {\r\n <div class=\"text-muted text-center\">\r\n {{ 'CmsKit::NoMenuItems' | abpLocalization }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</abp-page>\r\n\r\n@if (isModalVisible) {\r\n <abp-menu-item-modal\r\n [selected]=\"selectedMenuItem || undefined\"\r\n [parentId]=\"parentId\"\r\n (visibleChange)=\"onVisibleModalChange($event)\"\r\n />\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n NgbNav,\r\n NgbNavItem,\r\n NgbNavItemRole,\r\n NgbNavLink,\r\n NgbNavLinkBase,\r\n NgbNavContent,\r\n NgbNavOutlet,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { ConfigStateService, LocalizationPipe } from '@abp/ng.core';\r\nimport { ButtonComponent, ToasterService } from '@abp/ng.theme.shared';\r\nimport { CommentAdminService } from '@abp/ng.cms-kit/proxy';\r\n\r\nimport { CMS_KIT_COMMENTS_REQUIRE_APPROVEMENT } from '../comments';\r\n\r\n@Component({\r\n selector: 'abp-cms-settings',\r\n templateUrl: './cms-settings.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgbNav,\r\n NgbNavItem,\r\n NgbNavItemRole,\r\n NgbNavLink,\r\n NgbNavLinkBase,\r\n NgbNavContent,\r\n NgbNavOutlet,\r\n LocalizationPipe,\r\n ButtonComponent,\r\n ReactiveFormsModule,\r\n ],\r\n})\r\nexport class CmsSettingsComponent {\r\n readonly commentAdminService = inject(CommentAdminService);\r\n readonly configState = inject(ConfigStateService);\r\n readonly toaster = inject(ToasterService);\r\n\r\n commentApprovalControl = new FormControl(false);\r\n\r\n ngOnInit() {\r\n const isCommentApprovalEnabled =\r\n this.configState.getSetting(CMS_KIT_COMMENTS_REQUIRE_APPROVEMENT).toLowerCase() === 'true';\r\n this.commentApprovalControl.setValue(isCommentApprovalEnabled);\r\n }\r\n\r\n submit() {\r\n this.commentAdminService\r\n .updateSettings({ commentRequireApprovement: this.commentApprovalControl.value })\r\n .pipe(\r\n finalize(() => {\r\n this.configState.refreshAppState().subscribe();\r\n }),\r\n )\r\n .subscribe(() => this.toaster.success('AbpUi::SavedSuccessfully', null));\r\n }\r\n}\r\n","<div id=\"CmsSettingsForm\" class=\"row\">\r\n <div class=\"col-md-12\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n <!-- Comments -->\r\n <li ngbNavItem>\r\n <a ngbNavLink>{{ 'CmsKit::CmsKit:Comment' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"abp-md-form\">\r\n <div (keyup.enter)=\"submit()\">\r\n <div class=\"mt-3\">\r\n <div class=\"form-check mb-2\">\r\n <input\r\n class=\"form-check-input\"\r\n [formControl]=\"commentApprovalControl\"\r\n type=\"checkbox\"\r\n id=\"EnableCommentApproval\"\r\n [checked]=\"commentApprovalControl.value\"\r\n (input)=\"commentApprovalControl.setValue($event.target.checked)\"\r\n />\r\n <label class=\"form-check-label\" for=\"EnableCommentApproval\">\r\n {{ 'CmsKit::CmsKitCommentOptions:RequireApprovement' | abpLocalization }}\r\n </label>\r\n <br />\r\n <small class=\"form-text text-muted\">{{\r\n 'CmsKit::CmsKitCommentOptions:RequireApprovementDescription' | abpLocalization\r\n }}</small>\r\n </div>\r\n </div>\r\n <hr class=\"my-3\" />\r\n <div>\r\n <abp-button (click)=\"submit()\" iconClass=\"fa fa-save\" [loading]=\"loading\">\r\n {{ 'AbpAccount::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n</div>\r\n","import { Component, OnInit, inject, DestroyRef } from '@angular/core';\r\nimport { ReactiveFormsModule, FormGroup, FormControl } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { PageComponent } from '@abp/ng.components/page';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport { ButtonComponent, ToasterService } from '@abp/ng.theme.shared';\r\nimport { CodeMirrorEditorComponent } from '@abp/ng.cms-kit';\r\nimport {\r\n GlobalResourceAdminService,\r\n GlobalResourcesDto,\r\n GlobalResourcesUpdateDto,\r\n} from '@abp/ng.cms-kit/proxy';\r\n\r\n@Component({\r\n selector: 'abp-global-resources',\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n NgxValidateCoreModule,\r\n NgbNavModule,\r\n CodeMirrorEditorComponent,\r\n LocalizationPipe,\r\n PageComponent,\r\n ButtonComponent,\r\n ],\r\n templateUrl: './global-resources.component.html',\r\n})\r\nexport class GlobalResourcesComponent implements OnInit {\r\n private globalResourceService = inject(GlobalResourceAdminService);\r\n private toasterService = inject(ToasterService);\r\n private destroyRef = inject(DestroyRef);\r\n\r\n form: FormGroup;\r\n activeTab: string = 'script';\r\n\r\n ngOnInit() {\r\n this.buildForm();\r\n this.loadGlobalResources();\r\n }\r\n\r\n private buildForm() {\r\n this.form = new FormGroup({\r\n script: new FormControl(''),\r\n style: new FormControl(''),\r\n });\r\n }\r\n\r\n private loadGlobalResources() {\r\n this.globalResourceService\r\n .get()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: (result: GlobalResourcesDto) => {\r\n this.form.patchValue({\r\n script: result.scriptContent || '',\r\n style: result.styleContent || '',\r\n });\r\n },\r\n error: () => {\r\n this.toasterService.error('AbpUi::ErrorMessage');\r\n },\r\n });\r\n }\r\n\r\n onTabChange(activeId: string) {\r\n this.activeTab = activeId;\r\n }\r\n\r\n save() {\r\n if (!this.form.valid) {\r\n return;\r\n }\r\n\r\n const formValue = this.form.value;\r\n const input: GlobalResourcesUpdateDto = {\r\n script: formValue.script || '',\r\n style: formValue.style || '',\r\n };\r\n\r\n this.globalResourceService\r\n .setGlobalResources(input)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe({\r\n next: () => {\r\n this.toasterService.success('AbpUi::SavedSuccessfully');\r\n },\r\n error: () => {\r\n this.toasterService.error('AbpUi::ErrorMessage');\r\n },\r\n });\r\n }\r\n}\r\n","<abp-page [title]=\"'CmsKit::GlobalResources' | abpLocalization\">\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <div class=\"card\">\r\n <div class=\"card-body\">\r\n <ul\r\n ngbNav\r\n #nav=\"ngbNav\"\r\n class=\"nav-tabs\"\r\n [(activeId)]=\"activeTab\"\r\n (activeIdChange)=\"onTabChange($event)\"\r\n >\r\n <li ngbNavItem=\"script\">\r\n <a ngbNavLink>{{ 'CmsKit::Script' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"mt-3\">\r\n <abp-codemirror-editor formControlName=\"script\" />\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem=\"style\">\r\n <a ngbNavLink>{{ 'CmsKit::Style' | abpLocalization }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"mt-3\">\r\n <abp-codemirror-editor formControlName=\"style\" />\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div class=\"mt-2 fade-in-top\" [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n <div class=\"card-footer\">\r\n <!-- *abpPermission=\"'CmsKit.GlobalResources.Update'\" -->\r\n <abp-button type=\"submit\" [disabled]=\"form?.invalid\" (click)=\"save()\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </form>\r\n</abp-page>\r\n","import { Router } from '@angular/router';\r\nimport { CommentGetListInput, CommentWithAuthorDto } from '@abp/ng.cms-kit/proxy';\r\nimport { ListService } from '@abp/ng.core';\r\nimport { EntityAction } from '@abp/ng.components/extensible';\r\nimport { CommentEntityService } from '../../services';\r\n\r\nexport const DEFAULT_COMMENT_ENTITY_ACTIONS = EntityAction.createMany<CommentWithAuthorDto>([\r\n {\r\n text: 'CmsKit::Details',\r\n action: data => {\r\n const router = data.getInjected(Router);\r\n router.navigate(['/cms/comments', data.record.id]);\r\n },\r\n },\r\n {\r\n text: 'CmsKit::Delete',\r\n action: data => {\r\n const commentEntityService = data.getInjected(CommentEntityService);\r\n const list = data.getInjected(ListService<CommentGetListInput>);\r\n commentEntityService.delete(data.record.id!, list);\r\n },\r\n permission: 'CmsKit.Comments.Delete',\r\n },\r\n {\r\n text: 'CmsKit::Approve',\r\n action: data => {\r\n const commentEntityService = data.getInjected(CommentEntityService);\r\n const list = data.getInjected(ListService<CommentGetListInput>);\r\n commentEntityService.updateApprovalStatus(data.record.id!, true, list);\r\n },\r\n visible: data => {\r\n const commentEntityService = data.getInjected(CommentEntityService);\r\n return commentEntityService.requireApprovement && data.record.isApproved === false;\r\n },\r\n },\r\n {\r\n text: 'CmsKit::Disapproved',\r\n action: data => {\r\n const commentEntityService = data.getInjected(CommentEntityService);\r\n const list = data.getInjected(ListService<CommentGetListInput>);\r\n commentEntityService.updateApprovalStatus(data.record.id!, false, list);\r\n },\r\n visible: data => {\r\n const commentEntityService = data.getInjected(CommentEntityService);\r\n return (\r\n commentEntityService.requireApprovement &&\r\n (data.record.isApproved || data.record.isApproved === null)\r\n );\r\n },\r\n },\r\n]);\r\n","import { of } from 'rxjs';\r\nimport { EntityProp, ePropType } from '@abp/ng.components/extensible';\r\nimport { CommentWithAuthorDto } from '@abp/ng.cms-kit/proxy';\r\nimport { CommentEntityService } from '../../services';\r\n\r\nexport const DEFAULT_COMMENT_ENTITY_PROPS = EntityProp.createMany<CommentWithAuthorDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'userName',\r\n displayName: 'CmsKit::Username',\r\n sortable: false,\r\n columnWidth: 150,\r\n valueResolver: data => {\r\n const userName = data.record.author.userName;\r\n return of(userName);\r\n },\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'entityType',\r\n displayName: 'CmsKit::EntityType',\r\n sortable: false,\r\n columnWidth: 200,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'url',\r\n displayName: 'CmsKit::URL',\r\n sortable: false,\r\n valueResolver: data => {\r\n const url = data.record.url;\r\n if (url) {\r\n return of(\r\n `<a href=\"${url}#comment-${data.record.id}\" target=\"_blank\"><i class=\"fa fa-location-arrow\"></i></a>`,\r\n );\r\n }\r\n return of('');\r\n },\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'text',\r\n displayName: 'CmsKit::Text',\r\n sortable: false,\r\n valueResolver: data => {\r\n const text = data.record.text || '';\r\n const maxChars = 64;\r\n if (text.length > maxChars) {\r\n return of(text.substring(0, maxChars) + '...');\r\n }\r\n return of(text);\r\n },\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'isApproved',\r\n displayName: 'CmsKit::ApproveState',\r\n sortable: false,\r\n columnWidth: 100,\r\n columnVisible: getInjected => {\r\n const commentEntityService = getInjected(CommentEntityService);\r\n return commentEntityService.requireApprovement;\r\n },\r\n valueResolver: data => {\r\n const isApproved = data.record.isApproved;\r\n if (isApproved || isApproved === null) {\r\n return of('<div class=\"text-success\"><i class=\"fa fa-check\" aria-hidden=\"true\"></i></div>');\r\n }\r\n return of('<div class=\"text-danger\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></div>');\r\n },\r\n },\r\n {\r\n type: ePropType.Date,\r\n name: 'creationTime',\r\n displayName: 'CmsKit::CreationTime',\r\n sortable: true,\r\n columnWidth: 200,\r\n },\r\n]);\r\n","import { TagDto } from '@abp/ng.cms-kit/proxy';\r\nimport { EntityAction } from '@abp/ng.components/extensible';\r\nimport { TagListComponent } from '../../components/tags/tag-list/tag-list.component';\r\n\r\nexport const DEFAULT_TAG_ENTITY_ACTIONS = EntityAction.createMany<TagDto>([\r\n {\r\n text: 'AbpUi::Edit',\r\n action: data => {\r\n const component = data.getInjected(TagListComponent);\r\n component.edit(data.record.id!);\r\n },\r\n permission: 'CmsKit.Tags.Update',\r\n },\r\n {\r\n text: 'AbpUi::Delete',\r\n action: data => {\r\n const component = data.getInjected(TagListComponent);\r\n const { id, name } = data.record;\r\n component.delete(id!, name!);\r\n },\r\n permission: 'CmsKit.Tags.Delete',\r\n },\r\n]);\r\n","import { TagDto } from '@abp/ng.cms-kit/proxy';\r\nimport { EntityProp, ePropType } from '@abp/ng.components/extensible';\r\n\r\nexport const DEFAULT_TAG_ENTITY_PROPS = EntityProp.createMany<TagDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'entityType',\r\n displayName: 'CmsKit::EntityType',\r\n sortable: true,\r\n columnWidth: 200,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'CmsKit::Name',\r\n sortable: true,\r\n columnWidth: 250,\r\n },\r\n]);\r\n","import { TagDto } from '@abp/ng.cms-kit/proxy';\r\nimport { ToolbarAction } from '@abp/ng.components/extensible';\r\nimport { TagListComponent } from '../../components/tags/tag-list/tag-list.component';\r\n\r\nexport const DEFAULT_TAG_TOOLBAR_ACTIONS = ToolbarAction.createMany<TagDto[]>([\r\n {\r\n text: 'CmsKit::NewTag',\r\n action: data => {\r\n const component = data.getInjected(TagListComponent);\r\n component.add();\r\n },\r\n permission: 'CmsKit.Tags.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import { TagCreateDto, TagAdminService, TagDefinitionDto } from '@abp/ng.cms-kit/proxy';\r\nimport { FormProp, ePropType } from '@abp/ng.components/extensible';\r\nimport { Validators } from '@angular/forms';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport const DEFAULT_TAG_CREATE_FORM_PROPS = FormProp.createMany<TagCreateDto>([\r\n {\r\n type: ePropType.Enum,\r\n name: 'entityType',\r\n displayName: 'CmsKit::EntityType',\r\n id: 'entityType',\r\n validators: () => [Validators.required],\r\n options: data => {\r\n const tagService = data.getInjected(TagAdminService);\r\n return tagService.getTagDefinitions().pipe(\r\n map((definitions: TagDefinitionDto[]) =>\r\n definitions.map(def => ({\r\n key: def.displayName || def.entityType || '',\r\n value: def.entityType || '',\r\n })),\r\n ),\r\n );\r\n },\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'CmsKit::Name',\r\n id: 'name',\r\n validators: () => [Validators.required],\r\n },\r\n]);\r\n\r\nexport const DEFAULT_TAG_EDIT_FORM_PROPS = DEFAULT_TAG_CREATE_FORM_PROPS.filter(\r\n prop => prop.name !== 'entityType',\r\n);\r\n","import { Router } from '@angular/router';\r\nimport { EntityAction } from '@abp/ng.components/extensible';\r\nimport { PageDto } from '@abp/ng.cms-kit/proxy';\r\nimport { PageListComponent } from '../../components/pages/page-list/page-list.component';\r\n\r\nexport const DEFAULT_PAGE_ENTITY_ACTIONS = EntityAction.createMany<PageDto>([\r\n {\r\n text: 'AbpUi::Edit',\r\n action: data => {\r\n const router = data.getInjected(Router);\r\n router.navigate(['/cms/pages/update', data.record.id]);\r\n },\r\n permission: 'CmsKit.Pages.Update',\r\n },\r\n {\r\n text: 'AbpUi::Delete',\r\n action: data => {\r\n const component = data.getInjected(PageListComponent);\r\n component.delete(data.record.id!);\r\n },\r\n permission: 'CmsKit.Pages.Delete',\r\n },\r\n {\r\n text: 'CmsKit::SetAsHomePage',\r\n action: data => {\r\n const component = data.getInjected(PageListComponent);\r\n const { id, isHomePage } = data.record;\r\n component.setAsHomePage(id!, isHomePage!);\r\n },\r\n permission: 'CmsKit.Pages.SetAsHomePage',\r\n },\r\n]);\r\n","import { of } from 'rxjs';\r\nimport { PageDto, PageStatus } from '@abp/ng.cms-kit/proxy';\r\nimport { EntityProp, ePropType } from '@abp/ng.components/extensible';\r\nimport { LocalizationService } from '@abp/ng.core';\r\n\r\nexport const DEFAULT_PAGE_ENTITY_PROPS = EntityProp.createMany<PageDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'title',\r\n displayName: 'CmsKit::Title',\r\n sortable: true,\r\n columnWidth: 200,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'slug',\r\n displayName: 'CmsKit::Slug',\r\n sortable: true,\r\n columnWidth: 200,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'status',\r\n displayName: 'CmsKit::Status',\r\n sortable: true,\r\n columnWidth: 120,\r\n valueResolver: data => {\r\n const localization = data.getInjected(LocalizationService);\r\n let result = '';\r\n switch (data.record.status) {\r\n case PageStatus.Draft:\r\n result = localization.instant('CmsKit::Enum:PageStatus:0');\r\n break;\r\n case PageStatus.Publish:\r\n result = localization.instant('CmsKit::Enum:PageStatus:1');\r\n break;\r\n }\r\n return of(result);\r\n },\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'isHomePage',\r\n displayName: 'CmsKit::IsHomePage',\r\n sortable: true,\r\n columnWidth: 120,\r\n },\r\n {\r\n type: ePropType.Date,\r\n name: 'creationTime',\r\n displayName: 'AbpIdentity::CreationTime',\r\n sortable: true,\r\n columnWidth: 200,\r\n },\r\n {\r\n type: ePropType.Date,\r\n name: 'lastModificationTime',\r\n displayName: 'AbpIdentity::LastModificationTime',\r\n sortable: true,\r\n columnWidth: 200,\r\n },\r\n]);\r\n","import { Router } from '@angular/router';\r\nimport { PageDto } from '@abp/ng.cms-kit/proxy';\r\nimport { ToolbarAction } from '@abp/ng.components/extensible';\r\n\r\nexport const DEFAULT_PAGE_TOOLBAR_ACTIONS = ToolbarAction.createMany<PageDto[]>([\r\n {\r\n text: 'CmsKit::NewPage',\r\n action: data => {\r\n const router = data.getInjected(Router);\r\n router.navigate(['/cms/pages/create']);\r\n },\r\n permission: 'CmsKit.Pages.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import { eLayoutType } from '@abp/ng.core';\r\n\r\nexport const LAYOUT_CONSTANTS = {\r\n Account: eLayoutType.account,\r\n Public: 'public',\r\n Empty: eLayoutType.empty,\r\n Application: eLayoutType.application,\r\n} as const;\r\n","import { Validators } from '@angular/forms';\r\nimport { of } from 'rxjs';\r\nimport { CreatePageInputDto, UpdatePageInputDto } from '@abp/ng.cms-kit/proxy';\r\nimport { FormProp, ePropType } from '@abp/ng.components/extensible';\r\nimport { pageStatusOptions } from '@abp/ng.cms-kit/proxy';\r\nimport { LAYOUT_CONSTANTS } from './layout-constants';\r\n\r\nexport const DEFAULT_PAGE_CREATE_FORM_PROPS = FormProp.createMany<CreatePageInputDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'title',\r\n displayName: 'CmsKit::Title',\r\n id: 'title',\r\n validators: () => [Validators.required],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'slug',\r\n displayName: 'CmsKit::Slug',\r\n id: 'slug',\r\n validators: () => [Validators.required],\r\n tooltip: {\r\n text: 'CmsKit::PageSlugInformation',\r\n },\r\n },\r\n {\r\n type: ePropType.Enum,\r\n name: 'layoutName',\r\n displayName: 'CmsKit::SelectLayout',\r\n id: 'layoutName',\r\n options: () =>\r\n of(\r\n Object.values(LAYOUT_CONSTANTS).map(layout => ({\r\n key: layout,\r\n value: layout.toUpperCase(),\r\n })),\r\n ),\r\n validators: () => [Validators.required],\r\n },\r\n {\r\n type: ePropType.Enum,\r\n name: 'status',\r\n displayName: 'CmsKit::Status',\r\n id: 'status',\r\n options: () => of(pageStatusOptions),\r\n validators: () => [Validators.required],\r\n },\r\n]);\r\n\r\nexport const DEFAULT_PAGE_EDIT_FORM_PROPS: FormProp<UpdatePageInputDto>[] =\r\n DEFAULT_PAGE_CREATE_FORM_PROPS;\r\n","import { BlogDto } from '@abp/ng.cms-kit/proxy';\r\nimport { EntityAction } from '@abp/ng.components/extensible';\r\nimport { BlogListComponent } from '../../components/blogs/blog-list/blog-list.component';\r\n\r\nexport const DEFAULT_BLOG_ENTITY_ACTIONS = EntityAction.createMany<BlogDto>([\r\n {\r\n text: 'CmsKit::Features',\r\n action: data => {\r\n const component = data.getInjected(BlogListComponent);\r\n component.openFeatures(data.record.id!);\r\n },\r\n permission: 'CmsKit.Blogs.Features',\r\n },\r\n {\r\n text: 'AbpUi::Edit',\r\n action: data => {\r\n const component = data.getInjected(BlogListComponent);\r\n component.edit(data.record.id!);\r\n },\r\n permission: 'CmsKit.Blogs.Update',\r\n },\r\n {\r\n text: 'AbpUi::Delete',\r\n action: data => {\r\n const component = data.getInjected(BlogListComponent);\r\n component.delete(data.record.id!, data.record.name!);\r\n },\r\n permission: 'CmsKit.Blogs.Delete',\r\n },\r\n]);\r\n","import { BlogDto } from '@abp/ng.cms-kit/proxy';\r\nimport { EntityProp, ePropType } from '@abp/ng.components/extensible';\r\n\r\nexport const DEFAULT_BLOG_ENTITY_PROPS = EntityProp.createMany<BlogDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'CmsKit::Name',\r\n sortable: true,\r\n columnWidth: 250,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'slug',\r\n displayName: 'CmsKit::Slug',\r\n sortable: true,\r\n columnWidth: 250,\r\n },\r\n]);\r\n","import { BlogDto } from '@abp/ng.cms-kit/proxy';\r\nimport { ToolbarAction } from '@abp/ng.components/extensible';\r\nimport { BlogListComponent } from '../../components/blogs/blog-list/blog-list.component';\r\n\r\nexport const DEFAULT_BLOG_TOOLBAR_ACTIONS = ToolbarAction.createMany<BlogDto[]>([\r\n {\r\n text: 'CmsKit::NewBlog',\r\n action: data => {\r\n const component = data.getInjected(BlogListComponent);\r\n component.add();\r\n },\r\n permission: 'CmsKit.Blogs.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import { CreateBlogDto } from '@abp/ng.cms-kit/proxy';\r\nimport { FormProp, ePropType } from '@abp/ng.components/extensible';\r\nimport { Validators } from '@angular/forms';\r\n\r\nexport const DEFAULT_BLOG_CREATE_FORM_PROPS = FormProp.createMany<CreateBlogDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'name',\r\n displayName: 'CmsKit::Name',\r\n id: 'name',\r\n validators: () => [Validators.required],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'slug',\r\n displayName: 'CmsKit::Slug',\r\n id: 'slug',\r\n validators: () => [Validators.required],\r\n tooltip: {\r\n text: 'CmsKit::BlogSlugInformation',\r\n // params: ['blogs'],\r\n },\r\n },\r\n]);\r\n\r\nexport const DEFAULT_BLOG_EDIT_FORM_PROPS = DEFAULT_BLOG_CREATE_FORM_PROPS;\r\n","import { Router } from '@angular/router';\r\nimport { EntityAction } from '@abp/ng.components/extensible';\r\nimport { BlogPostListDto } from '@abp/ng.cms-kit/proxy';\r\nimport { BlogPostListComponent } from '../../components/blog-posts/blog-post-list/blog-post-list.component';\r\n\r\nexport const DEFAULT_BLOG_POST_ENTITY_ACTIONS = EntityAction.createMany<BlogPostListDto>([\r\n {\r\n text: 'AbpUi::Edit',\r\n action: data => {\r\n const router = data.getInjected(Router);\r\n router.navigate(['/cms/blog-posts/update', data.record.id]);\r\n },\r\n permission: 'CmsKit.BlogPosts.Update',\r\n },\r\n {\r\n text: 'AbpUi::Delete',\r\n action: data => {\r\n const component = data.getInjected(BlogPostListComponent);\r\n component.delete(data.record.id!, data.record.title!);\r\n },\r\n permission: 'CmsKit.BlogPosts.Delete',\r\n },\r\n]);\r\n","import { of } from 'rxjs';\r\nimport { BlogPostListDto, BlogPostStatus } from '@abp/ng.cms-kit/proxy';\r\nimport { EntityProp, ePropType } from '@abp/ng.components/extensible';\r\nimport { LocalizationService } from '@abp/ng.core';\r\n\r\nexport const DEFAULT_BLOG_POST_ENTITY_PROPS = EntityProp.createMany<BlogPostListDto>([\r\n {\r\n type: ePropType.String,\r\n name: 'blogName',\r\n displayName: 'CmsKit::Blog',\r\n sortable: true,\r\n columnWidth: 150,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'title',\r\n displayName: 'CmsKit::Title',\r\n sortable: true,\r\n columnWidth: 200,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'slug',\r\n displayName: 'CmsKit::Slug',\r\n sortable: true,\r\n columnWidth: 200,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'status',\r\n displayName: 'CmsKit::Status',\r\n sortable: true,\r\n columnWidth: 120,\r\n valueResolver: data => {\r\n const localization = data.getInjected(LocalizationService);\r\n let result = '';\r\n switch (data.record.status) {\r\n case BlogPostStatus.Draft:\r\n result = localization.instant('CmsKit::CmsKit.BlogPost.Status.0');\r\n break;\r\n case BlogPostStatus.Published:\r\n result = localization.instant('CmsKit::CmsKit.BlogPost.Status.1');\r\n break;\r\n case BlogPostStatus.WaitingForReview:\r\n result = localization.instant('CmsKit::CmsKit.BlogPost.Status.2');\r\n break;\r\n }\r\n return of(result);\r\n },\r\n },\r\n {\r\n type: ePropType.Date,\r\n name: 'creationTime',\r\n displayName: 'AbpIdentity::CreationTime',\r\n sortable: true,\r\n columnWidth: 200,\r\n },\r\n {\r\n type: ePropType.Date,\r\n name: 'lastModificationTime',\r\n displayName: 'AbpIdentity::LastModificationTime',\r\n sortable: true,\r\n columnWidth: 200,\r\n },\r\n]);\r\n","import { Router } from '@angular/router';\r\nimport { BlogPostListDto } from '@abp/ng.cms-kit/proxy';\r\nimport { ToolbarAction } from '@abp/ng.components/extensible';\r\n\r\nexport const DEFAULT_BLOG_POST_TOOLBAR_ACTIONS = ToolbarAction.createMany<BlogPostListDto[]>([\r\n {\r\n text: 'CmsKit::NewBlogPost',\r\n action: data => {\r\n const router = data.getInjected(Router);\r\n router.navigate(['/cms/blog-posts/create']);\r\n },\r\n permission: 'CmsKit.BlogPosts.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import { Validators } from '@angular/forms';\r\nimport { map } from 'rxjs/operators';\r\nimport { CreateBlogPostDto, BlogAdminService } from '@abp/ng.cms-kit/proxy';\r\nimport { FormProp, ePropType } from '@abp/ng.components/extensible';\r\n\r\nexport const DEFAULT_BLOG_POST_CREATE_FORM_PROPS = FormProp.createMany<CreateBlogPostDto>([\r\n {\r\n type: ePropType.Enum,\r\n name: 'blogId',\r\n displayName: 'CmsKit::Blog',\r\n id: 'blogId',\r\n options: data => {\r\n const blogService = data.getInjected(BlogAdminService);\r\n return blogService.getList({ maxResultCount: 1000 }).pipe(\r\n map(result =>\r\n result.items.map(blog => ({\r\n key: blog.name || '',\r\n value: blog.id || '',\r\n })),\r\n ),\r\n );\r\n },\r\n validators: () => [Validators.required],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'title',\r\n displayName: 'CmsKit::Title',\r\n id: 'title',\r\n validators: () => [Validators.required],\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'slug',\r\n displayName: 'CmsKit::Slug',\r\n id: 'slug',\r\n validators: () => [Validators.required],\r\n tooltip: {\r\n text: 'CmsKit::BlogPostSlugInformation',\r\n },\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'shortDescription',\r\n displayName: 'CmsKit::ShortDescription',\r\n id: 'shortDescription',\r\n },\r\n]);\r\n\r\nexport const DEFAULT_BLOG_POST_EDIT_FORM_PROPS: FormProp<any>[] =\r\n DEFAULT_BLOG_POST_CREATE_FORM_PROPS;\r\n","import { Validators } from '@angular/forms';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n MenuItemCreateInput,\r\n MenuItemAdminService,\r\n PermissionLookupDto,\r\n} from '@abp/ng.cms-kit/proxy';\r\nimport { FormProp, ePropType } from '@abp/ng.components/extensible';\r\n\r\nexport const DEFAULT_MENU_ITEM_CREATE_FORM_PROPS = FormProp.createMany<MenuItemCreateInput>([\r\n {\r\n type: ePropType.String,\r\n name: 'displayName',\r\n displayName: 'CmsKit::DisplayName',\r\n id: 'displayName',\r\n validators: () => [Validators.required],\r\n },\r\n {\r\n type: ePropType.Boolean,\r\n name: 'isActive',\r\n displayName: 'CmsKit::IsActive',\r\n id: 'isActive',\r\n defaultValue: true,\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'icon',\r\n displayName: 'CmsKit::Icon',\r\n id: 'icon',\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'target',\r\n displayName: 'CmsKit::Target',\r\n id: 'target',\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'elementId',\r\n displayName: 'CmsKit::ElementId',\r\n id: 'elementId',\r\n },\r\n {\r\n type: ePropType.String,\r\n name: 'cssClass',\r\n displayName: 'CmsKit::CssClass',\r\n id: 'cssClass',\r\n },\r\n {\r\n type: ePropType.Enum,\r\n name: 'requiredPermissionName',\r\n displayName: 'CmsKit::RequiredPermissionName',\r\n id: 'requiredPermissionName',\r\n options: data => {\r\n const menuItemService = data.getInjected(MenuItemAdminService);\r\n return menuItemService\r\n .getPermissionLookup({\r\n filter: '',\r\n })\r\n .pipe(\r\n map((result: { items: PermissionLookupDto[] }) =>\r\n result.items.map(permission => ({\r\n key: permission.displayName || permission.name || '',\r\n value: permission.name || '',\r\n })),\r\n ),\r\n );\r\n },\r\n },\r\n]);\r\n\r\nexport const DEFAULT_MENU_ITEM_EDIT_FORM_PROPS = DEFAULT_MENU_ITEM_CREATE_FORM_PROPS;\r\n","import { MenuItemDto } from '@abp/ng.cms-kit/proxy';\r\nimport { ToolbarAction } from '@abp/ng.components/extensible';\r\nimport { MenuItemListComponent } from '../../components/menus/menu-item-list/menu-item-list.component';\r\n\r\nexport const DEFAULT_MENU_ITEM_TOOLBAR_ACTIONS = ToolbarAction.createMany<MenuItemDto[]>([\r\n {\r\n text: 'CmsKit::NewMenuItem',\r\n action: data => {\r\n const component = data.getInjected(MenuItemListComponent);\r\n component.add();\r\n },\r\n permission: 'CmsKit.Menus.Create',\r\n icon: 'fa fa-plus',\r\n },\r\n]);\r\n","import {\r\n CommentWithAuthorDto,\r\n TagDto,\r\n PageDto,\r\n BlogDto,\r\n BlogPostListDto,\r\n MenuItemDto,\r\n MenuItemCreateInput,\r\n MenuItemUpdateInput,\r\n TagCreateDto,\r\n TagUpdateDto,\r\n CreateBlogDto,\r\n CreateBlogPostDto,\r\n CreatePageInputDto,\r\n UpdateBlogDto,\r\n UpdateBlogPostDto,\r\n UpdatePageInputDto,\r\n} from '@abp/ng.cms-kit/proxy';\r\nimport {\r\n EntityActionContributorCallback,\r\n EntityPropContributorCallback,\r\n ToolbarActionContributorCallback,\r\n CreateFormPropContributorCallback,\r\n EditFormPropContributorCallback,\r\n} from '@abp/ng.components/extensible';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { DEFAULT_COMMENT_ENTITY_ACTIONS } from '../defaults/comments/default-comment-entity-actions';\r\nimport { DEFAULT_COMMENT_ENTITY_PROPS } from '../defaults/comments/default-comment-entity-props';\r\nimport {\r\n DEFAULT_TAG_ENTITY_ACTIONS,\r\n DEFAULT_TAG_ENTITY_PROPS,\r\n DEFAULT_TAG_TOOLBAR_ACTIONS,\r\n DEFAULT_TAG_CREATE_FORM_PROPS,\r\n DEFAULT_TAG_EDIT_FORM_PROPS,\r\n} from '../defaults/tags';\r\nimport {\r\n DEFAULT_PAGE_ENTITY_ACTIONS,\r\n DEFAULT_PAGE_ENTITY_PROPS,\r\n DEFAULT_PAGE_TOOLBAR_ACTIONS,\r\n DEFAULT_PAGE_CREATE_FORM_PROPS,\r\n DEFAULT_PAGE_EDIT_FORM_PROPS,\r\n} from '../defaults/pages';\r\nimport {\r\n DEFAULT_BLOG_ENTITY_ACTIONS,\r\n DEFAULT_BLOG_ENTITY_PROPS,\r\n DEFAULT_BLOG_TOOLBAR_ACTIONS,\r\n DEFAULT_BLOG_CREATE_FORM_PROPS,\r\n DEFAULT_BLOG_EDIT_FORM_PROPS,\r\n} from '../defaults/blogs';\r\nimport {\r\n DEFAULT_BLOG_POST_ENTITY_ACTIONS,\r\n DEFAULT_BLOG_POST_ENTITY_PROPS,\r\n DEFAULT_BLOG_POST_TOOLBAR_ACTIONS,\r\n DEFAULT_BLOG_POST_CREATE_FORM_PROPS,\r\n DEFAULT_BLOG_POST_EDIT_FORM_PROPS,\r\n} from '../defaults/blog-posts';\r\nimport {\r\n DEFAULT_MENU_ITEM_CREATE_FORM_PROPS,\r\n DEFAULT_MENU_ITEM_EDIT_FORM_PROPS,\r\n DEFAULT_MENU_ITEM_TOOLBAR_ACTIONS,\r\n} from '../defaults/menus';\r\nimport { eCmsKitAdminComponents } from '../enums';\r\n\r\nexport const DEFAULT_CMS_KIT_ADMIN_ENTITY_ACTIONS = {\r\n [eCmsKitAdminComponents.CommentList]: DEFAULT_COMMENT_ENTITY_ACTIONS,\r\n [eCmsKitAdminComponents.CommentDetails]: DEFAULT_COMMENT_ENTITY_ACTIONS,\r\n [eCmsKitAdminComponents.Tags]: DEFAULT_TAG_ENTITY_ACTIONS,\r\n [eCmsKitAdminComponents.Pages]: DEFAULT_PAGE_ENTITY_ACTIONS,\r\n [eCmsKitAdminComponents.Blogs]: DEFAULT_BLOG_ENTITY_ACTIONS,\r\n [eCmsKitAdminComponents.BlogPosts]: DEFAULT_BLOG_POST_ENTITY_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_CMS_KIT_ADMIN_ENTITY_PROPS = {\r\n [eCmsKitAdminComponents.CommentList]: DEFAULT_COMMENT_ENTITY_PROPS,\r\n [eCmsKitAdminComponents.CommentDetails]: DEFAULT_COMMENT_ENTITY_PROPS,\r\n [eCmsKitAdminComponents.Tags]: DEFAULT_TAG_ENTITY_PROPS,\r\n [eCmsKitAdminComponents.Pages]: DEFAULT_PAGE_ENTITY_PROPS,\r\n [eCmsKitAdminComponents.Blogs]: DEFAULT_BLOG_ENTITY_PROPS,\r\n [eCmsKitAdminComponents.BlogPosts]: DEFAULT_BLOG_POST_ENTITY_PROPS,\r\n};\r\n\r\nexport const DEFAULT_CMS_KIT_ADMIN_TOOLBAR_ACTIONS = {\r\n [eCmsKitAdminComponents.Tags]: DEFAULT_TAG_TOOLBAR_ACTIONS,\r\n [eCmsKitAdminComponents.Pages]: DEFAULT_PAGE_TOOLBAR_ACTIONS,\r\n [eCmsKitAdminComponents.Blogs]: DEFAULT_BLOG_TOOLBAR_ACTIONS,\r\n [eCmsKitAdminComponents.BlogPosts]: DEFAULT_BLOG_POST_TOOLBAR_ACTIONS,\r\n [eCmsKitAdminComponents.Menus]: DEFAULT_MENU_ITEM_TOOLBAR_ACTIONS,\r\n};\r\n\r\nexport const DEFAULT_CMS_KIT_ADMIN_CREATE_FORM_PROPS = {\r\n [eCmsKitAdminComponents.Tags]: DEFAULT_TAG_CREATE_FORM_PROPS,\r\n [eCmsKitAdminComponents.Pages]: DEFAULT_PAGE_CREATE_FORM_PROPS,\r\n [eCmsKitAdminComponents.Blogs]: DEFAULT_BLOG_CREATE_FORM_PROPS,\r\n [eCmsKitAdminComponents.PageForm]: DEFAULT_PAGE_CREATE_FORM_PROPS,\r\n [eCmsKitAdminComponents.BlogPostForm]: DEFAULT_BLOG_POST_CREATE_FORM_PROPS,\r\n [eCmsKitAdminComponents.Menus]: DEFAULT_MENU_ITEM_CREATE_FORM_PROPS,\r\n};\r\n\r\nexport const DEFAULT_CMS_KIT_ADMIN_EDIT_FORM_PROPS = {\r\n [eCmsKitAdminComponents.Tags]: DEFAULT_TAG_EDIT_FORM_PROPS,\r\n [eCmsKitAdminComponents.Pages]: DEFAULT_PAGE_EDIT_FORM_PROPS,\r\n [eCmsKitAdminComponents.Blogs]: DEFAULT_BLOG_EDIT_FORM_PROPS,\r\n [eCmsKitAdminComponents.PageForm]: DEFAULT_PAGE_EDIT_FORM_PROPS,\r\n [eCmsKitAdminComponents.BlogPostForm]: DEFAULT_BLOG_POST_EDIT_FORM_PROPS,\r\n [eCmsKitAdminComponents.Menus]: DEFAULT_MENU_ITEM_EDIT_FORM_PROPS,\r\n};\r\n\r\nexport const CMS_KIT_ADMIN_ENTITY_ACTION_CONTRIBUTORS =\r\n new InjectionToken<EntityActionContributors>('CMS_KIT_ADMIN_ENTITY_ACTION_CONTRIBUTORS');\r\n\r\nexport const CMS_KIT_ADMIN_ENTITY_PROP_CONTRIBUTORS = new InjectionToken<EntityPropContributors>(\r\n 'CMS_KIT_ADMIN_ENTITY_PROP_CONTRIBUTORS',\r\n);\r\n\r\nexport const CMS_KIT_ADMIN_TOOLBAR_ACTION_CONTRIBUTORS =\r\n new InjectionToken<ToolbarActionContributors>('CMS_KIT_ADMIN_TOOLBAR_ACTION_CONTRIBUTORS');\r\n\r\nexport const CMS_KIT_ADMIN_CREATE_FORM_PROP_CONTRIBUTORS =\r\n new InjectionToken<CreateFormPropContributors>('CMS_KIT_ADMIN_CREATE_FORM_PROP_CONTRIBUTORS');\r\n\r\nexport const CMS_KIT_ADMIN_EDIT_FORM_PROP_CONTRIBUTORS =\r\n new InjectionToken<EditFormPropContributors>('CMS_KIT_ADMIN_EDIT_FORM_PROP_CONTRIBUTORS');\r\n\r\n// Fix for TS4023 -> https://github.com/microsoft/TypeScript/issues/9944#issuecomment-254693497\r\ntype EntityActionContributors = Partial<{\r\n [eCmsKitAdminComponents.CommentList]: EntityActionContributorCallback<CommentWithAuthorDto>[];\r\n [eCmsKitAdminComponents.CommentDetails]: EntityActionContributorCallback<CommentWithAuthorDto>[];\r\n [eCmsKitAdminComponents.Tags]: EntityActionContributorCallback<TagDto>[];\r\n [eCmsKitAdminComponents.Pages]: EntityActionContributorCallback<PageDto>[];\r\n [eCmsKitAdminComponents.Blogs]: EntityActionContributorCallback<BlogDto>[];\r\n [eCmsKitAdminComponents.BlogPosts]: EntityActionContributorCallback<BlogPostListDto>[];\r\n}>;\r\n\r\ntype EntityPropContributors = Partial<{\r\n [eCmsKitAdminComponents.CommentList]: EntityPropContributorCallback<CommentWithAuthorDto>[];\r\n [eCmsKitAdminComponents.CommentDetails]: EntityPropContributorCallback<CommentWithAuthorDto>[];\r\n [eCmsKitAdminComponents.Tags]: EntityPropContributorCallback<TagDto>[];\r\n [eCmsKitAdminComponents.Pages]: EntityPropContributorCallback<PageDto>[];\r\n [eCmsKitAdminComponents.Blogs]: EntityPropContributorCallback<BlogDto>[];\r\n [eCmsKitAdminComponents.BlogPosts]: EntityPropContributorCallback<BlogPostListDto>[];\r\n}>;\r\n\r\ntype ToolbarActionContributors = Partial<{\r\n [eCmsKitAdminComponents.Tags]: ToolbarActionContributorCallback<TagDto[]>[];\r\n [eCmsKitAdminComponents.Pages]: ToolbarActionContributorCallback<PageDto[]>[];\r\n [eCmsKitAdminComponents.Blogs]: ToolbarActionContributorCallback<BlogDto[]>[];\r\n [eCmsKitAdminComponents.BlogPosts]: ToolbarActionContributorCallback<BlogPostListDto[]>[];\r\n [eCmsKitAdminComponents.Menus]: ToolbarActionContributorCallback<MenuItemDto[]>[];\r\n}>;\r\n\r\ntype CreateFormPropContributors = Partial<{\r\n [eCmsKitAdminComponents.Tags]: CreateFormPropContributorCallback<TagCreateDto>[];\r\n [eCmsKitAdminComponents.PageForm]: CreateFormPropContributorCallback<CreatePageInputDto>[];\r\n [eCmsKitAdminComponents.Blogs]: CreateFormPropContributorCallback<CreateBlogDto>[];\r\n [eCmsKitAdminComponents.BlogPostForm]: CreateFormPropContributorCallback<CreateBlogPostDto>[];\r\n [eCmsKitAdminComponents.Menus]: CreateFormPropContributorCallback<MenuItemCreateInput>[];\r\n}>;\r\n\r\ntype EditFormPropContributors = Partial<{\r\n [eCmsKitAdminComponents.Tags]: EditFormPropContributorCallback<TagUpdateDto>[];\r\n [eCmsKitAdminComponents.PageForm]: EditFormPropContributorCallback<UpdatePageInputDto>[];\r\n [eCmsKitAdminComponents.Blogs]: EditFormPropContributorCallback<UpdateBlogDto>[];\r\n [eCmsKitAdminComponents.BlogPostForm]: EditFormPropContributorCallback<UpdateBlogPostDto>[];\r\n [eCmsKitAdminComponents.Menus]: EditFormPropContributorCallback<MenuItemUpdateInput>[];\r\n}>;\r\n","import {\r\n ExtensionsService,\r\n getObjectExtensionEntitiesFromStore,\r\n mapEntitiesToContributors,\r\n mergeWithDefaultActions,\r\n mergeWithDefaultProps,\r\n} from '@abp/ng.components/extensible';\r\nimport { inject, Injector } from '@angular/core';\r\nimport { ResolveFn } from '@angular/router';\r\nimport { map, tap } from 'rxjs';\r\nimport { eCmsKitAdminComponents } from '../enums';\r\nimport {\r\n CMS_KIT_ADMIN_ENTITY_ACTION_CONTRIBUTORS,\r\n CMS_KIT_ADMIN_TOOLBAR_ACTION_CONTRIBUTORS,\r\n CMS_KIT_ADMIN_ENTITY_PROP_CONTRIBUTORS,\r\n CMS_KIT_ADMIN_CREATE_FORM_PROP_CONTRIBUTORS,\r\n CMS_KIT_ADMIN_EDIT_FORM_PROP_CONTRIBUTORS,\r\n DEFAULT_CMS_KIT_ADMIN_ENTITY_ACTIONS,\r\n DEFAULT_CMS_KIT_ADMIN_TOOLBAR_ACTIONS,\r\n DEFAULT_CMS_KIT_ADMIN_ENTITY_PROPS,\r\n DEFAULT_CMS_KIT_ADMIN_CREATE_FORM_PROPS,\r\n DEFAULT_CMS_KIT_ADMIN_EDIT_FORM_PROPS,\r\n} from '../tokens';\r\n\r\nexport const cmsKitAdminExtensionsResolver: ResolveFn<any> = () => {\r\n const injector = inject(Injector);\r\n const extensions = inject(ExtensionsService);\r\n\r\n const config = { optional: true };\r\n\r\n const actionContributors = inject(CMS_KIT_ADMIN_ENTITY_ACTION_CONTRIBUTORS, config) || {};\r\n const toolbarContributors = inject(CMS_KIT_ADMIN_TOOLBAR_ACTION_CONTRIBUTORS, config) || {};\r\n const propContributors = inject(CMS_KIT_ADMIN_ENTITY_PROP_CONTRIBUTORS, config) || {};\r\n const createFormContributors = inject(CMS_KIT_ADMIN_CREATE_FORM_PROP_CONTRIBUTORS, config) || {};\r\n const editFormContributors = inject(CMS_KIT_ADMIN_EDIT_FORM_PROP_CONTRIBUTORS, config) || {};\r\n\r\n return getObjectExtensionEntitiesFromStore(injector, 'CmsKit').pipe(\r\n map(entities => ({\r\n [eCmsKitAdminComponents.CommentList]: entities.Comment,\r\n [eCmsKitAdminComponents.CommentDetails]: entities.Comment,\r\n [eCmsKitAdminComponents.Tags]: entities.Tag,\r\n [eCmsKitAdminComponents.Pages]: entities.Page,\r\n [eCmsKitAdminComponents.PageForm]: entities.Page,\r\n [eCmsKitAdminComponents.Blogs]: entities.Blog,\r\n [eCmsKitAdminComponents.BlogPosts]: entities.BlogPost,\r\n [eCmsKitAdminComponents.BlogPostForm]: entities.BlogPost,\r\n [eCmsKitAdminComponents.Menus]: entities.MenuItem,\r\n })),\r\n mapEntitiesToContributors(injector, 'CmsKit'),\r\n tap(objectExtensionContributors => {\r\n mergeWithDefaultActions(\r\n extensions.entityActions,\r\n DEFAULT_CMS_KIT_ADMIN_ENTITY_ACTIONS,\r\n actionContributors,\r\n );\r\n mergeWithDefaultActions(\r\n extensions.toolbarActions,\r\n DEFAULT_CMS_KIT_ADMIN_TOOLBAR_ACTIONS,\r\n toolbarContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.entityProps,\r\n DEFAULT_CMS_KIT_ADMIN_ENTITY_PROPS,\r\n objectExtensionContributors.prop,\r\n propContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.createFormProps,\r\n DEFAULT_CMS_KIT_ADMIN_CREATE_FORM_PROPS,\r\n objectExtensionContributors.createForm,\r\n createFormContributors,\r\n );\r\n mergeWithDefaultProps(\r\n extensions.editFormProps,\r\n DEFAULT_CMS_KIT_ADMIN_EDIT_FORM_PROPS,\r\n objectExtensionContributors.editForm,\r\n editFormContributors,\r\n );\r\n }),\r\n );\r\n};\r\n","import { Routes } from '@angular/router';\r\nimport { Provider } from '@angular/core';\r\nimport {\r\n RouterOutletComponent,\r\n authGuard,\r\n permissionGuard,\r\n ReplaceableRouteContainerComponent,\r\n} from '@abp/ng.core';\r\nimport { eCmsKitAdminComponents } from './enums';\r\nimport {\r\n CommentListComponent,\r\n CommentDetailsComponent,\r\n TagListComponent,\r\n PageListComponent,\r\n PageFormComponent,\r\n BlogListComponent,\r\n BlogPostListComponent,\r\n BlogPostFormComponent,\r\n MenuItemListComponent,\r\n GlobalResourcesComponent,\r\n} from './components';\r\nimport {\r\n CMS_KIT_ADMIN_ENTITY_ACTION_CONTRIBUTORS,\r\n CMS_KIT_ADMIN_ENTITY_PROP_CONTRIBUTORS,\r\n CMS_KIT_ADMIN_TOOLBAR_ACTION_CONTRIBUTORS,\r\n CMS_KIT_ADMIN_CREATE_FORM_PROP_CONTRIBUTORS,\r\n CMS_KIT_ADMIN_EDIT_FORM_PROP_CONTRIBUTORS,\r\n} from './tokens';\r\nimport { cmsKitAdminExtensionsResolver } from './resolvers';\r\nimport { CmsKitAdminConfigOptions } from './models';\r\n\r\nexport function createRoutes(config: CmsKitAdminConfigOptions = {}): Routes {\r\n return [\r\n {\r\n path: '',\r\n component: RouterOutletComponent,\r\n providers: provideCmsKitAdminContributors(config),\r\n canActivate: [authGuard, permissionGuard],\r\n children: [\r\n {\r\n path: 'comments',\r\n component: ReplaceableRouteContainerComponent,\r\n resolve: {\r\n extensions: cmsKitAdminExtensionsResolver,\r\n },\r\n data: {\r\n requiredPolicy: 'CmsKit.Comments',\r\n replaceableComponent: {\r\n key: eCmsKitAdminComponents.CommentList,\r\n defaultComponent: CommentListComponent,\r\n },\r\n },\r\n title: 'CmsKit::Comments',\r\n },\r\n {\r\n path: 'comments/:id',\r\n component: ReplaceableRouteContainerComponent,\r\n resolve: {\r\n extensions: cmsKitAdminExtensionsResolver,\r\n },\r\n data: {\r\n requiredPolicy: 'CmsKit.Comments',\r\n replaceableComponent: {\r\n key: eCmsKitAdminComponents.CommentDetails,\r\n defaultComponent: CommentDetailsComponent,\r\n },\r\n },\r\n title: 'CmsKit::Comments',\r\n },\r\n {\r\n path: 'tags',\r\n component: ReplaceableRouteContainerComponent,\r\n resolve: {\r\n extensions: cmsKitAdminExtensionsResolver,\r\n },\r\n data: {\r\n requiredPolicy: 'CmsKit.Tags',\r\n replaceableComponent: {\r\n key: eCmsKitAdminComponents.Tags,\r\n defaultComponent: TagListComponent,\r\n },\r\n },\r\n title: 'CmsKit::Tags',\r\n },\r\n {\r\n path: 'pages',\r\n component: ReplaceableRouteContainerComponent,\r\n resolve: {\r\n extensions: cmsKitAdminExtensionsResolver,\r\n },\r\n data: {\r\n requiredPolicy: 'CmsKit.Pages',\r\n replaceableComponent: {\r\n key: eCmsKitAdminComponents.Pages,\r\n defaultComponent: PageListComponent,\r\n },\r\n },\r\n title: 'CmsKit::Pages',\r\n },\r\n {\r\n path: 'pages/create',\r\n component: ReplaceableRouteContainerComponent,\r\n resolve: {\r\n extensions: cmsKitAdminExtensionsResolver,\r\n },\r\n data: {\r\n requiredPolicy: 'CmsKit.Pages.Create',\r\n replaceableComponent: {\r\n key: eCmsKitAdminComponents.PageForm,\r\n defaultComponent: PageFormComponent,\r\n },\r\n },\r\n title: 'CmsKit::Pages',\r\n },\r\n {\r\n path: 'pages/update/:id',\r\n component: ReplaceableRouteContainerComponent,\r\n resolve: {\r\n extensions: cmsKitAdminExtensionsResolver,\r\n },\r\n data: {\r\n requiredPolicy: 'CmsKit.Pages.Update',\r\n replaceableComponent: {\r\n key: eCmsKitAdminComponents.PageForm,\r\n defaultComponent: PageFormComponent,\r\n },\r\n },\r\n title: 'CmsKit::Pages',\r\n },\r\n {\r\n path: 'blogs',\r\n component: ReplaceableRouteContainerComponent,\r\n resolve: {\r\n extensions: cmsKitAdminExtensionsResolver,\r\n },\r\n data: {\r\n requiredPolicy: 'CmsKit.Blogs',\r\n replaceableComponent: {\r\n key: eCmsKitAdminComponents.Blogs,\r\n defaultComponent: BlogListComponent,\r\n },\r\n },\r\n title: 'CmsKit::Blogs',\r\n },\r\n {\r\n path: 'blog-posts',\r\n component: ReplaceableRouteContainerComponent,\r\n resolve: {\r\n extensions: cmsKitAdminExtensionsResolver,\r\n },\r\n data: {\r\n requiredPolicy: 'CmsKit.BlogPosts',\r\n replaceableComponent: {\r\n key: eCmsKitAdminComponents.BlogPosts,\r\n defaultComponent: BlogPostListComponent,\r\n },\r\n },\r\n title: 'CmsKit::BlogPosts',\r\n },\r\n {\r\n path: 'blog-posts/create',\r\n component: ReplaceableRouteContainerComponent,\r\n resolve: {\r\n extensions: cmsKitAdminExtensionsResolver,\r\n },\r\n data: {\r\n requiredPolicy: 'CmsKit.BlogPosts.Create',\r\n replaceableComponent: {\r\n key: eCmsKitAdminComponents.BlogPostForm,\r\n defaultComponent: BlogPostFormComponent,\r\n },\r\n },\r\n title: 'CmsKit::BlogPosts',\r\n },\r\n {\r\n path: 'blog-posts/update/:id',\r\n component: ReplaceableRouteContainerComponent,\r\n resolve: {\r\n extensions: cmsKitAdminExtensionsResolver,\r\n },\r\n data: {\r\n requiredPolicy: 'CmsKit.BlogPosts.Update',\r\n replaceableComponent: {\r\n key: eCmsKitAdminComponents.BlogPostForm,\r\n defaultComponent: BlogPostFormComponent,\r\n },\r\n },\r\n title: 'CmsKit::BlogPosts',\r\n },\r\n {\r\n path: 'menus',\r\n component: ReplaceableRouteContainerComponent,\r\n resolve: {\r\n extensions: cmsKitAdminExtensionsResolver,\r\n },\r\n data: {\r\n requiredPolicy: 'CmsKit.Menus',\r\n replaceableComponent: {\r\n key: eCmsKitAdminComponents.Menus,\r\n defaultComponent: MenuItemListComponent,\r\n },\r\n },\r\n title: 'CmsKit::MenuItems',\r\n },\r\n {\r\n path: 'global-resources',\r\n component: GlobalResourcesComponent,\r\n data: {\r\n requiredPolicy: 'CmsKit.GlobalResources',\r\n },\r\n title: 'CmsKit::GlobalResources',\r\n },\r\n ],\r\n },\r\n ];\r\n}\r\n\r\nfunction provideCmsKitAdminContributors(options: CmsKitAdminConfigOptions = {}): Provider[] {\r\n return [\r\n {\r\n provide: CMS_KIT_ADMIN_ENTITY_ACTION_CONTRIBUTORS,\r\n useValue: options.entityActionContributors,\r\n },\r\n {\r\n provide: CMS_KIT_ADMIN_ENTITY_PROP_CONTRIBUTORS,\r\n useValue: options.entityPropContributors,\r\n },\r\n {\r\n provide: CMS_KIT_ADMIN_TOOLBAR_ACTION_CONTRIBUTORS,\r\n useValue: options.toolbarActionContributors,\r\n },\r\n {\r\n provide: CMS_KIT_ADMIN_CREATE_FORM_PROP_CONTRIBUTORS,\r\n useValue: options.createFormPropContributors,\r\n },\r\n {\r\n provide: CMS_KIT_ADMIN_EDIT_FORM_PROP_CONTRIBUTORS,\r\n useValue: options.editFormPropContributors,\r\n },\r\n ];\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i1","i2","map","tap"],"mappings":"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"}
|