플러그인 제작하기
플러그인 기본요소
/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 미만에서 동작할 코드를 정의합니다.
}