플러그인 제작하기
플러그인 기본요소
/plugins/플러그인명/package.json 플러그인 정보 (필수)
/plugins/플러그인명/script.js 플러그인 기능이 담긴 스크립트파일 (필수)
/plugins/플러그인명/style.css 플러그인만의 스타일시트가 정의된 스타일시트파일 (필수)
/plugins/플러그인명/box.css 플러그인이 개인박스를 지원하는 경우, 해당 박스에서 사용될 스타일시트 (미니톡 채팅위젯 템플릿 스타일시트와 역할이 동일합니다.)
package.json 작성하기
{ "id":"플러그인 고유 ID (영어소문자 및 숫자로 이루어진 도메인형태 / 예 : com.yourdomain.minitalk.plugin.uniquename)", "icon":"플러그인 관리에서 나타날 플러그인 아이콘 (XEIcon, FontAwesome v4.7 class 명 / 예 : xi xi-refresh)", "title":{ "ko":"플러그인명(ko)" }, "version":"버전정보(예 : 1.0.0)", "description":{ "ko":"플러그인 관리에서 나타날 플러그인 설명" }, "author":{ "name":"개발자 성명", "email":"개발자 이메일주소" }, "homepage":"개발자 홈페이지 주소 (지원)", "language":"플러그인 기본언어코드 (예 : ko)" }
플러그인 아이콘의 경우 아래의 주소를 참고하여 클래스명을 찾을 수 있습니다.
XEIcon : http://xpressengine.github.io/XEIcon/library-1.0.4.html
FontAwesome v4.7 : https://fontawesome.com/v4.7.0/icons/
플러그인명 및 플러그인 설명은 다양한 언어코드를 지원할 수 있습니다.
"언어코드":"해당 언어에 대한 플러그인명 또는 설명"
"title":{ "ko":"플러그인명", "en":"PluginName" }
script.js 파일 작성하기
플러그인 스크립트는 다른 플러그인이나 미니톡 요소에 영향을 주지 않도록 아래와 같이 기본적으로 샌드박싱되어 적용됩니다.
(function() { // script.js 에서 작성된 내용이 들어갑니다. })();
script.js 파일은 내부적으로 자바스크립트 클래스처럼 동작하며, me 객체를 이용하여 플러그인 내부에 변수 및 함수를 정의한 뒤 사용할 수 있습니다.
또한 플러그인내 script.js 어디서든 Minitalk 변수를 이용하여 미니톡 객체 및 미니톡 내부 메소드에 접근할 수 있습니다.
/** * 이 파일은 미니톡 플러그인 예제의 일부입니다. (https://www.minitalk.io) * * @file /plugins/example/script.js * @author Arzz (arzz@arzz.com) * @license MIT License * @version 1.0.0 * @modified 2021. 1. 21. */ if (Minitalk === undefined) return; /** * 플러그인 내부변수 정의방법 */ me.myValue = "hello world"; /** * 플러그인 내부함수 정의방법 */ me.myFunction = function() { // me.myValue 를 출력한다. // Minitalk 변수를 이용하여, Minitalk 객체에 접근할 수 있다. Minitalk.ui.printSystem("info",me.myValue); }; /** * 미니톡 이벤트 리스너 추가하기 */ Minitalk.on("connect",function(minitalk) { me.myFunction(); });
미니톡 내부함수에 바로 접근할 경우, 객체정의가 완료되지 않은상태에서 적용될 수 있기 때문에, 가급적 init 이벤트를 이용하여, 미니톡 객체에 접근하는 것을 권장합니다.
/** * 미니톡 객체 및 메소드에 접근하기 */ Minitalk.on("init",function(minitalk) { // 사용자 정의 프로토콜을 정의한다. minitalk.socket.setProtocol("myProtocol",function(minitalk,data,to,from) { console.log("myProtocol",data); }); // 툴바에 버튼을 추가한다. minitalk.ui.appendTool({ tool:"pluginTool", text:"pluginTool", iconCls:"xi xi-refresh", handler:function() { } }); });
플러그인 내부에서 미니톡 모든 객체 및 메소드에 접근가능하며 해당 객체나 메소드는 API문서를 참고하여 주십시오.
플러그인은 가급적 미니톡 클라이언트 v6.4 버전 이상 및 v7.0 이상에서 동작하는 것을 권장하며, 미니톡 클라이언트 버전에 따라 분기처리를 지원하기위해 Minitalk.version 변수에 미니톡 클라이언트 버전이 정의되어 있습니다.
버전이 x.yy.zz 인 경우 xyyzz 형태로 정의되며, v6.4.0 인 경우, 60400, v.7.10.5 인 경우 71005 형태로 정의되어 있습니다.
if (Minitalk.version < 70000) { // 미니톡 클라이언트 v7.0.0 미만에서 동작할 코드를 정의합니다. }