2012-10-18 3 views
6

저는 SDL Tridion CME (예 : 구성 요소, 페이지 및 스키마 등)의 많은 항목보기에 추가 탭을 추가하는 GUI 확장 프로그램을 작성했습니다. 뷰에 탭 이름이로드되어 URL에 URL이 지정되면 해당 탭을 직접로드하는 JavaScript도 작성했습니다.어떻게 Tridion.Cme.Commands.Open.prototype._execute()의 기본 동작을 확장 할 수 있습니까?

http://localhost/WebUI/item.aspx?tcm=64#id=tcm:1-48-64&tab=InfoTab 

보다는

http://localhost/WebUI/item.aspx?tcm=64#id=tcm:1-48-64 

정보] 탭의 기본을 상단에로드됩니다 대신 :

결과는 다음과 같이 페이지 탭 이름으로로드 된 경우 추가이다 일반 탭. 이것은 다음과 같은 코드로 수행 아주 잘 작동합니다 :

$evt.addEventHandler($display, "start", onDisplayStarted); 

// This callback is called when any view has finished loading 
function onDisplayStarted() { 

    $evt.removeEventHandler($display, "start", onDisplayStarted); 
    var tabname = $url.getHashParam("tab"); 
    if (tabname != '') { 
     var tabControl = $controls.getControl($("#MasterTabControl"), "Tridion.Controls.TabControl"); 
     tabControl.selectItem(tabname);   
    } 
} 

지금 내 새로운 기능을 사용하여 탭에 대한 항목과 링크를 열 수있는 컨텍스트 메뉴 항목을하고 싶습니다. 내 첫 번째 생각은 직접 항목 URL을 구성하고 내 execute 메소드에서 새 창을 열면됩니다. 그래서 GUI의 표준 기능 Open.prototype_execute()의 기본 기능을 살펴 보았습니다. 이것은 CME의 navigation.js 파일에 저장되며 Tridion.Cme.Commands.Open.prototype._execute 방법으로 수행됩니다. 코드는 공유 항목 및 권한 등을 처리 할 때 예상했던 것보다 훨씬 복잡합니다.

이 코드를 모두 내 기능에 복사하는 것이 아니라 우아하게 확장하는 방법이 있는지 궁금합니다. 기존 Open.prototype_execute() 함수를 추가하고 내 "& tab = MyTab"을 $cme.Popups.OPEN_ITEM_OPTIONS.URL 상수에 추가하십시오.

모든 조언을 주시면 감사하겠습니다.

답변

3

마지막에 열기 명령은 $config.getEditorUrl(item_type)을 사용하여 항목보기 (item_type - $const.ItemType.COMPONENT 등)에 대한 URL을 가져옵니다. 기능의이 부분에 대한 확장 점은 없지만 사용자 자신의 위험에 대해 항상 덮어 쓸 수 있습니다.

관련 문제