부자 되기 위한 블로그, 머니킹

웹 프로젝트를 개발하다보면 editor가 필요할 때가 많다. 간단한 블로그나 게시판을 만들때도 글을 쓰기 위해 적절한 editor가 필요한데 이를 직접 개발해도 되지만 아무래도 여간 힘든일일것이다. 이번 포스팅에서는 웹 개발에서 자주 사용되는 ckeditor 중 balloon block editor 사용법에 대해서 알아보려고 한다.

 

ckeditor online builder

 

https://ckeditor.com/ckeditor-5/online-builder/

 

CKEditor 5 Online Builder | Create your own editor in 5 steps

Create your own CKEditor 5 build with customized plugins, toolbar and language in 5 simple steps.

ckeditor.com

ckeditor에서는 다양한 editor 종류 및 플러그인들을 설치할 수 있다. 하지만 일일히 cdn이나 파일로서 연동하는 것은 힘들것이다. 이 점을 해결하기 위해 ckeditor에서는 online builder를 제공하고 있다. 여기서 editor 종류 및 플러그인 등을 선택할 수 있다. 정말 편하게 설정할 수 있기 때문에 일일이 플러그인을 설치하기 보다 여기서 가져오는 것을 추천한다.

 

ckeditor의 종류는 5가지가 있지만 공식 홈페이지에 가면 해당 editor들의 차이점을 자세히 알 수 있다. 이 중 나는 balloon block editor를 사용하려고 한다.

 

balloon block editor 사용법

javascript

const container = angular.module("container", []);

    container.controller("container-controller", async ($scope,$timeout)=> {

      let ckeditor = await BalloonBlockEditor.create(document.querySelector("#editor"), {
        toolbar: 'bold italic strikethrough underline | code | outdent indent | link'.split(' '),
        blockToolbar: 'heading blockQuote alignment | bulletedList numberedList todoList | imageUpload insertTable mediaEmbed codeBlock | horizontalLine'.split(' '),
        simpleUpload: {
          uploadUrl: '/file/upload/post/'
        },
        title: {
          placeholder: '문서 제목을 입력해주세요'
        },
        placeholder: '문서 내용을 입력해주세요',
        heading: {
          options: [
            { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },
            { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },
            { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },
            { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },
            { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' }
          ]
        },
        removePlugins: ["MediaEmbedToolbar"],
        table: BalloonBlockEditor.defaultConfig.table
      });

      ckeditor.keystrokes.set('Ctrl+S', async (event, cancel) => {
        event.preventDefault();
        //=> 실행 함수 삽입
      }, { priority: 'high' });



    })

 

 

html

<div class="container" ng-app="container" ng-controller="container-controller">
  <div class="p-4">
    <div id="editor">
    </div>
  </div>
</div>

 

이런식으로 사용하면 되는데 ckeditor 객체 안에 파라미터로 다양한 설정이 가능하다. 설정에 관한 정보는 공식 document에 자세하게 나와있다.

 

https://ckeditor.com/docs/ckeditor5/latest/features/index.html

 

Features - CKEditor 5 Documentation

Learn how to install, integrate and configure CKEditor 5 Builds and how to work with CKEditor 5 Framework, customize it, create your own plugins and custom editors, change the UI or even bring your own UI to the editor. API reference and examples included.

ckeditor.com