이 페이지에서는 AEM 6.4에서 더 이상 사용되지 않는 클래식 UI 내의 위젯 사용에 대해 설명합니다.
Adobe에서는 Coral UI 및 Granite UI에 기반한 최신 터치 지원 UI을 활용할 것을 권장합니다.
Adobe Experience Manager의 웹 기반 인터페이스는 AJAX 및 기타 최신 브라우저 기술을 사용하여 작성자가 웹 페이지에서 바로 컨텐츠를 WYSIWYG로 편집하고 포맷할 수 있도록 합니다.
Adobe Experience Manager(AEM)은 가장 중요한 모든 브라우저에서 작동되고 데스크탑 등급 UI 경험을 만들 수 있는 세련된 사용자 인터페이스 요소를 제공하는 ExtJS 위젯 라이브러리를 사용합니다.
이러한 위젯은 AEM에 포함되어 있으며 AEM 자체에서 사용되는 것 외에도 AEM을 사용하여 구축한 모든 웹 사이트에서 사용할 수 있습니다.
AEM에서 사용 가능한 모든 위젯에 대한 전체 참조를 보려면 위젯 API 설명서 또는 기존 xtypes](/docs/experience-manager-65/sites-developing/xtypes.html?lang=ko)의 [목록을 참조하십시오. 또한 ExtJS 프레임워크를 사용하는 방법을 보여주는 많은 예는 프레임워크의 소유자인 Sendcha 사이트에서 사용할 수 있습니다.
이 페이지에서는 위젯을 사용하고 확장하는 방법에 대한 몇 가지 통찰력을 제공합니다. 먼저 페이지에 클라이언트 측 코드를 포함하는 방법을 설명합니다. 그런 다음 몇 가지 기본 사용 및 확장 기능을 설명하기 위해 만들어진 몇 가지 샘플 구성 요소에 대해 설명합니다. 이러한 구성 요소는 패키지 공유에서 ExtJS 위젯 사용 패키지에서 사용할 수 있습니다.
패키지에는 다음 예가 포함되어 있습니다.
Adobe Experience Manager의 클래식 UI는 ExtJS 3.4.0을 기반으로 구축됩니다.
클라이언트 측 javascript 및 스타일시트 코드는 클라이언트 라이브러리에 배치되어야 합니다.
클라이언트 라이브러리를 만들려면:
다음 속성을 사용하여 /apps/<project>
아래에 노드를 만듭니다.
Note: <category-name> is the name of the custom library (e.g. "cq.extjstraining") and is used to include the library on the page.
clientlib
아래에 css
및 js
폴더(nt:folder)를 만듭니다.
clientlib
아래에 css.txt
및 js.txt
파일(nt:files)을 만듭니다. 이러한 .txt 파일은 라이브러리에 포함된 파일을 나열합니다.
js.txt
편집:CQ 클라이언트 라이브러리 서비스에 의해 집계되는 파일 목록이 다음에 ' #base=js
'로 시작해야 합니다(예:
#base=js
components.js
exercises.js
CustomWidget.js
CustomBrowseField.js
InsertTextPlugin.js
css.txt
편집:CQ 클라이언트 라이브러리 서비스에 의해 집계되는 파일 목록이 다음에 ' #base=css
'로 시작해야 합니다(예:
#base=css
components.css
js
폴더 아래에 라이브러리에 속한 javascript 파일을 배치합니다.
css
폴더 아래에 .css
파일과 css 파일에 사용되는 리소스(예:my_icon.png
).
앞에서 설명한 스타일 시트 처리는 선택 사항입니다.
페이지 구성 요소 jsp에 클라이언트 라이브러리를 포함하려면:
javascript 코드와 스타일 시트 모두를 포함하려면 다음을 수행합니다.
<ui:includeClientLib categories="<category-name1>, <category-name2>, ..."/>
where
<category-nameX>
는 클라이언트측 라이브러리의 이름입니다.
javascript 코드만 포함할 수 있습니다.
<ui:includeClientLib js="<category-name>"/>
자세한 내용은 <ui:includeClientLib> 태그의 설명을 참조하십시오.
경우에 따라 클라이언트 라이브러리는 작성 모드에서만 사용할 수 있고 게시 모드에서 제외되어야 합니다. 다음과 같이 수행할 수 있습니다.
if (WCMMode.fromRequest(request) != WCMMode.DISABLED) {
%><ui:includeClientLib categories="cq.collab.blog"/><%
}
이 페이지의 자습서를 따르려면 로컬 AEM 인스턴스에 ExtJS 위젯 사용 패키지를 설치하고 구성 요소가 포함될 샘플 페이지를 만듭니다. 이렇게 하려면 다음을 수행하십시오.
/apps
아래에 extjstraining
프로젝트를 만듭니다./apps/geometrixx/components/page/headlibs.jsp
파일을 열고 cq.extjstraining
범주를 기존 <ui:includeClientLib>
태그에 다음과 같이 추가합니다.%><ui:includeClientLib categories="apps.geometrixx-main, cq.extjstraining"/><%
/content/geometrixx/en/products
아래의 Geometrixx 분기에서 새 페이지를 만들고 ExtJS 위젯 사용으로 호출합니다.이 페이지의 예는 We.Retail로 대체된, 더 이상 AEM으로 제공되지 않는 Geometrixx 샘플 컨텐츠를 기반으로 합니다. Geometrixx 다운로드 및 설치 방법은 We.Retail 참조 구현 문서를 참조하십시오.
대화 상자는 일반적으로 컨텐츠를 편집하는 데 사용되지만 정보를 표시만 할 수도 있습니다. 전체 대화 상자를 보는 간편한 방법은 json 형식의 해당 표현물에 액세스하는 것입니다. 이렇게 하려면 브라우저에서 다음을 가리킵니다.
https://localhost:4502/<path-to-dialog>.-1.json
사이드 킥에서 ExtJS 위젯 사용 그룹의 첫 번째 구성 요소를 1이라고 합니다. Dialog Basics에는 사용자 정의된 Javascript 로직 없이 바로 사용할 수 있는 위젯으로 빌드되는 4개의 기본 대화 상자가 포함되어 있습니다. 대화 상자는 /apps/extjstraining/components/dialogbasics
아래에 저장됩니다. 기본 대화 상자는 다음과 같습니다.
full
노드):3개의 탭으로 구성된 창이 표시되고 각 탭에는 2개의 텍스트 필드가 있습니다.singlepanel
노드):2개의 텍스트 필드가 있는 1개의 탭이 있는 창이 표시됩니다.multipanel
노드):전체 대화 상자와 표시되지만 다르게 작성됩니다.design
노드):2개의 탭이 있는 창이 표시됩니다. 첫 번째 탭에는 텍스트 필드, 드롭다운 메뉴 및 축소 가능한 텍스트 영역이 있습니다. 두 번째 탭에는 4개의 텍스트 필드가 있는 필드 세트와 2개의 텍스트 필드가 있는 축소 가능한 필드가 있습니다.1 포함 샘플 페이지의 대화 상자 기본 사항 구성 요소:
구성 요소는 다음과 같이 표시됩니다.
전체 대화 상자에 3개의 탭이 있는 창이 표시되고 각 탭에는 2개의 텍스트 필드가 있습니다. 대화 상자 기본 사항 구성 요소의 기본 대화 상자입니다. 이것의 특징은 다음과 같습니다.
cq:Dialog
, xtype = [dialog](/docs/experience-manager-65/sites-developing/xtypes.md#dialog)
.cq:Panel
)을 표시합니다.cq:Widget
, xtype = [textfield](/docs/experience-manager-65/sites-developing/xtypes.md#textfield)
)./apps/extjstraining/components/dialogbasics/full
https://localhost:4502/apps/extjstraining/components/dialogbasics/full.-1.json
대화 상자는 다음과 같이 표시됩니다.
단일 패널 대화 상자에는 2개의 텍스트 필드가 있는 하나의 탭이 있는 창이 표시됩니다. 이것의 특징은 다음과 같습니다.
cq:Dialog
, xtype = [panel](/docs/experience-manager-65/sites-developing/xtypes.md#panel)
)을 표시합니다.cq:Widget
, xtype = [textfield](/docs/experience-manager-65/sites-developing/xtypes.md#textfield)
)./apps/extjstraining/components/dialogbasics/singlepanel
https://localhost:4502/apps/extjstraining/components/dialogbasics/singlepanel.-1.json
단일 패널 대화 상자를 사용하려면 다음을 수행하십시오.
/apps/extjstraining/components/dialogbasics/dialog
/apps/extjstraining/components/dialogbasics/singlepanel
/apps/extjstraining/components/dialogbasics
/apps/extjstraining/components/dialogbasics/Copy of singlepanel
하고 dialog
이름을 변경합니다.다중 패널 대화 상자의 표시는 전체 대화 상자와 동일하지만 다른 방식으로 빌드됩니다. 이것의 특징은 다음과 같습니다.
cq:Dialog
, xtype = [tabpanel](/docs/experience-manager-65/sites-developing/xtypes.md#tabpanel)
)에 의해 정의됩니다.cq:Panel
)을 표시합니다.cq:Widget
, xtype = [textfield](/docs/experience-manager-65/sites-developing/xtypes.md#textfield)
)./apps/extjstraining/components/dialogbasics/multipanel
https://localhost:4502/apps/extjstraining/components/dialogbasics/multipanel.-1.json
[다중 패널] 대화 상자를 사용하는 방법은 다음과 같습니다.
Rich 대화 상자에 2개의 탭이 있는 창이 표시됩니다. 첫 번째 탭에는 텍스트 필드, 드롭다운 메뉴 및 축소 가능한 텍스트 영역이 있습니다. 두 번째 탭에는 4개의 텍스트 필드가 있는 필드 세트와 2개의 텍스트 필드가 있는 축소 가능한 필드가 있습니다. 이것의 특징은 다음과 같습니다.
cq:Dialog
, xtype = [dialog](/docs/experience-manager-65/sites-developing/xtypes.md#dialog)
)에 의해 정의됩니다.cq:Panel
)을 표시합니다. [textfield](/docs/experience-manager-65/sites-developing/xtypes.md#textfield)
이 있는 [dialogfieldset](/docs/experience-manager-65/sites-developing/xtypes.md#dialogfieldset)
위젯과 3개의 옵션이 있는 [selection](/docs/experience-manager-65/sites-developing/xtypes.md#selection)
위젯이 있고 [textarea](/docs/experience-manager-65/sites-developing/xtypes.md#textarea)
위젯이 있는 축소 가능한 [dialogfieldset](/docs/experience-manager-65/sites-developing/xtypes.md#dialogfieldset)
위젯이 있습니다. [textfield](/docs/experience-manager-65/sites-developing/xtypes.md#textfield)
위젯이 있는 [dialogfieldset](/docs/experience-manager-65/sites-developing/xtypes.md#dialogfieldset)
위젯과 2개의 [textfield](/docs/experience-manager-65/sites-developing/xtypes.md#textfield)
위젯이 있는 축소 가능한 dialogfieldset
위젯이 있습니다./apps/extjstraining/components/dialogbasics/rich
https://localhost:4502/apps/extjstraining/components/dialogbasics/rich.-1.json
리치 대화 상자를 사용하려면:
사이드 킥에서 ExtJS 위젯 사용 그룹의 두 번째 구성 요소를 2라고 합니다. 동적 대화 상자에는 기본 위젯으로 빌드된 3개의 동적 대화 상자와 사용자 정의된 javascript 논리와 함께이(가) 포함되어 있습니다. 대화 상자는 /apps/extjstraining/components/dynamicdialogs
아래에 저장됩니다. 동적 대화 상자는 다음과 같습니다.
switchtabs
노드):2개의 탭이 있는 창이 표시됩니다. 첫 번째 탭에는 3가지 옵션이 있는 라디오 선택 사항이 있습니다.옵션을 선택하면 옵션과 관련된 탭이 표시됩니다. 두 번째 탭에는 두 개의 텍스트 필드가 있습니다.arbitrary
노드):하나의 탭으로 창이 표시됩니다. 탭에는 자산을 삭제하거나 업로드할 필드와 포함된 페이지에 대한 일부 정보와 자산이 참조되는 경우 자산에 대한 정보를 표시하는 필드가 있습니다.togglefield
노드):하나의 탭으로 창이 표시됩니다. 탭에는 다음과 같은 확인란이 있습니다.이 확인란을 선택하면 2개의 텍스트 필드가 있는 필드 세트가 표시됩니다.2를 포함하려면 샘플 페이지의 동적 대화 상자 구성 요소:
구성 요소는 다음과 같이 표시됩니다.
탭 전환 대화 상자에 2개의 탭이 있는 창이 표시됩니다. 첫 번째 탭에는 3가지 옵션이 있는 라디오 선택 사항이 있습니다.옵션을 선택하면 옵션과 관련된 탭이 표시됩니다. 두 번째 탭에는 두 개의 텍스트 필드가 있습니다.
주요 특징:
cq:Dialog
, xtype = [dialog](/docs/experience-manager-65/sites-developing/xtypes.md#dialog)
)에 의해 정의됩니다.cq:Panel
)을 표시합니다.1개의 선택 탭 중 2번째 탭은 1차 탭의 선택 사항(3개 옵션)에 따라 다릅니다.cq:Panel
)이 있으며, 각 탭에는 2개의 텍스트 필드가 있습니다(노드 유형 = cq:Widget
, xtype = [textfield](/docs/experience-manager-65/sites-developing/xtypes.md#textfield)
). 한 번에 하나의 선택 탭만 표시됩니다.switchtabs
노드에 의해 정의됩니다./apps/extjstraining/components/dynamicdialogs/switchtabs
https://localhost:4502/apps/extjstraining/components/dynamicdialogs/switchtabs.-1.json
논리는 다음과 같이 이벤트 리스너 및 javascript 코드를 통해 구현됩니다.
대화 상자 노드에는 대화 상자가 표시되기 전에 모든 선택적 탭을 숨기는 " beforeshow
" 리스너가 있습니다.
beforeshow="function(dialog){Ejst.x2.manageTabs(dialog.items.get(0));}"
dialog.items.get(0)
[선택] 패널과 3개의 선택 패널이 포함된 표 패널을 가져옵니다.
Ejst.x2
개체는 다음 위치의 exercises.js
파일에 정의됩니다.
/apps/extjstraining/clientlib/js/exercises.js
Ejst.x2.manageTabs()
메서드에서 index
값이 -1이므로 모든 선택적 탭이 숨겨집니다(1에서 3으로 이동).
선택 탭에는 2개의 리스너가 있습니다.대화 상자가 로드될 때 선택한 탭(" loadcontent
" 이벤트)과 선택 영역이 변경될 때 선택한 탭을 표시하는 탭(" selectionchanged
" 이벤트):
loadcontent="function(field,rec,path){Ejst.x2.showTab(field);}"
selectionchanged="function(field,value){Ejst.x2.showTab(field);}"
Ejst.x2.showTab()
메서드에서:
field.findParentByType('tabpanel')
모든 탭( 선택 위젯을 field
나타냅니다)이 포함된 탭 패널을 가져옵니다.
field.getValue()
선택 항목의 값을 가져옵니다(예::😃.tab2
Ejst.x2.manageTabs()
선택한 탭을 표시합니다.
각 선택적 탭에는 " render
" 이벤트의 탭이 숨겨지는 리스너가 있습니다.
render="function(tab){Ejst.x2.hideTab(tab);}"
Ejst.x2.hideTab()
메서드에서:
tabPanel
는 모든 탭이 포함된 탭 패널입니다.
index
은 선택 탭의 인덱스입니다.
tabPanel.hideTabStripItem(index)
탭 숨기기
다음과 같이 표시됩니다.
대화 상자에 기본 구성 요소의 내용이 표시되는 경우가 많습니다. 여기에 설명된 대화 상자( 임의의 대화 상자)는 다른 구성 요소에서 컨텐츠를 가져옵니다.
임의의 대화 상자에 탭이 한 개인 창이 표시됩니다. 탭에는 두 개의 필드가 있습니다.포함된 페이지와 참조된 자산에 대한 일부 정보를 표시하는 자산 및 자산을 놓을 수 있습니다.
주요 특징:
cq:Dialog
, xtype = [dialog](/docs/experience-manager-65/sites-developing/xtypes.md#dialog)
)에 의해 정의됩니다.cq:Widget
, xtype = [tabpanel](/docs/experience-manager-65/sites-developing/xtypes.md#tabpanel)
)을 표시합니다(노드 유형 = cq:Panel
).cq:Widget
, xtype = [smartfile](/docs/experience-manager-65/sites-developing/xtypes.md#smartfile)
)과 ownerdraw 위젯(노드 유형 = cq:Widget
, xtype = [ownerdraw](/docs/experience-manager-65/sites-developing/xtypes.md#ownerdraw)
)이 있습니다.arbitrary
노드에 의해 정의됩니다./apps/extjstraining/components/dynamicdialogs/arbitrary
https://localhost:4502/apps/extjstraining/components/dynamicdialogs/arbitrary.-1.json
논리는 다음과 같이 이벤트 리스너 및 javascript 코드를 통해 구현됩니다.
소유자 그리기 위젯에는 구성 요소가 포함된 페이지와 컨텐츠를 로드할 때 스마트 파일 위젯에서 참조하는 자산에 대한 정보를 표시하는 " loadcontent
" 리스너가 있습니다.
loadcontent="function(field,rec,path){Ejst.x2.showInfo(field,rec,path);}"
field
은(는) ownerdraw 객체로 설정되어 있습니다.
path
는 구성 요소의 컨텐츠 경로(예:/content/geometrixx/en/products/triangle/ui-tutorial/jcr:content/par/dynamicdialogs)
Ejst.x2
개체는 다음 위치의 exercises.js
파일에 정의됩니다.
/apps/extjstraining/clientlib/js/exercises.js
Ejst.x2.showInfo()
메서드에서:
pagePath
은 구성 요소를 포함하는 페이지의 경로입니다.
pageInfo
json 형식의 페이지 속성을 나타냅니다.
reference
는 참조된 자산의 경로입니다.
metadata
json 형식의 자산 메타데이터를 나타냅니다.
ownerdraw.getEl().update(html);
대화 상자에 작성된 html을 표시합니다.
임의의 대화 상자를 사용하려면:
필드 켜기/끄기 대화 상자에 탭이 한 개인 창이 표시됩니다. 탭에는 다음과 같은 확인란이 있습니다.이 확인란을 선택하면 2개의 텍스트 필드가 있는 필드 세트가 표시됩니다.
주요 특징:
cq:Dialog
, xtype = [dialog](/docs/experience-manager-65/sites-developing/xtypes.md#dialog)
)에 의해 정의됩니다.cq:Widget
, xtype = [tabpanel](/docs/experience-manager-65/sites-developing/xtypes.md#textpanel)
)을 표시합니다(노드 유형 = cq:Panel
).cq:Widget
, xtype = [selection](/docs/experience-manager-65/sites-developing/xtypes.md#selection)
, 유형 = [checkbox](/docs/experience-manager-65/sites-developing/xtypes.md#checkbox)
) 및 축소 가능한 dialogfieldset 위젯(노드 유형 = cq:Widget
, xtype = [dialogfieldset](/docs/experience-manager-65/sites-developing/xtypes.md#dialogfieldset)
)이 있으며, 텍스트 필드 위젯(노드 유형 = cq:Widget
, xtype = [textfield](/docs/experience-manager-65/sites-developing/xtypes.md#textfield)
)이 2개 있습니다.togglefields
노드에 의해 정의됩니다./apps/extjstraining/components/dynamicdialogs/togglefields
https://localhost:4502/apps/extjstraining/components/dynamicdialogs/togglefields.-1.json
논리는 다음과 같이 이벤트 리스너 및 javascript 코드를 통해 구현됩니다.
선택 탭에는 2개의 리스너가 있습니다.콘텐트를 로드할 때 dialogfieldset(" loadcontent
" 이벤트)을 표시하고 선택 영역이 변경될 때 dialogfieldset을 표시하는 항목(" selectionchanged
" 이벤트):
loadcontent="function(field,rec,path){Ejst.x2.toggleFieldSet(field);}"
selectionchanged="function(field,value){Ejst.x2.toggleFieldSet(field);}"
Ejst.x2
개체는 다음 위치의 exercises.js
파일에 정의됩니다.
/apps/extjstraining/clientlib/js/exercises.js
Ejst.x2.toggleFieldSet()
메서드에서:
box
선택 객체임
panel
는 선택 영역과 dialogfieldset 위젯이 포함된 패널입니다.
fieldSet
는 dialogfieldset 객체입니다.
show
는 dialogfieldset이 표시되거나 표시되지 않는 ' show
'을 기반으로 선택한 값(true 또는 false)입니다.
필드 전환 대화 상자를 사용하려면:
AEM과 함께 제공되는 기본 위젯은 대부분의 사용 사례를 다룹니다. 하지만 프로젝트별 요구 사항을 처리하기 위해 사용자 정의 위젯을 만들어야 할 수도 있습니다. 기존 위젯을 확장하여 사용자 정의 위젯을 만들 수 있습니다. 이러한 사용자 지정을 시작하는 데 도움이 되도록 ExtJS 위젯 사용 패키지에는 3개의 서로 다른 사용자 정의 위젯을 사용하는 대화 상자가 포함되어 있습니다.
multifield
노드)는 하나의 탭이 있는 창을 표시합니다. 탭에는 두 개의 필드가 있는 사용자 정의된 다중 필드 위젯이 있습니다.옵션 2개와 텍스트 필드가 있는 드롭다운 메뉴. 텍스트 필드만 있는 기본 multifield
위젯을 기반으로 하기 때문에 multifield
위젯의 모든 기능이 있습니다.treebrowse
노드)에 경로 검색 위젯이 포함된 하나의 탭이 있는 창이 표시됩니다.화살표를 클릭하면 계층을 탐색하고 항목을 선택할 수 있는 창이 열립니다. 그런 다음 항목의 경로가 경로 필드에 추가되고 대화 상자가 닫힐 때 유지됩니다.rteplugin
노드)입니다. RTE(A0/> Widget)와 RTE 플러그인 메커니즘을 통해 추가되는 사용자 정의 기능으로 구성됩니다.richtext
사용자 정의 위젯과 플러그인은 3이라는 구성 요소에 포함되어 있습니다. ExtJS 위젯 사용패키지의 사용자 정의 위젯입니다. 이 구성 요소를 샘플 페이지에 포함하려면:
사용자 정의 멀티필드 위젯 기반 대화 상자에는 탭이 한 개인 창이 표시됩니다. 탭에는 필드가 1개인 표준 위젯과 달리 2개의 필드가 있는 사용자 정의된 다중 필드 위젯이 있습니다.옵션 2개와 텍스트 필드가 있는 드롭다운 메뉴.
사용자 지정 멀티필드 위젯 기반 대화 상자:
cq:Dialog
, xtype = [dialog](/docs/experience-manager-65/sites-developing/xtypes.md#dialog)
)에 의해 정의됩니다.cq:Widget
, xtype = [tabpanel](/docs/experience-manager-65/sites-developing/xtypes.md#tabpanel)
)을 포함하는 1개의 타블패널 위젯(노드 유형 = cq:Widget
, xtype = <a1/>)을 표시합니다. xtype = [panel](/docs/experience-manager-65/sites-developing/xtypes.md#panel)
multifield
위젯이 있습니다(노드 유형 = cq:Widget
, xtype = [multifield](/docs/experience-manager-65/sites-developing/xtypes.md#multifield)
).multifield
위젯에는 사용자 지정 xtype ' ejstcustom
'을 기반으로 하는 fieldconfig(노드 유형 = nt:unstructured
, xtype = ejstcustom
, optionsProvider = Ejst.x3.provideOptions
)가 있습니다.
' fieldconfig
'은 [CQ.form.MultiField](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.form.MultiField)
객체의 구성 옵션입니다.
' optionsProvider
'은 ejstcustom
위젯의 구성입니다. 이 값은 exercises.js
에 정의된 Ejst.x3.provideOptions
메서드로 설정됩니다.
/apps/extjstraining/clientlib/js/exercises.js
2개의 옵션을 반환합니다.
multifield
노드에 의해 정의됩니다./apps/extjstraining/components/customwidgets/multifield
https://localhost:4502/apps/extjstraining/components/customwidgets/multifield.-1.json
사용자 정의 멀티필드 위젯(xtype = ejstcustom
):
Ejst.CustomWidget
이라는 javascript 객체입니다.CustomWidget.js
javascript 파일에 정의된 위치:/apps/extjstraining/clientlib/js/CustomWidget.js
[CQ.form.CompositeField](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.form.CompositeField)
위젯을 확장합니다.hiddenField
(텍스트 필드), allowField
(ComboBox) 및 otherField
(Textfield)CQ.Ext.Component#initComponent
을(를) 무시합니다.
allowField
는 CQ.form. Selectionobject 유형의 'select' 객체입니다. optionsProvider는 대화 상자에 정의된 CustomWidget의 optionsProvider 구성으로 인스턴스화된 Selection 개체의 구성입니다otherField
는 CQ.Ext.form. TextFieldobject입니다.getValue
및 getRawValue
/<a3/>CQ.form.CompositeField 메서드를 재정의합니다.setValue
<allowField value>/<otherField value>, e.g.: 'Bla1/hello'
.ejstcustom
’ xtype으로 등록합니다.CQ.Ext.reg('ejstcustom', Ejst.CustomWidget);
사용자 정의 멀티필드 위젯 기반 대화 상자가 다음과 같이 표시됩니다.
사용자 지정 Treebrowse 위젯 기반 대화 상자에는 사용자 지정 경로 검색 위젯이 포함된 하나의 탭이 있는 창이 표시됩니다.화살표를 클릭하면 계층을 탐색하고 항목을 선택할 수 있는 창이 열립니다. 그런 다음 항목의 경로가 경로 필드에 추가되고 대화 상자가 닫힐 때 유지됩니다.
사용자 정의 트리 찾아보기 대화 상자:
cq:Dialog
, xtype = [dialog](/docs/experience-manager-65/sites-developing/xtypes.md#dialog)
)에 의해 정의됩니다.cq:Widget
, xtype = [tabpanel](/docs/experience-manager-65/sites-developing/xtypes.md#tabpanel)
)을 포함하는 1개의 타블패널 위젯(노드 유형 = cq:Widget
, xtype = <a1/>)을 표시합니다. xtype = [panel](/docs/experience-manager-65/sites-developing/xtypes.md#panel)
cq:Widget
, xtype = ejstbrowse
)이 있습니다.treebrowse
노드에 의해 정의됩니다./apps/extjstraining/components/customwidgets/treebrowse
https://localhost:4502/apps/extjstraining/components/customwidgets/treebrowse.-1.json
사용자 정의 트리 검색 위젯(xtype = ejstbrowse
):
Ejst.CustomWidget
이라는 javascript 객체입니다.CustomBrowseField.js
javascript 파일에 정의된 위치:/apps/extjstraining/clientlib/js/CustomBrowseField.js
[CQ.Ext.form.TriggerField](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.form.TriggerField)
을(를) 확장합니다.browseWindow
이라는 찾아보기 창을 정의합니다. [CQ.Ext.form.TriggerField](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.form.TriggerField)#onTriggerClick
을(를) 무시합니다./bin/wcm/siteadmin/tree.json
에 등록된 서블릿을 호출하여 데이터를 가져옵니다.apps/extjstraining
"입니다.window
개체( [CQ.Ext.Window](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.Window)
)를 정의합니다.
show
이벤트의 창으로 전달됩니다.ejstbrowse
’ xtype으로 등록합니다.CQ.Ext.reg('ejstbrowse', Ejst.CustomBrowseField);
사용자 정의 트리 찾아보기 위젯 기반 대화 상자를 사용하려면:
RTE(리치 텍스트 편집기) 플러그인 기반 대화 상자는 대괄호 안에 사용자 정의 텍스트를 삽입할 수 있는 사용자 정의 단추가 있는 리치 텍스트 편집기 기반 대화 상자입니다. 사용자 지정 텍스트는 일부 서버측 로직(이 예에서는 구현되지 않음)에서 구문 분석할 수 있습니다. 예를 들어 지정된 경로에 정의된 일부 텍스트를 추가합니다.
RTE 플러그인 기반 대화 상자:
/apps/extjstraining/components/customwidgets/rteplugin
https://localhost:4502/apps/extjstraining/components/customwidgets/rteplugin.-1.json
rtePlugins
노드에는 플러그인 이름을 기준으로 하는 하위 노드 inserttext
(노드 유형 = nt:unstructured
)이 있습니다. RTE에 사용할 수 있는 플러그인 기능 중 하나를 정의하는 features
속성이 있습니다.RTE 플러그인:
Ejst.InsertTextPlugin
이라는 javascript 객체입니다.InsertTextPlugin.js
javascript 파일에 정의된 위치:/apps/extjstraining/clientlib/js/InsertTextPlugin.js
[CQ.form.rte.plugins.Plugin](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.form.rte.plugins.Plugin)
개체를 확장합니다. [CQ.form.rte.plugins.Plugin](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.form.rte.plugins.Plugin)
개체를 정의하며 구현 플러그인에서 재정의됩니다.
getFeatures()
플러그인이 사용할 수 있도록 하는 모든 기능의 배열을 반환합니다.initializeUI()
새 단추를 RTE 도구 모음에 추가합니다.notifyPluginConfig()
단추를 마우스로 가리키면 제목과 텍스트를 표시합니다.execute()
단추를 클릭하면 호출되고 플러그인 작업을 수행합니다.포함할 텍스트를 정의하는 데 사용되는 창이 표시됩니다.insertText()
해당 대화 상자 개체를 사용하여 텍스트를 삽입합니다 Ejst.InsertTextPlugin.Dialog
(이후 참조).executeInsertText()
는 [확인] apply()
단추를 클릭할 때 트리거되는 대화 상자의 방법으로 호출됩니다.inserttext
’ 플러그인으로 등록합니다.CQ.form.rte.plugins.PluginRegistry.register("inserttext", Ejst.InsertTextPlugin);
Ejst.InsertTextPlugin.Dialog
개체는 플러그인 단추를 클릭할 때 열리는 대화 상자를 정의합니다. 대화 상자는 패널, 양식, 텍스트 필드 및 2개의 단추(OK 및 취소)로 구성됩니다.리치 텍스트 편집기(RTE) 플러그인 기반 대화 상자를 사용하려면:
리치 텍스트 편집기(RTE) 플러그인 기반 대화 상자가 다음과 같이 표시됩니다.
이 예는 로직의 클라이언트측 부분을 구현하는 방법만 보여줍니다.그런 다음 자리 표시자([텍스트])를 서버측에서 명시적으로 구문 분석해야 합니다(예: 구성 요소 JSP의 경우).
기본적으로 제공되는 [CQ.Ext.tree.TreePanel](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.tree.TreePanel)
개체는 트리 구조화된 데이터의 트리 구조화된 UI 표현을 제공합니다. ExtJS 위젯 사용 패키지에 포함된 트리 개요 구성 요소는 TreePanel
개체를 사용하여 지정된 경로 아래에 JCR 트리를 표시하는 방법을 보여줍니다. 창 자체는 도킹하거나 도킹할 수 있습니다. 이 예에서 윈도우 로직은 <script></script> 태그 사이에 구성 요소 jsp에 포함됩니다.
트리 개요 구성 요소를 샘플 페이지에 포함하려면:
구성 요소는 다음과 같이 표시됩니다.
트리 개요 구성 요소:
정의 위치:
/apps/extjstraining/components/treeoverview
이 대화 상자를 사용하면 창의 크기를 설정할 수 있고 창을 도킹/도킹 해제할 수 있습니다(아래 세부 정보 참조).
구성 요소 jsp:
apps/extjstraining/components/treeoverview/content.jsp
구성 요소 jsp에 포함된 javascript 코드:
tree
개체를 정의합니다.treePanel
(CQ.Ext.tree.TreePanel)이 만들어집니다.
treePanel
에는 창을 만드는 데 사용되는 데이터가 들어 있습니다.
데이터는 다음 위치에 등록된 서블릿을 호출하여 검색됩니다.
/bin/wcm/siteadmin/tree.json
beforeload
리스너는 클릭한 노드가 로드되는지 확인합니다.root
객체는 apps/extjstraining
경로를 트리 루트로 설정합니다.tree
( [CQ.Ext.Window](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.Window)
는 사전 정의된 기준 treePanel
으로 설정되며,tree.show();
구성 요소 대화 상자:
cq:Dialog
, xtype = [panel](/docs/experience-manager-65/sites-developing/xtypes.md#panel)
)에 의해 정의됩니다.cq:Widget
, xtype = [sizefield](/docs/experience-manager-65/sites-developing/xtypes.md#sizefield)
)과 선택 위젯(노드 유형 = cq:Widget
, xtype = [selection](/docs/experience-manager-65/sites-developing/xtypes.md#selection)
, 유형 = radio
)이 있으며 옵션(true/false)이 2개 있습니다./apps/extjstraining/components/treeoverview/dialog
https://localhost:4502/apps/extjstraining/components/treeoverview/dialog.-1.json
격자 패널은 행과 열의 표 형식으로 데이터를 나타냅니다. 다음과 같이 구성됩니다.
ExtJS 위젯 사용 패키지에 포함된 격자 개요 구성 요소는 데이터를 표 형식으로 표시하는 방법을 보여줍니다.
그리드 개요 구성 요소를 샘플 페이지에 포함하려면:
구성 요소는 다음과 같이 표시됩니다.
기본 버전에서 그리드 개요 구성 요소는 정적 데이터가 포함된 윈도우를 표 형식으로 표시합니다. 이 예에서는 두 가지 방법으로 구성 요소 jsp에 로직이 포함됩니다.
그리드 개요 구성 요소:
/apps/extjstraining/components/gridoverview
구성 요소 jsp:
저장소에서 너비, 높이 및 도킹 속성을 검색합니다.
격자 개요 데이터 형식에 대한 소개로 일부 텍스트를 표시합니다.
GridPanel 객체를 정의하는 javascript 코드를 참조합니다.
<script type="text/javascript" src="/apps/extjstraining/components/gridoverview/defaultgrid.js"></script>
defaultgrid.js
일부 정적 데이터를 GridPanel 객체의 기초로 정의합니다.
GridPanel 객체를 사용하는 Window 객체를 정의하는 javascript 태그 사이에 javascript 코드를 삽입합니다.
정의 위치:
apps/extjstraining/components/gridoverview/content.jsp
구성 요소 jsp에 포함된 javascript 코드:
grid
개체를 정의합니다.var grid = CQ.Ext.getCmp("<%= node.getName() %>-grid");
grid
이(가) 없는 경우 CQ.Ext.grid.GridPanel 개체( gridPanel
)는 getGridPanel()
메서드를 호출하여 정의됩니다(아래 참조). 이 메서드는 defaultgrid.js
에 정의됩니다.grid
는 사전 정의된 [CQ.Ext.Window](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.Window)
GridPanel을 기반으로 하는 객체이며, 표시됩니다. grid.show();
grid
이(가) 이미 있는 경우 저장소에서 검색한 폭, 높이 및 도킹된 속성을 기반으로 표시됩니다.구성 요소 jsp에서 참조된 javascript 파일( defaultgrid.js
)은 JSP에 포함된 스크립트에 의해 호출되고 정적 데이터를 기반으로 [CQ.Ext.grid.GridPanel](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.grid.GridPanel)
객체를 반환하는 getGridPanel()
메서드를 정의합니다. 논리는 다음과 같습니다.
myData
5열 및 4개의 행으로 구성된 표 형식의 정적 데이터 배열입니다.store
는 CQ.Ext.data.Store
필요한 객체입니다 myData
.store
메모리에 로드됨:store.load();
gridPanel
는 다음을 [CQ.Ext.grid.GridPanel](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.grid.GridPanel)
소비하는 객체입니다 store
.
열 너비는 항상 비율이 조정됩니다.
forceFit: true
한 번에 한 행만 선택할 수 있습니다.
singleSelect:true
패키지를 설치할 때 격자 개요 구성 요소의 content.jsp
에 정적 데이터를 기반으로 하는 격자가 표시됩니다. 다음 특성을 사용하여 격자를 표시하도록 구성 요소를 수정할 수 있습니다.
test
속성에 유지됩니다.이전 섹션에 설명된 대로 window 객체는 /apps/extjstraining/components/gridoverview/defaultgrid.js
의 defaultgrid.js
파일에 정의된 getGridPanel()
메서드를 호출하여 해당 [CQ.Ext.grid.GridPanel](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.grid.GridPanel)
객체를 가져옵니다. Grid 개요 구성 요소는 /apps/extjstraining/components/gridoverview/referencesearch.js
의 referencesearch.js
파일에 정의된 getGridPanel()
메서드에 대한 다른 구현을 제공합니다. 구성 요소 jsp에서 참조되는 .js 파일을 전환하면 그리드는 저장소에서 가져온 데이터를 기반으로 하게 됩니다.
구성 요소 jsp에서 참조되는 .js 파일을 전환합니다.
content.jsp
파일에서 defaultgrid.js
파일이 포함된 줄에 주석을 달아 다음과 같이 표시합니다.<!-- script type="text/javascript" src="/apps/extjstraining/components/gridoverview/defaultgrid.js"></script-->
referencesearch.js
파일을 포함하는 행에서 주석을 제거합니다.<script type="text/javascript" src="/apps/extjstraining/components/gridoverview/referencesearch.js"></script>
구성 요소는 다음과 같이 표시됩니다.
구성 요소 jsp( referencesearch.js
)에서 참조된 javascript 코드는 구성 요소 jsp에서 호출된 getGridPanel()
메서드를 정의하고 보관소에서 동적으로 검색되는 데이터를 기반으로 [CQ.Ext.grid.GridPanel](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.grid.GridPanel)
객체를 반환합니다. referencesearch.js
의 로직은 일부 동적 데이터를 GridPanel의 기초로 정의합니다.
reader
는 [CQ.Ext.data.JsonReader](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.data.JsonReader)
3개의 열에 대해 json 형식의 servlet 응답을 읽는 객체입니다.cm
3개의 열 [CQ.Ext.grid.ColumnModel](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.grid.ColumnModel)
에 대한 객체입니다.editor: new [CQ.Ext.form.TextField](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.form.TextField)({})
cm.defaultSortable = true;
store
는 [CQ.Ext.data.GroupingStore](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.data.GroupingStore)
객체입니다.
/bin/querybuilder.json
"에 등록된 서블릿을 호출하여 데이터를 가져옵니다reader
을 기반으로 합니다.gridPanel
는 편집할 수 [CQ.Ext.grid.EditorGridPanel](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.grid.EditorGridPanel)
있는 객체입니다.
사전 정의된 store
및 열 모델 cm
을 기반으로 합니다.
한 번에 한 행만 선택할 수 있습니다.
sm: new [CQ.Ext.grid.RowSelectionModel](https://helpx.adobe.com/kr/experience-manager/6-5/sites/developing/using/reference-materials/widgets-api/index.html?class=CQ.Ext.grid.RowSelectionModel)({singleSelect:true})
afteredit
리스너는 "Test" 열의 셀이 편집된 후에 다음을 확인합니다.
test
' 속성이store
객체에 추가되고 그렇지 않으면 거부됩니다