Невозможно подтвердить, если 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.

Может ли кто-нибудь увидеть более быстрый способ, которым я мог бы прийти к такому выводу... или если этот вывод неверен...

Спасибо

Другие вопросы по тегам