Изменение начала: функция var EditMenuDialog в Odoo
Мне нужно изменить значение в функции запуска EditMenuDialog var файла odoo website.contentMenu.js. Модификация должна быть сделана в моем файле js пользовательского модуля.
https://github.com/odoo/odoo/blob/10.0/addons/website/static/src/js/website.contentMenu.js#L210
Здесь maxLevels имеет значение 2:
start: function () {
var r = this._super.apply(this, arguments);
this.$('.oe_menu_editor').nestedSortable({
listType: 'ul',
handle: 'div',
items: 'li',
maxLevels: 2,
toleranceElement: '> div',
forcePlaceholderSize: true,
opacity: 0.6,
placeholder: 'oe_menu_placeholder',
tolerance: 'pointer',
attribute: 'data-menu-id',
expression: '()(.+)', // nestedSortable takes the second match of an expression (*sigh*)
});
return r;
},
Для моего модуля мне нужно изменить maxLevels на 3. Я пытался переписать переменную в своем пользовательском файле, но она не работает. Как я могу это сделать?
1 ответ
Я нашел решение наследовать и модифицировать функцию odoo js в пользовательском модуле. Ниже приведен код:
odoo.define('your_module_name.js_name', function (require) {
'use strict';
// assign the variable EditMenuDialog of website module's contentModule
// js in a variable
var EditMenuDialog = require('website.contentMenu').EditMenuDialog;
// for modifying use the .include function
EditMenuDialog.include({
start: function () {
this.$('.oe_menu_editor').nestedSortable({
listType: 'ul',
handle: 'div',
items: 'li',
maxLevels: 3, // changed maxLevels from 2 to 3
toleranceElement: '> div',
forcePlaceholderSize: true,
opacity: 0.6,
placeholder: 'oe_menu_placeholder',
tolerance: 'pointer',
attribute: 'data-menu-id',
expression: '()(.+)'
});
}
});
});