如何扩展;结帐;SDL Tridion 2011 SP1中的命令?

如何扩展;结帐;SDL Tridion 2011 SP1中的命令?,tridion,tridion-2011,Tridion,Tridion 2011,我正在尝试扩展Tridion的“CheckOut”命令,现在我正在尝试显示我自己的消息,并希望当我从功能区工具栏单击“CheckOut”选项时,OOTB签出操作需要放置到位 我已经创建了配置文件和.js文件,如下所示,我还对System.config进行了更改,并创建了虚拟目录。但是,my.js没有被激发,也没有显示我的自定义消息 config.xml <?xml version="1.0"?> <Configuration xmlns="http://www.sdltridi

我正在尝试扩展Tridion的“CheckOut”命令,现在我正在尝试显示我自己的消息,并希望当我从功能区工具栏单击“CheckOut”选项时,OOTB签出操作需要放置到位

我已经创建了配置文件和.js文件,如下所示,我还对System.config进行了更改,并创建了虚拟目录。但是,my.js没有被激发,也没有显示我的自定义消息

config.xml

<?xml version="1.0"?>
<Configuration xmlns="http://www.sdltridion.com/2009/GUI/Configuration/Merge" xmlns:cfg="http://www.sdltridion.com/2009/GUI/Configuration" xmlns:ext="http://www.sdltridion.com/2009/GUI/extensions" xmlns:cmenu="http://www.sdltridion.com/2009/GUI/extensions/ContextMenu">
<resources cache="true">
    <cfg:filters/>
    <cfg:groups>
        <cfg:group name="CommandsExtensions.Commandset" merger="Tridion.Web.UI.Core.Configuration.Resources.CommandGroupProcessor" merge="always">
            <cfg:fileset>
                <cfg:file type="script">/js/ExtendCheckOut.js</cfg:file>
                <cfg:file type="reference">CommandsExtensions.Interface</cfg:file>
            </cfg:fileset>
            <cfg:dependencies>
                <cfg:dependency>Tridion.Web.UI.Editors.CME</cfg:dependency>
                <cfg:dependency>Tridion.Web.UI.Editors.CME.commands</cfg:dependency>
            </cfg:dependencies>
        </cfg:group>
    </cfg:groups>
</resources>
<definitionfiles/>
<extensions>
    <ext:editorextensions>
        <ext:editorextension target="CME">
            <ext:editurls/>
            <ext:listdefinitions/>
            <ext:taskbars/>
            <ext:commands/>
            <ext:commandextensions>
                <ext:commands>
                    <ext:command name="CheckOut" extendingcommand="ExtendCheckOut" />
                </ext:commands>
                <ext:dependencies>
                    <cfg:dependency>CommandsExtensions.Commandset</cfg:dependency>
                </ext:dependencies>
            </ext:commandextensions>
            <ext:contextmenus/>
            <ext:lists/>
            <ext:tabpages/>
            <ext:toolbars/>
            <ext:ribbontoolbars/>
        </ext:editorextension>
    </ext:editorextensions>
    <ext:dataextenders/>
</extensions>
<commands>
    <cfg:commandset id="CommandsExtensions.Interface">
        <cfg:command name="ExtendCheckOut" implementation="CommandsExtensions.ExtendCheckOut"/>
    </cfg:commandset>
</commands>
<contextmenus/>
<localization/>
<settings>
    <defaultpage>/Views/Default.aspx</defaultpage>
    <navigatorurl>/Views/Default.aspx</navigatorurl>
    <editurls/>
    <listdefinitions/>
    <itemicons/>
    <theme>
        <path>css</path>
    </theme>
    <customconfiguration/>
</settings>

我就是这么做的,扩展了“保存”按钮:


/Commands/validateitlefieldcommand.js
validateitlefield.Interface
Tridion.Web.UI.Editors.CME
Tridion.Web.UI.Editors.CME.commands
/视图/validateitlefieldpopup.js
/视图/validateitlefieldpopup.css
Tridion.Web.UI.Editors.CME
Tridion.Web.UI.Editors.CME.commands
[……]


validateitlefield.CommandSet
[……]


然后在我的命令实现(JS)中,我使用以下方法调用“原始”方法:

Company.Extensions.validateitlefieldcommand.prototype.\u isAvailable=函数validateitlefieldcommand$\u isAvailable(选择){
调试(“可调用”);
返回$cme.getCommand(“保存”)。\u可用(选择);
};
最后,在执行方法的深处:

如果(!失败)
返回$cme.getCommand(“保存”)。\u执行(选择,管道);
否则{
这是loadPopup();
}
希望这有帮助


N

您的配置文件指向的
实现之间不匹配:


以及实际的JavaScript代码:

Extensions.extendedcheckout=函数Extensions.extendedcheckout(){
您可能需要将配置文件更改为:



Hi,我认为这个问题/答案:提供了一个很好的例子,说明了如何扩展现有的配置文件。你看过了吗?是的,John,我看过了,它没有完整的配置文件。基于此,我也修改了配置文件。但是Js没有被解雇。我认为配置文件中有一些地方做错了。首先检查一下:我您的JavaScript正在加载到浏览器中吗?您应该可以在
http://localhost/WebUI/Editors/CME/Views/Dashboard/Dashboard.aspx?mode=js
。谢谢努诺:我的配置文件错了,现在我可以显示“签出”的自定义消息了命令。实际上,我想在实际签出之后显示自定义消息。但是现在,在显示我的自定义消息之后,签出没有发生。我想你必须确保你仍然执行签出命令作为你的执行方法的一部分。另外,你在_isavailableand _isEnabled上返回true,我会这样做推荐一种类似于我的方法,我依靠“extended”命令来确定这些值。是的,弗兰克:我在配置文件中出错,现在加载了JS,我可以显示“CheckOut”的自定义消息命令。实际上,我想在实际签出之后显示自定义消息。但现在,在显示自定义消息之后,签出没有发生。命令扩展在命令扩展之前执行。如果您想影响命令本身,请查看Nuno如何在其示例。还可以查看
Command.js
中的
Tridion.Core.Command.prototype.invoke
,看看它是如何工作的,您将看到可能需要设置
pipeline.stop=true;
来确保框架在您这样做之后不会调用命令。
Type.registerNamespace("Extensions");

Extensions.ExtendCheckOut = function Extensions.ExtendCheckOut() {
   Type.enableInterface(this, "Extensions.ExtendCheckOut");
   this.addInterface("Tridion.Cme.Command", ["ExtendCheckOut"]);
};

Extensions.ExtendCheckOut.prototype.isAvailable = function ExtendCheckOut$isAvailable(selection) {
   return true;
}

Extensions.ExtendCheckOut.prototype.isEnabled = function ExtendCheckOut$isEnabled(selection) {
   return true;
}

Extensions.ExtendCheckOut.prototype._execute = function ExtendCheckOut$_execute(selection) {
   $messages.registerWarning("This is Extended CheckOut");
}