3.1 Zimlet 파일

이 절은 Zimlet을 구성하는 다양한 리소스와 파일들을 설명합니다. Zimlet은 최소한으로 하나의 XML Zimlet Definition(정의) 파일만으로 구성할 수 있습니다(예: com_zimbra_test.xml). 이 파일에는 Zimlet의 이름, 버전과 같은 정보들이 기술됩니다.

파일명 필수/옵션 설명
{zimlet 이름}.xml 필수 이것은 Zimlet Definiation(정의) 파일로 Zimlet의 작동방식을 기술합니다. 이 파일은 모든 Zimlet에 필요합니다. Zimlet XML 요소에 대하여 보다 많은 정보를 얻기 위해서는 Zimlet Definition File Reference를 참고하십시오.
*.js 옵션 자바스크립트 파일입니다.
*.jsp 옵션 자바서버페이지(“JSP”) 파일입니다. 보다 많은 정보를 위해서는 Java & JSP를 보십시오.
*.jar 옵션 자바 아카이브(“JAR”) 파일입니다. 보다 많은 정보를 얻기 위해서는 Java & JSP를 참고하십시오.
*.css 옵션 CSS 파입니다.
{zimlet 이름}.properties 옵션 Zimlet 리소스를 기술한 파일입니다. 이 리소스들은 Zimlets의 국제화와 지역화를 위해 사용됩니다. 보다 많은 정보를 보기 위해서는 Internationalization을 보십시오.
config_template.xml 옵션 이것은 Zimlet Configuration(설정) 파일로 “allowedDomains”와 같은 Zimlet의 property를 설정하기 위해 사용됩니다. 보다 많은 정보를 얻기 위해서는 Zimlet Configuration Files을 참고하십시오. allowed domains에 대한 보다 많은 정보를 위해서는 Proxy Servlet Setup을 참고하십시오.

3.2 Zimblet APIs

Zimlet 개발에는 다양한 API 세트가 사용됩니다. 당신은 이 API 세트를 조합하여 당신의 Zimlet에서 구현하고자 하는 기능을 구현 할 수 있을 것입니다.

Zimlet은 주로 자바스크립트로 작성됩니다. XML API와 함께 자바스크립트 API를 사용하면 당신은 보다 강력한 Zimlet을 작성할 수 있습니다. 당신은 XML API를 사용하여 패널이나 context 메뉴를 구성할 수 있고, 이러한 패널이나 메뉴로부터 특정한 이벤트가 발생하면 동작할 수 있도록 자바스크립트 API를 사용할 수 있습니다. 보다 많은 정보를 얻기 위해JavaScript API를 참고하십시오.

XML API XML API는 두 부분으로 구성됩니다.
· Zimlet Definition(정의) 파일(이하 “Zimlet 정의 파일”이라 하겠습니다)
· Zimlet Configuration(설정) 파일(이하 “Zimlet 설정 파일”이라 하겠습니다)
당신은 Zimlet 정의 파일로 많은 것을 할 수 있습니다. 예를 들어, 당신은 콘텐츠 Zimlet을 구현할 수 있고, context 메뉴를 만들 수 있으며, 당신의 Zimlet을 패널처럼 보이게 만들 수 있습니다. 그리고, 일반적으로 (<actionUrl> 태그를 통해서) 외부 서비스와 기본적인 연동을 할 수 있습니다. 하지만, XML API만으로는 Zimlet의 서비스를 커스터마이즈하고 Zimbra 웹 클라이언트와 연동하는 데는 일정한 제약이 있습니다. 또한 디버깅도 일부 제한됩니다. 커스터마이즈한 다이얼로그 박스를 제시하거나 (삽입 버튼을 만든다거나, Zimbra 애플리
케이션 탭을 만든다거나 하는 등의) Zimbra 웹 클라이언트와 보다 긴밀하게 연동하는 Zimlet을 만들기 위해서는 XML API 세트와 함께 자바스크립트 API를 함께 사용하여야 합니다. 모든 Zimlet은 최소한 하나의 Zimlet 정의 파일을 포함하여야 합니다. Zimlet XML 요소와 문법에 대해 보다 많은 정보를 보기 위해서는 Zimlet Definition File Reference를 보십시오.
자바스크립트 API Zimlet은 주로 자바스크립트로 작성됩니다. XML API와 함께 자바스크립트 API를 사용하면 당신은 보다 강력한 Zimlet을 작성할 수 있습니다. 당신은 XML API를 사용하여 패널이나 context 메뉴를 구성할 수 있고, 이러한 패널이나 메뉴로부터 특정한 이벤트가 발생하면 동작할 수 있도록 자바스크립트 API를 사용할 수 있습니다. 보다 많은 정보를 얻기 위해 JavaScript API를 참고하십시오.
SOAP API 짐브라는 짐브라 서버와 연동하기 위해 SOAP(Simple Object Access Protocol) API을 사용하고 있습니다. SOAP를 사용하여, 예를 들어 주어진 메일박스에 메시지를 작성하고 폴더를 만드는 등으로 서버가 작용하도록 짐브라 서버로부터 데이터를 주고 받을 수 있습니다. 짐브라로부터 짐브라 SOAP API를 호출하는 예제는 Examples > SOAP API Zimlets에서 찾아 볼 수 있습니다. 짐브라 SOAP API 명령에 대한 보다 자세한 설명은 ZimbraServer/docs/soap.txt에서 찾아볼 수 있습니다.

3.2.1 XML APIs

3.2.1.1 Zimlet Definition(정의) 파일

