Технические вопросы
7.x

Добавить пункт в подменю

Доброго времени суток.

Версия 7.9.

Необходимо на странице Лида добавить пункт в существующее подменю Дисквалификации.

В качестве примера воспользовались реализацией добавления остальных пунктов из файла LeadPageV2 в пакете Lead (при этом от этого файла уже создан наследник в нашем рабочем пакете).

getActions: function() {
                                                var actionMenuItems = this.callParent(arguments);
                                                var disqualifyMenuItems = this.Ext.create("Terrasoft.BaseViewModelCollection");
                                                disqualifyMenuItems.addItem(this.getActionsMenuItem({
                                                        Caption: {bindTo: "Resources.Strings.DisqualifyLeadDouble"},
                                                        Tag: "disqualifyDouble"
                                                }));
                                                return actionMenuItems;
                                        },

Но это не помогло. Пока добавили пункт в основное меню. Можно ли как-нибудь добавить его именно в подменю?

Нравится

3 комментария

пакет CoreLead, схема LeadPageV2, обратите внимание на метод
[javascript]
getActions: function() {
var actionMenuItems = this.callParent(arguments);
var menuSeparator = this.getActionsMenuItem({
"Type": "Terrasoft.MenuSeparator"
});
actionMenuItems.addItem(menuSeparator);
var disqualificationMenuItems = this.get("DisqualificationMenuItems");
disqualificationMenuItems.each(function(item) {
actionMenuItems.addItem(item);
});
return actionMenuItems;
}
[/javascript]

Все пункты подменю валяются в this.model.attributes.DisqualificationMenuItems. Попробуйте туда добавить свой пункт меню. Скорее всего все это надо будет делать до callParent.

Попробовал разные варианты:

Вот так:

[javascript]
getActions: function() {

var disqualificationMenuItems = this.get("DisqualificationMenuItems");
disqualificationMenuItems.addItem(this.getActionsMenuItem({
Caption: {bindTo: "Дубль 2 тест"},
Tag: "changeLeadStatus"
}));

var actionMenuItems = this.callParent(arguments);

actionMenuItems.addItem(this.getButtonMenuItem({
// Привязка заголовка пункта меню к локализуемой строке схемы.
"Caption": {bindTo: "Resources.Strings.DisqualifyLeadDuplicate"},
// Привязка метода-обработчика действия.
"Tag": "changeLeadStatus",
}));

return actionMenuItems;
},
[/javascript]

Добавляется, но в основное меню. Если то же самое вызову после this.callParents:

[javascript]
var disqualificationMenuItems = this.get("DisqualificationMenuItems");
disqualificationMenuItems.addItem(this.getActionsMenuItem({
Caption: {bindTo: "Дубль 2 тест"},
Tag: "changeLeadStatus"
}));
[/javascript]

то не добавляется вообще никуда.

Всё, нашёл.

Не DisqualificationMenuItems, а DisqualificationReasonsMenuItems :)

Показать все комментарии