2012-10-18 23 views
6

SDL Tridion CME'deki (ör. Bileşen, Sayfa ve Şema vb.) Öğe görünümlerinin çoğuna ek bir sekme ekleyen bir GUI uzantısı yazdım. Ayrıca, URL'de bir sekme adı belirtildiğinde görünüm yüklendiğinde bu sekmeyi doğrudan yükleyen bir JavaScript yazdım.Tridion.Cme.Commands.Open.prototype._execute() öğesinin varsayılan davranışını nasıl uzatabilirsiniz?

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

yerine

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

Bilgi Tab varsayılan üstünde yüklenecektir yerine,:

sonuç aşağıdaki gibi bir sayfa sekmesi adıyla yüklü ise eklenen olmasıdır Genel Sekmenin Bu aşağıdaki kod parçası ile gerçekleştirilen ve çok iyi çalışıyor:

$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);   
    } 
} 

Şimdi benim yeni işlevler kullanarak sekmeler öğeleri ve bağlantıyı açmak için bir bağlam menü öğesi oluşturmak istiyoruz. İlk düşüncem, Öğe URL'sini kendim oluşturmak ve yürütme yöntemimde yeni bir pencere açmaktı. Bu yüzden GUI'nin standart Open.prototype_execute() işlevselliğindeki varsayılan işlevselliğe baktım. Bu CME'nin navigation.js dosyasında saklanır ve Tridion.Cme.Commands.Open.prototype._execute yöntemiyle gerçekleştirilir. Kod, paylaşılan öğeler ve izinler vb. Ile ilgilenirken tahmin ettiğimden çok daha karmaşıktır.

Bu kodun tamamını kendi işlevime kopyalamak yerine, zarifçe genişletmenin bir yolu olup olmadığını merak ediyordum. mevcut Open.prototype_execute() işlevi ve kendi işlevlerim için “& tab = MyTab” öğesini $cme.Popups.OPEN_ITEM_OPTIONS.URL sabitime eklerim.

Her türlü öneri çok takdir edilecektir.

cevap

3

Sonunda, Aç komutunu öğe görünümü için url (item_type - $const.ItemType.COMPONENT, vb.) Almak için $config.getEditorUrl(item_type) kullanır. İşlevselliğin bu kısmı için bir uzatma noktası yoktur, ancak her zaman kendi sorumluluğunuz üzerine yazmayı deneyebilirsiniz.

İlgili konular