odoo js error while modifying function, property 'include' undefined

Viewed 1917

I have modified a js function of odoo website. The code looks like below -

odoo.define('website_custom_menu.menu_custom', function (require) {
    'use strict';
    require('website.contentMenu');
    var EditMenuDialog = require('website.contentMenu').EditMenuDialog;
    EditMenuDialog.include({
        start: function () {
            this._super();
            var r = this._super.apply(this, arguments);
            this.$('.oe_menu_editor').nestedSortable({
                listType: 'ul',
                handle: 'div',
                items: 'li',
                maxLevels: 4,
                toleranceElement: '> div',
                forcePlaceholderSize: true,
                opacity: 0.6,
                placeholder: 'oe_menu_placeholder',
                tolerance: 'pointer',
                attribute: 'data-menu-id',
                expression: '()(.+)'
            });
            return r;
        }
    });
});

This modifies the website menu editor. Where it can be edited to put four levels of submenus. But this throws an error on the consloe.

It says "Failed Module" while loading it. And after some debugging on the console I found following error:

TypeError: Cannot read property 'include' of undefined
    at website.assets_editor.js:191
    at process_job (web.assets_common.js:2994)
    at Object.process_jobs (web.assets_common.js:3000)
    at $.when.then.job.rejected (web.assets_common.js:2995)
    at web.assets_common.js:547
    at fire (web.assets_common.js:541)
    at Object.add as done
    at Array. (web.assets_common.js:547)
    at Function.each (web.assets_common.js:370)
    at Object. (web.assets_common.js:547)

How do I fix that and what causes this? I have seen other modules and they have done it in the same way.

TBN: The module has the website module as dependency and the js file is added in the assets.

3 Answers
Related