From be34c555a57d240537fc4803b144b9c9eb77f522 Mon Sep 17 00:00:00 2001 From: Florian THIERRY Date: Tue, 3 Sep 2024 10:07:13 +0200 Subject: [PATCH] Implementation of code-block addition in the publication. --- .../code-block-dialog.component.ts | 4 +++- .../publication-edition.service.ts | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/pages/publication-edition/code-block-dialog/code-block-dialog.component.ts b/frontend/src/app/pages/publication-edition/code-block-dialog/code-block-dialog.component.ts index 7f8ee96..01b7b8f 100644 --- a/frontend/src/app/pages/publication-edition/code-block-dialog/code-block-dialog.component.ts +++ b/frontend/src/app/pages/publication-edition/code-block-dialog/code-block-dialog.component.ts @@ -57,7 +57,9 @@ export class CodeBlockDialog { }); closeAndValidate(): void { - + if (this.formGroup.valid) { + this.dialogRef.close(this.formGroup.value); + } } closeDialog(): void { diff --git a/frontend/src/app/pages/publication-edition/publication-edition.service.ts b/frontend/src/app/pages/publication-edition/publication-edition.service.ts index ad2dc91..a1b2b58 100644 --- a/frontend/src/app/pages/publication-edition/publication-edition.service.ts +++ b/frontend/src/app/pages/publication-edition/publication-edition.service.ts @@ -156,7 +156,7 @@ export class PublicationEditionService implements OnDestroy { const afterDialogCloseSubscription = dialogRef.afterClosed() .subscribe(codeBlockWithLanguage => { if (codeBlockWithLanguage) { - + this.insertCodeBlock(codeBlockWithLanguage.programmingLanguage, codeBlockWithLanguage.codeBlock); } }); this.subscriptions.push(afterDialogCloseSubscription); @@ -231,6 +231,20 @@ export class PublicationEditionService implements OnDestroy { this._save(state); } + insertCodeBlock(programmingLanguage: string, codeBlock: string): void { + const state = this._state; + + const publication = state.publication; + + const publicationTextLeftPart = publication.text.substring(0, state.cursorPosition.start); + const publicationTextRightPart = publication.text.substring(state.cursorPosition.start); + const codeBlockInstruction = `\n[code lg="${programmingLanguage}"]\n${codeBlock}\n[/code]\n\n`; + const textWithTags = `${publicationTextLeftPart}${codeBlockInstruction}${publicationTextRightPart}`; + + publication.text = textWithTags; + + this._save(state); + } save(): void { const state = this._state;