This question has been flagged
3 Replies
18556 Views

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

<!-- language: 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):<br>
I want to insert the Hello world after the class o_image in the original template.

<!-- language: xml -->

    <?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):

<!-- language: lang-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):

<!-- language: 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):

<!-- language: python -->

    # -*- 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?

Avatar
Discard
Author

sorry for the bad formatting guys, i tried to re-format the code block for my question but i got the 403 - Forbidden reply from Odoo and couldn't update my changes.

Best Answer

Hi Peter,

I found a problem with t-query selector, o_image is not found because it's a class, try with .o_image 


<?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>

Let me know if your problem was fixed

Daniel

Avatar
Discard
Best Answer

See this answer

https://www.odoo.com/es_ES/forum/ayuda-1/question/replace-all-qweb-template-using-inheritance-94325


Avatar
Discard