@messaia/cdk-cms 13.3.6 → 14.0.0-rc01
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 +24 -24
- package/esm2020/lib/cms-routing.module.mjs +6 -6
- package/esm2020/lib/cms.module.mjs +19 -21
- package/esm2020/lib/comnponents/content-form/content-form.component.mjs +14 -14
- package/esm2020/lib/comnponents/document-dialog/document-dialog.component.mjs +9 -9
- package/esm2020/lib/comnponents/template-form/template-form.component.mjs +12 -12
- package/esm2020/lib/comnponents/template-preview-dialog/template-preview-dialog.component.mjs +12 -12
- package/esm2020/lib/models/cms-settings.mjs +3 -3
- package/esm2020/lib/public-api.mjs +1 -1
- package/esm2020/lib/resolvers/excluded-columns.resolve.mjs +3 -3
- package/esm2020/lib/resolvers/excluded-fields.resolve.mjs +3 -3
- package/esm2020/lib/resolvers/form-validation.resolve.mjs +3 -3
- package/esm2020/lib/resolvers/includes.resolve.mjs +3 -3
- package/esm2020/lib/resolvers/settings.resolve.mjs +3 -3
- package/esm2020/lib/services/content-variable.service.mjs +3 -3
- package/esm2020/lib/services/content.service.mjs +3 -3
- package/esm2020/lib/services/document.service`.mjs +3 -3
- package/esm2020/lib/services/faq.service.mjs +3 -3
- package/esm2020/lib/services/slider.service.mjs +3 -3
- package/esm2020/lib/services/template-preview.service.mjs +3 -3
- package/esm2020/lib/services/template.service.mjs +3 -3
- package/esm2020/public_api.mjs +1 -1
- package/fesm2015/messaia-cdk-cms.mjs +92 -94
- package/fesm2015/messaia-cdk-cms.mjs.map +1 -1
- package/fesm2020/messaia-cdk-cms.mjs +92 -94
- package/fesm2020/messaia-cdk-cms.mjs.map +1 -1
- package/{messaia-cdk-cms.d.ts → index.d.ts} +0 -0
- package/lib/comnponents/content-form/content-form.component.d.ts +2 -2
- package/lib/comnponents/document-dialog/document-dialog.component.d.ts +1 -1
- package/lib/comnponents/template-form/template-form.component.d.ts +2 -2
- package/lib/comnponents/template-preview-dialog/template-preview-dialog.component.d.ts +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaia-cdk-cms.mjs","sources":["../../../projects/cdk-cms/src/lib/enums/content-type.ts","../../../projects/cdk-cms/src/lib/enums/wrap-tag.ts","../../../projects/cdk-cms/src/lib/models/cms-settings.ts","../../../projects/cdk-cms/src/lib/models/content.ts","../../../projects/cdk-cms/src/lib/services/content.service.ts","../../../projects/cdk-cms/src/lib/comnponents/content-form/content-form.component.ts","../../../projects/cdk-cms/src/lib/comnponents/content-form/content-form.component.html","../../../projects/cdk-cms/src/lib/models/document.ts","../../../projects/cdk-cms/src/lib/services/document.generic-service.ts","../../../projects/cdk-cms/src/lib/services/document.service`.ts","../../../projects/cdk-cms/src/lib/comnponents/document-dialog/document-dialog.component.ts","../../../projects/cdk-cms/src/lib/comnponents/document-dialog/document-dialog.component.html","../../../projects/cdk-cms/src/lib/enums/template-type.ts","../../../projects/cdk-cms/src/lib/models/template.ts","../../../projects/cdk-cms/src/lib/models/template-preview.ts","../../../projects/cdk-cms/src/lib/services/template-preview.service.ts","../../../projects/cdk-cms/src/lib/comnponents/template-preview-dialog/template-preview-dialog.component.ts","../../../projects/cdk-cms/src/lib/comnponents/template-preview-dialog/template-preview-dialog.component.html","../../../projects/cdk-cms/src/lib/services/template.service.ts","../../../projects/cdk-cms/src/lib/comnponents/template-form/template-form.component.ts","../../../projects/cdk-cms/src/lib/comnponents/template-form/template-form.component.html","../../../projects/cdk-cms/src/lib/models/content-variable.ts","../../../projects/cdk-cms/src/lib/models/faq.ts","../../../projects/cdk-cms/src/lib/models/slider.ts","../../../projects/cdk-cms/src/lib/resolvers/excluded-columns.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/excluded-fields.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/form-validation.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/includes.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/settings.resolve.ts","../../../projects/cdk-cms/src/lib/cms-routing.module.ts","../../../projects/cdk-cms/src/lib/cms.module.ts","../../../projects/cdk-cms/src/lib/enums/faq-scope.ts","../../../projects/cdk-cms/src/lib/services/content-variable.service.ts","../../../projects/cdk-cms/src/lib/services/faq.service.ts","../../../projects/cdk-cms/src/lib/services/slider.service.ts","../../../projects/cdk-cms/src/lib/public-api.ts","../../../projects/cdk-cms/src/public_api.ts","../../../projects/cdk-cms/src/messaia-cdk-cms.ts"],"sourcesContent":["export enum ContentType {\r\n Page = 1,\r\n Block\r\n}","export enum WrapTag {\r\n None = '',\r\n Section = 'section',\r\n Div = 'div',\r\n Address = 'address',\r\n Article = 'article'\r\n}","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class CmsSettings {\r\n multitenantable: boolean = false;\r\n styleUrlEndpoint: Function;\r\n editorHeight: string = '700px';\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<CmsSettings>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { Api, AuditEntity, Column, Display, prop, required, Table } from \"@messaia/cdk\";\r\nimport { ContentType } from \"../enums/content-type\";\r\nimport { WrapTag } from \"../enums/wrap-tag\";\r\n\r\n@Api('content')\r\n@Table({ duplicable: true })\r\nexport class Content extends AuditEntity {\r\n @prop()\r\n type: ContentType;\r\n\r\n @prop()\r\n sectionId: number;\r\n\r\n @Column()\r\n @Display($localize`:@@title:Title`)\r\n @required()\r\n title: string;\r\n\r\n @Column({ maxWidth: 190, showGtMd: true })\r\n @Display($localize`:@@name:Name`)\r\n @required()\r\n name: string;\r\n\r\n @prop()\r\n aliases: string;\r\n\r\n @prop()\r\n body: string;\r\n\r\n @prop()\r\n wrapTag: WrapTag = WrapTag.Section;\r\n\r\n @prop()\r\n layout: string;\r\n\r\n @prop()\r\n showTitle: boolean = true;\r\n\r\n @Column({\r\n name: 'client.displayName',\r\n endpoint: 'client?enabled=true&projection=id,name',\r\n maxWidth: 190,\r\n showGtLg: true\r\n })\r\n @Display($localize`:@@client:Client`)\r\n @prop()\r\n clientId: number;\r\n\r\n @prop()\r\n default: boolean = false;\r\n\r\n @Column({ header: $localize`:@@enabled:Enabled`, event: 'toggle' })\r\n @prop()\r\n enabled: boolean = true;\r\n\r\n @prop()\r\n script: string;\r\n\r\n @prop()\r\n style: string;\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { Content } from '../models/content';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ContentService extends GenericService<Content> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('content');\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified alias is available.\r\n\t * @param id \r\n\t * @param alias \r\n\t */\r\n\tpublic isAliasAvailable(item: Content) {\r\n\t\treturn this.create(item, '/isAliasAvailable').pipe(map((x: any) => x.value));\r\n\t}\r\n\r\n\t/**\r\n\t * Duplicates a tariff\r\n\t * @param id \r\n\t */\r\n\tpublic duplicate(id: number): Observable<any> {\r\n\t\treturn this.create(null, `/duplicate/${id}`);\r\n\t}\r\n}","import { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport { HttpClient, HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { ChangeDetectorRef, Component, ViewChild } from '@angular/core';\r\nimport { MatChipInputEvent } from '@angular/material/chips';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AuthHelper, EnumService, FileService, GenericReactiveFormComponent } from '@messaia/cdk';\r\nimport { EditorComponent } from '@tinymce/tinymce-angular';\r\nimport { Subscription } from 'rxjs';\r\nimport { ContentType } from '../../enums/content-type';\r\nimport { WrapTag } from '../../enums/wrap-tag';\r\nimport { CmsSettings } from '../../models/cms-settings';\r\nimport { Content } from '../../models/content';\r\nimport { ContentService } from '../../services/content.service';\r\n\r\n@Component({\r\n\tselector: 'app-content-form',\r\n\ttemplateUrl: './content-form.component.html'\r\n})\r\nexport class ContentFormComponent extends GenericReactiveFormComponent<Content, ContentService> {\r\n\r\n\t/**\r\n\t * Used to disable some properties for client manager\r\n\t */\r\n\tpublic isClientAdmin = AuthHelper.hasRole('ClientAdministrator') || AuthHelper.hasRole('ClientManager');\r\n\r\n\t/**\r\n\t * Router Subscription\r\n\t */\r\n\tpublic routeSubscription: Subscription;\r\n\r\n\t/**\r\n\t * The status of the issue\r\n\t */\r\n\tpublic type: ContentType;\r\n\r\n\t/**\r\n\t * Content status\r\n\t */\r\n\tpublic ContentType: typeof ContentType = ContentType;\r\n\r\n\t/**\r\n\t * Wrap tag enum\r\n\t */\r\n\tpublic wrapTags: any[] = EnumService.toArray(WrapTag);\r\n\r\n\t/**\r\n\t * Separator keys codes\r\n\t */\r\n\tpublic separatorKeysCodes: number[] = [ENTER, COMMA];\r\n\r\n\t/**\r\n\t * settings: CmsSettings\r\n\t */\r\n\tpublic settings: CmsSettings = new CmsSettings();\r\n\r\n\t/**\r\n\t * Gets the aliases control\r\n\t */\r\n\tget aliasesControl() { return this.form.controls.aliases; }\r\n\r\n\t/**\r\n\t * A ref to form html element\r\n\t */\r\n\t@ViewChild('form', { static: false }) formElement: HTMLFormElement;\r\n\r\n\t/**\r\n\t * A ref to tinymce editor\r\n\t */\r\n\t@ViewChild('editor', { static: false }) editorComponent: EditorComponent;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor(\r\n\t\tprotected service: ContentService,\r\n\t\tprotected fileService: FileService,\r\n\t\tprotected httpClient: HttpClient,\r\n\t\tprotected route: ActivatedRoute,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef\r\n\t) {\r\n\t\tsuper(Content, service, route, changeDetectorRef)\r\n\t\tthis.settings = this.getService(CmsSettings);\r\n\t}\r\n\r\n\t/**\r\n\t * Lifecycle hook that is called after data-bound properties \r\n\t * of a directive are initialized.\r\n\t */\r\n\tngOnInit(): void {\r\n\t\t/* Filter by status, if any */\r\n\t\tthis.routeSubscription = this.route.params.subscribe((params: { type: string }) => {\r\n\t\t\tthis.type = EnumService.parse(ContentType, params.type);\r\n\t\t});\r\n\r\n\t\t/* Get some props from route snapshot */\r\n\t\tthis.route.data.subscribe((data: any) => {\r\n\t\t\tthis.formValidation = data.formValidation;\r\n\t\t});\r\n\r\n\t\tsuper.ngOnInit();\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified alias is available.\r\n\t */\r\n\tpublic isAliasAvailable() {\r\n\t\tthis.service.isAliasAvailable(this.item).subscribe((x: boolean) => {\r\n\t\t\tthis.formElement.form.controls['alias'].setErrors(x ? null : { 'inUse': true });\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Set client\r\n\t */\r\n\tpublic setClient(): void {\r\n\t\tthis.isEditorInitialzed = false;\r\n\t\tthis.configEditor();\r\n\t\tthis.editorComponent?.editor?.setContent(this.item.body);\r\n\t}\r\n\r\n\t/**\r\n\t * Add a aliases to the current field\r\n\t * @param event \r\n\t */\r\n\tpublic addAliases(event: MatChipInputEvent): void {\r\n\t\t/* Add our aliass */\r\n\t\tif ((event.value || '').trim()) {\r\n\t\t\tthis.aliasesControl.setValue([...this.aliasesControl.value, event.value.trim()]);\r\n\t\t\tthis.aliasesControl.updateValueAndValidity();\r\n\t\t\tthis.aliasesControl.markAsDirty();\r\n\t\t}\r\n\r\n\t\t/* Reset the input value */\r\n\t\tif (event.input) {\r\n\t\t\tevent.input.value = '';\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes a aliases\r\n\t * @param aliass \r\n\t */\r\n\tpublic removeAliases(aliass: string): void {\r\n\t\tconst index = this.aliasesControl.value.indexOf(aliass);\r\n\t\tif (index >= 0) {\r\n\t\t\tthis.aliasesControl.value.splice(index, 1);\r\n\t\t\tthis.aliasesControl.updateValueAndValidity();\r\n\t\t\tthis.aliasesControl.markAsDirty();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new instance of the Template\r\n\t */\r\n\tprotected newInstance(): Content {\r\n\t\tlet item = Object.assign(new Content(), <Content>{\r\n\t\t\ttype: this.type,\r\n\t\t\twrapTag: this.type == ContentType.Block ? '' : WrapTag.Section,\r\n\t\t\tshowTitle: this.type == ContentType.Block ? false : true\r\n\t\t});\r\n\r\n\t\t/* Get clientId */\r\n\t\tif (!this.isEditMode && this.isClientAdmin) {\r\n\t\t\titem.clientId = this.currentUser.clientId;\r\n\t\t}\r\n\r\n\t\t/* Init the tinymce editor */\r\n\t\tthis.isEditorInitialzed = false;\r\n\t\treturn item;\r\n\t}\r\n\r\n\t/**\r\n\t * Event emitted when the form has built.\r\n\t */\r\n\tprotected onAfterFormBuild(): void {\r\n\t\tsuper.onAfterFormBuild();\r\n\t\tthis.configEditor();\r\n\t}\r\n\r\n\t/**\r\n\t * Configures the tinymce editor\r\n\t */\r\n\tprivate configEditor(): void {\r\n\t\tif (this.settings?.multitenantable && this.formValue?.clientId && this.settings?.styleUrlEndpoint) {\r\n\t\t\tthis.httpClient.get(this.settings.styleUrlEndpoint(this.formValue.clientId)).subscribe((x: { value: string }) => {\r\n\t\t\t\tsuper.initEditor(Object.assign(this.getEditorConfig(), { content_css: x.value }));\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tsuper.initEditor(this.getEditorConfig());\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates config for the editor\r\n\t * @returns \r\n\t */\r\n\tprivate getEditorConfig(): any {\r\n\t\treturn {\r\n\t\t\ttoolbar: `${this.editorToolbar} snippetsButton`,\r\n\t\t\tforce_p_newlines: false,\r\n\t\t\tforced_root_block: '',\r\n\t\t\theight: this.settings?.editorHeight || '700px',\r\n\t\t\tfile_picker_types: 'file image media',\r\n\t\t\timage_advtab: true,\r\n\t\t\timages_upload_base_path: `${this.appSetting.apiUrl}file/`,\r\n\t\t\timages_upload_url: 'backend/api/files',\r\n\t\t\tallow_html_in_named_anchor: true,\r\n\t\t\tvalid_children: '+a[div|span|img|h1|h2|h3|h4|h5|h6|br|hr|video],+span[i]',\r\n\t\t\tvalid_elements: '*[*]',\r\n\t\t\timages_upload_handler: (blobInfo: any, success: any, failure: any) => {\r\n\t\t\t\tthis.fileService.upload(blobInfo.blob(), `upload`, {\r\n\t\t\t\t\tclientId: this.form?.value?.clientId,\r\n\t\t\t\t\tpath: 'images',\r\n\t\t\t\t\tisPublic: true\r\n\t\t\t\t}).subscribe(event => {\r\n\t\t\t\t\tif (event.type === HttpEventType.UploadProgress) {\r\n\r\n\t\t\t\t\t\t/* Calculate the progress percentage */\r\n\t\t\t\t\t\tconst percentDone = Math.round(100 * event.loaded / event.total);\r\n\r\n\t\t\t\t\t\t/* Pass the percentage into the progress-stream */\r\n\t\t\t\t\t\tconsole.info(percentDone);\r\n\t\t\t\t\t} else if (event instanceof HttpResponse) {\r\n\t\t\t\t\t\tsuccess(event.body.publicLink);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tsetup: function (editor: any) {\r\n\t\t\t\t/* Add snippets button to the toolbar */\r\n\t\t\t\teditor.ui.registry.addMenuButton('snippetsButton', {\r\n\t\t\t\t\ttext: 'Snippets',\r\n\t\t\t\t\tfetch: function (callback: any) {\r\n\t\t\t\t\t\tcallback([\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: 'menuitem',\r\n\t\t\t\t\t\t\t\ttext: 'Variable',\r\n\t\t\t\t\t\t\t\tonAction: () => editor.insertContent('{{var name}}')\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: 'menuitem',\r\n\t\t\t\t\t\t\t\ttext: 'Block',\r\n\t\t\t\t\t\t\t\tonAction: () => editor.insertContent('{{block name=\"...\"}}')\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: 'menuitem',\r\n\t\t\t\t\t\t\t\ttext: 'View Component',\r\n\t\t\t\t\t\t\t\tonAction: () => editor.insertContent('{{vc name=\"...\"}}')\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t]);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Cleanup subscriptions when this component is destroyed.\r\n\t */\r\n\tngOnDestroy(): void {\r\n\t\tif (this.routeSubscription) {\r\n\t\t\tthis.routeSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n}","<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [menuItems]=\"toolbarMenuItems\" (reload)=\"reloadPage()\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\r\n\t\t\t\t\t<!-- #region Client-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"settings?.multitenantable && !isClientAdmin\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@client\">Client</mat-label>\r\n\t\t\t\t\t\t\t<vd-select formControlName=\"clientId\" endpoint=\"client?enabled=true\" layout=\"column\" (change)=\"setClient()\" [required]=\"!item.default\" flex></vd-select>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.clientId['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Title -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@title\">Title</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"title\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.title['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Name & Alias -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@name\">Name</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"name\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.name['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Aliases -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@aliases\">Aliases</mat-label>\r\n\t\t\t\t\t\t\t<mat-chip-list #chipList formControlName=\"aliases\">\r\n\t\t\t\t\t\t\t\t<mat-chip *ngFor=\"let alias of form.controls.aliases.value\" (removed)=\"removeAliases(alias)\">\r\n\t\t\t\t\t\t\t\t\t<span>{{alias}}</span>\r\n\t\t\t\t\t\t\t\t\t<mat-icon matChipRemove>cancel</mat-icon>\r\n\t\t\t\t\t\t\t\t</mat-chip>\r\n\t\t\t\t\t\t\t\t<input type=\"text\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" matChipInputAddOnBlur=\"true\" (matChipInputTokenEnd)=\"addAliases($event)\">\r\n\t\t\t\t\t\t\t</mat-chip-list>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region wrap tag and layout -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\" *ngIf=\"type != ContentType.Block\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@wrap\">Wrap</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"wrapTag\">\r\n\t\t\t\t\t\t\t<mat-autocomplete #wrapTagsAutocomplete=\"matAutocomplete\">\r\n\t\t\t\t\t\t\t\t<mat-option *ngFor=\"let option of wrapTags\" [value]=\"option.name\">{{option.name}}</mat-option>\r\n\t\t\t\t\t\t\t</mat-autocomplete>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.wrapTag['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@layout\">Layout</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"layout\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.layout['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\t\t\t\t\t<!-- *ngIf=\"item.clientId && isEditorInitialzed\" -->\r\n\t\t\t\t\t<!-- #region Body -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"isEditorInitialzed\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@content\">Content</mat-label>\r\n\t\t\t\t\t\t\t<editor #editor formControlName=\"body\" tinyMatFormControl [(init)]=\"editorConfig\" required></editor>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.body['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Script -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@script\">Script</mat-label>\r\n\t\t\t\t\t\t\t<textarea matInput autocomplete=\"off\" formControlName=\"script\"></textarea>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.script['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Style -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@style\">Style</mat-label>\r\n\t\t\t\t\t\t\t<textarea matInput autocomplete=\"off\" formControlName=\"style\"></textarea>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.style['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Show title -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<div layout-margin appearance=\"outline\" class=\"push-top\">\r\n\t\t\t\t\t\t\t<mat-checkbox formControlName=\"showTitle\" i18n=\"@@showTitle\">Show title</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Default -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientAdmin\">\r\n\t\t\t\t\t\t<div layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-checkbox name=\"default\" formControlName=\"default\" (change)=\"item.clientId = item.default ? null : item.clientId\" i18n=\"@@default\">Default</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Enabled -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<div layout-margin appearance=\"outline\" class=\"push-bottom\">\r\n\t\t\t\t\t\t\t<mat-checkbox name=\"enabled\" formControlName=\"enabled\" i18n=\"@@active\">Active</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>","import { Column, prop, required, Table } from \"@messaia/cdk\";\r\nimport { Attachment, DocumentBase } from \"@messaia/cdk-base\";\r\n\r\n@Table({\r\n endpoint: 'document',\r\n editable: false,\r\n downloadable: true\r\n})\r\nexport class Document extends DocumentBase {\r\n @prop()\r\n customerId: number;\r\n\r\n @Column({\r\n index: 5,\r\n name: 'client.displayName',\r\n header: $localize`:@@client:Client`,\r\n endpoint: 'client?enabled=true&projection=id,name',\r\n maxWidth: 250,\r\n showGtXl: true\r\n })\r\n @required()\r\n clientId: number;\r\n\r\n @prop()\r\n attachments: Attachment[] = [];\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<Document>) {\r\n super(init);\r\n Object.assign(this, init);\r\n }\r\n}","import { GenericService } from '@messaia/cdk';\r\nimport { Document } from '../models/document';\r\n\r\nexport abstract class DocumentGenericService<TDocument extends Document> extends GenericService<TDocument> {\r\n\r\n /**\r\n * Constructor\r\n * @param serviceName\r\n */\r\n constructor(serviceName?: string) {\r\n super(serviceName);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Document } from '../models/document';\r\nimport { DocumentGenericService } from './document.generic-service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DocumentService extends DocumentGenericService<Document> {\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n super('document');\r\n }\r\n\r\n /**\r\n * Sends an email to the customer\r\n * @param id The ID of the document\r\n */\r\n public sendMail(id: number): Observable<any> {\r\n return this.update(`sendMail/${id}`, null);\r\n }\r\n}","import { HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { ChangeDetectorRef, Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AuthHelper, FileService, GenericReactiveFormComponent, SaveAction } from '@messaia/cdk';\r\nimport { CmsSettings } from '../../models/cms-settings';\r\nimport { Document } from '../../models/document';\r\nimport { DocumentService } from '../../services/document.service`';\r\n\r\n@Component({\r\n\tselector: 'document-dialog',\r\n\ttemplateUrl: 'document-dialog.component.html'\r\n})\r\nexport class DocumentDialogComponent extends GenericReactiveFormComponent<Document, DocumentService> {\r\n\t/**\r\n\t * Upload status\r\n\t */\r\n\tpublic isUploading: boolean;\r\n\r\n\t/**\r\n\t * Upload progress\r\n\t */\r\n\tpublic uploadProgress: number = 0;\r\n\r\n\t/**\r\n\t * Used to disable some properties for client manager\r\n\t */\r\n\tpublic isClientManager = AuthHelper.hasRole('ClientAdministrator') || AuthHelper.hasRole('ClientManager');\r\n\r\n\t/**\r\n\t * settings: CmsSettings\r\n\t */\r\n\tpublic settings: CmsSettings = new CmsSettings();\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor(\r\n\t\tprotected documentService: DocumentService,\r\n\t\tprotected fileService: FileService,\r\n\t\tprotected route: ActivatedRoute,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef,\r\n\t\tpublic dialogRef: MatDialogRef<DocumentDialogComponent>,\r\n\t\t@Inject(MAT_DIALOG_DATA) public item: Document = new Document()\r\n\t) {\r\n\t\tsuper(Document, documentService, route, changeDetectorRef)\r\n\t\tthis.settings = this.getService(CmsSettings);\r\n\t}\r\n\r\n\t/**\r\n\t * Uploads a new document\r\n\t */\r\n\tpublic upload(file: File): void {\r\n\t\tif (file != null && this.item && this.item.clientId) {\r\n\t\t\tthis.isUploading = true;\r\n\t\t\tthis.fileService.upload(file, `upload`, {\r\n\t\t\t\tclientId: this.form?.value?.clientId,\r\n\t\t\t\tpath: this.form?.value?.path,\r\n\t\t\t\tisPublic: true,\r\n\t\t\t\tpreserveOriginalName: this.form?.value?.preserveOriginalName\r\n\t\t\t}).subscribe(event => {\r\n\t\t\t\tif (event.type === HttpEventType.UploadProgress) {\r\n\r\n\t\t\t\t\t/* Calculate the progress percentage */\r\n\t\t\t\t\tconst percentDone = Math.round(100 * event.loaded / event.total);\r\n\r\n\t\t\t\t\t/* Pass the percentage into the progress-stream */\r\n\t\t\t\t\tthis.uploadProgress = percentDone;\r\n\t\t\t\t} else if (event instanceof HttpResponse) {\r\n\t\t\t\t\tthis.form.patchValue(<Document>event.body);\r\n\t\t\t\t\tthis.isUploading = false;\r\n\t\t\t\t}\r\n\t\t\t}, _ => this.isUploading = true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Event emitted after data submition\r\n\t * @param action \r\n\t * @param response \r\n\t */\r\n\tprotected onAfterSubmit(action: SaveAction = SaveAction.SaveAndClose, response: any = null): void {\r\n\t\tthis.isSaving = false;\r\n\t\tthis.cancel();\r\n\t}\r\n\r\n\t/**\r\n\t * Closes the dialog\r\n\t */\r\n\tpublic cancel(): void {\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n}","<div mat-dialog-title class=\"mat-title\" i18n=\"@@newDocument\">New document</div>\r\n<form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n\t<div>\r\n\t\t<!-- #region Client-->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientAdmin\">\r\n\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t<mat-label i18n=\"@@client\">Client</mat-label>\r\n\t\t\t\t<vd-select formControlName=\"clientId\" endpoint=\"client?enabled=true\" projection=\"id,displayName\" text=\"displayName\" layout=\"column\" flex></vd-select>\r\n\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.clientId['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Path -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t<mat-label i18n=\"@@type\">Type</mat-label>\r\n\t\t\t\t<mat-select formControlName=\"path\">\r\n\t\t\t\t\t<mat-option value=\"docs\"><span i18n=\"@@document\">Document</span></mat-option>\r\n\t\t\t\t\t<mat-option value=\"images\"><span i18n=\"@@image\">Image</span></mat-option>\r\n\t\t\t\t\t<mat-option value=\"videos\"><span i18n=\"@@video\">Video</span></mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.path['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion-->\r\n\r\n\t\t<!-- #region PreserveOriginalName -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientAdmin\">\r\n\t\t\t<div layout-margin appearance=\"outline\">\r\n\t\t\t\t<mat-checkbox name=\"preserveOriginalName\" formControlName=\"preserveOriginalName\" (change)=\"item.name = ''\" i18n=\"@@preserveOriginalName\">Preserve original name</mat-checkbox>\r\n\t\t\t\t<br />\r\n\t\t\t\t<mat-hint *ngIf=\"form?.value?.preserveOriginalName\" class=\"tc-red-500\" i18n=\"@@warningOldFilesWillBeBverridden\">Warning: old files will be overridden</mat-hint>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region File -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t<mat-label i18n=\"@@file\">File</mat-label>\r\n\t\t\t\t<div vd-file-input formControlName=\"name\" (select)=\"upload($event)\" required></div>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\t</div>\r\n\t<div mat-dialog-actions class=\"pad-top\">\r\n\t\t<button type=\"submit\" mat-flat-button [disabled]=\"form. isSaving\" color=\"primary\" i18n=\"@@save\">Save</button>\r\n\t\t<button type=\"button\" mat-button (click)=\"cancel()\" i18n=\"@@cancel\">Cancel</button>\r\n\t</div>\r\n</form>","export enum TemplateType {\r\n Email,\r\n Pdf\r\n}","import { AuditEntity, Column, Display, prop, required, Table } from \"@messaia/cdk\";\r\nimport { Attachment } from \"@messaia/cdk-base\";\r\nimport { TemplateType } from \"../enums/template-type\";\r\n\r\n@Table({\r\n\tendpoint: 'template',\r\n\tduplicable: true\r\n})\r\nexport class Template extends AuditEntity {\r\n\t@Display($localize`:@@type:Type`)\r\n\t@required()\r\n\ttype: TemplateType = TemplateType.Email;\r\n\r\n\t@Column()\r\n\t@Display($localize`:@@name:Name`)\r\n\t@required()\r\n\tname: string;\r\n\r\n\t@Column({ maxWidth: 250, showGtLg: true })\r\n\t@Display($localize`:@@subject:Subject`)\r\n\t@prop()\r\n\tsubject: string;\r\n\r\n\t@Column({ maxWidth: 150, showGtLg: true })\r\n\t@required()\r\n\t@Display('Key')\r\n\tkey: string;\r\n\r\n\t@Display($localize`:@@notice:Notice`)\r\n\t@prop()\r\n\tnotice: string;\r\n\r\n\t@Display($localize`:@@email:Email`)\r\n\t@prop()\r\n\temail: string;\r\n\r\n\t@required()\r\n\tcontent: string;\r\n\r\n\t@prop()\r\n\tdummyData: string;\r\n\r\n\t@Column({\r\n\t\tname: 'client.displayName',\r\n\t\tendpoint: 'client?enabled=true&projection=id,name',\r\n\t\tmaxWidth: 250,\r\n\t\tshowGtXl: true\r\n\t})\r\n\t@Display($localize`:@@client:Client`)\r\n\t@prop()\r\n\tclientId: number;\r\n\r\n\t@Column({ event: 'toggle' })\r\n\t@Display($localize`:@@enabled:Enabled`)\r\n\t@prop()\r\n\tenabled: true;\r\n\r\n\t@prop()\r\n\tattachments: Attachment[] = [];\r\n}","import { TemplateType } from \"../enums/template-type\";\r\n\r\nexport class TemplatePreview {\r\n type: TemplateType\r\n endpoint: string;\r\n displayName: string;\r\n entityName: string;\r\n entityId: number | null;\r\n templateId: number;\r\n email: string;\r\n subject: string;\r\n content: string;\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<TemplatePreview>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { TemplatePreview } from '../models/template-preview';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TemplatePreviewService extends GenericService<TemplatePreview> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('templatePreview');\r\n\t}\r\n}","import { ChangeDetectorRef, Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { BaseComponent } from '@messaia/cdk';\r\nimport { saveAs } from 'file-saver';\r\nimport { TemplateType } from '../../enums/template-type';\r\nimport { TemplatePreview } from '../../models/template-preview';\r\nimport { TemplatePreviewService } from '../../services/template-preview.service';\r\n\r\n@Component({\r\n selector: 'app-template-preview',\r\n templateUrl: 'template-preview-dialog.component.html',\r\n styleUrls: ['template-preview-dialog.component.scss']\r\n})\r\nexport class TemplatePreviewDialogComponent extends BaseComponent {\r\n\r\n /**\r\n * TemplateType\r\n */\r\n public TemplateType: typeof TemplateType = TemplateType;\r\n\r\n /**\r\n * Pdf blob\r\n */\r\n public pdfBlob: Blob;\r\n\r\n /**\r\n * PDF source\r\n */\r\n public pdfSrc: string | ArrayBuffer;\r\n\r\n /**\r\n * Pdf zoom\r\n */\r\n public zoom = 0.98;\r\n\r\n /**\r\n * Pdf zoom scale\r\n */\r\n public zoomScale = 'page-width';\r\n\r\n /**\r\n * Constructor\r\n * @param dialogRef \r\n * @param data \r\n */\r\n constructor(\r\n protected service: TemplatePreviewService,\r\n public dialogRef: MatDialogRef<TemplatePreviewDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: TemplatePreview,\r\n protected route: ActivatedRoute,\r\n protected changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n super(route, changeDetectorRef)\r\n this.data.email = localStorage.getItem('templatePreviewEmail') ?? '';\r\n }\r\n\r\n /**\r\n * Lifecycle hook that is called after data-bound properties\r\n * of a directive are initialized.\r\n */\r\n ngOnInit(): void {\r\n this.isLoading = true;\r\n if (this.data.type == TemplateType.Pdf) {\r\n this.service.create(this.data, null, { responseType: 'arraybuffer' }).subscribe({\r\n next: (x) => {\r\n this.isLoading = false;\r\n this.pdfBlob = new Blob([<any>x], { type: 'application/pdf' });\r\n this.pdfSrc = URL.createObjectURL(this.pdfBlob);\r\n },\r\n error: () => this.isLoading = false\r\n });\r\n } else {\r\n this.service.create(this.data).subscribe({\r\n next: (x) => {\r\n this.isLoading = false;\r\n Object.assign(this.data, x);\r\n },\r\n error: () => this.isLoading = false\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Sends a mail\r\n */\r\n public sendMail() {\r\n this.service.create(this.data, '/sendMail').subscribe({\r\n next: (x) => {\r\n this.isLoading = false;\r\n localStorage.setItem('templatePreviewEmail', this.data.email);\r\n this.snackBarService.open($localize`:@@snackbar.send.success:Data sent successfully.`, null, {\r\n duration: 3000,\r\n panelClass: ['primary']\r\n });\r\n },\r\n error: () => this.isLoading = false\r\n });\r\n }\r\n\r\n /**\r\n * Downloads the pdf\r\n */\r\n public download(): void {\r\n saveAs(this.pdfBlob, \"Pdf.pdf\");\r\n }\r\n\r\n /**\r\n * Zooms in the pdf\r\n */\r\n public zoomIn(): void {\r\n this.zoom += 0.1;\r\n }\r\n\r\n /**\r\n * Zooms out the pdf\r\n */\r\n public zoomOut(): void {\r\n this.zoom += -0.1;\r\n }\r\n\r\n /**\r\n * Closes the dialog\r\n */\r\n public cancel(): void {\r\n this.dialogRef.close();\r\n }\r\n}","<div mat-dialog-title class=\"mat-title\">\r\n <div layout=\"row\" flex>\r\n <span i18n=\"@@templatePreview\">Template preview</span>\r\n <span flex></span>\r\n <div *ngIf=\"data.type == TemplateType.Pdf && pdfSrc\">\r\n <a mat-icon-button (click)=\"download()\">\r\n <mat-icon>download</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomIn()\">\r\n <mat-icon>zoom_in</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomOut()\">\r\n <mat-icon>zoom_out</mat-icon>\r\n </a>\r\n </div>\r\n </div>\r\n</div>\r\n<form #form=\"ngForm\" novalidate>\r\n <!-- #region Entity -->\r\n <div layout=\"row\" flex *ngIf=\"data.endpoint\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label>{{data.entityName}}</mat-label>\r\n <vd-chips [(ngModel)]=\"data.entityId\" [endpoint]=\"data.endpoint\" [params]=\"{sortBy: 'id'}\" text=\"displayName\" name=\"entityId\" #entityId=\"ngModel\" (selected)=\"compile($event)\" (initSelect)=\"compile($event)\" [placeholder]=\"data.entityName\" required flex>\r\n <ng-template vd-chip let-entity=\"chip\">\r\n <span>{{entity[data.displayName]}}</span>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-entity=\"option\">\r\n <span>{{entity[data.displayName]}}</span>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-error *ngIf=\"entityId.errors?.required\"><span>{{data.entityName}}</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <div layout=\"column\" layout-gt-sm=\"row\" class=\"push-bottom\" flex *ngIf=\"isLoading\">\r\n <div flex layout-margin>\r\n <div class=\"push-bottom-sm\" i18n=\"@@pleaseWait\">Please Wait...</div>\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n </div>\r\n\r\n <!-- #region PDF Content -->\r\n <mat-card>\r\n <pdf-viewer [src]=\"pdfSrc\" *ngIf=\"data.type == TemplateType.Pdf && pdfSrc\" [render-text]=\"true\" [zoom]=\"zoom\" [zoom-scale]=\"zoomScale\" [show-borders]=\"true\" [original-size]=\"false\" [autoresize]=\"true\"></pdf-viewer>\r\n </mat-card>\r\n <!-- #region Content -->\r\n\r\n <div *ngIf=\"data.type != TemplateType.Pdf\">\r\n <!-- #region Content -->\r\n <div layout=\"row\" layout-margin flex class=\"content\">\r\n <div *ngIf=\"data.content\" [innerHtml]=\"data.content\"></div>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Email-->\r\n <div layout-gt-sm=\"row\" layout=\"column\" class=\"push-top pad-top\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label i18n=\"@@email\">Email</mat-label>\r\n <input matInput type=\"email\" name=\"email\" [(ngModel)]=\"data.email\" #email=\"ngModel\" required email placeholder=\"Email\" i18n-placeholder=\"@@email\">\r\n <button mat-icon-button matSuffix (click)=\"sendMail()\" [disabled]=\"!email.valid\">\r\n <mat-icon>send</mat-icon>\r\n </button>\r\n <mat-error *ngIf=\"email.errors?.required\"><span i18n=\"@@email\">Email</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n <mat-error *ngIf=\"!email.errors?.required && email.errors?.email\"><span i18n=\"@@email\">Email</span><span i18n=\"@@isInvalid\"> is invalid</span></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n </div>\r\n\r\n <div mat-dialog-actions class=\"pad-top\">\r\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"cancel()\" i18n=\"@@close\">Close</button>\r\n </div>\r\n</form>","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Template } from '../models/template';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TemplateService extends GenericService<Template> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('template');\r\n\t}\r\n}","import { HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AuthHelper, FileService, GenericReactiveFormComponent } from '@messaia/cdk';\r\nimport { Attachment } from '@messaia/cdk-base';\r\nimport 'codemirror/addon/edit/closetag';\r\nimport 'codemirror/addon/edit/matchbrackets';\r\nimport 'codemirror/addon/selection/active-line';\r\nimport 'codemirror/mode/htmlmixed/htmlmixed';\r\nimport 'codemirror/mode/javascript/javascript';\r\nimport { saveAs } from 'file-saver';\r\nimport { TemplateType } from '../../enums/template-type';\r\nimport { CmsSettings } from '../../models/cms-settings';\r\nimport { Template } from '../../models/template';\r\nimport { TemplatePreview } from '../../models/template-preview';\r\nimport { TemplateService } from '../../services/template.service';\r\nimport { TemplatePreviewDialogComponent } from '../template-preview-dialog/template-preview-dialog.component';\r\n\r\n@Component({\r\n\tselector: 'app-template-form',\r\n\ttemplateUrl: './template-form.component.html',\r\n\tstyleUrls: ['./template-form.component.scss'],\r\n\tencapsulation: ViewEncapsulation.None\r\n})\r\nexport class TemplateFormComponent extends GenericReactiveFormComponent<Template, TemplateService> {\r\n\r\n\t/**\r\n\t * Template type\r\n\t */\r\n\tpublic TemplateType: typeof TemplateType = TemplateType;\r\n\r\n\t/**\r\n\t * Used to disable some properties for client manager\r\n\t */\r\n\tpublic isClientAdmin = AuthHelper.hasRole('ClientAdministrator') || AuthHelper.hasRole('ClientManager');\r\n\r\n\t/**\r\n\t * settings: CmsSettings\r\n\t */\r\n\tpublic settings: CmsSettings = new CmsSettings();\r\n\r\n\t/**\r\n\t * Gets the attachments control\r\n\t */\r\n\tget attachmentsControl() { return this.form.controls.attachments; }\r\n\r\n\t/**\r\n\t * Editor options\r\n\t */\r\n\tpublic editorOptions: any = {\r\n\t\tlineNumbers: true,\r\n\t\ttheme: 'material',\r\n\t\tautoCloseTags: true,\r\n\t\tstyleActiveLine: true,\r\n\t\tmode: 'text/html',\r\n\t\tprofile: 'xhtml'\r\n\t};\r\n\r\n\t/**\r\n\t * Editor options\r\n\t */\r\n\tpublic jsonEditorOptions: any = {\r\n\t\tlineNumbers: true,\r\n\t\ttheme: 'material',\r\n\t\tautoCloseTags: true,\r\n\t\tstyleActiveLine: true,\r\n\t\tmode: {\r\n\t\t\tname: \"javascript\",\r\n\t\t\tjson: true,\r\n\t\t\tstatementIndent: 2\r\n\t\t},\r\n\t\tprofile: 'xhtml',\r\n\t\tlineWrapping: true,\r\n\t\tindentWithTabs: false,\r\n\t\ttabSize: 2\r\n\t}\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor(\r\n\t\tprotected service: TemplateService,\r\n\t\tprotected fileService: FileService,\r\n\t\tprotected dialog: MatDialog,\r\n\t\tprotected route: ActivatedRoute,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef\r\n\t) {\r\n\t\tsuper(Template, service, route, changeDetectorRef)\r\n\t\tthis.settings = this.getService(CmsSettings);\r\n\t}\r\n\r\n\t/**\r\n\t * Removes a attachment\r\n\t * @param attachment \r\n\t */\r\n\tpublic removeAttachment(attachment: Attachment): void {\r\n\t\tif (Array.isArray(this.item.attachments)) {\r\n\t\t\tvar index = this.attachmentsControl.value.indexOf(attachment, 0);\r\n\t\t\tif (index > -1) {\r\n\t\t\t\tthis.dialogService.openConfirm({\r\n\t\t\t\t\tmessage: 'Möchten Sie diesen Anhang wirklich löschen?',\r\n\t\t\t\t\ttitle: 'Löschen bestätigen',\r\n\t\t\t\t\tcancelButton: $localize`:@@cancel:Cancel`,\r\n\t\t\t\t\tacceptButton: $localize`:@@yes:Yes`,\r\n\t\t\t\t}).afterClosed().subscribe((accept: boolean) => {\r\n\t\t\t\t\tif (accept) {\r\n\t\t\t\t\t\tthis.attachmentsControl.value.splice(index, 1);\r\n\t\t\t\t\t\tthis.attachmentsControl.updateValueAndValidity();\r\n\t\t\t\t\t\tthis.attachmentsControl.markAsDirty();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Uploads a attachment file\r\n\t * @param file \r\n\t */\r\n\tpublic uploadAttachment(file: File): void {\r\n\t\tif (file != null) {\r\n\t\t\tthis.fileService.upload(file, `upload`, { clientId: this.item.clientId, path: `${this.item.clientId ? '' : 'common/'}docs` }).subscribe(event => {\r\n\t\t\t\tif (event.type === HttpEventType.UploadProgress) {\r\n\r\n\t\t\t\t\t/* Calculate the progress percentage */\r\n\t\t\t\t\tconst percentDone = Math.round(100 * event.loaded / event.total);\r\n\r\n\t\t\t\t\t/* Pass the percentage into the progress-stream */\r\n\t\t\t\t\tconsole.info(percentDone);\r\n\t\t\t\t} else if (event instanceof HttpResponse) {\r\n\t\t\t\t\t/* Add our attachments */\r\n\t\t\t\t\tthis.attachmentsControl.setValue([...this.attachmentsControl.value, <Attachment>event.body]);\r\n\t\t\t\t\tthis.attachmentsControl.updateValueAndValidity();\r\n\t\t\t\t\tthis.attachmentsControl.markAsDirty();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Downloads a attachment\r\n\t * @param attachment \r\n\t */\r\n\tpublic downloadAttachment(attachment: Attachment): void {\r\n\t\tif (attachment.id) {\r\n\t\t\tthis.service.download(`downloadAttachment/${attachment.id}`).subscribe(x => {\r\n\t\t\t\tsaveAs(new Blob([x.data], { type: '' }), x.filename);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Shows template preview\r\n\t */\r\n\tpublic showPreview(): void {\r\n\t\tthis.dialog.open(TemplatePreviewDialogComponent, {\r\n\t\t\twidth: this.item.type == TemplateType.Pdf ? '1020px' : '920px',\r\n\t\t\tdata: new TemplatePreview({\r\n\t\t\t\ttemplateId: this.item.id,\r\n\t\t\t\ttype: this.item.type\r\n\t\t\t}),\r\n\t\t\tpanelClass: ['dialog-full-screen']\r\n\t\t}).afterClosed().subscribe();\r\n\t}\r\n}","<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [editMode]=\"isEditMode\" [menuItems]=\"toolbarMenuItems\" (reload)=\"reloadPage()\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\r\n\t\t\t\t\t<!-- #region Client-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"settings?.multitenantable && !isClientAdmin\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@client\">Client</mat-label>\r\n\t\t\t\t\t\t\t<vd-select formControlName=\"clientId\" endpoint=\"client?enabled=true\" layout=\"column\" flex></vd-select>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.clientId['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t<mat-hint i18n=\"@@templateEmptyClientHint\">If empty this template will be used for all projects</mat-hint>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Type-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@type\">Type</mat-label>\r\n\t\t\t\t\t\t\t<vd-select formControlName=\"type\" [enum]=\"TemplateType\" layout=\"column\" flex></vd-select>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.type['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Name & Subject -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<!-- #region Name -->\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@name\">Name</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"name\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.name['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t\t<!-- #region Key -->\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@key\">Key</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"key\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.key['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t<!-- #endregion -->\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Subject -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@subject\">Subject</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"subject\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.subject['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Attachments -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@attachments\">Attachments</mat-label>\r\n\t\t\t\t\t\t\t<mat-chip-list #chipList formControlName=\"attachments\">\r\n\t\t\t\t\t\t\t\t<mat-chip *ngFor=\"let attachment of form.controls.attachments.value\" [selectable]=\"true\" color=\"primary\" removable=\"true\" (removed)=\"removeAttachment(attachment)\" (click)=\"downloadAttachment(attachment)\" selected>\r\n\t\t\t\t\t\t\t\t\t{{attachment.originalName}}\r\n\t\t\t\t\t\t\t\t\t<mat-icon matChipRemove>cancel</mat-icon>\r\n\t\t\t\t\t\t\t\t</mat-chip>\r\n\t\t\t\t\t\t\t\t<input placeholder=\"Attachments\" i18n-placeholder=\"@@attachments\" [matChipInputFor]=\"chipList\" [matChipInputAddOnBlur]=\"false\" (click)=\"fileInput.click()\" readonly>\r\n\t\t\t\t\t\t\t\t<mat-icon matSuffix (click)=\"fileInput.click()\">publish</mat-icon>\r\n\t\t\t\t\t\t\t\t<input hidden type=\"file\" accept=\"{{allowedExtensions}}\" #fileInput (change)=\"uploadAttachment($event.target.files[0])\" />\r\n\t\t\t\t\t\t\t</mat-chip-list>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Notice -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@notice\">Notice</mat-label>\r\n\t\t\t\t\t\t\t<textarea matInput autocomplete=\"off\" formControlName=\"notice\"></textarea>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.notice['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Enabled-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<div layout-margin appearance=\"outline\" class=\"push-top push-bottom\">\r\n\t\t\t\t\t\t\t<mat-checkbox formControlName=\"enabled\" i18n=\"@@active\">Active</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"content\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@content\">Content</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"testData\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@testData\">Test Data</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>","import { AuditEntity, Column, Display, FormField, prop, required, Table } from \"@messaia/cdk\";\r\n\r\n@Table({ endpoint: 'contentvariable' })\r\nexport class ContentVariable extends AuditEntity {\r\n @prop()\r\n title: string;\r\n\r\n @required()\r\n @FormField({ row: 2 })\r\n @Column({})\r\n @Display($localize`:@@name:Name`)\r\n name: string;\r\n\r\n @required()\r\n @FormField({ row: 3 })\r\n @Column({ showGtSm: true })\r\n @Display($localize`:@@value:Value`)\r\n value: string;\r\n\r\n @prop()\r\n @FormField({ row: 1, endpoint: 'client?enabled=true&projection=id,name' })\r\n @Column({ name: 'client.displayName', endpoint: 'client?enabled=true&projection=id,name', maxWidth: 190, showGtLg: true })\r\n @Display($localize`:@@client:Client`)\r\n clientId: number;\r\n\r\n @prop()\r\n @FormField({ row: 4 })\r\n @Column({})\r\n @Display($localize`:@@default:Default`)\r\n default: boolean;\r\n\r\n @prop()\r\n @FormField({ row: 5 })\r\n @Column({ event: 'toggle' })\r\n @Display($localize`:@@enabled:Enabled`)\r\n enabled: boolean;\r\n}","import { Api, AuditEntity, Column, Display, FormField, FormFieldType, prop, required, Table } from \"@messaia/cdk\";\r\n\r\n@Api('faq')\r\n@Table()\r\nexport class Faq extends AuditEntity {\r\n\t@required()\r\n\t@FormField({ row: 2 })\r\n\t@Column({ content: (x: Faq) => x?.question })\r\n\t@Display($localize`:@@question:Question`)\r\n\tquestion: string;\r\n\r\n\t@required()\r\n\t@FormField({\r\n\t\trow: 3, type: FormFieldType.Autocomplete, options: [\r\n\t\t\t{ id: 'Bills', name: 'Bills' },\r\n\t\t\t{ id: 'Contracts', name: 'Contracts' },\r\n\t\t\t{ id: 'Orders', name: 'Orders' },\r\n\t\t\t{ id: 'Profile', name: 'Profile' },\r\n\t\t]\r\n\t})\r\n\t@Column({ maxWidth: 190, showGtLg: true })\r\n\t@Display($localize`:@@group:Group`)\r\n\tgroup: string;\r\n\r\n\t@FormField({ row: 1, endpoint: 'client?enabled=true&projection=id,name' })\r\n\t@Column({\r\n\t\tname: 'client.displayName',\r\n\t\tendpoint: 'client?enabled=true&projection=id,name',\r\n\t\tmaxWidth: 250,\r\n\t\tshowGtXl: true\r\n\t})\r\n\t@Display($localize`:@@client:Client`)\r\n\t@prop()\r\n\tclientId: number;\r\n\r\n\t@prop()\r\n\t@FormField({ row: 3 })\r\n\t@Display($localize`:@@ordering:Ordering`)\r\n\tordering: number;\r\n\r\n\t@required()\r\n\t@FormField({ row: 4, type: FormFieldType.Editor })\r\n\t@Display($localize`:@@answer:Answer`)\r\n\tanswer: string;\r\n\r\n\t@prop()\r\n\t@FormField({ row: 5 })\r\n\t@Column({ event: 'toggle' })\r\n\t@Display($localize`:@@enabled:Enabled`)\r\n\tenabled: boolean;\r\n\r\n\t/**\r\n\t * constructor\r\n\t * @param init \r\n\t */\r\n\tpublic constructor(init?: Partial<Faq>) {\r\n\t\tsuper(init);\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}","import { Api, AuditEntity, Column, Display, FormField, FormFieldType, prop, required, Table } from \"@messaia/cdk\";\r\n\r\n@Api('slider')\r\n@Table()\r\nexport class Slider extends AuditEntity {\r\n @required()\r\n @FormField({ row: 2 })\r\n @Column({})\r\n @Display($localize`:@@name:Name`)\r\n name: string;\r\n\r\n @required()\r\n @FormField({ row: 3 })\r\n @Column({ maxWidth: 150, showGtLg: true })\r\n @Display($localize`:@@group:Group`)\r\n group: string;\r\n\r\n @required()\r\n @FormField({ row: 4, type: FormFieldType.Editor })\r\n @Display($localize`:@@content:Content`)\r\n content: string;\r\n\r\n @FormField({ row: 1, endpoint: 'client?enabled=true&projection=id,name' })\r\n @Column({\r\n name: 'client.displayName',\r\n endpoint: 'client?enabled=true&projection=id,name',\r\n maxWidth: 250,\r\n showGtLg: true\r\n })\r\n @Display($localize`:@@project:Project`)\r\n @prop()\r\n clientId: number;\r\n\r\n @prop()\r\n @FormField({ row: 3 })\r\n @Display($localize`:@@ordering:Ordering`)\r\n ordering: number;\r\n\r\n @prop()\r\n @FormField({ row: 5 })\r\n @Column({ event: 'toggle' })\r\n @Display($localize`:@@enabled:Enabled`)\r\n enabled: boolean;\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { Resolve } from \"@angular/router\";\r\nimport { ServiceLocator } from \"@messaia/cdk\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Excluded columns resolve service\r\n */\r\n@Injectable()\r\nexport class ExcludedColumnsResolve implements Resolve<string[]> {\r\n\r\n /**\r\n * Resolves excluded columns\r\n */\r\n resolve(): Observable<string[]> {\r\n return of(ServiceLocator.getService(CmsSettings)?.multitenantable ? [] : ['client.displayName']);\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { Resolve } from \"@angular/router\";\r\nimport { ServiceLocator } from \"@messaia/cdk\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Excluded fields resolve service\r\n */\r\n@Injectable()\r\nexport class ExcludedFieldsResolve implements Resolve<string[]> {\r\n\r\n /**\r\n * Resolves excluded fields\r\n */\r\n resolve(): Observable<string[]> {\r\n return of(ServiceLocator.getService(CmsSettings)?.multitenantable ? [] : ['clientId']);\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { Resolve } from \"@angular/router\";\r\nimport { ServiceLocator } from \"@messaia/cdk\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Form validation resolve service\r\n */\r\n@Injectable()\r\nexport class FormValidationResolve implements Resolve<any> {\r\n\r\n /**\r\n * Resolves Form validation\r\n */\r\n resolve(): Observable<any> {\r\n return of(ServiceLocator.getService(CmsSettings)?.multitenantable ? { clientId: { required: true } } : {});\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { Resolve } from \"@angular/router\";\r\nimport { ServiceLocator } from \"@messaia/cdk\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Includes resolve service\r\n */\r\n@Injectable()\r\nexport class IncludesResolve implements Resolve<string[]> {\r\n\r\n /**\r\n * Resolves includes\r\n */\r\n resolve(): Observable<string[]> {\r\n return of(ServiceLocator.getService(CmsSettings)?.multitenantable ? ['Client'] : []);\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, Resolve } from \"@angular/router\";\r\nimport { ServiceLocator } from \"@messaia/cdk\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Settings resolve service\r\n */\r\n@Injectable()\r\nexport class SettingsResolve implements Resolve<CmsSettings> {\r\n\r\n /**\r\n * Resolves settings\r\n */\r\n resolve(route: ActivatedRouteSnapshot): Observable<CmsSettings> {\r\n ServiceLocator.create([{\r\n provide: CmsSettings,\r\n useValue: <CmsSettings>route.parent.data.settings\r\n }]);\r\n\r\n return of(null);\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { ResolveData, RouterModule, Routes } from '@angular/router';\r\nimport { AuthHelper } from '@messaia/cdk';\r\nimport { DocumentType, VdDynamicFormComponent, VdDynamicListComponent } from '@messaia/cdk-base';\r\nimport { ContentFormComponent } from './comnponents/content-form/content-form.component';\r\nimport { DocumentDialogComponent } from './comnponents/document-dialog/document-dialog.component';\r\nimport { TemplateFormComponent } from './comnponents/template-form/template-form.component';\r\nimport { ContentType } from './enums/content-type';\r\nimport { Content } from './models/content';\r\nimport { ContentVariable } from './models/content-variable';\r\nimport { Document } from './models/document';\r\nimport { Faq } from './models/faq';\r\nimport { Slider } from './models/slider';\r\nimport { Template } from './models/template';\r\nimport { ExcludedColumnsResolve } from './resolvers/excluded-columns.resolve';\r\nimport { ExcludedFieldsResolve } from './resolvers/excluded-fields.resolve';\r\nimport { FormValidationResolve } from './resolvers/form-validation.resolve';\r\nimport { IncludesResolve } from './resolvers/includes.resolve';\r\nimport { SettingsResolve } from './resolvers/settings.resolve';\r\n\r\nconst ListResolve: ResolveData = {\r\n settings: SettingsResolve,\r\n includes: IncludesResolve,\r\n excludedColumns: ExcludedColumnsResolve\r\n};\r\n\r\nconst FormResolve: ResolveData = {\r\n settings: SettingsResolve,\r\n excludedFields: ExcludedFieldsResolve,\r\n formValidation: FormValidationResolve\r\n};\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: '/cms/contents/page', pathMatch: 'full' },\r\n { path: 'faq', redirectTo: '/cms/faqs', pathMatch: 'full' },\r\n\r\n { path: 'contents/page', component: VdDynamicListComponent, data: { classType: Content, query: { type: ContentType.Page } }, resolve: ListResolve },\r\n { path: 'contents/block', component: VdDynamicListComponent, data: { classType: Content, query: { type: ContentType.Block } }, resolve: ListResolve },\r\n { path: 'contents/:type/add', component: ContentFormComponent, resolve: FormResolve },\r\n { path: 'contents/:type/edit/:id', component: ContentFormComponent, resolve: FormResolve },\r\n //\r\n { path: 'variables', component: VdDynamicListComponent, data: { classType: ContentVariable }, resolve: ListResolve },\r\n { path: 'variables/edit/:id', component: VdDynamicFormComponent, data: { classType: ContentVariable, subtitle: $localize`:@@variables:Variables` }, resolve: FormResolve },\r\n { path: 'variables/add', component: VdDynamicFormComponent, data: { classType: ContentVariable, subtitle: $localize`:@@variables:Variables` }, resolve: FormResolve },\r\n\r\n { path: 'templates', component: VdDynamicListComponent, data: { classType: Template, includes: 'Client' }, resolve: ListResolve },\r\n { path: 'templates/edit/:id', component: TemplateFormComponent, resolve: FormResolve },\r\n { path: 'templates/add', component: TemplateFormComponent, resolve: FormResolve },\r\n\r\n { path: 'faqs', component: VdDynamicListComponent, data: { classType: Faq }, resolve: ListResolve },\r\n { path: 'faqs/edit/:id', component: VdDynamicFormComponent, data: { classType: Faq, subtitle: $localize`:@@faq:FAQ` }, resolve: FormResolve },\r\n { path: 'faqs/add', component: VdDynamicFormComponent, data: { classType: Faq, query: { clientId: AuthHelper.user.clientId }, subtitle: $localize`:@@faq:FAQ` }, resolve: FormResolve },\r\n\r\n { path: 'sliders', component: VdDynamicListComponent, data: { classType: Slider }, resolve: ListResolve },\r\n { path: 'sliders/edit/:id', component: VdDynamicFormComponent, data: { classType: Slider, subtitle: $localize`:@@slider:Slider` }, resolve: FormResolve },\r\n { path: 'sliders/add', component: VdDynamicFormComponent, data: { classType: Slider, query: { clientId: AuthHelper.user.clientId }, subtitle: $localize`:@@slider:Slider` }, resolve: FormResolve },\r\n\r\n { path: 'documents', component: VdDynamicListComponent, data: { classType: Document, addDialogType: DocumentDialogComponent, query: { type: DocumentType.Document } }, resolve: ListResolve },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n providers: [\r\n SettingsResolve,\r\n IncludesResolve,\r\n ExcludedColumnsResolve,\r\n ExcludedFieldsResolve,\r\n FormValidationResolve\r\n ]\r\n})\r\nexport class VdCmsRoutingModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { CodemirrorModule } from '@ctrl/ngx-codemirror';\r\nimport { VdCommonModule, VdFormsModule, VdLayoutModule, VdMediaModule, VdSelectModule } from '@messaia/cdk';\r\nimport { VdCdkBaseModule } from '@messaia/cdk-base';\r\nimport { EditorModule } from '@tinymce/tinymce-angular';\r\nimport { VdCmsRoutingModule } from './cms-routing.module';\r\nimport { ContentFormComponent } from './comnponents/content-form/content-form.component';\r\nimport { DocumentDialogComponent } from './comnponents/document-dialog/document-dialog.component';\r\nimport { TemplateFormComponent } from './comnponents/template-form/template-form.component';\r\nimport { TemplatePreviewDialogComponent } from './comnponents/template-preview-dialog/template-preview-dialog.component';\r\n\r\nexport {\r\n ContentFormComponent,\r\n DocumentDialogComponent,\r\n TemplateFormComponent,\r\n TemplatePreviewDialogComponent\r\n};\r\n\r\n@NgModule({\r\n exports: [\r\n MatCardModule,\r\n MatExpansionModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatChipsModule,\r\n MatAutocompleteModule,\r\n MatCheckboxModule,\r\n MatInputModule,\r\n MatProgressBarModule\r\n ]\r\n})\r\nexport class MaterialModule { }\r\n\r\n@NgModule({\r\n exports: [\r\n VdCommonModule,\r\n VdLayoutModule,\r\n VdMediaModule,\r\n VdFormsModule,\r\n VdSelectModule\r\n ]\r\n})\r\nexport class VdModule { }\r\n\r\nconst DECLARATION = [\r\n ContentFormComponent,\r\n TemplateFormComponent,\r\n TemplatePreviewDialogComponent,\r\n DocumentDialogComponent\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CodemirrorModule,\r\n VdCdkBaseModule,\r\n VdModule,\r\n MaterialModule,\r\n VdCmsRoutingModule,\r\n EditorModule,\r\n ],\r\n declarations: [DECLARATION],\r\n exports: [\r\n VdModule,\r\n MaterialModule,\r\n EditorModule,\r\n DECLARATION\r\n ]\r\n})\r\nexport class VdCmsModule { }","export enum FaqScope {\r\n\tCustomerPortal,\r\n\tAdmin\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { map } from 'rxjs/operators';\r\nimport { ContentVariable } from '../models/content-variable';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ContentVariableService extends GenericService<ContentVariable> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('contentVariable');\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified alias is available.\r\n\t * @param id \r\n\t * @param alias \r\n\t */\r\n\tpublic isNameAvailable(item: ContentVariable) {\r\n\t\treturn this.create(item, '/isNameAvailable').pipe(map((x: any) => x.value));\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Faq } from '../models/faq';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FaqService extends GenericService<Faq> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('faq');\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Slider } from '../models/slider';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SliderService extends GenericService<Slider> {\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n super('slider');\r\n }\r\n}","/*\n * Public API Surface of cdk-base\n */\nexport * from './cms.module';\nexport * from './enums/content-type';\nexport * from './enums/faq-scope';\nexport * from './enums/template-type';\nexport * from './enums/wrap-tag';\nexport * from './models/cms-settings';\nexport * from './models/content';\nexport * from './models/content-variable';\nexport * from './models/document';\nexport * from './models/faq';\nexport * from './models/slider';\nexport * from './models/template';\nexport * from './models/template-preview';\nexport * from './resolvers/includes.resolve';\nexport * from './services/content-variable.service';\nexport * from './services/content.service';\nexport * from './services/document.generic-service';\nexport * from './services/document.service`';\nexport * from './services/faq.service';\nexport * from './services/slider.service';\nexport * from './services/template-preview.service';\nexport * from './services/template.service';\n","/*\n * Public API Surface of cdk-cms\n */\n\nexport * from './lib/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messaia-cdk-cms.mjs","sources":["../../../projects/cdk-cms/src/lib/enums/content-type.ts","../../../projects/cdk-cms/src/lib/enums/wrap-tag.ts","../../../projects/cdk-cms/src/lib/models/cms-settings.ts","../../../projects/cdk-cms/src/lib/models/content.ts","../../../projects/cdk-cms/src/lib/services/content.service.ts","../../../projects/cdk-cms/src/lib/comnponents/content-form/content-form.component.ts","../../../projects/cdk-cms/src/lib/comnponents/content-form/content-form.component.html","../../../projects/cdk-cms/src/lib/models/document.ts","../../../projects/cdk-cms/src/lib/services/document.generic-service.ts","../../../projects/cdk-cms/src/lib/services/document.service`.ts","../../../projects/cdk-cms/src/lib/comnponents/document-dialog/document-dialog.component.ts","../../../projects/cdk-cms/src/lib/comnponents/document-dialog/document-dialog.component.html","../../../projects/cdk-cms/src/lib/enums/template-type.ts","../../../projects/cdk-cms/src/lib/models/template.ts","../../../projects/cdk-cms/src/lib/models/template-preview.ts","../../../projects/cdk-cms/src/lib/services/template-preview.service.ts","../../../projects/cdk-cms/src/lib/comnponents/template-preview-dialog/template-preview-dialog.component.ts","../../../projects/cdk-cms/src/lib/comnponents/template-preview-dialog/template-preview-dialog.component.html","../../../projects/cdk-cms/src/lib/services/template.service.ts","../../../projects/cdk-cms/src/lib/comnponents/template-form/template-form.component.ts","../../../projects/cdk-cms/src/lib/comnponents/template-form/template-form.component.html","../../../projects/cdk-cms/src/lib/models/content-variable.ts","../../../projects/cdk-cms/src/lib/models/faq.ts","../../../projects/cdk-cms/src/lib/models/slider.ts","../../../projects/cdk-cms/src/lib/resolvers/excluded-columns.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/excluded-fields.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/form-validation.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/includes.resolve.ts","../../../projects/cdk-cms/src/lib/resolvers/settings.resolve.ts","../../../projects/cdk-cms/src/lib/cms-routing.module.ts","../../../projects/cdk-cms/src/lib/cms.module.ts","../../../projects/cdk-cms/src/lib/enums/faq-scope.ts","../../../projects/cdk-cms/src/lib/services/content-variable.service.ts","../../../projects/cdk-cms/src/lib/services/faq.service.ts","../../../projects/cdk-cms/src/lib/services/slider.service.ts","../../../projects/cdk-cms/src/lib/public-api.ts","../../../projects/cdk-cms/src/public_api.ts","../../../projects/cdk-cms/src/messaia-cdk-cms.ts"],"sourcesContent":["export enum ContentType {\r\n Page = 1,\r\n Block\r\n}","export enum WrapTag {\r\n None = '',\r\n Section = 'section',\r\n Div = 'div',\r\n Address = 'address',\r\n Article = 'article'\r\n}","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class CmsSettings {\r\n multitenantable: boolean = false;\r\n styleUrlEndpoint: Function;\r\n editorHeight: string = '700px';\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<CmsSettings>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { Api, AuditEntity, Column, Display, prop, required, Table } from \"@messaia/cdk\";\r\nimport { ContentType } from \"../enums/content-type\";\r\nimport { WrapTag } from \"../enums/wrap-tag\";\r\n\r\n@Api('content')\r\n@Table({ duplicable: true })\r\nexport class Content extends AuditEntity {\r\n @prop()\r\n type: ContentType;\r\n\r\n @prop()\r\n sectionId: number;\r\n\r\n @Column()\r\n @Display($localize`:@@title:Title`)\r\n @required()\r\n title: string;\r\n\r\n @Column({ maxWidth: 190, showGtMd: true })\r\n @Display($localize`:@@name:Name`)\r\n @required()\r\n name: string;\r\n\r\n @prop()\r\n aliases: string;\r\n\r\n @prop()\r\n body: string;\r\n\r\n @prop()\r\n wrapTag: WrapTag = WrapTag.Section;\r\n\r\n @prop()\r\n layout: string;\r\n\r\n @prop()\r\n showTitle: boolean = true;\r\n\r\n @Column({\r\n name: 'client.displayName',\r\n endpoint: 'client?enabled=true&projection=id,name',\r\n maxWidth: 190,\r\n showGtLg: true\r\n })\r\n @Display($localize`:@@client:Client`)\r\n @prop()\r\n clientId: number;\r\n\r\n @prop()\r\n default: boolean = false;\r\n\r\n @Column({ header: $localize`:@@enabled:Enabled`, event: 'toggle' })\r\n @prop()\r\n enabled: boolean = true;\r\n\r\n @prop()\r\n script: string;\r\n\r\n @prop()\r\n style: string;\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { Content } from '../models/content';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ContentService extends GenericService<Content> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('content');\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified alias is available.\r\n\t * @param id \r\n\t * @param alias \r\n\t */\r\n\tpublic isAliasAvailable(item: Content) {\r\n\t\treturn this.create(item, '/isAliasAvailable').pipe(map((x: any) => x.value));\r\n\t}\r\n\r\n\t/**\r\n\t * Duplicates a tariff\r\n\t * @param id \r\n\t */\r\n\tpublic duplicate(id: number): Observable<any> {\r\n\t\treturn this.create(null, `/duplicate/${id}`);\r\n\t}\r\n}","import { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport { HttpClient, HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { ChangeDetectorRef, Component, ViewChild } from '@angular/core';\r\nimport { MatChipInputEvent } from '@angular/material/chips';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AuthHelper, EnumService, FileService, GenericReactiveFormComponent } from '@messaia/cdk';\r\nimport { EditorComponent } from '@tinymce/tinymce-angular';\r\nimport { Subscription } from 'rxjs';\r\nimport { ContentType } from '../../enums/content-type';\r\nimport { WrapTag } from '../../enums/wrap-tag';\r\nimport { CmsSettings } from '../../models/cms-settings';\r\nimport { Content } from '../../models/content';\r\nimport { ContentService } from '../../services/content.service';\r\n\r\n@Component({\r\n\tselector: 'app-content-form',\r\n\ttemplateUrl: './content-form.component.html'\r\n})\r\nexport class ContentFormComponent extends GenericReactiveFormComponent<Content, ContentService> {\r\n\r\n\t/**\r\n\t * Used to disable some properties for client manager\r\n\t */\r\n\tpublic isClientAdmin = AuthHelper.hasRole('ClientAdministrator') || AuthHelper.hasRole('ClientManager');\r\n\r\n\t/**\r\n\t * Router Subscription\r\n\t */\r\n\tpublic routeSubscription: Subscription;\r\n\r\n\t/**\r\n\t * The status of the issue\r\n\t */\r\n\tpublic type: ContentType;\r\n\r\n\t/**\r\n\t * Content status\r\n\t */\r\n\tpublic ContentType: typeof ContentType = ContentType;\r\n\r\n\t/**\r\n\t * Wrap tag enum\r\n\t */\r\n\tpublic wrapTags: any[] = EnumService.toArray(WrapTag);\r\n\r\n\t/**\r\n\t * Separator keys codes\r\n\t */\r\n\tpublic separatorKeysCodes: number[] = [ENTER, COMMA];\r\n\r\n\t/**\r\n\t * settings: CmsSettings\r\n\t */\r\n\tpublic settings: CmsSettings = new CmsSettings();\r\n\r\n\t/**\r\n\t * Gets the aliases control\r\n\t */\r\n\tget aliasesControl() { return this.form.controls.aliases; }\r\n\r\n\t/**\r\n\t * A ref to form html element\r\n\t */\r\n\t@ViewChild('form', { static: false }) formElement: HTMLFormElement;\r\n\r\n\t/**\r\n\t * A ref to tinymce editor\r\n\t */\r\n\t@ViewChild('editor', { static: false }) editorComponent: EditorComponent;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor(\r\n\t\tprotected service: ContentService,\r\n\t\tprotected fileService: FileService,\r\n\t\tprotected httpClient: HttpClient,\r\n\t\tprotected route: ActivatedRoute,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef\r\n\t) {\r\n\t\tsuper(Content, service, route, changeDetectorRef)\r\n\t\tthis.settings = this.getService(CmsSettings);\r\n\t}\r\n\r\n\t/**\r\n\t * Lifecycle hook that is called after data-bound properties \r\n\t * of a directive are initialized.\r\n\t */\r\n\tngOnInit(): void {\r\n\t\t/* Filter by status, if any */\r\n\t\tthis.routeSubscription = this.route.params.subscribe((params: { type: string }) => {\r\n\t\t\tthis.type = EnumService.parse(ContentType, params.type);\r\n\t\t});\r\n\r\n\t\t/* Get some props from route snapshot */\r\n\t\tthis.route.data.subscribe((data: any) => {\r\n\t\t\tthis.formValidation = data.formValidation;\r\n\t\t});\r\n\r\n\t\tsuper.ngOnInit();\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified alias is available.\r\n\t */\r\n\tpublic isAliasAvailable() {\r\n\t\tthis.service.isAliasAvailable(this.item).subscribe((x: boolean) => {\r\n\t\t\tthis.formElement.form.controls['alias'].setErrors(x ? null : { 'inUse': true });\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Set client\r\n\t */\r\n\tpublic setClient(): void {\r\n\t\tthis.isEditorInitialzed = false;\r\n\t\tthis.configEditor();\r\n\t\tthis.editorComponent?.editor?.setContent(this.item.body);\r\n\t}\r\n\r\n\t/**\r\n\t * Add a aliases to the current field\r\n\t * @param event \r\n\t */\r\n\tpublic addAliases(event: MatChipInputEvent): void {\r\n\t\t/* Add our aliass */\r\n\t\tif ((event.value || '').trim()) {\r\n\t\t\tthis.aliasesControl.setValue([...this.aliasesControl.value, event.value.trim()]);\r\n\t\t\tthis.aliasesControl.updateValueAndValidity();\r\n\t\t\tthis.aliasesControl.markAsDirty();\r\n\t\t}\r\n\r\n\t\t/* Reset the input value */\r\n\t\tif (event.input) {\r\n\t\t\tevent.input.value = '';\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes a aliases\r\n\t * @param aliass \r\n\t */\r\n\tpublic removeAliases(aliass: string): void {\r\n\t\tconst index = this.aliasesControl.value.indexOf(aliass);\r\n\t\tif (index >= 0) {\r\n\t\t\tthis.aliasesControl.value.splice(index, 1);\r\n\t\t\tthis.aliasesControl.updateValueAndValidity();\r\n\t\t\tthis.aliasesControl.markAsDirty();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new instance of the Template\r\n\t */\r\n\tprotected newInstance(): Content {\r\n\t\tlet item = Object.assign(new Content(), <Content>{\r\n\t\t\ttype: this.type,\r\n\t\t\twrapTag: this.type == ContentType.Block ? '' : WrapTag.Section,\r\n\t\t\tshowTitle: this.type == ContentType.Block ? false : true\r\n\t\t});\r\n\r\n\t\t/* Get clientId */\r\n\t\tif (!this.isEditMode && this.isClientAdmin) {\r\n\t\t\titem.clientId = this.currentUser.clientId;\r\n\t\t}\r\n\r\n\t\t/* Init the tinymce editor */\r\n\t\tthis.isEditorInitialzed = false;\r\n\t\treturn item;\r\n\t}\r\n\r\n\t/**\r\n\t * Event emitted when the form has built.\r\n\t */\r\n\tprotected onAfterFormBuild(): void {\r\n\t\tsuper.onAfterFormBuild();\r\n\t\tthis.configEditor();\r\n\t}\r\n\r\n\t/**\r\n\t * Configures the tinymce editor\r\n\t */\r\n\tprivate configEditor(): void {\r\n\t\tif (this.settings?.multitenantable && this.formValue?.clientId && this.settings?.styleUrlEndpoint) {\r\n\t\t\tthis.httpClient.get(this.settings.styleUrlEndpoint(this.formValue.clientId)).subscribe((x: { value: string }) => {\r\n\t\t\t\tsuper.initEditor(Object.assign(this.getEditorConfig(), { content_css: x.value }));\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tsuper.initEditor(this.getEditorConfig());\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates config for the editor\r\n\t * @returns \r\n\t */\r\n\tprivate getEditorConfig(): any {\r\n\t\treturn {\r\n\t\t\ttoolbar: `${this.editorToolbar} snippetsButton`,\r\n\t\t\tforce_p_newlines: false,\r\n\t\t\tforced_root_block: '',\r\n\t\t\theight: this.settings?.editorHeight || '700px',\r\n\t\t\tfile_picker_types: 'file image media',\r\n\t\t\timage_advtab: true,\r\n\t\t\timages_upload_base_path: `${this.appSetting.apiUrl}file/`,\r\n\t\t\timages_upload_url: 'backend/api/files',\r\n\t\t\tallow_html_in_named_anchor: true,\r\n\t\t\tvalid_children: '+a[div|span|img|h1|h2|h3|h4|h5|h6|br|hr|video],+span[i]',\r\n\t\t\tvalid_elements: '*[*]',\r\n\t\t\timages_upload_handler: (blobInfo: any, success: any, failure: any) => {\r\n\t\t\t\tthis.fileService.upload(blobInfo.blob(), `upload`, {\r\n\t\t\t\t\tclientId: this.form?.value?.clientId,\r\n\t\t\t\t\tpath: 'images',\r\n\t\t\t\t\tisPublic: true\r\n\t\t\t\t}).subscribe(event => {\r\n\t\t\t\t\tif (event.type === HttpEventType.UploadProgress) {\r\n\r\n\t\t\t\t\t\t/* Calculate the progress percentage */\r\n\t\t\t\t\t\tconst percentDone = Math.round(100 * event.loaded / event.total);\r\n\r\n\t\t\t\t\t\t/* Pass the percentage into the progress-stream */\r\n\t\t\t\t\t\tconsole.info(percentDone);\r\n\t\t\t\t\t} else if (event instanceof HttpResponse) {\r\n\t\t\t\t\t\tsuccess(event.body.publicLink);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tsetup: function (editor: any) {\r\n\t\t\t\t/* Add snippets button to the toolbar */\r\n\t\t\t\teditor.ui.registry.addMenuButton('snippetsButton', {\r\n\t\t\t\t\ttext: 'Snippets',\r\n\t\t\t\t\tfetch: function (callback: any) {\r\n\t\t\t\t\t\tcallback([\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: 'menuitem',\r\n\t\t\t\t\t\t\t\ttext: 'Variable',\r\n\t\t\t\t\t\t\t\tonAction: () => editor.insertContent('{{var name}}')\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: 'menuitem',\r\n\t\t\t\t\t\t\t\ttext: 'Block',\r\n\t\t\t\t\t\t\t\tonAction: () => editor.insertContent('{{block name=\"...\"}}')\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: 'menuitem',\r\n\t\t\t\t\t\t\t\ttext: 'View Component',\r\n\t\t\t\t\t\t\t\tonAction: () => editor.insertContent('{{vc name=\"...\"}}')\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t]);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Cleanup subscriptions when this component is destroyed.\r\n\t */\r\n\tngOnDestroy(): void {\r\n\t\tif (this.routeSubscription) {\r\n\t\t\tthis.routeSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n}","<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Content\" i18n-toolbarTitle=\"@@content\" [editMode]=\"isEditMode\" [menuItems]=\"toolbarMenuItems\" (reload)=\"reloadPage()\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\r\n\t\t\t\t\t<!-- #region Client-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"settings?.multitenantable && !isClientAdmin\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@client\">Client</mat-label>\r\n\t\t\t\t\t\t\t<vd-select formControlName=\"clientId\" endpoint=\"client?enabled=true\" layout=\"column\" (change)=\"setClient()\" [required]=\"!item.default\" flex></vd-select>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.clientId['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Title -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@title\">Title</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"title\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.title['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Name & Alias -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@name\">Name</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"name\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.name['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Aliases -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@aliases\">Aliases</mat-label>\r\n\t\t\t\t\t\t\t<mat-chip-list #chipList formControlName=\"aliases\">\r\n\t\t\t\t\t\t\t\t<mat-chip *ngFor=\"let alias of form.controls.aliases.value\" (removed)=\"removeAliases(alias)\">\r\n\t\t\t\t\t\t\t\t\t<span>{{alias}}</span>\r\n\t\t\t\t\t\t\t\t\t<mat-icon matChipRemove>cancel</mat-icon>\r\n\t\t\t\t\t\t\t\t</mat-chip>\r\n\t\t\t\t\t\t\t\t<input type=\"text\" [matChipInputFor]=\"chipList\" [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" matChipInputAddOnBlur=\"true\" (matChipInputTokenEnd)=\"addAliases($event)\">\r\n\t\t\t\t\t\t\t</mat-chip-list>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region wrap tag and layout -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\" *ngIf=\"type != ContentType.Block\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@wrap\">Wrap</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"wrapTag\">\r\n\t\t\t\t\t\t\t<mat-autocomplete #wrapTagsAutocomplete=\"matAutocomplete\">\r\n\t\t\t\t\t\t\t\t<mat-option *ngFor=\"let option of wrapTags\" [value]=\"option.name\">{{option.name}}</mat-option>\r\n\t\t\t\t\t\t\t</mat-autocomplete>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.wrapTag['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@layout\">Layout</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"layout\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.layout['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\t\t\t\t\t<!-- *ngIf=\"item.clientId && isEditorInitialzed\" -->\r\n\t\t\t\t\t<!-- #region Body -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"isEditorInitialzed\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@content\">Content</mat-label>\r\n\t\t\t\t\t\t\t<editor #editor formControlName=\"body\" tinyMatFormControl [(init)]=\"editorConfig\" required></editor>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.body['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Script -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@script\">Script</mat-label>\r\n\t\t\t\t\t\t\t<textarea matInput autocomplete=\"off\" formControlName=\"script\"></textarea>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.script['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Style -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@style\">Style</mat-label>\r\n\t\t\t\t\t\t\t<textarea matInput autocomplete=\"off\" formControlName=\"style\"></textarea>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.style['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Show title -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<div layout-margin appearance=\"outline\" class=\"push-top\">\r\n\t\t\t\t\t\t\t<mat-checkbox formControlName=\"showTitle\" i18n=\"@@showTitle\">Show title</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Default -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientAdmin\">\r\n\t\t\t\t\t\t<div layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-checkbox name=\"default\" formControlName=\"default\" (change)=\"item.clientId = item.default ? null : item.clientId\" i18n=\"@@default\">Default</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Enabled -->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<div layout-margin appearance=\"outline\" class=\"push-bottom\">\r\n\t\t\t\t\t\t\t<mat-checkbox name=\"enabled\" formControlName=\"enabled\" i18n=\"@@active\">Active</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button *ngIf=\"isEditMode\" (click)=\"apply()\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>","import { Column, prop, required, Table } from \"@messaia/cdk\";\r\nimport { Attachment, DocumentBase } from \"@messaia/cdk-base\";\r\n\r\n@Table({\r\n endpoint: 'document',\r\n editable: false,\r\n downloadable: true\r\n})\r\nexport class Document extends DocumentBase {\r\n @prop()\r\n customerId: number;\r\n\r\n @Column({\r\n index: 5,\r\n name: 'client.displayName',\r\n header: $localize`:@@client:Client`,\r\n endpoint: 'client?enabled=true&projection=id,name',\r\n maxWidth: 250,\r\n showGtXl: true\r\n })\r\n @required()\r\n clientId: number;\r\n\r\n @prop()\r\n attachments: Attachment[] = [];\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<Document>) {\r\n super(init);\r\n Object.assign(this, init);\r\n }\r\n}","import { GenericService } from '@messaia/cdk';\r\nimport { Document } from '../models/document';\r\n\r\nexport abstract class DocumentGenericService<TDocument extends Document> extends GenericService<TDocument> {\r\n\r\n /**\r\n * Constructor\r\n * @param serviceName\r\n */\r\n constructor(serviceName?: string) {\r\n super(serviceName);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Document } from '../models/document';\r\nimport { DocumentGenericService } from './document.generic-service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DocumentService extends DocumentGenericService<Document> {\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n super('document');\r\n }\r\n\r\n /**\r\n * Sends an email to the customer\r\n * @param id The ID of the document\r\n */\r\n public sendMail(id: number): Observable<any> {\r\n return this.update(`sendMail/${id}`, null);\r\n }\r\n}","import { HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { ChangeDetectorRef, Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AuthHelper, FileService, GenericReactiveFormComponent, SaveAction } from '@messaia/cdk';\r\nimport { CmsSettings } from '../../models/cms-settings';\r\nimport { Document } from '../../models/document';\r\nimport { DocumentService } from '../../services/document.service`';\r\n\r\n@Component({\r\n\tselector: 'document-dialog',\r\n\ttemplateUrl: 'document-dialog.component.html'\r\n})\r\nexport class DocumentDialogComponent extends GenericReactiveFormComponent<Document, DocumentService> {\r\n\t/**\r\n\t * Upload status\r\n\t */\r\n\tpublic isUploading: boolean;\r\n\r\n\t/**\r\n\t * Upload progress\r\n\t */\r\n\tpublic uploadProgress: number = 0;\r\n\r\n\t/**\r\n\t * Used to disable some properties for client manager\r\n\t */\r\n\tpublic isClientManager = AuthHelper.hasRole('ClientAdministrator') || AuthHelper.hasRole('ClientManager');\r\n\r\n\t/**\r\n\t * settings: CmsSettings\r\n\t */\r\n\tpublic settings: CmsSettings = new CmsSettings();\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor(\r\n\t\tprotected documentService: DocumentService,\r\n\t\tprotected fileService: FileService,\r\n\t\tprotected route: ActivatedRoute,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef,\r\n\t\tpublic dialogRef: MatDialogRef<DocumentDialogComponent>,\r\n\t\t@Inject(MAT_DIALOG_DATA) public item: Document = new Document()\r\n\t) {\r\n\t\tsuper(Document, documentService, route, changeDetectorRef)\r\n\t\tthis.settings = this.getService(CmsSettings);\r\n\t}\r\n\r\n\t/**\r\n\t * Uploads a new document\r\n\t */\r\n\tpublic upload(file: File): void {\r\n\t\tif (file != null && this.item && this.item.clientId) {\r\n\t\t\tthis.isUploading = true;\r\n\t\t\tthis.fileService.upload(file, `upload`, {\r\n\t\t\t\tclientId: this.form?.value?.clientId,\r\n\t\t\t\tpath: this.form?.value?.path,\r\n\t\t\t\tisPublic: true,\r\n\t\t\t\tpreserveOriginalName: this.form?.value?.preserveOriginalName\r\n\t\t\t}).subscribe(event => {\r\n\t\t\t\tif (event.type === HttpEventType.UploadProgress) {\r\n\r\n\t\t\t\t\t/* Calculate the progress percentage */\r\n\t\t\t\t\tconst percentDone = Math.round(100 * event.loaded / event.total);\r\n\r\n\t\t\t\t\t/* Pass the percentage into the progress-stream */\r\n\t\t\t\t\tthis.uploadProgress = percentDone;\r\n\t\t\t\t} else if (event instanceof HttpResponse) {\r\n\t\t\t\t\tthis.form.patchValue(<Document>event.body);\r\n\t\t\t\t\tthis.isUploading = false;\r\n\t\t\t\t}\r\n\t\t\t}, _ => this.isUploading = true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Event emitted after data submition\r\n\t * @param action \r\n\t * @param response \r\n\t */\r\n\tprotected onAfterSubmit(action: SaveAction = SaveAction.SaveAndClose, response: any = null): void {\r\n\t\tthis.isSaving = false;\r\n\t\tthis.cancel();\r\n\t}\r\n\r\n\t/**\r\n\t * Closes the dialog\r\n\t */\r\n\tpublic cancel(): void {\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n}","<div mat-dialog-title class=\"mat-title\" i18n=\"@@newDocument\">New document</div>\r\n<form *ngIf=\"form\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\r\n\t<div>\r\n\t\t<!-- #region Client-->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientAdmin\">\r\n\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t<mat-label i18n=\"@@client\">Client</mat-label>\r\n\t\t\t\t<vd-select formControlName=\"clientId\" endpoint=\"client?enabled=true\" projection=\"id,displayName\" text=\"displayName\" layout=\"column\" flex></vd-select>\r\n\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.clientId['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Path -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t<mat-label i18n=\"@@type\">Type</mat-label>\r\n\t\t\t\t<mat-select formControlName=\"path\">\r\n\t\t\t\t\t<mat-option value=\"docs\"><span i18n=\"@@document\">Document</span></mat-option>\r\n\t\t\t\t\t<mat-option value=\"images\"><span i18n=\"@@image\">Image</span></mat-option>\r\n\t\t\t\t\t<mat-option value=\"videos\"><span i18n=\"@@video\">Video</span></mat-option>\r\n\t\t\t\t</mat-select>\r\n\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.path['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion-->\r\n\r\n\t\t<!-- #region PreserveOriginalName -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"!isClientAdmin\">\r\n\t\t\t<div layout-margin appearance=\"outline\">\r\n\t\t\t\t<mat-checkbox name=\"preserveOriginalName\" formControlName=\"preserveOriginalName\" (change)=\"item.name = ''\" i18n=\"@@preserveOriginalName\">Preserve original name</mat-checkbox>\r\n\t\t\t\t<br />\r\n\t\t\t\t<mat-hint *ngIf=\"form?.value?.preserveOriginalName\" class=\"tc-red-500\" i18n=\"@@warningOldFilesWillBeBverridden\">Warning: old files will be overridden</mat-hint>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region File -->\r\n\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t<mat-label i18n=\"@@file\">File</mat-label>\r\n\t\t\t\t<div vd-file-input formControlName=\"name\" (select)=\"upload($event)\" required></div>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\t</div>\r\n\t<div mat-dialog-actions class=\"pad-top\">\r\n\t\t<button type=\"submit\" mat-flat-button [disabled]=\"form. isSaving\" color=\"primary\" i18n=\"@@save\">Save</button>\r\n\t\t<button type=\"button\" mat-button (click)=\"cancel()\" i18n=\"@@cancel\">Cancel</button>\r\n\t</div>\r\n</form>","export enum TemplateType {\r\n Email,\r\n Pdf\r\n}","import { AuditEntity, Column, Display, prop, required, Table } from \"@messaia/cdk\";\r\nimport { Attachment } from \"@messaia/cdk-base\";\r\nimport { TemplateType } from \"../enums/template-type\";\r\n\r\n@Table({\r\n\tendpoint: 'template',\r\n\tduplicable: true\r\n})\r\nexport class Template extends AuditEntity {\r\n\t@Display($localize`:@@type:Type`)\r\n\t@required()\r\n\ttype: TemplateType = TemplateType.Email;\r\n\r\n\t@Column()\r\n\t@Display($localize`:@@name:Name`)\r\n\t@required()\r\n\tname: string;\r\n\r\n\t@Column({ maxWidth: 250, showGtLg: true })\r\n\t@Display($localize`:@@subject:Subject`)\r\n\t@prop()\r\n\tsubject: string;\r\n\r\n\t@Column({ maxWidth: 150, showGtLg: true })\r\n\t@required()\r\n\t@Display('Key')\r\n\tkey: string;\r\n\r\n\t@Display($localize`:@@notice:Notice`)\r\n\t@prop()\r\n\tnotice: string;\r\n\r\n\t@Display($localize`:@@email:Email`)\r\n\t@prop()\r\n\temail: string;\r\n\r\n\t@required()\r\n\tcontent: string;\r\n\r\n\t@prop()\r\n\tdummyData: string;\r\n\r\n\t@Column({\r\n\t\tname: 'client.displayName',\r\n\t\tendpoint: 'client?enabled=true&projection=id,name',\r\n\t\tmaxWidth: 250,\r\n\t\tshowGtXl: true\r\n\t})\r\n\t@Display($localize`:@@client:Client`)\r\n\t@prop()\r\n\tclientId: number;\r\n\r\n\t@Column({ event: 'toggle' })\r\n\t@Display($localize`:@@enabled:Enabled`)\r\n\t@prop()\r\n\tenabled: true;\r\n\r\n\t@prop()\r\n\tattachments: Attachment[] = [];\r\n}","import { TemplateType } from \"../enums/template-type\";\r\n\r\nexport class TemplatePreview {\r\n type: TemplateType\r\n endpoint: string;\r\n displayName: string;\r\n entityName: string;\r\n entityId: number | null;\r\n templateId: number;\r\n email: string;\r\n subject: string;\r\n content: string;\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<TemplatePreview>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { TemplatePreview } from '../models/template-preview';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TemplatePreviewService extends GenericService<TemplatePreview> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('templatePreview');\r\n\t}\r\n}","import { ChangeDetectorRef, Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { BaseComponent } from '@messaia/cdk';\r\nimport { saveAs } from 'file-saver';\r\nimport { TemplateType } from '../../enums/template-type';\r\nimport { TemplatePreview } from '../../models/template-preview';\r\nimport { TemplatePreviewService } from '../../services/template-preview.service';\r\n\r\n@Component({\r\n selector: 'app-template-preview',\r\n templateUrl: 'template-preview-dialog.component.html',\r\n styleUrls: ['template-preview-dialog.component.scss']\r\n})\r\nexport class TemplatePreviewDialogComponent extends BaseComponent {\r\n\r\n /**\r\n * TemplateType\r\n */\r\n public TemplateType: typeof TemplateType = TemplateType;\r\n\r\n /**\r\n * Pdf blob\r\n */\r\n public pdfBlob: Blob;\r\n\r\n /**\r\n * PDF source\r\n */\r\n public pdfSrc: string | ArrayBuffer;\r\n\r\n /**\r\n * Pdf zoom\r\n */\r\n public zoom = 0.98;\r\n\r\n /**\r\n * Pdf zoom scale\r\n */\r\n public zoomScale = 'page-width';\r\n\r\n /**\r\n * Constructor\r\n * @param dialogRef \r\n * @param data \r\n */\r\n constructor(\r\n protected service: TemplatePreviewService,\r\n public dialogRef: MatDialogRef<TemplatePreviewDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: TemplatePreview,\r\n protected route: ActivatedRoute,\r\n protected changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n super(route, changeDetectorRef)\r\n this.data.email = localStorage.getItem('templatePreviewEmail') ?? '';\r\n }\r\n\r\n /**\r\n * Lifecycle hook that is called after data-bound properties\r\n * of a directive are initialized.\r\n */\r\n ngOnInit(): void {\r\n this.isLoading = true;\r\n if (this.data.type == TemplateType.Pdf) {\r\n this.service.create(this.data, null, { responseType: 'arraybuffer' }).subscribe({\r\n next: (x) => {\r\n this.isLoading = false;\r\n this.pdfBlob = new Blob([<any>x], { type: 'application/pdf' });\r\n this.pdfSrc = URL.createObjectURL(this.pdfBlob);\r\n },\r\n error: () => this.isLoading = false\r\n });\r\n } else {\r\n this.service.create(this.data).subscribe({\r\n next: (x) => {\r\n this.isLoading = false;\r\n Object.assign(this.data, x);\r\n },\r\n error: () => this.isLoading = false\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Sends a mail\r\n */\r\n public sendMail() {\r\n this.service.create(this.data, '/sendMail').subscribe({\r\n next: (x) => {\r\n this.isLoading = false;\r\n localStorage.setItem('templatePreviewEmail', this.data.email);\r\n this.snackBarService.open($localize`:@@snackbar.send.success:Data sent successfully.`, null, {\r\n duration: 3000,\r\n panelClass: ['primary']\r\n });\r\n },\r\n error: () => this.isLoading = false\r\n });\r\n }\r\n\r\n /**\r\n * Downloads the pdf\r\n */\r\n public download(): void {\r\n saveAs(this.pdfBlob, \"Pdf.pdf\");\r\n }\r\n\r\n /**\r\n * Zooms in the pdf\r\n */\r\n public zoomIn(): void {\r\n this.zoom += 0.1;\r\n }\r\n\r\n /**\r\n * Zooms out the pdf\r\n */\r\n public zoomOut(): void {\r\n this.zoom += -0.1;\r\n }\r\n\r\n /**\r\n * Closes the dialog\r\n */\r\n public cancel(): void {\r\n this.dialogRef.close();\r\n }\r\n}","<div mat-dialog-title class=\"mat-title\">\r\n <div layout=\"row\" flex>\r\n <span i18n=\"@@templatePreview\">Template preview</span>\r\n <span flex></span>\r\n <div *ngIf=\"data.type == TemplateType.Pdf && pdfSrc\">\r\n <a mat-icon-button (click)=\"download()\">\r\n <mat-icon>download</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomIn()\">\r\n <mat-icon>zoom_in</mat-icon>\r\n </a>\r\n <a mat-icon-button (click)=\"zoomOut()\">\r\n <mat-icon>zoom_out</mat-icon>\r\n </a>\r\n </div>\r\n </div>\r\n</div>\r\n<form #form=\"ngForm\" novalidate>\r\n <!-- #region Entity -->\r\n <div layout=\"row\" flex *ngIf=\"data.endpoint\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label>{{data.entityName}}</mat-label>\r\n <vd-chips [(ngModel)]=\"data.entityId\" [endpoint]=\"data.endpoint\" [params]=\"{sortBy: 'id'}\" text=\"displayName\" name=\"entityId\" #entityId=\"ngModel\" (selected)=\"compile($event)\" (initSelect)=\"compile($event)\" [placeholder]=\"data.entityName\" required flex>\r\n <ng-template vd-chip let-entity=\"chip\">\r\n <span>{{entity[data.displayName]}}</span>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-entity=\"option\">\r\n <span>{{entity[data.displayName]}}</span>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-error *ngIf=\"entityId.errors?.required\"><span>{{data.entityName}}</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <div layout=\"column\" layout-gt-sm=\"row\" class=\"push-bottom\" flex *ngIf=\"isLoading\">\r\n <div flex layout-margin>\r\n <div class=\"push-bottom-sm\" i18n=\"@@pleaseWait\">Please Wait...</div>\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n </div>\r\n\r\n <!-- #region PDF Content -->\r\n <mat-card>\r\n <pdf-viewer [src]=\"pdfSrc\" *ngIf=\"data.type == TemplateType.Pdf && pdfSrc\" [render-text]=\"true\" [zoom]=\"zoom\" [zoom-scale]=\"zoomScale\" [show-borders]=\"true\" [original-size]=\"false\" [autoresize]=\"true\"></pdf-viewer>\r\n </mat-card>\r\n <!-- #region Content -->\r\n\r\n <div *ngIf=\"data.type != TemplateType.Pdf\">\r\n <!-- #region Content -->\r\n <div layout=\"row\" layout-margin flex class=\"content\">\r\n <div *ngIf=\"data.content\" [innerHtml]=\"data.content\"></div>\r\n </div>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Email-->\r\n <div layout-gt-sm=\"row\" layout=\"column\" class=\"push-top pad-top\">\r\n <mat-form-field flex layout-margin>\r\n <mat-label i18n=\"@@email\">Email</mat-label>\r\n <input matInput type=\"email\" name=\"email\" [(ngModel)]=\"data.email\" #email=\"ngModel\" required email placeholder=\"Email\" i18n-placeholder=\"@@email\">\r\n <button mat-icon-button matSuffix (click)=\"sendMail()\" [disabled]=\"!email.valid\">\r\n <mat-icon>send</mat-icon>\r\n </button>\r\n <mat-error *ngIf=\"email.errors?.required\"><span i18n=\"@@email\">Email</span><span i18n=\"@@isRequired\"> is required</span></mat-error>\r\n <mat-error *ngIf=\"!email.errors?.required && email.errors?.email\"><span i18n=\"@@email\">Email</span><span i18n=\"@@isInvalid\"> is invalid</span></mat-error>\r\n </mat-form-field>\r\n </div>\r\n <!-- #endregion -->\r\n </div>\r\n\r\n <div mat-dialog-actions class=\"pad-top\">\r\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"cancel()\" i18n=\"@@close\">Close</button>\r\n </div>\r\n</form>","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Template } from '../models/template';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TemplateService extends GenericService<Template> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('template');\r\n\t}\r\n}","import { HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AuthHelper, FileService, GenericReactiveFormComponent } from '@messaia/cdk';\r\nimport { Attachment } from '@messaia/cdk-base';\r\nimport 'codemirror/addon/edit/closetag';\r\nimport 'codemirror/addon/edit/matchbrackets';\r\nimport 'codemirror/addon/selection/active-line';\r\nimport 'codemirror/mode/htmlmixed/htmlmixed';\r\nimport 'codemirror/mode/javascript/javascript';\r\nimport { saveAs } from 'file-saver';\r\nimport { TemplateType } from '../../enums/template-type';\r\nimport { CmsSettings } from '../../models/cms-settings';\r\nimport { Template } from '../../models/template';\r\nimport { TemplatePreview } from '../../models/template-preview';\r\nimport { TemplateService } from '../../services/template.service';\r\nimport { TemplatePreviewDialogComponent } from '../template-preview-dialog/template-preview-dialog.component';\r\n\r\n@Component({\r\n\tselector: 'app-template-form',\r\n\ttemplateUrl: './template-form.component.html',\r\n\tstyleUrls: ['./template-form.component.scss'],\r\n\tencapsulation: ViewEncapsulation.None\r\n})\r\nexport class TemplateFormComponent extends GenericReactiveFormComponent<Template, TemplateService> {\r\n\r\n\t/**\r\n\t * Template type\r\n\t */\r\n\tpublic TemplateType: typeof TemplateType = TemplateType;\r\n\r\n\t/**\r\n\t * Used to disable some properties for client manager\r\n\t */\r\n\tpublic isClientAdmin = AuthHelper.hasRole('ClientAdministrator') || AuthHelper.hasRole('ClientManager');\r\n\r\n\t/**\r\n\t * settings: CmsSettings\r\n\t */\r\n\tpublic settings: CmsSettings = new CmsSettings();\r\n\r\n\t/**\r\n\t * Gets the attachments control\r\n\t */\r\n\tget attachmentsControl() { return this.form.controls.attachments; }\r\n\r\n\t/**\r\n\t * Editor options\r\n\t */\r\n\tpublic editorOptions: any = {\r\n\t\tlineNumbers: true,\r\n\t\ttheme: 'material',\r\n\t\tautoCloseTags: true,\r\n\t\tstyleActiveLine: true,\r\n\t\tmode: 'text/html',\r\n\t\tprofile: 'xhtml'\r\n\t};\r\n\r\n\t/**\r\n\t * Editor options\r\n\t */\r\n\tpublic jsonEditorOptions: any = {\r\n\t\tlineNumbers: true,\r\n\t\ttheme: 'material',\r\n\t\tautoCloseTags: true,\r\n\t\tstyleActiveLine: true,\r\n\t\tmode: {\r\n\t\t\tname: \"javascript\",\r\n\t\t\tjson: true,\r\n\t\t\tstatementIndent: 2\r\n\t\t},\r\n\t\tprofile: 'xhtml',\r\n\t\tlineWrapping: true,\r\n\t\tindentWithTabs: false,\r\n\t\ttabSize: 2\r\n\t}\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor(\r\n\t\tprotected service: TemplateService,\r\n\t\tprotected fileService: FileService,\r\n\t\tprotected dialog: MatDialog,\r\n\t\tprotected route: ActivatedRoute,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef\r\n\t) {\r\n\t\tsuper(Template, service, route, changeDetectorRef)\r\n\t\tthis.settings = this.getService(CmsSettings);\r\n\t}\r\n\r\n\t/**\r\n\t * Removes a attachment\r\n\t * @param attachment \r\n\t */\r\n\tpublic removeAttachment(attachment: Attachment): void {\r\n\t\tif (Array.isArray(this.item.attachments)) {\r\n\t\t\tvar index = this.attachmentsControl.value.indexOf(attachment, 0);\r\n\t\t\tif (index > -1) {\r\n\t\t\t\tthis.dialogService.openConfirm({\r\n\t\t\t\t\tmessage: 'Möchten Sie diesen Anhang wirklich löschen?',\r\n\t\t\t\t\ttitle: 'Löschen bestätigen',\r\n\t\t\t\t\tcancelButton: $localize`:@@cancel:Cancel`,\r\n\t\t\t\t\tacceptButton: $localize`:@@yes:Yes`,\r\n\t\t\t\t}).afterClosed().subscribe((accept: boolean) => {\r\n\t\t\t\t\tif (accept) {\r\n\t\t\t\t\t\tthis.attachmentsControl.value.splice(index, 1);\r\n\t\t\t\t\t\tthis.attachmentsControl.updateValueAndValidity();\r\n\t\t\t\t\t\tthis.attachmentsControl.markAsDirty();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Uploads a attachment file\r\n\t * @param file \r\n\t */\r\n\tpublic uploadAttachment(file: File): void {\r\n\t\tif (file != null) {\r\n\t\t\tthis.fileService.upload(file, `upload`, { clientId: this.item.clientId, path: `${this.item.clientId ? '' : 'common/'}docs` }).subscribe(event => {\r\n\t\t\t\tif (event.type === HttpEventType.UploadProgress) {\r\n\r\n\t\t\t\t\t/* Calculate the progress percentage */\r\n\t\t\t\t\tconst percentDone = Math.round(100 * event.loaded / event.total);\r\n\r\n\t\t\t\t\t/* Pass the percentage into the progress-stream */\r\n\t\t\t\t\tconsole.info(percentDone);\r\n\t\t\t\t} else if (event instanceof HttpResponse) {\r\n\t\t\t\t\t/* Add our attachments */\r\n\t\t\t\t\tthis.attachmentsControl.setValue([...this.attachmentsControl.value, <Attachment>event.body]);\r\n\t\t\t\t\tthis.attachmentsControl.updateValueAndValidity();\r\n\t\t\t\t\tthis.attachmentsControl.markAsDirty();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Downloads a attachment\r\n\t * @param attachment \r\n\t */\r\n\tpublic downloadAttachment(attachment: Attachment): void {\r\n\t\tif (attachment.id) {\r\n\t\t\tthis.service.download(`downloadAttachment/${attachment.id}`).subscribe(x => {\r\n\t\t\t\tsaveAs(new Blob([x.data], { type: '' }), x.filename);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Shows template preview\r\n\t */\r\n\tpublic showPreview(): void {\r\n\t\tthis.dialog.open(TemplatePreviewDialogComponent, {\r\n\t\t\twidth: this.item.type == TemplateType.Pdf ? '1020px' : '920px',\r\n\t\t\tdata: new TemplatePreview({\r\n\t\t\t\ttemplateId: this.item.id,\r\n\t\t\t\ttype: this.item.type\r\n\t\t\t}),\r\n\t\t\tpanelClass: ['dialog-full-screen']\r\n\t\t}).afterClosed().subscribe();\r\n\t}\r\n}","<vd-layout-nav color=\"primary\" [backNavigationRoute]=\"listRoute\" toolbarTitle=\"Template\" i18n-toolbarTitle=\"@@template\" [editMode]=\"isEditMode\" [menuItems]=\"toolbarMenuItems\" (reload)=\"reloadPage()\">\r\n\t<form *ngIf=\"form\" [formGroup]=\"form\" novalidate (ngSubmit)=\"save()\">\r\n\t\t<vd-layout-card-over class=\"accordion\" cardWidth=\"70\" color=\"primary\" flex>\r\n\t\t\t<mat-accordion [multi]=\"!isEditMode\">\r\n\t\t\t\t<!-- #region Details -->\r\n\t\t\t\t<mat-expansion-panel expanded=\"true\" id=\"details\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title i18n=\"@@details\">Details</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\r\n\t\t\t\t\t<!-- #region Client-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\" *ngIf=\"settings?.multitenantable && !isClientAdmin\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@client\">Client</mat-label>\r\n\t\t\t\t\t\t\t<vd-select formControlName=\"clientId\" endpoint=\"client?enabled=true\" layout=\"column\" flex></vd-select>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.clientId['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t\t<mat-hint i18n=\"@@templateEmptyClientHint\">If empty this template will be used for all projects</mat-hint>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Type-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@type\">Type</mat-label>\r\n\t\t\t\t\t\t\t<vd-select formControlName=\"type\" [enum]=\"TemplateType\" layout=\"column\" flex></vd-select>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.type['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Name & Subject -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<!-- #region Name -->\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@name\">Name</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"name\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.name['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t\t<!-- #region Key -->\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@key\">Key</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"key\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.key['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t<!-- #endregion -->\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Subject -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@subject\">Subject</mat-label>\r\n\t\t\t\t\t\t\t<input matInput formControlName=\"subject\">\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.subject['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Attachments -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin>\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@attachments\">Attachments</mat-label>\r\n\t\t\t\t\t\t\t<mat-chip-list #chipList formControlName=\"attachments\">\r\n\t\t\t\t\t\t\t\t<mat-chip *ngFor=\"let attachment of form.controls.attachments.value\" [selectable]=\"true\" color=\"primary\" removable=\"true\" (removed)=\"removeAttachment(attachment)\" (click)=\"downloadAttachment(attachment)\" selected>\r\n\t\t\t\t\t\t\t\t\t{{attachment.originalName}}\r\n\t\t\t\t\t\t\t\t\t<mat-icon matChipRemove>cancel</mat-icon>\r\n\t\t\t\t\t\t\t\t</mat-chip>\r\n\t\t\t\t\t\t\t\t<input placeholder=\"Attachments\" i18n-placeholder=\"@@attachments\" [matChipInputFor]=\"chipList\" [matChipInputAddOnBlur]=\"false\" (click)=\"fileInput.click()\" readonly>\r\n\t\t\t\t\t\t\t\t<mat-icon matSuffix (click)=\"fileInput.click()\">publish</mat-icon>\r\n\t\t\t\t\t\t\t\t<input hidden type=\"file\" accept=\"{{allowedExtensions}}\" #fileInput (change)=\"uploadAttachment($event.target.files[0])\" />\r\n\t\t\t\t\t\t\t</mat-chip-list>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Notice -->\r\n\t\t\t\t\t<div layout=\"row\" flex>\r\n\t\t\t\t\t\t<mat-form-field flex layout-margin appearance=\"outline\">\r\n\t\t\t\t\t\t\t<mat-label i18n=\"@@notice\">Notice</mat-label>\r\n\t\t\t\t\t\t\t<textarea matInput autocomplete=\"off\" formControlName=\"notice\"></textarea>\r\n\t\t\t\t\t\t\t<mat-error *ngFor=\"let errorMessage of form.controls.notice['errorMessages']\">{{errorMessage}}</mat-error>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Enabled-->\r\n\t\t\t\t\t<div layout-gt-sm=\"row\" layout=\"column\">\r\n\t\t\t\t\t\t<div layout-margin appearance=\"outline\" class=\"push-top push-bottom\">\r\n\t\t\t\t\t\t\t<mat-checkbox formControlName=\"enabled\" i18n=\"@@active\">Active</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"content\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@content\">Content</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t<ngx-codemirror formControlName=\"content\" rows=\"160\" [options]=\"editorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Content -->\r\n\t\t\t\t<mat-expansion-panel id=\"testData\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@testData\">Test Data</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<div layout-margin>\r\n\t\t\t\t\t\t<ngx-codemirror formControlName=\"dummyData\" rows=\"120\" [options]=\"jsonEditorOptions\"></ngx-codemirror>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"submit\" mat-flat-button color=\"primary\" [disabled]=\"isSaving\" i18n=\"@@save\">Save</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"apply()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving\" i18n=\"@@apply\">Apply</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"showPreview()\" *ngIf=\"isEditMode\" [disabled]=\"isSaving || !form.pristine\" i18n=\"@@preview\">Preview</button>\r\n\t\t\t\t\t\t<button type=\"button\" mat-button (click)=\"back()\" i18n=\"@@cancel\">Cancel</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t<!-- #region Audit -->\r\n\t\t\t\t<mat-expansion-panel id=\"audit\" *ngIf=\"isEditMode\">\r\n\t\t\t\t\t<mat-expansion-panel-header>\r\n\t\t\t\t\t\t<mat-panel-title>\r\n\t\t\t\t\t\t\t<span i18n=\"@@audit\">Audit</span>\r\n\t\t\t\t\t\t</mat-panel-title>\r\n\t\t\t\t\t</mat-expansion-panel-header>\r\n\t\t\t\t\t<vd-audit [item]=\"item\"> </vd-audit>\r\n\t\t\t\t\t<mat-action-row>\r\n\t\t\t\t\t\t<button type=\"button\" mat-flat-button color=\"accent\" (click)=\"back()\" i18n=\"@@close\">Close</button>\r\n\t\t\t\t\t\t<span flex></span>\r\n\t\t\t\t\t</mat-action-row>\r\n\t\t\t\t</mat-expansion-panel>\r\n\t\t\t\t<!-- #endregion -->\r\n\t\t\t</mat-accordion>\r\n\t\t</vd-layout-card-over>\r\n\t</form>\r\n</vd-layout-nav>","import { AuditEntity, Column, Display, FormField, prop, required, Table } from \"@messaia/cdk\";\r\n\r\n@Table({ endpoint: 'contentvariable' })\r\nexport class ContentVariable extends AuditEntity {\r\n @prop()\r\n title: string;\r\n\r\n @required()\r\n @FormField({ row: 2 })\r\n @Column({})\r\n @Display($localize`:@@name:Name`)\r\n name: string;\r\n\r\n @required()\r\n @FormField({ row: 3 })\r\n @Column({ showGtSm: true })\r\n @Display($localize`:@@value:Value`)\r\n value: string;\r\n\r\n @prop()\r\n @FormField({ row: 1, endpoint: 'client?enabled=true&projection=id,name' })\r\n @Column({ name: 'client.displayName', endpoint: 'client?enabled=true&projection=id,name', maxWidth: 190, showGtLg: true })\r\n @Display($localize`:@@client:Client`)\r\n clientId: number;\r\n\r\n @prop()\r\n @FormField({ row: 4 })\r\n @Column({})\r\n @Display($localize`:@@default:Default`)\r\n default: boolean;\r\n\r\n @prop()\r\n @FormField({ row: 5 })\r\n @Column({ event: 'toggle' })\r\n @Display($localize`:@@enabled:Enabled`)\r\n enabled: boolean;\r\n}","import { Api, AuditEntity, Column, Display, FormField, FormFieldType, prop, required, Table } from \"@messaia/cdk\";\r\n\r\n@Api('faq')\r\n@Table()\r\nexport class Faq extends AuditEntity {\r\n\t@required()\r\n\t@FormField({ row: 2 })\r\n\t@Column({ content: (x: Faq) => x?.question })\r\n\t@Display($localize`:@@question:Question`)\r\n\tquestion: string;\r\n\r\n\t@required()\r\n\t@FormField({\r\n\t\trow: 3, type: FormFieldType.Autocomplete, options: [\r\n\t\t\t{ id: 'Bills', name: 'Bills' },\r\n\t\t\t{ id: 'Contracts', name: 'Contracts' },\r\n\t\t\t{ id: 'Orders', name: 'Orders' },\r\n\t\t\t{ id: 'Profile', name: 'Profile' },\r\n\t\t]\r\n\t})\r\n\t@Column({ maxWidth: 190, showGtLg: true })\r\n\t@Display($localize`:@@group:Group`)\r\n\tgroup: string;\r\n\r\n\t@FormField({ row: 1, endpoint: 'client?enabled=true&projection=id,name' })\r\n\t@Column({\r\n\t\tname: 'client.displayName',\r\n\t\tendpoint: 'client?enabled=true&projection=id,name',\r\n\t\tmaxWidth: 250,\r\n\t\tshowGtXl: true\r\n\t})\r\n\t@Display($localize`:@@client:Client`)\r\n\t@prop()\r\n\tclientId: number;\r\n\r\n\t@prop()\r\n\t@FormField({ row: 3 })\r\n\t@Display($localize`:@@ordering:Ordering`)\r\n\tordering: number;\r\n\r\n\t@required()\r\n\t@FormField({ row: 4, type: FormFieldType.Editor })\r\n\t@Display($localize`:@@answer:Answer`)\r\n\tanswer: string;\r\n\r\n\t@prop()\r\n\t@FormField({ row: 5 })\r\n\t@Column({ event: 'toggle' })\r\n\t@Display($localize`:@@enabled:Enabled`)\r\n\tenabled: boolean;\r\n\r\n\t/**\r\n\t * constructor\r\n\t * @param init \r\n\t */\r\n\tpublic constructor(init?: Partial<Faq>) {\r\n\t\tsuper(init);\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}","import { Api, AuditEntity, Column, Display, FormField, FormFieldType, prop, required, Table } from \"@messaia/cdk\";\r\n\r\n@Api('slider')\r\n@Table()\r\nexport class Slider extends AuditEntity {\r\n @required()\r\n @FormField({ row: 2 })\r\n @Column({})\r\n @Display($localize`:@@name:Name`)\r\n name: string;\r\n\r\n @required()\r\n @FormField({ row: 3 })\r\n @Column({ maxWidth: 150, showGtLg: true })\r\n @Display($localize`:@@group:Group`)\r\n group: string;\r\n\r\n @required()\r\n @FormField({ row: 4, type: FormFieldType.Editor })\r\n @Display($localize`:@@content:Content`)\r\n content: string;\r\n\r\n @FormField({ row: 1, endpoint: 'client?enabled=true&projection=id,name' })\r\n @Column({\r\n name: 'client.displayName',\r\n endpoint: 'client?enabled=true&projection=id,name',\r\n maxWidth: 250,\r\n showGtLg: true\r\n })\r\n @Display($localize`:@@project:Project`)\r\n @prop()\r\n clientId: number;\r\n\r\n @prop()\r\n @FormField({ row: 3 })\r\n @Display($localize`:@@ordering:Ordering`)\r\n ordering: number;\r\n\r\n @prop()\r\n @FormField({ row: 5 })\r\n @Column({ event: 'toggle' })\r\n @Display($localize`:@@enabled:Enabled`)\r\n enabled: boolean;\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { Resolve } from \"@angular/router\";\r\nimport { ServiceLocator } from \"@messaia/cdk\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Excluded columns resolve service\r\n */\r\n@Injectable()\r\nexport class ExcludedColumnsResolve implements Resolve<string[]> {\r\n\r\n /**\r\n * Resolves excluded columns\r\n */\r\n resolve(): Observable<string[]> {\r\n return of(ServiceLocator.getService(CmsSettings)?.multitenantable ? [] : ['client.displayName']);\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { Resolve } from \"@angular/router\";\r\nimport { ServiceLocator } from \"@messaia/cdk\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Excluded fields resolve service\r\n */\r\n@Injectable()\r\nexport class ExcludedFieldsResolve implements Resolve<string[]> {\r\n\r\n /**\r\n * Resolves excluded fields\r\n */\r\n resolve(): Observable<string[]> {\r\n return of(ServiceLocator.getService(CmsSettings)?.multitenantable ? [] : ['clientId']);\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { Resolve } from \"@angular/router\";\r\nimport { ServiceLocator } from \"@messaia/cdk\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Form validation resolve service\r\n */\r\n@Injectable()\r\nexport class FormValidationResolve implements Resolve<any> {\r\n\r\n /**\r\n * Resolves Form validation\r\n */\r\n resolve(): Observable<any> {\r\n return of(ServiceLocator.getService(CmsSettings)?.multitenantable ? { clientId: { required: true } } : {});\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { Resolve } from \"@angular/router\";\r\nimport { ServiceLocator } from \"@messaia/cdk\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Includes resolve service\r\n */\r\n@Injectable()\r\nexport class IncludesResolve implements Resolve<string[]> {\r\n\r\n /**\r\n * Resolves includes\r\n */\r\n resolve(): Observable<string[]> {\r\n return of(ServiceLocator.getService(CmsSettings)?.multitenantable ? ['Client'] : []);\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, Resolve } from \"@angular/router\";\r\nimport { ServiceLocator } from \"@messaia/cdk\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { CmsSettings } from \"../models/cms-settings\";\r\n\r\n/**\r\n * Settings resolve service\r\n */\r\n@Injectable()\r\nexport class SettingsResolve implements Resolve<CmsSettings> {\r\n\r\n /**\r\n * Resolves settings\r\n */\r\n resolve(route: ActivatedRouteSnapshot): Observable<CmsSettings> {\r\n ServiceLocator.create([{\r\n provide: CmsSettings,\r\n useValue: <CmsSettings>route.parent.data.settings\r\n }]);\r\n\r\n return of(null);\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { ResolveData, RouterModule, Routes } from '@angular/router';\r\nimport { AuthHelper } from '@messaia/cdk';\r\nimport { DocumentType, VdDynamicFormComponent, VdDynamicListComponent } from '@messaia/cdk-base';\r\nimport { ContentFormComponent } from './comnponents/content-form/content-form.component';\r\nimport { DocumentDialogComponent } from './comnponents/document-dialog/document-dialog.component';\r\nimport { TemplateFormComponent } from './comnponents/template-form/template-form.component';\r\nimport { ContentType } from './enums/content-type';\r\nimport { Content } from './models/content';\r\nimport { ContentVariable } from './models/content-variable';\r\nimport { Document } from './models/document';\r\nimport { Faq } from './models/faq';\r\nimport { Slider } from './models/slider';\r\nimport { Template } from './models/template';\r\nimport { ExcludedColumnsResolve } from './resolvers/excluded-columns.resolve';\r\nimport { ExcludedFieldsResolve } from './resolvers/excluded-fields.resolve';\r\nimport { FormValidationResolve } from './resolvers/form-validation.resolve';\r\nimport { IncludesResolve } from './resolvers/includes.resolve';\r\nimport { SettingsResolve } from './resolvers/settings.resolve';\r\n\r\nconst ListResolve: ResolveData = {\r\n settings: SettingsResolve,\r\n includes: IncludesResolve,\r\n excludedColumns: ExcludedColumnsResolve\r\n};\r\n\r\nconst FormResolve: ResolveData = {\r\n settings: SettingsResolve,\r\n excludedFields: ExcludedFieldsResolve,\r\n formValidation: FormValidationResolve\r\n};\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: '/cms/contents/page', pathMatch: 'full' },\r\n { path: 'faq', redirectTo: '/cms/faqs', pathMatch: 'full' },\r\n\r\n { path: 'contents/page', component: VdDynamicListComponent, data: { classType: Content, query: { type: ContentType.Page } }, resolve: ListResolve },\r\n { path: 'contents/block', component: VdDynamicListComponent, data: { classType: Content, query: { type: ContentType.Block } }, resolve: ListResolve },\r\n { path: 'contents/:type/add', component: ContentFormComponent, resolve: FormResolve },\r\n { path: 'contents/:type/edit/:id', component: ContentFormComponent, resolve: FormResolve },\r\n //\r\n { path: 'variables', component: VdDynamicListComponent, data: { classType: ContentVariable }, resolve: ListResolve },\r\n { path: 'variables/edit/:id', component: VdDynamicFormComponent, data: { classType: ContentVariable, subtitle: $localize`:@@variables:Variables` }, resolve: FormResolve },\r\n { path: 'variables/add', component: VdDynamicFormComponent, data: { classType: ContentVariable, subtitle: $localize`:@@variables:Variables` }, resolve: FormResolve },\r\n\r\n { path: 'templates', component: VdDynamicListComponent, data: { classType: Template, includes: 'Client' }, resolve: ListResolve },\r\n { path: 'templates/edit/:id', component: TemplateFormComponent, resolve: FormResolve },\r\n { path: 'templates/add', component: TemplateFormComponent, resolve: FormResolve },\r\n\r\n { path: 'faqs', component: VdDynamicListComponent, data: { classType: Faq }, resolve: ListResolve },\r\n { path: 'faqs/edit/:id', component: VdDynamicFormComponent, data: { classType: Faq, subtitle: $localize`:@@faq:FAQ` }, resolve: FormResolve },\r\n { path: 'faqs/add', component: VdDynamicFormComponent, data: { classType: Faq, query: { clientId: AuthHelper.user.clientId }, subtitle: $localize`:@@faq:FAQ` }, resolve: FormResolve },\r\n\r\n { path: 'sliders', component: VdDynamicListComponent, data: { classType: Slider }, resolve: ListResolve },\r\n { path: 'sliders/edit/:id', component: VdDynamicFormComponent, data: { classType: Slider, subtitle: $localize`:@@slider:Slider` }, resolve: FormResolve },\r\n { path: 'sliders/add', component: VdDynamicFormComponent, data: { classType: Slider, query: { clientId: AuthHelper.user.clientId }, subtitle: $localize`:@@slider:Slider` }, resolve: FormResolve },\r\n\r\n { path: 'documents', component: VdDynamicListComponent, data: { classType: Document, addDialogType: DocumentDialogComponent, query: { type: DocumentType.Document } }, resolve: ListResolve },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n providers: [\r\n SettingsResolve,\r\n IncludesResolve,\r\n ExcludedColumnsResolve,\r\n ExcludedFieldsResolve,\r\n FormValidationResolve\r\n ]\r\n})\r\nexport class VdCmsRoutingModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { CodemirrorModule } from '@ctrl/ngx-codemirror';\r\nimport { VdCommonModule, VdFormsModule, VdLayoutModule, VdMediaModule, VdSelectModule } from '@messaia/cdk';\r\nimport { VdCdkBaseModule } from '@messaia/cdk-base';\r\nimport { EditorModule } from '@tinymce/tinymce-angular';\r\nimport { VdCmsRoutingModule } from './cms-routing.module';\r\nimport { ContentFormComponent } from './comnponents/content-form/content-form.component';\r\nimport { DocumentDialogComponent } from './comnponents/document-dialog/document-dialog.component';\r\nimport { TemplateFormComponent } from './comnponents/template-form/template-form.component';\r\nimport { TemplatePreviewDialogComponent } from './comnponents/template-preview-dialog/template-preview-dialog.component';\r\n\r\nexport {\r\n ContentFormComponent,\r\n DocumentDialogComponent,\r\n TemplateFormComponent,\r\n TemplatePreviewDialogComponent\r\n};\r\n\r\n@NgModule({\r\n exports: [\r\n MatCardModule,\r\n MatExpansionModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatChipsModule,\r\n MatAutocompleteModule,\r\n MatCheckboxModule,\r\n MatInputModule,\r\n MatProgressBarModule\r\n ]\r\n})\r\nexport class MaterialModule { }\r\n\r\n@NgModule({\r\n exports: [\r\n VdCommonModule,\r\n VdLayoutModule,\r\n VdMediaModule,\r\n VdFormsModule,\r\n VdSelectModule\r\n ]\r\n})\r\nexport class VdModule { }\r\n\r\nconst DECLARATION = [\r\n ContentFormComponent,\r\n TemplateFormComponent,\r\n TemplatePreviewDialogComponent,\r\n DocumentDialogComponent\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CodemirrorModule,\r\n VdCdkBaseModule,\r\n VdModule,\r\n MaterialModule,\r\n VdCmsRoutingModule,\r\n EditorModule,\r\n ],\r\n declarations: [DECLARATION],\r\n exports: [\r\n VdModule,\r\n MaterialModule,\r\n EditorModule,\r\n DECLARATION\r\n ]\r\n})\r\nexport class VdCmsModule { }","export enum FaqScope {\r\n\tCustomerPortal,\r\n\tAdmin\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { map } from 'rxjs/operators';\r\nimport { ContentVariable } from '../models/content-variable';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ContentVariableService extends GenericService<ContentVariable> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('contentVariable');\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified alias is available.\r\n\t * @param id \r\n\t * @param alias \r\n\t */\r\n\tpublic isNameAvailable(item: ContentVariable) {\r\n\t\treturn this.create(item, '/isNameAvailable').pipe(map((x: any) => x.value));\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Faq } from '../models/faq';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FaqService extends GenericService<Faq> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('faq');\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '@messaia/cdk';\r\nimport { Slider } from '../models/slider';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SliderService extends GenericService<Slider> {\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n super('slider');\r\n }\r\n}","/*\r\n * Public API Surface of cdk-base\r\n */\r\nexport * from './cms.module';\r\nexport * from './enums/content-type';\r\nexport * from './enums/faq-scope';\r\nexport * from './enums/template-type';\r\nexport * from './enums/wrap-tag';\r\nexport * from './models/cms-settings';\r\nexport * from './models/content';\r\nexport * from './models/content-variable';\r\nexport * from './models/document';\r\nexport * from './models/faq';\r\nexport * from './models/slider';\r\nexport * from './models/template';\r\nexport * from './models/template-preview';\r\nexport * from './resolvers/includes.resolve';\r\nexport * from './services/content-variable.service';\r\nexport * from './services/content.service';\r\nexport * from './services/document.generic-service';\r\nexport * from './services/document.service`';\r\nexport * from './services/faq.service';\r\nexport * from './services/slider.service';\r\nexport * from './services/template-preview.service';\r\nexport * from './services/template.service';\r\n","/*\r\n * Public API Surface of cdk-cms\r\n */\r\n\r\nexport * from './lib/public-api';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ContentService","i4","i7","i8","i9","i10","i3","i5","i6","i11","i12","i1.TemplateService","i14","i15"],"mappings":"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"}
|