Ich habe eine GUI-Erweiterung geschrieben, die eine zusätzliche Registerkarte zu vielen der Artikelansichten in SDL Tridion CME (z. B. Komponente, Seite und Schema usw.) hinzufügt. Ich habe auch etwas JavaScript geschrieben, das diese Registerkarte direkt lädt, wenn die Ansicht mit einem Tabnamen geladen ist, wird in der URL angegeben.Wie können Sie das Standardverhalten von Tridion.Cme.Commands.Open.prototype._execute() erweitern?
Das Ergebnis ist, dass, wenn eine Seite mit dem Namen der Registerkarte geladen wird wie folgt hinzugefügt:
http://localhost/WebUI/item.aspx?tcm=64#id=tcm:1-48-64&tab=InfoTab
Anstatt der Standard von
http://localhost/WebUI/item.aspx?tcm=64#id=tcm:1-48-64
die Registerkarte Informationen auf geladen werden, statt des allgemeinen Tabs. Dies wird mit dem folgenden Code-Schnipsel ausgeführt und funktioniert sehr gut:
$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);
}
}
Nun möchte ich ein Kontextmenüpunkt machen möchten, um Elemente und Link zu den Registerkarten öffnen meine neue Funktion verwenden. Mein erster Gedanke war, die Item-URL selbst zu erstellen und einfach ein neues Fenster in meiner execute-Methode zu öffnen. Also habe ich mir die Standardfunktionalität in der Standard-Open.prototype_execute()
-Funktionalität der GUI angeschaut. Dies wird in der Datei navigation.js
der CME gespeichert und wird von der Methode Tridion.Cme.Commands.Open.prototype._execute
ausgeführt. Der Code ist viel komplizierter als ich erwartet hatte, da er sich mit geteilten Objekten und Berechtigungen usw. befasst.
Anstatt nur diesen ganzen Code in meine eigene Funktion zu kopieren, habe ich mich gefragt, ob es einen Weg gibt, elegant zu erweitern die bestehende Open.prototype_execute()
Funktion und füge meine "& Registerkarte = MyTab" an die $cme.Popups.OPEN_ITEM_OPTIONS.URL
Konstante für meine eigenen Funktionen an.
Jeder Rat würde sehr geschätzt werden.