feat(editor): add self-hosted TinyMCE editor and remove API key

This commit is contained in:
chamikaJ
2024-06-17 11:37:12 +05:30
parent 5cce1f2d2c
commit eb39dc363f
9 changed files with 73 additions and 66 deletions

View File

@@ -36,13 +36,20 @@
"glob": "**/*", "glob": "**/*",
"input": "./node_modules/@ant-design/icons-angular/src/inline-svg/", "input": "./node_modules/@ant-design/icons-angular/src/inline-svg/",
"output": "/assets/" "output": "/assets/"
},
{
"glob": "**/*",
"input": "node_modules/tinymce",
"output": "/tinymce/"
} }
], ],
"styles": [ "styles": [
"src/theme.less", "src/theme.less",
"src/styles.scss" "src/styles.scss"
], ],
"scripts": [], "scripts": [
"node_modules/tinymce/tinymce.min.js"
],
"serviceWorker": true, "serviceWorker": true,
"ngswConfigPath": "ngsw-config.json", "ngswConfigPath": "ngsw-config.json",
"allowedCommonJsDependencies": [ "allowedCommonJsDependencies": [
@@ -147,4 +154,4 @@
"@angular-eslint/schematics" "@angular-eslint/schematics"
] ]
} }
} }

View File

@@ -36,7 +36,7 @@
"ngx-doc-viewer": "^15.0.1", "ngx-doc-viewer": "^15.0.1",
"ngx-socket-io": "^4.5.1", "ngx-socket-io": "^4.5.1",
"rxjs": "~7.4.0", "rxjs": "~7.4.0",
"tinymce": "^6.7.3", "tinymce": "^6.8.3",
"tslib": "^2.6.1", "tslib": "^2.6.1",
"zone.js": "^0.13.1" "zone.js": "^0.13.1"
}, },
@@ -15327,9 +15327,9 @@
"dev": true "dev": true
}, },
"node_modules/tinymce": { "node_modules/tinymce": {
"version": "6.7.3", "version": "6.8.3",
"resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.7.3.tgz", "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.8.3.tgz",
"integrity": "sha512-J7WmYIi/gt1RvZ6Ap2oQiUjzAoiS9pfV+d4GnKuZuPu8agmlAEAInNmMvMjfCNBzHv4JnZXY7qlHUAI0IuYQVA==" "integrity": "sha512-3fCHKAeqT+xNwBVESf6iDbDV0VNwZNmfrkx9c/6Gz5iB8piMfaO6s7FvoiTrj1hf1gVbfyLTnz1DooI6DhgINQ=="
}, },
"node_modules/tmp": { "node_modules/tmp": {
"version": "0.2.1", "version": "0.2.1",

View File

@@ -45,7 +45,7 @@
"ngx-doc-viewer": "^15.0.1", "ngx-doc-viewer": "^15.0.1",
"ngx-socket-io": "^4.5.1", "ngx-socket-io": "^4.5.1",
"rxjs": "~7.4.0", "rxjs": "~7.4.0",
"tinymce": "^6.7.3", "tinymce": "^6.8.3",
"tslib": "^2.6.1", "tslib": "^2.6.1",
"zone.js": "^0.13.1" "zone.js": "^0.13.1"
}, },

View File

@@ -11,7 +11,6 @@
class="description-editor" class="description-editor"
[class.editing]="isEditing" [class.editing]="isEditing"
[init]="CONFIG" [init]="CONFIG"
[apiKey]="apiKey"
[(ngModel)]="service.model.task.description" [(ngModel)]="service.model.task.description"
(onBlur)="onDescriptionInputBlur()" (onBlur)="onDescriptionInputBlur()"
#descriptionEditor #descriptionEditor

View File

