2012-10-18 7 views
6

Ho scritto un'estensione GUI che aggiunge una scheda aggiuntiva a molte delle viste Articolo in SDL Tridion CME (ad esempio Componente, Pagina e Schema ecc.). Ho anche scritto alcuni JavaScript che caricano direttamente quella scheda se la vista è caricata con un nome di tabulazione è specificata nell'URL.Come si può estendere il comportamento predefinito di Tridion.Cme.Commands.Open.prototype._execute()?

Il risultato è che se una pagina viene caricata con il nome della scheda aggiunto come segue:

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

Piuttosto che il valore predefinito di

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

L'Info Tab verrà caricato sulla parte superiore, invece della scheda generale. Questa operazione viene eseguita con il seguente frammento di codice e funziona molto bene:

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

Ora vorrei fare una voce di menu contestuale per aprire gli elementi e link alle schede con la mia nuova funzionalità. Il mio primo pensiero è stato quello di costruire da solo l'URL dell'oggetto e semplicemente aprire una nuova finestra nel mio metodo di esecuzione. Così ho esaminato le funzionalità di default nella funzionalità standard Open.prototype_execute() della GUI. Questo è memorizzato nel file navigation.js della CME e viene eseguito dal metodo Tridion.Cme.Commands.Open.prototype._execute. Il codice è molto più complicato di quanto mi aspettassi in quanto si occupa di elementi condivisi e permessi ecc.

Piuttosto che copiare tutto questo codice sulla mia funzione, mi chiedevo se c'è un modo per estendere elegantemente la funzione esistente Open.prototype_execute() e aggiungere la mia "& tab = MyTab" alla costante $cme.Popups.OPEN_ITEM_OPTIONS.URL per le mie proprie funzioni.

Qualsiasi consiglio sarebbe molto apprezzato.

risposta

3

Al termine il comando Apri utilizza $config.getEditorUrl(item_type) per ottenere l'url per la visualizzazione dell'elemento (item_type - $const.ItemType.COMPONENT, ecc.). Non ci sono punti di estensione per questa parte della funzionalità, ma si potrebbe sempre provare a sovrascriverlo a proprio rischio.

Problemi correlati