无法确认Tridion UI/UX中的扩展FinishActivity中是否存在isEnabled

Dyl*_*ers 6 workflow tridion siteedit

当用户从页面或组件中选择选项时,我试图在UI/UX中捕获FinishActivity.

使用在相关配置文件中添加扩展命令的标准方法,我可以添加接口并使用下面显示的脚本捕获isAvailable方法.

Tridion.Extensions.CheckTitleOnFinishActivitySE = function Commands$CheckTitleOnFinishActivitySE() {
    Tridion.OO.enableInterface(this, "Tridion.Cme.Commands.CheckTitleOnFinishActivitySE");
    this.addInterface("Tridion.Web.UI.Editors.SiteEdit.Commands.FACommand", ["CheckTitleOnFinishActivitySE", $const.AllowedActions.FinishActivity]);
};
Run Code Online (Sandbox Code Playgroud)
Tridion.Extensions.CheckTitleOnFinishActivitySE.prototype._isAvailable = function (selection) {
    var response = Tridion.Web.UI.Editors.SiteEdit.Commands.FinishActivity.prototype._isAvailable(selection);
};
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试重用exisitng isEnabled函数时:

Tridion.Extensions.CheckTitleOnFinishActivitySE.prototype.isEnabled = function (selection) {
    var response = Tridion.Web.UI.Editors.SiteEdit.Commands.FinishActivity.prototype._isEnabled(selection);
};
Run Code Online (Sandbox Code Playgroud)

甚至从siteedit函数本身复制现有代码(我显然不愿意这样做)

Tridion.Extensions.CheckTitleOnFinishActivitySE.prototype.isEnabled = function (selection) {
    return (selection && selection.getProperty && selection.getProperty("isSEPage")) && 
        this.callBase("Tridion.Cme.Command", "_isEnabled", [selection]);
};
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

无法在[tcm:8-349-131200]上执行命令"FinishActivity".原因:未启用.

我可以通过在isEnabled函数中使用return true来强制启用状态,但我宁愿继承/重用现有的检查来满足当前和未来的情况......

我可以确认_ isAvailable被捕获并返回true并且扩展所需的函数是isEnabled而不是_ isEnabled(单独添加后者或者除了isEnabled之外没有效果)

任何建议都会很精彩!

提前致谢.

更新 - 调试添加

所以,我在扩展的isEnabled中添加了以下内容,以跟踪我的isEnabled'v'中选择对象的响应之间的差异,默认为isEnabled:

'workflow.js'显示isSEPage属性为true的值 - 但是直接在我的函数中检查它是错误的.它读取一致然后从我的isEnabled调用到原始它然后也返回false.我不明白选择会发生什么,或者我会处理不同的选择对象/上下文?

使用调试脚本更新了扩展的isEnabled:

Tridion.Extensions.CheckTitleOnFinishActivitySE.prototype.isEnabled = function (selection) {

    $log.message('myfile.js::FinishActivity.prototype._isEnabled::selection.getProperty("isSEPage") = ' + selection.getProperty("isSEPage"));

    $log.message('myfile.js::FinishActivity.prototype.isEnabled ==> checking calling original...');
    var response = Tridion.Web.UI.Editors.SiteEdit.Commands.FinishActivity.prototype._isEnabled(selection);
    $log.message('myfile.js::FinishActivity.prototype.isEnabled ==> ' + response);


    $log.message('myfile.js::FinishActivity.prototype.isEnabled ==> checking using copied code from original...');
    return (selection && selection.getProperty && selection.getProperty("isSEPage")) &&
        this.callBase("Tridion.Cme.Command", "_isEnabled", [selection]);


};
Run Code Online (Sandbox Code Playgroud)

输出(workflow.js表示同一评估的原始工作流程值)

workflow.js:FinishActivity.prototype._isEnabled :: selection.getProperty("isSEPage")= true myfile.js :: FinishActivity.prototype._isEnabled :: selection.getProperty("isSEPage")= undefined myfile.js :: FinishActivity. prototype.isEnabled ==>检查调用原始... workflow.js:FinishActivity.prototype._isEnabled :: selection.getProperty("isSEPage")= undefined myfile.js :: FinishActivity.prototype.isEnabled ==> undefined myfile.js :: FinishActivity.prototype.isEnabled ==>使用原始复制代码进行检查...无法在[tcm:8-349-131200]上执行命令"CheckTitleOnFinishActivitySE".原因:未启用.

更多调试

我看到在原始CME工作流脚本中根本没有isEnabled函数?

我将以下内容添加到扩展的isEnabled scipt:

Tridion.Extensions.CheckTitleOnFinishActivitySE.prototype.isEnabled = function (selection) {

    $log.message('myfile.js::FinishActivity.prototype._isEnabled::selection.getProperty("isSEPage") = ' + selection.getProperty("isSEPage"));
    $log.message('Tridion.Web.UI.Editors.SiteEdit.Commands.FinishActivity.prototype._isEnabled(selection) = ' + Tridion.Web.UI.Editors.SiteEdit.Commands.FinishActivity.prototype._isEnabled(selection));

$log.message('this.callBase("Tridion.Cme.Command", "_isEnabled", [selection]) = ' + this.callBase("Tridion.Cme.Command", "_isEnabled", [selection]));
Run Code Online (Sandbox Code Playgroud)

导致:

myfile.js :: FinishActivity.prototype._isEnabled :: selection.getProperty("isSEPage")= undefined Editor_v6.1.0.55920.269_.aspx:7175 workflow.js:FinishActivity.prototype._isEnabled :: selection.getProperty("isSEPage" )= undefined Editor_v6.1.0.55920.269_.aspx:7175 Tridion.Web.UI.Editors.SiteEdit.Commands.FinishActivity.prototype._isEnabled(selection)= undefined Editor_v6.1.0.55920.269_.aspx:7175 this.callBase(" Tridion.Cme.Command","_ isEnabled",[selection])= false

虽然原始(SiteEdit)仍然在我的脚本之前执行并返回

workflow.js :: FinishActivity.prototype._isEnabled :: selection.getProperty("isSEPage")= true

我想知道在选择FinishActivity选项时是否正在检查Tridion SiteEdit isEnabled,并且在实例化FinishActivity操作本身时正在执行我的扩展.我正在寻找更远但是如果有人在iterim中看到任何东西那将是伟大的!

谢谢

Dyl*_*ers 1

好的!因此,当用户选择图标触发ShowActivityStartedPopup命令时,将执行isEnabledTridion SiteEdit实例。

当用户选择FininshActivity选项时,我的isEnabled被触发。

任何人都可以看到我可以得出这个结论的更快方法...或者如果这个结论不正确...

谢谢