이 파일은 Zimlet을 정의하며 모든 Zimlet에 반드시 필요한 파일입니다. 당신은 이 파일에서 Zimlet이 어떻게 작동할 지에 대해 직접 기술할 수 있습니다. 이것은 매우 기본적인 기능을 가진 간단한 contents Zimlet을 작성하는데 유용합니다. 예를 들어 메뉴 아이템을 정의한다던가, 단순하게 URL 을 표시하는 Zimlet 패널을 표시한다든가 등입니다. 그러나, 이러한 기본적인 기능을 넘어기 위해서는 반드시 자바스크립트 API와 Zimlet Handler Object를 활용해야 할 것입니다.

Zimlet XML 요소와 문법에 대해 보다 많은 정보를 보기 위해서는 Zimlet Definition File Reference를 보십시오.

3.2.1.2 Zimlet Configuration(설정) 파일

설정 파일(config_templates.xml)은 짐릿 설정에 필요한 설정값들을 기술합니다. 설정값들을 글로벌이나 특정 호스트 값이 될 수 있습니다. 설정값은 짐릿 정의 파일에서 “${}” 표현을 써서 접근할 수 있습니다.

설정값 문법 예제
글로벌 설정값에 접근 ${config.global.설정값이름} “defaultToGoogle”로 명명된 글로벌 설정값에 접근하기 위해서는 ${config.global.defaultToGoogle}로 해야 합니다.
특정 호스트 설정값에 접근 ${config.host.설정값이름} “googleApi”라는 특정 호스트의 설정값에 접근하기 위해서는 ${config.host.googleApi}로 해야 합니다.

설정값은 Zimlet Handler Object에서 getConfigProperty() 메소드를 이용하여 접근할 수도 있습니다.

짐릿 XML 요소와 문법에 대해 보다 많은 정보를 얻기 위해서는 Zimlet Configuration File Reference 를 참고하십시오.

3.2.2 자바스크립 APIs

3.2.2.1 Zimlet 핸들러 오브젝트

짐릿 프레임워크는 짐릿 자바스크립트 기본 클래스인 Zimbra Handler Object를 제공합니다. 이 클래스는 ZmZimletBase입니다. 자바스크립트로 짐릿의 기능을 구현하려는 개발자는 반드시 이 ZmZimletBase 클래스를 확장하여 사용해야 합니다. ZmZimletBase는 panel 짐릿, tab 짐릿과 content 짐릿을 위한 메소드를 포함하고 있습니다.

당신의 짐릿 이름로는 Zimlet Handler Object와 궤를 맞추어 이름 짓는 것이 권장됩니다.

예제

Zimlet 이름 com_zimbra_helloworld
Zimlet 정의 파일 이름 com_zimbra_helloworld.xml
Zimlet 패키지 이름 com_zimbra_helloworld.zip
Zimlet 자바스크립트 파일 com_zimbra_helloworld.js
Zimlet 핸들러 오브젝트 이름 com_zimbra_helloworldHandlerObject

Zimlet 정의파일에서 자바스크립트 파일은 다음과 같이 포함합니다.

Zimlet 정의 파일에서 핸들러 오브젝트를 정의합니다.

핸들러 오브젝트를 구현하기 위해서는, Zimlet 자바스크립트 파일에서 핸들러 오브젝트를 ZmZimletBase 클래스의 하위 클래스로 지정합니다.

자바스크립트 API와 Zimlet 정의 파일의 문법에 대한 보다 상세한 정보를 위해서는 Zimlet API Spectifications를 참고하십시오.

노트: Zimlet 핸들러 오브젝트 이름에 “.”을 사용하지 마십시오. 대신 “_”를 사용하십시오.

3.3 개발 모드

Zimbra 웹 클라이언트가 로드될 때, 서버는 애플리케이션 내에 있는 모든 자바스크립트 코드를 공고히 하고 혼란스럽게 만듭니다. 이것은 로그인과 로드 시간을 줄여 속도를 높이기 위한 것입니다. 추가적으로, 초기에 로그인 할 때 모든 모듈들(예를 들어, 카렌다, 문서 등)이 로드되는 것은 아니며, 필요한 때마다 로드됩니다. 이러한 공고함, 혼란 그리고 레이지 도딩이 브라우저 안에서 코드를 디버깅하기 어렵게 만듭니다. 예를 들어, Zimlet 자바스크립트 파일 안에 있는 sendMail(param1, param2)와 같은 Zimlet 함수는 Zimlet-nodev_all.js 파일 안의 hy(p1, p2)와 같이 될 것입니다.

개발과 디버깅을 위해 당신은 아마도 클라이언드 URL에서 dev=1을 추가함으로서 이러한 기능을 끄고 “개발자모드”로  웹 클라이언드를 돌릴 수 있을 것입니다.

이 개발자모드에서는 모든 웹 클라이언트 모듈들이 로그인시에 로드되고, 모든 자바스크립트 코드가 공고화되지 않은 채 읽기 쉬운 상태로 남겨집니다. 추가적으로 디버깅을 돕기 위해 디버그 윈도우가 팝업되어 웹 클라이언트 브라우져와 서버 사이에 일어나는 모든 SOAP  트랜잭젼이 보여집니다.

예를 들어, 클라인언트 URL에 dev=1을 다음과 같이 추가하면 됩니다.

 

노트: 개발자모드를 켜고 당신이 짐릿을 개발할 때, 짐릿이 제대로 동작하는지 확인하기 위해서는 반드시 일반 모드(dev=1 없이)에서 테스트해야 합니다. 몇몇의 케이스에서는 짐릿이 레이지 로딩되는 모듈에 의존적이 될 수 있고, 이 경우 당신은 필요한 모듈을 로드하는 코드를 작성해야 합니다.

 

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다