当用户从页面或组件中选择选项时,我试图在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/