Невозможно подтвердить, если isEnabled в расширенной FinishActivity в Tridion UI/UX
Я пытаюсь поймать FinishActivity в UI/UX, когда пользователь выбирает опцию на странице или компоненте.
Используя стандартный метод добавления расширенной команды в соответствующий файл конфигурации, я могу добавить интерфейс и перехватить метод 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);
};
Однако когда я пытаюсь повторно использовать функцию isEnabled exisitng:
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]);
};
Я получаю следующую ошибку:
Не удается выполнить команду "FinishActivity" на [tcm:8-349-131200]. Причина: не включена.
Я могу принудительно включить состояние, используя просто вернуть true из функции isEnabled, но я бы предпочел унаследовать / повторно использовать существующую проверку для обслуживания текущих и будущих сценариев...
Я могу подтвердить, что _isAvailable перехвачен и возвращает true, и что необходимая функция для расширения isEnabled, а не _isEnabled (добавление последнего отдельно или в дополнение к isEnabled не имеет никакого эффекта)
Любой совет был бы великолепен!
Заранее спасибо.
Обновление - добавление отладки
Итак, я добавил следующее в свой расширенный isEnabled, чтобы отследить разницу между ответом на объект выбора в моем isEnabled 'v' по умолчанию isEnabled:
Workflow.js показывает значение, если свойство isSEPage имеет значение true, но при проверке непосредственно в моей функции это значение false. Тогда он гласит, что при вызове из my 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 представляет исходное значение рабочего процесса для той же оценки)
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 ==> проверка с использованием скопированного кода из оригинала... Невозможно выполнить команду "CheckTitleOnFinishActivitySE" на [tcm:8-349-131200]. Причина: не включена.
Больше отладки
Я вижу, что в оригинальном сценарии рабочего процесса CME нет функции isEnabled вообще?
Я добавил следующее в расширенный сценарий isEnabled:
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]));
в результате чего:
myfile.js:: FinishActivity.prototype._isEnabled:: selection.getProperty ("isSEPage") = не определено Editor_v6.1.0.55920.269_.aspx:7175 workflow.js:FinishActivity.prototype._isEnabled::selection.getProperty("isSEPage")) = неопределенный Editor_v6.1.0.55920.269_.aspx:7175 Tridion.Web.UI.Editors.SiteEdit.Commands.FinishActivity.prototype._isEnabled(selection) = неопределенный 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
Мне интересно, проверяется ли Tridion SiteEdit isEnabled при выборе опции для FinishActivity и выполняется ли мое расширение, когда создается экземпляр самого действия FinishActivity. Я смотрю дальше, но если кто-нибудь увидит что-нибудь в итериме, это было бы здорово!
Спасибо
1 ответ
ХОРОШО! Поэтому экземпляр Tridion SiteEdit isEnabled выполняется, когда пользователь выбирает значок для запуска команды ShowActivityStartedPopup.
My isEnabled запускается, когда пользователь выбирает опцию FininshActivity.
Может ли кто-нибудь увидеть более быстрый способ, которым я мог бы прийти к такому выводу... или если этот вывод неверен...
Спасибо