peterhoth
peterhoth

Reputation: 1

Odoo 10 how to replace inherited qweb template content

I have tried to insert a tag into an existing template but couldn't get it to work.

Existing template in odoo/addons/mail/static/src/xml/thread.xml

<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">

    <t t-name="mail.ChatThread">
        <t t-if="messages.length">
           :
    <t t-name="mail.ChatComposer.Attachments">
        <div class="o_attachments">
            <t t-foreach="attachments" t-as='attachment'>
                <t t-call="mail.Attachment">
                    <t t-set="editable" t-value="true"/>
                </t>
            </t>
        </div>
    </t>

    <t t-name="mail.Attachment">
        <div t-attf-class="o_attachment #{attachment.upload ? 'o_attachment_uploading' : ''}" t-att-title="attachment.name">

            <a class="o_image" t-att-href='attachment.url' target="_blank" t-att-data-mimetype="attachment.mimetype" t-attf-data-src="/web/image/#{attachment.id}/100x80">
                <span class='o_attachment_name'><t t-esc='attachment.name'/></span>
            </a>
            <t t-if="editable">
                <div class="o_attachment_delete">
                    <i class='fa fa-times-circle' title="Delete this attachment" t-att-data-id="attachment.id"/>
                </div>
                <div class="o_attachment_progress_bar">
                    Uploading
                </div>
            </t>
        </div>
    </t>

My custom template (odoo/addons/mycustom/static/src/xml/thread.xml):
I want to insert the Hello world after the class o_image in the original template.

<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
    <t t-name="mycustom.ImageAttachment" t-extend="mail.Attachment">
        <t t-jquery="o_image" t-operation="append">
            <div>Hello world</div>
        </t>
    </t>
</templates>

My javascript to render the template (odoo/addons/mycustom/static/src/js/thread.js):

odoo.define('mycustom.thread', function (require) {
"use strict";

var core = require('web.core');
var ajax = require('web.ajax');
var qweb = core.qweb;

ajax.loadXML('/mycustom/static/src/xml/thread.xml', qweb);
console.log("INFO", "Hello World")

});

My assets file (odoo/addons/mycustom/views/assets.xml):

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <template id="assets_backend" name="my assets" inherit_id="web.assets_backend">
      <xpath expr="." position="inside">
          <script type="text/javascript" src="/mycustom/static/src/js/thread.js"></script>
      </xpath>
    </template>
</odoo>

My manifest file (odoo/addons/mycustom/manifest.py):

# -*- coding: utf-8 -*-
{
    'name': "test",
    'summary': """my test""",    
    'description': """
        This is my test module.
    """,
    'author': "peter",
    'website': "",
    # Categories can be used to filter modules in modules listing
    # Check https://github.com/odoo/odoo/blob/master/odoo/addons/base/module/module_data.xml
    # for the full list
    'category': 'Test',
    'version': '0.1',
    # any module necessary for this one to work correctly
    'depends': ['base','mail'],    
    # always loaded
    'data': [
        'views/assets.xml',
    ],
    'qweb': [
        'static/src/xml/thread.xml',
    ],        
}

The javascript is loaded because I can see the text Hello World written on the browser console. However, I cannot see the <div>Hello World</div> in the chat thread. What did I miss?

Upvotes: 0

Views: 3281

Answers (1)

KbiR
KbiR

Reputation: 4174

Try this:

<t t-name="mail.Attachment" t-extend="mail.Attachment">
    <t t-jquery="o_image" t-operation="inner">
        <div>Hello world</div>
    </t>
</t>

Hope it will help you.

Upvotes: 0

Related Questions