मैंने एक जीयूआई एक्सटेंशन लिखा है जो एसडीएल ट्रिडियन सीएमई (जैसे घटक, पेज और स्कीमा इत्यादि) में कई आइटम दृश्यों में एक अतिरिक्त टैब जोड़ता है। मैंने कुछ जावास्क्रिप्ट भी लिखे हैं जो उस टैब को सीधे लोड करते हैं यदि दृश्य टैब के साथ लोड किया गया है तो URL में निर्दिष्ट किया गया है।आप 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);
}
}
अब मैं अपने नए कार्यक्षमता का उपयोग टैब के लिए वस्तुओं और लिंक को खोलने के एक संदर्भ मेनू आइटम बनाने के लिए करना चाहते हैं। मेरा पहला विचार आइटम यूआरएल का निर्माण करना था और मेरी निष्पादन विधि में बस एक नई विंडो खोलना था। तो मैंने GUI की मानक Open.prototype_execute()
कार्यक्षमता में डिफ़ॉल्ट कार्यक्षमता को देखा। यह सीएमई की navigation.js
फ़ाइल में संग्रहीत है, और Tridion.Cme.Commands.Open.prototype._execute
विधि द्वारा किया जाता है। यह कोड बहुत अधिक जटिल है क्योंकि मैंने अनुमानित आइटमों और अनुमतियों आदि से संबंधित है।
इस कोड को अपने स्वयं के फ़ंक्शन पर कॉपी करने की बजाय, मैं सोच रहा था कि सुंदर तरीके से विस्तार करने का कोई तरीका है या नहीं मौजूदा Open.prototype_execute()
फ़ंक्शन और मेरे अपने कार्यों के लिए $cme.Popups.OPEN_ITEM_OPTIONS.URL
पर "& टैब = MyTab" संलग्न करें।
किसी भी सलाह की सराहना की जाएगी।