@@ -25,8 +25,9 @@ export class TaskViewDescriptionComponent implements OnInit, OnDestroy {
@ViewChild("descriptionInput", {static: false}) descriptionInput!: ElementRef; @ViewChild("descriptionInput", {static: false}) descriptionInput!: ElementRef;
@ViewChild("descriptionEditor", {static: false}) descriptionEditor!: EditorComponent; @ViewChild("descriptionEditor", {static: false}) descriptionEditor!: EditorComponent;
readonly apiKey = "4nquevykvy1i0q0v62ksxuu3nz1muy8i5fsqpj3wp9qm2mgp";
readonly CONFIG = { readonly CONFIG = {
base_url: '/tinymce',
suffix: '.min',
plugins: "lists link code wordcount", plugins: "lists link code wordcount",
toolbar: 'blocks bold italic underline strikethrough | checklist numlist bullist link | alignleft aligncenter alignright alignjustify', toolbar: 'blocks bold italic underline strikethrough | checklist numlist bullist link | alignleft aligncenter alignright alignjustify',
menubar: false, menubar: false,

View File

@@ -51,7 +51,7 @@ import {NzPopconfirmModule} from 'ng-zorro-antd/popconfirm';
import {NzCardModule} from "ng-zorro-antd/card"; import {NzCardModule} from "ng-zorro-antd/card";
import {NzTableModule} from "ng-zorro-antd/table"; import {NzTableModule} from "ng-zorro-antd/table";
import {NzProgressModule} from "ng-zorro-antd/progress"; import {NzProgressModule} from "ng-zorro-antd/progress";
import {EditorModule} from '@tinymce/tinymce-angular'; import {EditorModule, TINYMCE_SCRIPT_SRC} from '@tinymce/tinymce-angular';
import {TaskViewTimeLogComponent} from './task-view-time-log/task-view-time-log.component'; import {TaskViewTimeLogComponent} from './task-view-time-log/task-view-time-log.component';
import {NzListModule} from "ng-zorro-antd/list"; import {NzListModule} from "ng-zorro-antd/list";
import {NzEmptyModule} from "ng-zorro-antd/empty"; import {NzEmptyModule} from "ng-zorro-antd/empty";
@@ -99,60 +99,61 @@ import {TaskCommentMentionPipe} from "@pipes/task-comment-mention.pipe";
TaskViewComponent TaskViewComponent
], ],
providers: [ providers: [
SearchByNamePipe SearchByNamePipe,
{ provide: TINYMCE_SCRIPT_SRC, useValue: 'tinymce/tinymce.min.js' }
], ],
imports: [ imports: [
CommonModule, CommonModule,
NzDrawerModule, NzDrawerModule,
NzSkeletonModule, NzSkeletonModule,
NzFormModule, NzFormModule,
FormsModule, FormsModule,
NzInputModule, NzInputModule,
NzSelectModule, NzSelectModule,
NzTabsModule, NzTabsModule,
NzTagModule, NzTagModule,
NzCollapseModule, NzCollapseModule,
NzDropDownModule, NzDropDownModule,
AvatarsComponent, AvatarsComponent,
NzAvatarModule, NzAvatarModule,
NzTypographyModule, NzTypographyModule,
NzCheckboxModule, NzCheckboxModule,
SearchByNamePipe, SearchByNamePipe,
NzToolTipModule, NzToolTipModule,
NzDatePickerModule, NzDatePickerModule,
NzInputNumberModule, NzInputNumberModule,
NzIconModule, NzIconModule,
NzBadgeModule, NzBadgeModule,
NzDividerModule, NzDividerModule,
FromNowPipe, FromNowPipe,
ReactiveFormsModule, ReactiveFormsModule,
TaskPriorityLabelComponent, TaskPriorityLabelComponent,
NzButtonModule, NzButtonModule,
NzCommentModule, NzCommentModule,
RouterLink, RouterLink,
NzSpaceModule, NzSpaceModule,
NzMentionModule, NzMentionModule,
NzAffixModule, NzAffixModule,
NzNoAnimationModule, NzNoAnimationModule,
NzPopconfirmModule, NzPopconfirmModule,
NzCardModule, NzCardModule,
NzTableModule, NzTableModule,
NzProgressModule, NzProgressModule,
EditorModule, EditorModule,
NzListModule, NzListModule,
NzEmptyModule, NzEmptyModule,
TaskTimerComponent, TaskTimerComponent,
FirstCharUpperPipe, FirstCharUpperPipe,
TaskListAddTaskInputComponent, TaskListAddTaskInputComponent,
SafeStringPipe, SafeStringPipe,
DateFormatterPipe, DateFormatterPipe,
NgxDocViewerModule, NgxDocViewerModule,
NzModalModule, NzModalModule,
NzSpinModule, NzSpinModule,
NzTimelineModule, NzTimelineModule,
NzTimePickerModule, NzTimePickerModule,
TaskCommentMentionPipe TaskCommentMentionPipe
] ]
}) })
export class TaskViewModule { export class TaskViewModule {
} }

View File

@@ -4,7 +4,6 @@ import {ProjectTemplateService} from "@services/project-template.service";
import {PtTaskPhasesApiService} from "@api/pt-task-phases-api.service"; import {PtTaskPhasesApiService} from "@api/pt-task-phases-api.service";
import {ITaskPhase} from "@interfaces/api-models/task-phase"; import {ITaskPhase} from "@interfaces/api-models/task-phase";
import {PhaseColorCodes} from "@shared/constants"; import {PhaseColorCodes} from "@shared/constants";
import {load} from "@angular-devkit/build-angular/src/utils/server-rendering/esm-in-memory-file-loader";
@Component({ @Component({
selector: 'worklenz-phase-settings-drawer', selector: 'worklenz-phase-settings-drawer',

View File

@@ -21,7 +21,6 @@
class="description-editor-list" class="description-editor-list"
[class.editing]="isEditing" [class.editing]="isEditing"
[init]="CONFIG" [init]="CONFIG"
[apiKey]="apiKey"
[(ngModel)]="task.description" [(ngModel)]="task.description"
(onBlur)="submit()" (onBlur)="submit()"
#descriptionEditor #descriptionEditor

View File

@@ -28,8 +28,9 @@ export class TaskDescriptionComponent implements OnInit, OnDestroy {
show = false; show = false;
loading = false; loading = false;
readonly apiKey = "4nquevykvy1i0q0v62ksxuu3nz1muy8i5fsqpj3wp9qm2mgp";
readonly CONFIG = { readonly CONFIG = {
base_url: '/tinymce',
suffix: '.min',
plugins: "lists link code wordcount", plugins: "lists link code wordcount",
toolbar: 'blocks bold italic underline strikethrough | checklist numlist bullist link | alignleft aligncenter alignright alignjustify', toolbar: 'blocks bold italic underline strikethrough | checklist numlist bullist link | alignleft aligncenter alignright alignjustify',
menubar: false, menubar: false,