Odoo - Пользовательский шаблон загрузки меню - PullRequest
0 голосов
/ 11 декабря 2018

В настоящее время я работаю над модулем odoo, который должен иметь собственную (изготовленную на заказ и разработанную) панель управления.Таким образом, эта панель будет видна только при входе пользователя в бэкэнд (где он может управлять приложениями, настройками и подобными вещами).

Кажется, что единственный возможный способ сделать это - создать отдельный контроллер, сделатьдля этого контроллера / приборной панели реализован специальный шаблон и свяжите его с помощью кнопки меню.

Это нормально, но когда мы визуализируем шаблон, он пуст.Я хотел бы загрузить стандартное внутреннее меню для этого шаблона - и просто работать с телом шаблона.

Есть ли какое-либо представление, которое я могу унаследовать, или любой другой способ, который я могу использовать, где я могу создать шаблон, которыйбудет автоматически загружать верхнюю строку меню для этого шаблона?


Я пытался унаследовать шаблон " web.webclient_bootstrap " и добавлять вещи в основной блок этого шаблона, но егоне работает.Кажется, что, когда вы наследуете этот шаблон, session_info пуст?

1 Ответ

0 голосов
/ 13 января 2019

После исследования исходного кода odoo - дискуссий с людьми, которые больше вовлечены в разработку odoo - и вообще - больше работы с odoo - я нашел способ, как это сделать.

Изначально вопрос был невернымПредположение - что это возможно сделать путем рендеринга с использованием контроллера.Важно понимать, что - бэкенд odoo отображается как «одиночная js-страница», и любые настройки на стороне панели инструментов (которые по умолчанию не предоставляются odoo, которые вы можете определить в представлениях) - должны выполнятьсясоздание js-виджетов и непосредственное изменение объектов dom с помощью javascript.

Решение ниже представляет действие / страницу со стороны панели инструментов - при этом будет отображаться пустая страница, содержащая только слово «Test».

odoo.define("mymodule.customdashboard", function (require) {
    "use strict";

    var core = require("web.core");
    var AbstractAction = require("web.AbstractAction");
    var Widget = require("web.Widget");

    var qweb = core.qweb;
    var _t = core._t;

    require("web.dom_ready");

    var CustomDashboard = AbstractAction.extend({
        template: "custom_dashboard",
        events: {
        },

        init: function(parent, action){
            this._super.apply(this, arguments);
            var options = action.params || {};
            this.params = options;
        },

        start: function(){
            this.$(".dashboard-wrapper").append(qweb.render("campaign_dashboard_campaign_list", {"someArgData": "Test"}));
        }
    });

    core.action_registry.add("custom.dashboard", CustomDashboard);

    return {
        CustomDashboard: CustomDashboard
    }
});

Где campaign_dashboard_campaign_list - это имя шаблона, который будет вызываться И с параметром, вставленный со всеми html-данными в элемент dom, который содержит класс .dashboard-wrapper (который существует в другом шаблоне с именем custom_dashboard , определенном в верхней части класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...