Odoo 12: добавить пользовательскую боковую панель в представление формы - PullRequest
0 голосов
/ 28 января 2019

Я недавно начал работать с Odoo и решил попробовать свои силы в настройке вида формы.По сути, я хочу добавить пользовательскую боковую панель к виду формы по умолчанию, скажем, новых поступлений приложения Inventory.Это выглядело бы примерно так:

Custom Sidebar Mockup

Вот что я попробовал: я создал модуль, в котором написал виджет, а также его шаблон:

sidebar.js

odoo.define('sidebar_widget.bh_sidebar', function (require) {
  'use strict';

  var Widget = require('web.Widget');
  var widgetRegistry = require('web.widget_registry');
  var core = require('web.core');

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

  var bh_sidebar = Widget.extend({
    init: function () {
        var self = this;
        this._super(parent);
        console.log('Widget initialized!');
    },

    events: {},

    start: function () {
        this.$el.append(QWeb.render('bh_sidebar_template'));
    }

  });

  widgetRegistry.add(
    'bh_sidebar', bh_sidebar
  )
})

Довольно просто.Вот как выглядит шаблон:

sidebar.xml

<?xml version="1.0"?>
<templates id="template" xml:space="preserve">
   <t t-name="bh_sidebar_template">
       <div style="background-color:red;" class="myClass">
           <a href="#" class="butt1">Button 1</a>
           <a href="#" class="butt2">Button 2</a>
       </div>
   </t>
</templates> 

Я не был уверен, куда идти после записи файлов js и xml, поэтому я просто добавил виджет в инвентарьпредставление формы выглядит следующим образом:

view.xml

<odoo>
   <data>
    <record id="bh_sidebar_id" model="ir.ui.view">
        <field name="name">sidebar_widget.bh_sidebar</field>
        <field name="model">stock.picking</field>
        <field name="inherit_id" ref="stock.view_picking_form"/>
        <field name="arch" type="xml">
            <xpath expr="//header" position="after">
                <widget name="bh_sidebar" />
            </xpath>
        </field>
    </record>
   </data>
</odoo>

Проблема в том, что виджет отображает шаблон QWeb внутри формы, но я хочу, чтобы он находился вне его, над кнопкой отмены ивиджет статуса документа.Imgur Посмотрите на красную полосу там, я хочу, чтобы это было за пределами элемента, но я не могу этого сделать, поскольку она была добавлена ​​внутри унаследованного представления формы.

Я бы хотела знать, возможно ли этовызвать виджет за пределами формы.Может быть, то, что я делаю, неправильно, и есть другое, более простое решение.Буду очень признателен за любые отзывы!

...