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.