如何覆盖标准方法的初始化

时间:2012-07-24 07:20:00

标签: tridion tridion-2011

我们可以在这样的javascript中使用标准的'InsertCpDialog $ initialize()',这样我可以在初始化后调用其他函数。我使用下面的代码,但它不起作用。 :(

Type.registerNamespace("Extensions");
Extensions.InsertCpDialog.prototype.initialize  = function InsertCpDialog$initialize()
{
alert('hi  inside insert');
var p = this.properties;
if(window.document.nameProp == "Name" || window.document.title == "Name") {

    var browserName=navigator.appName; // Get the Browser Name

    if(browserName=="Microsoft Internet Explorer") // For IE
    {
    alert('hi inside IE');
//window.onload=init(); // Call init function in IE
    }
    else
    {
    if (document.addEventListener) // For Firefox
    {
    alert('hi inside firefox');    
//document.addEventListener("DOMContentLoaded", init(), false); // Call init function in Firefox
    }
}
}
}

原始(标准)一个就像:

Type.registerNamespace ("Tridion.Cme.Views");  
Tridion.Cme.Views.InsertCpDialog = function InsertCpDialog()
{
Type.enableInterface(this, "Tridion.Cme.Views.InsertCpDialog");
this.addInterface("Tridion.Cme.Views.DashboardBase");
};

Tridion.Cme.Views.InsertCpDialog.prototype.initialize = function InsertCpDialog$initialize()
{
}

修改

嗨,坦率地说,谢谢你,但我已经在我的代码中使用相同的东西来获取CP选项卡下页面上列出的组件和模板列表。

function getbtn() {
//alert('inside getbtn');
var sbtn = document.getElementById ("buttonComponentInsert");
$evt.addEventHandler(sbtn , "click", getListofCPBtnClick);
} 

function getListofCPBtnClick(e) {
//code will go here    
}

我的问题是: 我需要从插入CP窗口中选择组件和模板ID。早期我可以通过更改CME扩展标准代码来获得它,但我不想这样做,所以首先我正在尝试从我的javascript代码初始化“插入CP窗口”。我可以为该窗口创建事件处理程序,但我的问题是如何初始化它,以便我可以在初始化后调用任何函数。如果我不清楚,请告诉我。

1 个答案:

答案 0 :(得分:3)

您的脚本是否已加载到对话框中?

如果没有,Albert会在这里说明如何做到这一点:http://albertromkes.com/2012/01/30/tridion-gui-extensions-how-to-load-a-javascript-without-showing-a-gui-element/

然后,他还展示了如何倾听事件以完成类似于你想要做的事情。