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

使用在相关的配置文件中添加扩展命令的标准方法,我可以使用以下所示的脚本添加接口(interface)并捕获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]);
};
Tridion.Extensions.CheckTitleOnFinishActivitySE.prototype._isAvailable = function (selection) {
    var response = Tridion.Web.UI.Editors.SiteEdit.Commands.FinishActivity.prototype._isAvailable(selection);
};

但是,当我尝试重用exisitng isEnabled函数时:
Tridion.Extensions.CheckTitleOnFinishActivitySE.prototype.isEnabled = function (selection) {
    var response = Tridion.Web.UI.Editors.SiteEdit.Commands.FinishActivity.prototype._isEnabled(selection);
};

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

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

我收到以下错误:



我可以通过仅使用强制状态为启用,从 isEnabled 函数返回true ,但我宁愿继承/重用现有检查以适应当前和将来的情况...

我可以确认已捕获_isAvailable并返回true,并且扩展所需的函数是isEnabled而不是_isEnabled(单独添加后者或将其添加到isEnabled无效)

任何建议都会很棒!

提前致谢。

更新-调试添加

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

如果isSEPage属性为true,则'workflow.js'会显示该值-但是直接在我的函数中检查时,它为false。它读取的内容是一致的,然后当从我的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]);


};

输出(workflow.js代表相同评估的原始工作流值)



更多调试

我看到在原始的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]));

导致:



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



我想知道是否在选择FinishActivity选项时是否正在检查Tridion SiteEdit isEnabled,并且在实例化FinishActivity操作本身时是否正在执行我的扩展。我正在进一步寻找,但是如果有人在迭代中看到任何东西,那将是很棒的!

谢谢

最佳答案

好的!因此,当用户选择图标来触发ShowActivityStartedPopup命令时,就会执行 isEnabled的Tridion SiteEdit实例

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

谁能看到我可以更快得出结论的更快方式...或者如果该结论不正确...

谢谢

关于workflow - 无法确认Tridion UI/UX的扩展FinishActivity中的isEnabled,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13910818/

10-10 11:47