Help

8

How to inherit calendar popup?

Hi guys,

I usually have no problems at all with inheritance but I can't inherit the popup dialog which is on the calendar view.
The code is in the module calender, which you can find here: https://github.com/odoo/odoo/blob/8.0/addons/web_calendar/static/src/xml/web_fullcalendar.xml#L57-70

It has the following code:

 <div t-name="CalendarView.quick_create" class="oe_calendar_quick_create openerp">
    
    <div class="form-group">
        <label for='name' class='control-label'>Event summary:</label>
        <input name='name' class="form-control"/>
    </div>     
    
    <t t-if="widget._buttons">
      <div class="oe_calendar_quick_create_buttons">
        <button class="openerp oe_button oe_highlight oe_calendar_quick_create_add ">Create event</button>
        <button class="oe_button oe_form_button oe_link oe_calendar_quick_create_edit" ><span>Edit Event <![CDATA[]]></span></button>
      </div>
    </t>
  </div>

A simple question: what is the correct way to inherit this? it has no template id and/or name so how can I inherit that div t-name and add a field after this line with xpath?

<input name='name' class="form-control"/> 

Thanks,
Yenthe

6 Comments
Avatar
Discard
Avatar
David Bertha
-

"Template inheritance is performed via the t-extend directive which takes the name of the template to alter as parameter." src : https://www.odoo.com/documentation/8.0/reference/qweb.html

@yenthe, I noted down your issue. Definitely I will keep you updated after trying at my side. Since so many days I am facing this problem ( in some of web templates ) Before me if you have got the answer then don't hesitate to post here, otherwise I will give you answer surely within short time. I have marked this question as important.

and yes, +1 from me !

@david I'm aware of the t-extend but they do not seem to work on templates in another module without name/ID. @Emipro thanks! If I find a solution I will post it here too!

+1, Me too I'm trying to change the behavior of the popup ...

@Emipro and @Ahmed I've posted the solution to inherit these views.

1 Answer
9
Best Answer

Hi guys,

The solution is to create a (new) XML file under /static/src/xml and to include this file in your __openerp__.py. For inheriting this view you need to work with <templates> in place of <openerp><data>.
With a t-extend you can extend the view. For example for the calendar popup:

 <?xml version="1.0" encoding="utf-8"?>
<templates>
    <tr t-extend="CalendarView.quick_create">
        <t t-jquery=".form-group" t-operation="after">
            <div class="form-group">
                <h3>Example - put fields here </h3>
            </div>
        </t>
    </tr>
</templates>

Thats it!
Yenthe

6 Comments
Avatar
Discard

+1, Thanks I will test and let you know Yenthe. You're a star !

@yenthe, I am so sorry that I couldn't got a time to give you solution.

Thanks Emipro! It doesn't matter that you didn't have a solution yet, I have one now and I hope it saves you some time too :)

Avatar
Prakash
-

@Yenthe: I would like to add custom many2one field in calendar pop up after inheriting the template CalendarView.quick_create. Is it possible?. And override Create Event button to save many2one field in the form (project.task). Thanks

Avatar
mars@trueplus.vn
-

Impressive, Thank you so much !

NOTE: While this works, you also have to modify the widget JS code to get it to pick up any new fields you add.

In my case it was simpler to override the calendar view and set the quick_add attribute to False, so when you create a new appointment it goes straight to the full calendar appointment form.