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;